17 votos

¿Cómo puedo seleccionar dos tipos de entidades en Minecraft con el selector de tipos?

He hecho esta pregunta a un desarrollador de Minecraft y pensé en preguntar aquí también, ya que podrían no ver la pregunta.

¿Cómo puedo seleccionar dos tipos de entidades en Minecraft?

Por ejemplo, algo como: /say @e[type=![Player,Item],r=50] (para aclarar, también intenté type=Item,Player , type=Item,type=Player] etc)

Debe seleccionar cualquier entidad que no coincida con los jugadores o los artículos, así que cosas como Creepers, Ghasts, XPOrbs, PrimedTNT y así sucesivamente en un radio de 50 bloques e imprimirlos al chat.

En lugar de eso, ignora una de las banderas, y trabaja con la otra en su lugar.

0 votos

No creo que se pueda, por desgracia.

0 votos

Le he preguntado a Dinnerbone sobre esto sin embargo pasará un tiempo antes de que responda estoy seguro si es que lo hace. Pero si alguien más puede encontrar una manera de hacerlo por favor compartirlo gracias.

0 votos

@MBraedley lo es, la respuesta de idtownie parece que funcionaría pero no lo he probado.

20voto

izœc Puntos 1497

En primer lugar, cree un objetivo de marcador ficticio:

/scoreboard objectives add selectMe dummy

A continuación, en un reloj de redstone rápido, dar a todas las entidades un selectMe puntuación de 1:

/scoreboard players set @e selectMe 1

Da a todos los jugadores y objetos una puntuación de selectMe de 0 con estos dos bloques de comandos:

/scoreboard players set @e[type=Player] selectMe 0

/scoreboard players set @e[type=Item] selectMe 0

Ahora, puede seleccionarlos apuntando a todas las entidades en un radio de 50 manzanas que tengan una puntuación de selectMe de 1:

/say @e[score_selectMe_min=1,r=50]

Espero que esto haya servido de ayuda. :)

6 votos

Cosas como esta hacen que realmente quiera aprender más sobre los marcadores.

0 votos

No había pensado en eso. Es increíble, pero aún así me parece que deberían añadir una forma de bombear una matriz a los selectores.

0 votos

O simplemente añadir una coma Ejemplo. /say @e[type=!Player,!Item,r=50]

7voto

MrLemon Puntos 13223

A partir de Minecraft 1.9, etiquetas de los marcadores son más adecuados para esto que establecer un objetivo y asignar una puntuación.

Es tan fácil como configurar bloques de comandos de repetición (o una línea de repetición/cadena) y poner:

/scoreboard players tag @e[type=Player] add playerOrItem
/scoreboard players tag @e[type=Item] add playerOrItem

A continuación, puede utilizar @e[tag=playerOrItem] et @e[tag=!playerOrItem] para seleccionar cada entidad que es et no es un jugador o un artículo, respectivamente.


Las ventajas de utilizar etiquetas en lugar de objetivos de marcador son:

  1. No es necesario establecer un objetivo.
  2. Se inicializan como vacíos por defecto. Es decir @a[tag=!banana] funciona en todos los jugadores por defecto, a diferencia de @a[score_banana=0] . Esto significa que sólo tiene que afectar a los objetivos que realmente quiere afectar.
  3. Las etiquetas también se almacenan en los datos de una entidad NBT, en el Tags etiqueta.

0voto

James Mitch Puntos 101

La forma más eficiente de seleccionar dos entidades específicas a la vez con el argumento "tipo" es poner dos argumentos "tipo" uno al lado del otro.

Ex.

@e[type=Player,type=Villager]

Apunta sólo a jugadores y aldeanos.

Ex.

@r[type=Player,type=Villager]

Apunta sólo a jugadores y aldeanos. Sin embargo, este selector de objetivos elige una entidad al azar dentro de los parámetros especificados del argumento, mientras que el selector anterior elegía todas las entidades que cumplían los parámetros del argumento.

