Minecraft Block schaden von Monstern deaktivieren?


15.11.2021, 18:24

In übrigen ich spiele Java auf der 1.17

1 Antwort

Hi,

einen direkten Weg gibt es nicht, was eventuell funktionieren könnte wäre mehrere Befehle in einer Clock nacheinander von Commandblöcken auszulösen (ungetestet):

  1. /gamerule mobGriefing false
  2. /execute as @e[type=Villager] if block ~ ~-1~ farmland run /gamerule mobGriefing true
  3. /execute as @[type=Villager] run /execute as @e[type=item, r=5] run /gamerule mobGriefing true

Die Idee ist die gamerule mobgriefing dauerhaft auf false zu setzen und nur aktivieren wenn sich ein Villager auf Ackerboden oder in der Nähe eines Items befindet. Evtl könnte es sein das das Zeitfenster nicht für eine Aktion ausreicht/Creepern etc zu viel Spielraum lässt, dann müsste man es umdrehen und jeden Mobschaden einzeln in der clock ausschalten wenn benötigt (ebenfalls ungetestet):

  1. /gamerule mobGriefing true
  2. Creeper: /execute @a ~ ~ ~ run /execute as @e[type=Creeper,r=5] run /gamerule mobGriefing false
  3. Endermen: /execute as @e[type=enderman, carriedBlockState=!minecraft:piston_extension] run /data merge @s {carried:minecraft:piston_extension}
  4. Ghast: /execute as @e[type=minecraft:fireball,tag=!harmlos] run data merge @s {ExplosionPower:0,Tags:["harmlos"]}
  5. Wither: /execute as @e[type=wither] run /gamerule mobGriefing false

So ist mobGriefing dauerhaft aktiv, befindet sich ein Creeper in 5 Block Radius zu einem Spieler oder ein Wither in der Welt wird sie deaktiviert. Ghasts wird ihre Explosionsstärke auf 0 gesetzt, die Tags sind dafür da das es für jeden Feuerball nur einmal geändert wird statt jeden Tick und Endermen wird ein unplatzierbarer Block in die Hände gedrückt, da sie somit ständig etwas halten können sie nichts abbauen.