MinecraftMin

Minecraft => Redstone => Bloques de comandos => Mensaje iniciado por: sircripers en Febrero 14, 2017, 06:55:53 pm

Título: [Aportación] Todo sobre el comando /testfor (1.12)
Publicado por: sircripers en Febrero 14, 2017, 06:55:53 pm
IMPORTANTE
\/ Información sobre la 1.13 y el comando /testfor \/
Es posible que debido a las nuevas funciones del comando /execute en la futura 1.13 el /testfor sea eliminado a partir de esa versión, por lo que, los comandos que enseño en este post serán solo funcionales desde la 1.8-1.12 (tened en cuenta que los comandos han tenido cambios entre esas versiones y puede que algo que enseñe en el post, que está centrado en la 1.12, no funcione en alguna versión anterior).
En caso de que finalmente en la 1.13 se elimine el /testfor (y si no se me adelanta alguien e,e) haré un post explicando brevemente como sería el equivalente en execute al testfor, o incluso quizás un post mas completo explicando todas sus nuevas funciones.

En esta aportación intentare aclarar las dudas que podáis tener con el comando /testfor usando varios ejemplos (Al menos sobre lo que sé) Dividiré el post en: Entidades, Jugadores y Varios. Todos ellos con pequeños apartados que trataran cosas concretas.
(Me limitaré solo a dar ejemplos del /testfor y no a hablar sobre el /testforblocks)

Antes que nada una pequeña explicación de que es el comando /testfor y cuales son sus utilidades.
Código: [Seleccionar]
/testfor @pSiendo esta su sintaxis más básica sirve para detectar, en este caso al jugador más cercano a quien ejecute el comando, es decir, si un jugador utiliza este comando este se detectara a si mismo al ser el jugador más cercano, si el comando se ejecuta en un command block, entonces detectará al jugador que este más cerca de él.

Este comando tal cual podría servir para saber cual es el jugador más cercano por ejemplo a un lugar concreto.

Por si andaís un poco perdidos con los selectores de objetivos en la gamepedia se explican perfectamente: http://minecraft.gamepedia.com/Commands#Target_selectors (http://minecraft.gamepedia.com/Commands#Target_selectors)

Entidades
Cómo detectar entidades con un nombre específico o items.

¿Quieres probar estos comandos? Puedes utilizar esta página para generar comandos, después de varios años de intentonas de hacer mapas puedo decir que es sin duda la mejor para generar mobs.
https://mcstacker.bimbimma.com/ (https://mcstacker.bimbimma.com/)
   


-------------------- Detectar un Mob -------------------


-Comando básico:
/testfor @eDetectar una entidad puede ser útil para saber si hay un mob en el mundo, si esta en un lugar en específico, si esta a x distancia del jugador etc...
La manera más simple de saber si un jugador ha eliminado todos los zombies de una zona por ejemplo, sería colocando el siguiente comando debajo de esa zona:
Código: [Seleccionar]
/testfor @e[type=Zombie,r=20]o también detectar a un mob en un radio de unas coordenadas específicas.
Código: [Seleccionar]
/testfor @e[type=Zombie,x=333,y=50,z=474,r=5]
Con un comparador dando señal a un bloque con una antorcha de redstone si el bloque de comandos deja de detectar que hay zombies en la zona apagara la señal del comparador encendiendo así la antorcha y a los comandos que tenga a su lado.

-Detectar a un mob con nombre específico:
Código: [Seleccionar]
/testfor @e[type=Zombie,name=Guardian]
-Detectar cuando un mob esta a x distancia de un jugador:
Código: [Seleccionar]
/execute @a ~ ~ ~ /testfor @e[type=Zombie,name=Guardian,r=5]
-Detectar un mob con un item en la mano:
Código: [Seleccionar]
/testfor @e[type=Zombie,name=guardian] {HandItems:[0:{id:"minecraft:stone_sword"}]}

-------------------- Detectar un item --------------------


Detectar items en el suelo utilizando /testfor no siempre tiene utilidades, ya que la mayoría de sistemas que usan la detección de items en el suelo lo hacen con el comando execute (recordemos que el comando testfor es limitado y solo nos sirve como mecanismo para detectar algo y en base a eso mediante otro bloque de comandos realizar una acción) Pero si es cierto que el execute no permite el uso de nbt tags.

