1 votos

Minecraft - Especificar un marco de elemento visible

Estoy creando un conjunto de bloques de comandos que permiten a mis jugadores de supervivencia cambiar un marco de objeto normal por un marco de objeto invisible. Esto es lo que tengo hasta ahora:

El primer bloque de comandos elimina un marco de objeto del inventario del jugador. El bloque de comandos se establece en impulso, incondicional, necesita redstone. Los jugadores pulsan un botón para activar este bloque de comandos.

clear @p item_frame 1

El segundo bloque de comandos proporciona un marco de objeto invisible al jugador. Este bloque de comandos se establece en cadena, condicional, siempre activo.

/give @p minecraft:item_frame{EntityTag:{Invisible:1}, display:{Name:'{"text":"Invisible Item Frame"}'}}

Estos dos bloques de comandos funcionan bastante bien. Sin embargo, el primer bloque de comandos no distingue entre un marco de objeto invisible y un marco de objeto normal. Si un jugador tiene un marco de objeto invisible en su inventario, puede borrarlo y volver a colocarlo inmediatamente, lo que hace que parezca que el bloque de comandos no hace nada.

Quiero que el primer comando sólo acepte marcos de elementos normales. He probado dos códigos:

clear @p item_frame{EntityTag:{Invisible:0}} 1

y

clear @p item_frame{display:{Name:'{"text":""}'}} 1

Ninguno de estos códigos funciona.

¿Cómo escribo el código para que sólo acepte marcos de elementos visibles o marcos de elementos sin nombre personalizado?

1voto

Socchi Puntos 78

Lamentablemente no es posible /borrar un artículo basándose en la ausencia de NBT.

Existen soluciones, como comprobar si cada ranura tiene el NBT antes de cambiar el recuento del elemento en dicha ranura, o utilizar alguna etiqueta que el elemento tenga por defecto, como una etiqueta Damage para los elementos que admiten dicho valor (ya que éste tiene un valor por defecto de 0s).

No estoy del todo seguro de si los marcos de elementos almacenan sus valores por defecto, si lo hacen estabas cerca - usando Invisible:0b debería funcionar entonces (al probar para NBT es necesario incluir el tipo de datos correcto).


De lo contrario, en este caso probablemente sea más fácil modificar una entidad de objeto caído en su lugar, para hacer que sea responsabilidad del jugador elegir un marco de objeto no invisible en primer lugar.

/data merge entity @e[type=item,limit=1,sort=nearest,nbt={Item:{id:"minecraft:item_frame"}}] {Item:{tag:{EntityTag:{Invisible:1b}, display:{Name:'{"text":"Invisible Item Frame"}'}}}}

Añadir un Count:1b (dentro de la etiqueta Item nbt en el selector) si quiere evitar que los jugadores conviertan pilas enteras a la vez.

1 votos

Muchas gracias por su ayuda. Desafortunadamente, cambiar el código a Invisible:0b no funciona. Sin embargo, hacer que el bloque de comandos convierta una entidad de elemento caído es muy inteligente. Puede que esa sea la solución que utilice. Le agradezco su sugerencia.

0 votos

@Megan Tal vez puedas añadir un destello de encantamiento (añadiendo una etiqueta NBT de encantamiento vacía) o CustomModelData (si estás usando un paquete de recursos) para cambiar visualmente de forma más distintiva el marco del objeto, tanto en el inventario como en la forma del objeto. De esta manera es muy obvio cuando el bloque de comando hizo algo y también es más fácil distinguir los diferentes marcos.

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