JugonesTop

Minecraft : ¿Cómo obtengo Muertes de la Mafia para abrir las puertas? minecraft minecraft-commands

así que he estado tratando de construir un sistema en el que una costumbre zombie genera, el jugador mata, y un bloque de comandos detecta que la muerte y nos abre una puerta de hierro por desove, un bloque de redstone debajo de ella.

La manera en la que he intentado hacer es la siguiente: Tolva de reloj conectado el siguiente comando, el cual añade la etiqueta de 'trigger' a una armadura de soporte de la conducción de un zombie:

tag @e[type=armor_stand,name=deathdetect] add trigger

En una cadena de bloques de comandos, el primero quitando el gatillo si el zombi es todavía alrededor de:

execute as @e[type=zombie,nbt={Passengers:[{id:"minecraft:armor_stand",CustomName:"\"deathdetect\""}]}] at @s anchored eyes if entity @e[type=armor_stand,name=deathdetect,distance=..20] run tag @e[type=armor_stand,name=deathdetect,distance=..20,limit=1] remove trigger

Qué se supone que debemos hacer es detectar que el zombi no es todo ya que la comprobación de si es que todavía tiene el gatillo de la etiqueta, antes de poner el bloque de debajo de la puerta de hierro a ser un bloque de redstone:

execute as @e[type=armor_stand,name=deathdetect,tag=trigger] at @s run setblock -111 32 43 redstone_block

y concluyó con el asesinato de la armadura de pie, con las

kill @e[type=armor_stand,tag=trigger]

El problema que me estoy quedando en cuando me spawn de los zombis, el gatillo de la etiqueta nunca se quita de la armadura de pie, efectivamente, omitiendo el primer bloque de comandos en la cadena. He construido de modo que el sistema de tolva reloj en impulso bloque de comandos en tres de la cadena de bloques, pero claramente me he metido algo.

Para referencia, este es el zombie estoy tratando de spawn:

/summon zombie -110 33 40 {OnGround:0b,NoGravity:0b,Glowing:1b,CustomNameVisible:1b,PersistenceRequired:1b,NoAI:0b,Rotation:[-180F,0F],Passengers:[{id:"minecraft:armor_stand",NoGravity:1b,Invulnerable:1b,Marker:1b,Invisible:1b,NoBasePlate:1b,PersistenceRequired:1b,Tags:["is alive"],CustomName:"{\"text\":\"deathdetect\"}"}],CustomName:"{\"text\":\"Red Darknut\",\"color\":\"red\",\"bold\":true,\"underlined\":true}",HandItems:[{id:"minecraft:iron_sword",Count:1b,tag:{Unbreakable:1b}},{id:"minecraft:shield",Count:1b,tag:{Unbreakable:1b,BlockEntityTag:{Base:15,Patterns:[{Pattern:mc,Color:11},{Pattern:gru,Color:5},{Pattern:gru,Color:0},{Pattern:flo,Color:5},{Pattern:flo,Color:0},{Pattern:cbo,Color:5},{Pattern:cbo,Color:0}]}}}],HandDropChances:[0.0F,0.0F],ArmorItems:[{id:"minecraft:chainmail_boots",Count:1b,tag:{Unbreakable:1b}},{id:"minecraft:chainmail_leggings",Count:1b,tag:{Unbreakable:1b}},{id:"minecraft:chainmail_chestplate",Count:1b,tag:{Unbreakable:1b}},{id:"minecraft:chainmail_helmet",Count:1b,tag:{Unbreakable:1b}}],ArmorDropChances:[0.0F,0.0F,0.0F,0.0F]}

Alguna pista de donde he salido mal? Sé que para algunos es en la eliminación de la activación de la etiqueta, pero no puedo averiguar exactamente cómo solucionarlo.

Respuesta

Podrías simplemente etiquetar al zombie en su lugar.

 /tag @e[type=zombie,distance=..10] add alive
 

Puedes usar un selector de destino diferente, pero asegúrate de que solo los mobs que deben eliminarse obtengan esa etiqueta. Esto también funcionará con varias entidades, donde tendrás que eliminarlas todas.

Y luego haga que un bloque de comandos verifique si existe un mob con la etiqueta alive

 /execute unless entity @e[tag=alive] run setblock <your coordinats> minecraft:redstone_block