-Detectar item en el suelo:
Código: [Seleccionar]
/testfor @e[type=Item]
-Detectar un item en concreto:
Código: [Seleccionar]
/testfor @e[type=Item] {Item:{id:"minecraft:torch"}}
-Detectar item renombrado:
Código: [Seleccionar]
testfor @e[type=Item] {Item:{id:"minecraft:torch",tag:{display:{Name:"antorcha cálida"}}}}

------------------ Detectar items en item frame ------------------


-Detectar un item en un item frame:
Código: [Seleccionar]
/testfor @e[type=item_frame] {Item:{id:"minecraft:torch",Damage:0s,Count:1b},ItemRotation:0b}
Jugadores
Detectar a un jugador con items, en coordenadas o cerca de otras entidades
Las utilidades del testfor en jugadores son básicamente saber cuando un jugador sostiene un item, lo tiene en el inventario, si esta en un lugar en específico etc...
Aunque solo detectar a un jugador o un mob no sirve mucho mas que para saber algo sobre estos. Para abrir una puerta o hacer tp a un jugador por ejemplo, cuando estos tienen un item en la mano hay que utilizar un bloque de comandos en modo cadena o utilizar un comparador que active el siguiente comando.


------------------ Detectar items en el inventario ------------------


Detectar items en el inventario del jugador es una de las cosas más útiles para el mapmaking, desde abrir una puerta al tener una llave en el inventario o detectar que el jugador ha recogido un item específico y muchísimas más cosas.

Si queréis probar estos comandos aquí tenéis uno para conseguir la antorcha:
Código: [Seleccionar]
/give @p minecraft:torch 1 0 {display:{Name:"antorcha cálida",Lore:["Emite una cálida luz que que protege de las más bajas temperaturas."]}}También os recomiendo este give generator, es bastante útil y ahorra mucho tiempo: https://ezekielelin.com/give/


-Detectar item en el inventario:
Código: [Seleccionar]
/testfor @a {Inventory:[{id:"minecraft:torch"}]}
-Detectar item seleccionado en cualquier slot:
Código: [Seleccionar]
/testfor @a {SelectedItem:{id:"minecraft:torch"}}
-Detectar un item seleccionado en el primer slot de la hotbar:
Código: [Seleccionar]
/testfor @a {SelectedItemSlot:0,Inventory:[{Slot:0b,id:"minecraft:torch"}]}
-Detectar item renombrado seleccionado en primer slot:
Código: [Seleccionar]
/testfor @a {SelectedItemSlot:0,Inventory:[{Slot:0b,id:"minecraft:torch"},{tag:{display:{Name:"antorcha cálida"}}}]}
-Detectar item renombrado y con lore seleccionado
Código: [Seleccionar]
/testfor @a {SelectedItem:{id:"minecraft:torch",tag:{display:{Name:"antorcha cálida",Lore:["Emite una cálida luz que que protege de las más bajas temperaturas."]}}}}

---- Detectar jugadores (coordenadas, cercanía, etc...) ----


Detectar jugador en un radio respecto a un bloque de comandos
Código: [Seleccionar]
/testfor @a[r=5]
-Detectar jugador en un radio respecto a otra entidad
Código: [Seleccionar]
/execute @e[type=Zombie] ~ ~ ~ /testfor @p[r=5]
-Detectar a un jugador en un radio respecto a unas coordenadas
Código: [Seleccionar]
/testfor @a[x=0,y=50,z=0,r=3]

-------- Detectar jugadores con efectos de poción --------


Detectar efectos de poción de jugadores puede ser muy útil, tanto como detectar items en el inventario, siempre que la situación requiera usarlo claro.


Aquí tienéis una lista con todas las id de los efectos de poción:
http://minecraft.gamepedia.com/Status_effect#Summary_of_effects

-Detectar efecto de poción (Comando básico)
Código: [Seleccionar]
/testfor @a {ActiveEffects:[{Id:1b}]}
-Detectar efecto de poción (nivel)
Código: [Seleccionar]
/testfor @a {ActiveEffects:[{Id:1b,Amplifier:0b}]}
 
