지도를 만들고 있는데 많은 폭파 작업이 진행될 텐데 블록이 손상되는 것을 원하지 않습니다.
게이머룰 몹을 슬픔에 빠뜨렸지만 여전히 TNT 블록이 손상될 것입니다.
이것도 끌 수 있는 방법이 있나요?
따라서 이것은 복잡하지만 플레이어가 다이아몬드 검을 제작하지 못하도록 막는 것보다 훨씬 나쁘지는 않습니다. 여기서 가장 큰 차이점은 모든 것이 동일한 틱에 발생해야하며 매 틱마다 발생해야한다는 것입니다. 따라서 링크된 답변에서 사용한 전략은 20hz 필 클럭이 거의 필수인 반면, 다른 답변에서는 더 느리고 간단한 클럭을 사용할 수 있습니다. 이 방법을 사용하려면 실제 폭발을 생성하기 위해 가스트 불덩이를 사용하므로 몹 그리핑을 비활성화하는 것이 좋습니다. 효과는 있지만 플레이어나 다른 개체에게 0의 피해를 입히는 것도 가능하며, 마지막에 이에 대한 명령어를 추가하겠습니다.
첫 번째 단계는 폭발하려는 TNT를 추적하기 위해 점수판 목표를 설정하는 것입니다:
/scoreboard objectives add TNTGoBoom dummy
다음으로 '채우기' 시계를 설정해야 합니다. 열에 두 개의 명령 블록이 필요하고 이를 구분하는 공기 블록이 필요합니다. 하단에 다음 명령을 입력합니다:
fill ~ ~1 ~ ~3 ~1 ~ air
를 입력하고 위쪽에는 이 명령을 입력합니다:
fill ~ ~-1 ~ ~3 ~-1 ~ redstone_block
두 블록 사이에 붉은 돌 블록을 놓으면 채우기 시계가 생깁니다. 이상적으로는 청크 경계 근처에 위치하지 않는 것이 좋지만, 제 경우에는 경계에 위치했지만 여전히 잘 작동했습니다. 채우기 시계의 일부가 메모리에서 언로드되면 재미있는 일이 발생할 수 있지만, 스폰 청크이거나 항상 시계 근처에 있다면 걱정할 필요가 없습니다.
한쪽에 붉은 돌 블록이 세 개 더 보일 것입니다. 붉은 돌 블록 옆에 명령 블록을 세 개 더 놓습니다(가급적 위나 아래에 놓는 것이 좋습니다). 처음 두 개의 명령어 블록에 가장 가까운 순서대로 사용하려는 명령어입니다:
scoreboard players set @e[type=PrimedTnt] TNTGoBoom 1 {Fuse:0b}
execute @e[type=PrimedTnt,score_TNTGoBoom=1] ~ ~ ~ summon Fireball ~ ~ ~ {direction:[0.0,-1.0,0.0],ExplosionPower:4,Fuse:0,Time:-1,TileEntityData:{CustomName:"TNT"},ActiveEffects:[{Id:14,Duration:10,Amplifier:10,Ambient:1}]}
kill @e[type=PrimedTnt,score_TNTGoBoom=1]
자, 이제 세 가지 명령어를 살펴봅시다. 첫 번째 명령은 다음 틱에 폭발할 준비가 된 모든 TNT에 대해 TNTGoBoom 목표의 점수판 값을 1로 설정합니다. 이것이 TNT를 추적하는 방법입니다. 다음 명령은 TNT의 정확한 위치에 보이지 않는 불덩이를 소환하여 바로 아래쪽으로 이동하며 TNT 조각과 동일한 폭발력을 갖습니다. 이것이 실제로 폭발 효과와 플레이어/개체에 피해를 입히지만, 몹 그리핑이 꺼져 있기 때문에 지형에 피해를 입히지 않습니다. 마지막으로, 지형에 피해를 주지 않도록 폭발하려는 TNT를 '킬'(사실상 삭제)합니다.
이제 피해를 입히지 않고 폭발 효과를 계속 유지하려면 불덩어리 소환 명령을 명령 블록 2개로 대체해야 합니다(따라서 채우기 클럭을 한 블록 더 연장해야 합니다):
execute @e[type=PrimedTnt,score_TNTGoBoom=1] ~ ~ ~ particle hugeexplosion ~ ~ ~ 0 0 0 1
execute @e[type=PrimedTnt,score_TNTGoBoom=1] ~ ~ ~ playsound random.explode @a ~ ~ ~
이 두 명령은 입자 효과와 TNT가 폭발하는 소리를 생성하지만 그게 전부입니다. 파이어볼 방식 대신 이 방법을 사용해도 월드, 플레이어, 엔티티에 피해를 주지 않습니다.
부록: 그래서 이걸 사용하면 TNT 대포 같은 건 정말 엉망이 되겠네요. 이전에 무한 TNT 대포를 테스트하던 제 크리에이티브 월드에서 이 기능을 실행했는데, 어느 정도는 작동하지만(발사체 TNT는 여전히 약간 발사됩니다) 하늘로 불덩이를 보내는 경향이 있습니다. 또한, 몹 그리핑이 꺼져 있으면 불덩이가 근처에 있는 다른 블록에 불을 붙이지 않기 때문에 각 TNT 블록에 개별적으로 불을 붙여야 합니다. 명령 블록을 조금만 더 활용하면 이 문제를 해결할 수 있을 것입니다. 사실, 이 방법을 알고 있지만 아직 세부 사항을 100% 파악하지 못했을 뿐입니다.
**바닐라 마인크래프트에는 없습니다.
이 작업을 수행하려면 서버 플러그인이나 모드(가급적 WorldGuard)가 필요합니다.
여기 질문에 월드 가드로 이 작업을 수행하는 방법을 보여주는 좋은 질문이 있습니다.