La idea
Estoy intentando (mediante un paquete de datos) utilizar una interacción (etiquetada como MobSpawner
) para pasar por una "lista" de diferentes mobs cuando se hace clic con el botón derecho, pero sólo después de haber hecho clic con el botón derecho una vez antes (es decir, cuando todo está dicho y hecho, quiero que el jugador "desbloquear" primero antes de que los ciclos; También lo he puesto a un retraso estúpido, por lo mobs no aparecerá de antemano).
Mis intentos de hacer esto hasta ahora han implicado dos marcadores (llamados UnlockedMob
y MobOption
por ejemplo), y varias comprobaciones en una función que se ejecuta cada tick.
Los intentos
La comprobación inicial de desbloqueo funciona de la siguiente manera;
- A menos que
UnlockMob
ya está establecido, si la entidad de interacción tiene algún dato de interacción, modifica el Retraso del generador de un tiempo increíblemente largo a un tiempo rápido.execute as @e[type=interaction,tag=MobSpawner] unless score @s UnlockedMob matches 1 if data entity @s interaction run data modify block ~ ~ ~ Delay set value 10s
- Con las mismas comprobaciones, establezca
MobOption
para que llegue a 1....run scoreboard players set @s MobOption 1
- Con las mismas comprobaciones, establezca
UnlockedMob
a 1....run scoreboard players set @s UnlockedMob 1
- Eliminar los datos de interacción de la entidad
execute as @e[type=minecraft:interaction,tag=MobSpawner] run data remove entity @s interaction
Con UnlockedMob
a uno, en teoría cualquier otra interacción con la entidad deberá no activar esta sección del código.
Entonces, tengo código establecido para lo siguiente;
- Si la entidad de interacción tiene algún dato de interacción, y
MobOption
es 1, modifica la entidad del engendrador para que sea una Vaca.execute as @e[type=minecraft:interaction,tag=MobSpawner] if data entity @s interaction if score @s MobOption matches 1 run data modify block 10 1 10 SpawnData.entity.id set value "minecraft:cow"
- Con las mismas comprobaciones, establezca
MobOption
a 2.... run scoreboard players set @s MobOption 2
- Eliminar los datos de interacción de la entidad
execute as @e[type=minecraft:interaction,tag=MobSpawner] run data remove entity @s interaction
Estos comandos se copian y pegan básicamente con if score @s MobOption matches
y scoreboard players set @s MobOption
aumentando de uno en uno, hasta llegar al final de la "lista", donde vuelvo a ponerlo en 1.
El problema
He probado todas las formas imaginables de modificar esto para que funcione; lo más lejos que llegué fue sin ningún tipo de comprobación de "se ha desbloqueado". y sin eliminar los datos de interacción, donde inmediatamente se disparó al final de la lista y se mantuvo sin cambios no importa lo que hice.
Ahora, sin embargo, permanece impasible e inmutable independientemente de lo que intente. La entidad de interacción ni siquiera está recibiendo el MobOption
o UnlockedMob
que he probado de forma independiente fuera del paquete de datos, tanto a través de bloques de comandos como a través del chat, y han funcionado bien.