Varios

---- Detectar jugadores en un team o con un scoreboard. ----


Aunque útil para saber por ejemplo si hay un jugador con cierto score o si esta en un team, debo decir que en este caso el testfor sería un comando transitorio, que serviría para dar señal al siguiente comando. La mayoría de veces en mapas o minijuegos se utiliza el /execute aplicando los mismos selectores de objetivo que utilizare en los siguientes comandos:

-Detectar jugador en un team:
Código: [Seleccionar]
/testfor @p[team=Red]Tanto en este comando como en los demás utilizaré como ejemplo el team "Red"
y el scoreboard: "Muertes"

-Detectar jugador de un team en ciertas coordenadas:
Código: [Seleccionar]
/testfor @a[team=Red,x=0,y=50,z=0,r=3]
-Detectar un jugador de un team con score mínimo:
Código: [Seleccionar]
/testfor @a[team=Red,score_Muertes_min=3]
-Detectar un jugador de un team con puntuación exacta:
Código: [Seleccionar]
/testfor @a[team=Red,score_Muertes=3,score_Muertes_min=3]

-Si dais ideas de ejemplos con /testfor que no encajen en ningún otro apartado los añadiré aquí  ;)


Si tenéis alguna duda, sobre un comando en concreto relacionado con el /testfor, podéis preguntarlo en este mismo post :)
En cambio si tenéis algún consejo, para mejorarlo o añadir algo, prefiero que me lo digáis directamente por mensaje privado, para dejar los comentarios exclusivamente para dudas u otras cosas.

Espero sinceramente que os haya servido de ayuda este post si teníais alguna duda y que os haya gustado  :D :D ya que ha sido bastante tedioso de hacer <3
Título: Re:[Aportación] Todo sobre el comando /testfor
Publicado por: PabloAN en Febrero 14, 2017, 07:02:49 pm
Gran aportación sir, la verdad ayudaras a mucha gente (incluyéndome :v) que no tenga tanta experiencia con estos comandos
Dejo Mi Wendingo!
Título: Re:[Aportación] Todo sobre el comando /testfor
Publicado por: Monster89 en Febrero 25, 2017, 05:24:07 pm
Soy nuevo en los comandos, me sirvió  mucho gracias por la ayuda por ahora el mapa necesita estos comando...
Título: Re:[Aportación] Todo sobre el comando /testfor
Publicado por: Kevin190 en Mayo 26, 2017, 06:53:24 pm
¡Wow, muy currado!
Me encantaría que pusieras para qué versión son estos comandos.  :D
Título: Re:[Aportación] Todo sobre el comando /testfor
Publicado por: sircripers en Mayo 27, 2017, 04:10:03 pm
¡Wow, muy currado!
Me encantaría que pusieras para qué versión son estos comandos.  :D
Menos uno o dos todos deberían poder usarse a partir de la 1.8, por ejemplo:

Detectar coordenadas en la 1.11
Código: [Seleccionar]
/testfor @a[x=0,y=50,z=0,r=3]en la 1.8 - 1.10 era así:
Código: [Seleccionar]
/testfor @a[0,50,0,r=3]
Título: Re:[Aportación] Todo sobre el comando /testfor
Publicado por: na_na_na_banana en Septiembre 18, 2017, 10:37:14 pm
esto sirve en la version 1.12.2  ??
Título: Re:[Aportación] Todo sobre el comando /testfor
Publicado por: sircripers en Septiembre 18, 2017, 11:25:41 pm
esto sirve en la version 1.12.2  ??
Si
Título: Re:[Aportación] Todo sobre el comando /testfor (1.12)
Publicado por: Marlon240 en Diciembre 14, 2017, 11:15:52 pm
Oye como se detecta un mensaje de chat, por ejemplo mando holaaaaa, y quiero que eso mande señal desde un Commadn_block
Título: Re:[Aportación] Todo sobre el comando /testfor (1.12)
Publicado por: SoulAlex en Diciembre 16, 2017, 04:40:40 am
Hola MinForeros!
Oye como se detecta un mensaje de chat, por ejemplo mando holaaaaa, y quiero que eso mande señal desde un Commadn_block
En respuesta a tu pregunta, no es posible detectar un mensaje del chat, de ninguna manera. (O hasta donde yo sé)

