4 votos

El uso de Interacciones para el ciclo mob Spawner entidades (Minecraft 23w31a)

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.

2voto

EarthToAccess Puntos 147

El problema se debía a una mala combustión en todos los ámbitos.

Como intentaba reiniciarse constantemente y realizar un número estúpido de comprobaciones, al final fallaba en una comprobación y se negaba a funcionar. Los detalles, no puedo recordar, ya que requiere la solución de problemas masiva a las 3 de la mañana; lo siento a los que este post apareció en una búsqueda en Google para.

La resolución en sí fue modular cada sección en sus propias funciones; en lugar de un archivo de función masivo para cada comprobación, ahora tengo el archivo de función principal que realiza comprobaciones sobre el desbloqueo y/o el ciclado, y archivos de función separados que gestionan el desbloqueo y el ciclado en sí.

JugonesTop.com

Jugonestop es una comunidad para amantes del gaming. Puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X