Ich mache eine Karte und es wird viel gesprengt und ich will nicht, dass die Blöcke beschädigt werden.
Ich habe /gamerule mobGriefing false gemacht, aber es wird immer noch TNT-Blockschaden geben.
Gibt es eine Möglichkeit, auch das abzuschalten?
Es ist also kompliziert, aber nicht viel schlimmer als einen Spieler daran zu hindern, ein Diamantschwert herzustellen. Der größte Unterschied ist, dass alles im selben Tick passieren muss, und es muss jeden Tick passieren. Das schließt die Strategie aus, die ich in der verlinkten Antwort verwendet habe; eine 20hz Fülluhr ist so ziemlich eine Notwendigkeit, während ich in der anderen Antwort eine langsamere, einfachere Uhr verwenden konnte. Damit dies funktioniert, werden Sie immer noch wollen, Mob Griefing zu deaktivieren, wie ich ghast Feuerbälle verwenden, um die eigentliche Explosion zu erstellen. Es ist auch möglich, den Effekt zu haben, aber 0 Schaden an Spielern oder anderen Entitäten zu verursachen, und ich werde die Befehle dafür am Ende hinzufügen.
Der erste Schritt besteht darin, ein Ziel für die Anzeigetafel einzurichten, um TNT zu verfolgen, das kurz vor der Explosion steht:
/scoreboard objectives add TNTGoBoom dummy
Als nächstes müssen wir eine "Füll"-Uhr einrichten. Du brauchst zwei Befehlsblöcke in einer Spalte, die durch einen Luftblock getrennt sind. Im unteren Block geben Sie den folgenden Befehl ein:
fill ~ ~1 ~ ~3 ~1 ~ air
und in den oberen geben Sie diesen Befehl ein:
fill ~ ~-1 ~ ~3 ~-1 ~ redstone_block
Setzen Sie einen Redstone-Block zwischen die beiden, und Sie haben Ihre Fülluhr. Idealerweise sollte dieser Block nicht in der Nähe einer Chunk-Grenze liegen, aber bei mir war das der Fall und es hat trotzdem funktioniert. Seltsame Dinge können passieren, wenn ein Teil einer Fülluhr aus dem Speicher entladen wird, aber wenn es ein Spawn Chunk ist oder man immer in der Nähe der Uhr ist, muss man sich keine Sorgen machen.
Sie sollten drei weitere Redstone-Blöcke auf einer Seite sehen. Sie werden drei weitere Kommandoblöcke neben den roten Blöcken platzieren (vorzugsweise über oder unter ihnen). Die Befehle, die Sie verwenden wollen, sind in der Reihenfolge, in der sie den ersten beiden Befehlsblöcken am nächsten sind:
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]
Okay, lasst uns diese drei Befehle durchgehen. Der erste setzt den Scoreboard-Wert für das TNTGoBoom-Ziel auf 1 für jedes TNT, das bereit ist, beim nächsten Tick zu explodieren. Auf diese Weise verfolgen wir das TNT. Der nächste Befehl beschwört einen unsichtbaren Feuerball genau an der Stelle des TNT, der sich direkt nach unten bewegt und die gleiche Sprengkraft wie ein TNT-Stück hat. Das ist es, was den Explosionseffekt und den Schaden an Spielern/Entitäten verursacht, aber da Mob Griefing ausgeschaltet ist, wird es das Terrain nicht beschädigen. Schließlich kill
(effektiv löschen) wir das TNT, das im Begriff ist zu explodieren, so dass es das Terrain nicht beschädigt.
Wenn du nun immer noch den Explosionseffekt haben willst, ohne Schaden zu verursachen, dann musst du den Feuerball-Beschwörungsbefehl durch 2 Befehlsblöcke ersetzen (und somit deine Füllzeit um einen weiteren Block verlängern):
execute @e[type=PrimedTnt,score_TNTGoBoom=1] ~ ~ ~ particle hugeexplosion ~ ~ ~ 0 0 0 1
execute @e[type=PrimedTnt,score_TNTGoBoom=1] ~ ~ ~ playsound random.explode @a ~ ~ ~
Diese beiden Befehle erzeugen den Partikeleffekt und das Geräusch von explodierendem TNT, aber das war's auch schon. Es gibt keinen Schaden an der Welt, den Spielern oder Entitäten, wenn Sie dies anstelle der Feuerballmethode verwenden.
Nachtrag: Das wird Dinge wie TNT-Kanonen wirklich durcheinander bringen. Ich hatte dies in meiner kreativen Welt laufen, in der ich zuvor eine unendliche TNT-Kanone getestet habe, und obwohl es irgendwie funktioniert (das TNT-Projektil schießt immer noch ein wenig heraus), hat es die Tendenz, einen Feuerball in den Himmel zu schicken. Außerdem bedeutet dies, dass jeder TNT-Block einzeln angezündet werden muss, da bei ausgeschaltetem Mob-Griefing der Feuerball keine anderen in der Nähe anzündet. Ich bin sicher, es gibt eine Möglichkeit, dies mit ein wenig mehr Befehlsblock-Fu zu umgehen. Eigentlich weiß ich, dass es einen Weg gibt, dies zu tun, ich bin nur noch nicht 100%ig mit den Details vertraut.
Nicht in Vanilla Minecraft, nein.
Sie bräuchten ein Server-Plugin oder einen Mod (vorzugsweise WorldGuard), um dies zu tun.
Es gibt eine gute Frage hier, die zeigt, wie Sie dies mit World Guard tun können.
Baue eine Vorrichtung, die einen Befehlsblock ein- und ausschaltet und ein- und ausschaltet und einschaltet, usw. usw, gib /kill @e[type=PrimedTnt] in den Befehlsblock ein. Dies wird tnt zerstören, sobald es gesetzt ist. EINFACH!