ebueh ro decir que me gusto tu post, y esta bien para Novatos en comandos, ya que para mí, este comando "era" el mas básico y el mas importante de todos. Además del scoreboard por supuesto...

Además el paso de las versiones, el /execute ha reemplazado casi por completo el /testfor. Ya que este puede "usar la funcion del testfor y además, hacer ejecutar un comando de una determinada entidad!". Esto simplificaba un sistema de un testfor, un comparador de redstone y otro comando. Todo esto en un solo comando.

He estado desconectado del MC y desconozco totalmente las nuevas características de la 1.13, inclusive de la 1.12, 1.11 y además de la 1.10 :'v asi que diré lo mismo en una respuesta a otro post:
"Estoy tan oxidado en MC que necesitaré un disolvente muy fuerte..."

Saludos, El Alesi :3
Título: Re:[Aportación] Todo sobre el comando /testfor (1.12)
Publicado por: sircripers en Enero 13, 2018, 06:40:00 pm
Hola MinForeros!
Oye como se detecta un mensaje de chat, por ejemplo mando holaaaaa, y quiero que eso mande señal desde un Commadn_block
En respuesta a tu pregunta, no es posible detectar un mensaje del chat, de ninguna manera. (O hasta donde yo sé)

ebueh ro decir que me gusto tu post, y esta bien para Novatos en comandos, ya que para mí, este comando "era" el mas básico y el mas importante de todos. Además del scoreboard por supuesto...

Además el paso de las versiones, el /execute ha reemplazado casi por completo el /testfor. Ya que este puede "usar la funcion del testfor y además, hacer ejecutar un comando de una determinada entidad!". Esto simplificaba un sistema de un testfor, un comparador de redstone y otro comando. Todo esto en un solo comando.

He estado desconectado del MC y desconozco totalmente las nuevas características de la 1.13, inclusive de la 1.12, 1.11 y además de la 1.10 :'v asi que diré lo mismo en una respuesta a otro post:
"Estoy tan oxidado en MC que necesitaré un disolvente muy fuerte..."

Saludos, El Alesi :3


En la 1.13 el comando testfor es completamente eliminado, dejando este post como guia para versiones desde la 1.8 a la 1.12 (practicamente todos los comandos que he puesto de ejemplo se pueden usar en versiones anteriores a la 1.12 ya que solo usan selectores de objetivos, que poco han cambiado entre versiones)