Esto podría continuar indefinidamente hasta que haya seleccionado cada tipo de entidad en Minecraft (Sin embargo, eso sería una completa pérdida de tiempo porque la misma acción se puede hacer con @e).

Por favor, corrijan cualquier error que haya podido cometer.

Para más información sobre los argumentos del selector de objetivos, visita este post del Foro de Minecraft.

http://www.minecraftforum.net/forums/Minecraft-discussion/redstone-discussion-and/command-blocks/2477949-Minecraft-pc-target-selectors-and-their-arguments

1 votos

No me ha funcionado La respuesta anterior seleccionada responde mejor a esto. Creo que ya había probado todas (o casi todas) las permutaciones antes de publicar, incluyendo [type=Item,Player] [type=Item,type=Player] [type=[Item,Player] y recuerdo claramente que uno se me estrelló y ninguno funcionó.

1 votos

Esto no funciona. Debido al simple análisis de los argumentos que emplea Minecraft, @e[type=Player,type=Villager] es funcionalmente idéntico a @e[type=Villager] . El segundo argumento simplemente sobrescribe el primero.

0voto

Lodewijk Puntos 101

En Minecraft 1.9, hay una forma sencilla de hacerlo sin marcadores utilizando bloques de comando en cadena. Para la demostración, voy a matar a todas las entidades que no son jugadores o artículos.

Primer bloque de mando: execute @e ~ ~ ~ summon ArmorStand ~ ~ ~ {Invisible:1,NoGravity:1}

Esto hace que una armadura se sitúe en el mismo lugar que cada entidad. El primer bloque de mando debe estar orientado hacia el segundo bloque de mando.

Segundo bloque de mando: execute @e[type=Player] ~ ~ ~ kill @e[type=ArmorStand,c=1]

Esto hace que todos los jugadores maten los puestos de armadura que están a punto de hacer algo.

Tercer bloque de mando: execute @e[type=Item] ~ ~ ~ kill @e[type=ArmorStand,c=1]

Igual que el anterior, pero con jugadores. Puedes hacer esto tantas veces como quieras.

Último bloque de mando: execute @e[type=ArmorStand] ~ ~ ~ kill @e[c=2] ~ ~ ~

Esto hace que todos los puestos de armadura se maten a sí mismos y a la entidad que representaban.

Las ventajas:

  • Utiliza soportes de armadura. ¿Por qué no?
  • No requiere de marcadores

Las desventajas:

  • Si una entidad muere/se teletransporta a un lugar lejano después de que el soporte de la armadura sea invocado pero antes de que los soportes de la armadura ejecuten sus comandos, alguna entidad que no está destinada a ser asesinada será asesinada

Si quieres que todas las entidades que no son jugadores ejecuten un comando, utiliza esto:

Último bloque de mando: execute @e[type=ArmorStand] ~ ~ ~ execute @e[r=1,c=-1] ~ ~ ~ <command>

Desventajas de esto:

  • Si una entidad muere/teleporta/abandona el rango en menos de 1ms, el soporte de la armadura ejecutará el comando por sí mismo

-2voto

DJP Puntos 29

Una forma mucho más fácil de hacerlo es utilizar este comando:

/kill @e[type=!Player,r=20] . El signo de exclamación significa matar todo excepto el tipo de entidad al que se apunta. Puedes poner esto en un reloj de redstone y funciona muy bien. ¡Espero que esto te haya ayudado! :) P.D. puedes poner todas las entidades que quieras dentro del comando. Solo tienes que hacer esto: /kill @e[type=!Player,!Sheep,r=20]

1 votos

Esto no responde realmente a la pregunta, y la última parte es simplemente errónea. /kill @e[type=!Player,!Sheep,r=20] se matar a todas las ovejas en 20 cuadras, porque definitivamente no es así como funcionan los argumentos del selector de objetivos.

0 votos

Sí, como han dicho. No es correcto, y esto se ha planteado en la pregunta original y en los comentarios de otras respuestas.

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