Título: Re:[Aportación] Todo sobre el comando /testfor (1.12)
Publicado por: NickSplat en Marzo 16, 2018, 07:54:23 pm
no me funciona el detectar un objeto en la mano pero con un nombre en especifico (me funciona pero sin nombre modificado, con el que viene por defecto) este es el comando que no me funciona /testfor @a {SelectedItem:{id:"minecraft:stick",tag:{display:{name:"Bomba"}}}} estoy en la 1.12.2 Me ayudan? (me sale este error [15:52:41] (aqui va mi nick) no coincide con la estructura de datos necesaria X-p
Título: Re:[Aportación] Todo sobre el comando /testfor (1.12)
Publicado por: Darien000 en Marzo 16, 2018, 11:44:33 pm
no me funciona el detectar un objeto en la mano pero con un nombre en especifico (me funciona pero sin nombre modificado, con el que viene por defecto) este es el comando que no me funciona /testfor @a {SelectedItem:{id:"minecraft:stick",tag:{display:{name:"Bomba"}}}} estoy en la 1.12.2 Me ayudan? (me sale este error [15:52:41] (aqui va mi nick) no coincide con la estructura de datos necesaria X-p

Has hecho mal la NBT tag, ya que tu hiciste /testfor @a {SelectedItem:{id:"minecraft:stick",tag:{display:{name:"Bomba"}}}} y el problema es que has puesto "name" con minúscula cuando tiene que ser "Name", así que la forma correcta de escribir ese comando seria:

Código: [Seleccionar]
/testfor @a {SelectedItem:{id:"minecraft:stick",tag:{display:{Name:"Bomba"}}}}
Título: Re:[Aportación] Todo sobre el comando /testfor (1.12)
Publicado por: AgenT_Cer0 en Abril 23, 2018, 08:26:16 pm
En la 1.12.2 funciona como
/testfor @p [x=(valor),y=(valor),z=(valor),r=(valor)]
Si usan un command:block no olviden ponerlo en modo de (necesita redstone) y ponerle una linea de redstone desde un reloj
Título: Re:[Aportación] Todo sobre el comando /testfor (1.12)
Publicado por: sircripers en Abril 23, 2018, 11:56:10 pm
En la 1.12.2 funciona como
/testfor @p [x=(valor),y=(valor),z=(valor),r=(valor)]
Si usan un command:block no olviden ponerlo en modo de (necesita redstone) y ponerle una linea de redstone desde un reloj
o poner el bloque de comandos en repeat y always active..
Título: Re:[Aportación] Todo sobre el comando /testfor (1.12)
Publicado por: FranklinJSP en Diciembre 02, 2018, 04:56:46 am
A ok, Entonces si quiero que Un Mod o un dialogo se active en equis Coordenada el testfor sirve para activarlo es decir, coloco un bloque de comando con el testfor y la coordenada donde quiero que se active un ejemplo un dialogo, y alado del bloque de comando puedo colocar un comparador y alado del comparador una bloque de redstone y alado del bloque de redstone puedo colocar un bloque de comando con el comando del dialogo eso puede servir cierto?
Título: Re:[Aportación] Todo sobre el comando /testfor (1.12)
Publicado por: sircripers en Diciembre 02, 2018, 09:33:01 pm
A ok, Entonces si quiero que Un Mod o un dialogo se active en equis Coordenada el testfor sirve para activarlo es decir, coloco un bloque de comando con el testfor y la coordenada donde quiero que se active un ejemplo un dialogo, y alado del bloque de comando puedo colocar un comparador y alado del comparador una bloque de redstone y alado del bloque de redstone puedo colocar un bloque de comando con el comando del dialogo eso puede servir cierto?
wow,  creo que te has repetido demasiadas veces xd, si entiendo bien lo que dices...
¿Te refieres a que al activarse un testfor, aparezca un dialogo en x coordenadas?
si es a eso a lo que te refieres, claro.

Para ello colocarías en un bloque de comando el testfor que necesites... no puedo ayudar mucho sin tener un contexto así que pondré unos ejemplos simples.

(en versiones anteriores a la 1.9)

-primer bloque de comandos, necesita ser actualizado constantemente con señales de redstone.
Código: [Seleccionar]
/testfor @p[x=0,y=70,z=0,r=2]
-pegado al bloque de comandos anterior, un comparador que apunte al segundo.

-segundo bloque de comandos:
Código: [Seleccionar]
/say hola
Realmente no si si funcione ese testfor en versiones antiguas, se que en la 1.12 si, pero en caso de que no lo haga seria tal que así: /testfor @p (http://minecraftmin.net/index.php?action=profile;u=18548)[0,70,0,r=2]

A parte, no se puede hacer un /say en unas coordenadas especificas, al menos no de la forma en la que puse mis ejemplos, ya que ese dialogo realmente lo verían todos los jugadores conectados, pero no supone ningún problema si el mapa no es multijugador.

Título: Re:[Aportación] Todo sobre el comando /testfor (1.12)
Publicado por: FranklinJSP en Diciembre 02, 2018, 09:36:18 pm
Ok, ya te entendi, pero como estoy usando la 1.12.2 No hay problemas con los comandos que dijistes 
Título: Re:[Aportación] Todo sobre el comando /testfor (1.12)
Publicado por: SlenderLuigi666 en Octubre 17, 2020, 07:38:06 am
Hola amigos me podrian ayudar con esto.
Necesito detectar con el comando testfor cuando un jugador agarra puntos de experiencia.
XDDD yo lo intenté a si testfor @a[xp_min=1L]