Septiembre 23, 2017, 09:18:53 am
Visitante



Autor Tema: [Ayuda] Como detectar donde pone un bloque el jugador  (Leído 71 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Agosto 15, 2017, 12:13:02 am

axe005




  • Desconectado

  • *

    • *
    • *
    • *
  • Mensaje personal
    Hola soy nuevo en el foro
  • Actividad

  • 0%
  • Logros

Más información

hola necesito ayuda ya que estoy trabajando en algo pero me quedo trabado ya que no se si se puede hacer un testforblock con radio o si hay una forma no la conozco, por ejemplo quiero detectar si hay un mineral de esmeralda en un radio de 12 bloques. La unica forma que se me ocurre seria usar un:
Citar
/execute @a ~ ~ ~ /testforblock
por cada bloque, gracias

Linkback: http://minecraftmin.net/index.php?topic=14961.0
Esto hacido creado por axe005 todos los derechos reservados copyright 2017-2570





Respuesta #1 Agosto 15, 2017, 01:42:39 am

DzMine8457




  • Desconectado

  • *

    • *
    • *
    • *
  • Mensaje personal
    MinecraftMin, el mejor foro Español!
  • Actividad

  • 0%
  • Logros

Más información

No El Testforblock no tiene Radio,pero puedes usar Como tu dices el /execute ,Pero Mi Unica Pregunta es La Suiguiente: Tu quieres detectar cuando El Mineral de Esmeralda Este Ya Colocado, Y lo quieres Detectar en Un Radio de 12 Bloques,

-O Quieres Detectar Cuando Coloques El Mineral de Esmeralda En un Radio de 12  bloques Detecte que pusiste El Minerl¿?


Respuesta #2 Agosto 15, 2017, 01:58:55 am

KaliNuska




  • Desconectado

  • *

    • *
    • *
    • *
  • Mensaje personal
    KaliNuska = comandos y redstone de calidad :D
  • Actividad

  • 0%
  • Logros

Más información

Para hacer lo que tienes pensado hacer, lo más recomendable es montar un sistema mediante el comando stats que cuente los bloques de mineral de esmeralda que hay en un radio determinado del jugador. Ese radio vendrá determinado por las coordenadas relativas con origen en el jugador que incluyas en un fill.
Sé que suena complicado, y de hecho lo es de entender, pero sigue los pasos que te indico a continuación y lo tendrás listo antes de lo que te hubieras imaginado.


En primer lugar crea un nuevo objetivo scoreboard:
Código: [Seleccionar]
scoreboard objectives add esmeralda dummy EsmeraldaPara hacer debug y comprobar su correcto funcionamiento muestra el objetivo que has creado en el lateral de la pantalla:
Código: [Seleccionar]
scoreboard objectives setdisplay sidebar esmeralda
Carga en el scoreboard a todos los jugadores que van a detectar el bloque de esmeralda:
Código: [Seleccionar]
scoreboard players add @a esmeralda 0
El siguiente comando stats pondrá en marcha un detector de los bloques que resultan afectados de ejecutar comandos desde la ubicación del jugador. Es decir, cualquiera de los comandos que modifiquen bloques (blockdata, clone, fill, setblock, testforblock, testforblocks) ejecutados, o bien directamente por el jugador, o mediante un execute al mismo, activarán el detector*:
Código: [Seleccionar]
stats entity @a set AffectedBlocks @p[r=0] esmeraldaUtiliza en el primer selector de objetivo del comando anterior los mismos criterios que en el que le precede. Si no usaste ninguno, no modifiques nada.

*NOTA: Si deseas utilizar más de un detector de bloques simultáneamente, deberás gestionarlos utilizando diferentes valores en otro scoreboard, con el fin de que no se superpongan las detecciones de uno en los otros. Por otro lado, ya deberías estar haciéndolo, pero evita ejecutar comandos execute en el jugador que no tengan que ver con los mecanismos con stats. El motivo de esto es que al ejecutar cualquiera de los comandos que modifican bloques desde el jugador, probablemente resulte en falsos positivos para tu detector.

Dicho esto, los siguientes comandos deberán ser ejecutados en bucle, pues son los que harán actualizarse al detector cada tick (o con la frecuencia que desees si gestionas los intervalos mediante scoreboard). El último de los comandos será el criterio que ha de cumplir el jugador que tenga mineral de esmeralda en un radio de 6 bloques:
Código: [Seleccionar]
execute @a ~ ~ ~ fill ~-6 ~-6 ~-6 ~6 ~6 ~6 minecraft:bed facing=east,occupied=true,part=head replace minecraft:emerald_ore 0
Código: [Seleccionar]
execute @a ~ ~ ~ fill ~-7 ~-7 ~-7 ~7 ~7 ~7 minecraft:emerald_ore 0 replace minecraft:bed facing=east,occupied=true,part=head
Código: [Seleccionar]
@a[score_esmeralda_min=1]

Con esto ya tienes un detector de bloques de mineral de esmeralda que no necesita de un testforblock por cada bloque a una distancia máxima X del jugador.
Espero que haya servido de ayuda, tanto a ti, como a todos lo que estuvieran interesados en saber algo más del comando stats o, por lo menos, a montar un detector en un mapa. Si tienen alguna duda no duden en responder o crear un nuevo tema detallando la situación problemática.


Respuesta #3 Agosto 15, 2017, 03:58:00 am

axe005




  • Desconectado

  • *

    • *
    • *
    • *
  • Mensaje personal
    Hola soy nuevo en el foro
  • Actividad

  • 0%
  • Logros

Más información

Spoiler para ocultar:
Para hacer lo que tienes pensado hacer, lo más recomendable es montar un sistema mediante el comando stats que cuente los bloques de mineral de esmeralda que hay en un radio determinado del jugador. Ese radio vendrá determinado por las coordenadas relativas con origen en el jugador que incluyas en un fill.
Sé que suena complicado, y de hecho lo es de entender, pero sigue los pasos que te indico a continuación y lo tendrás listo antes de lo que te hubieras imaginado.


En primer lugar crea un nuevo objetivo scoreboard:
Código: [Seleccionar]
scoreboard objectives add esmeralda dummy EsmeraldaPara hacer debug y comprobar su correcto funcionamiento muestra el objetivo que has creado en el lateral de la pantalla:
Código: [Seleccionar]
scoreboard objectives setdisplay sidebar esmeralda
Carga en el scoreboard a todos los jugadores que van a detectar el bloque de esmeralda:
Código: [Seleccionar]
scoreboard players add @a esmeralda 0
El siguiente comando stats pondrá en marcha un detector de los bloques que resultan afectados de ejecutar comandos desde la ubicación del jugador. Es decir, cualquiera de los comandos que modifiquen bloques (blockdata, clone, fill, setblock, testforblock, testforblocks) ejecutados, o bien directamente por el jugador, o mediante un execute al mismo, activarán el detector*:
Código: [Seleccionar]
stats entity @a set AffectedBlocks @p[r=0] esmeraldaUtiliza en el primer selector de objetivo del comando anterior los mismos criterios que en el que le precede. Si no usaste ninguno, no modifiques nada.

*NOTA: Si deseas utilizar más de un detector de bloques simultáneamente, deberás gestionarlos utilizando diferentes valores en otro scoreboard, con el fin de que no se superpongan las detecciones de uno en los otros. Por otro lado, ya deberías estar haciéndolo, pero evita ejecutar comandos execute en el jugador que no tengan que ver con los mecanismos con stats. El motivo de esto es que al ejecutar cualquiera de los comandos que modifican bloques desde el jugador, probablemente resulte en falsos positivos para tu detector.

Dicho esto, los siguientes comandos deberán ser ejecutados en bucle, pues son los que harán actualizarse al detector cada tick (o con la frecuencia que desees si gestionas los intervalos mediante scoreboard). El último de los comandos será el criterio que ha de cumplir el jugador que tenga mineral de esmeralda en un radio de 6 bloques:
Código: [Seleccionar]
execute @a ~ ~ ~ fill ~-6 ~-6 ~-6 ~6 ~6 ~6 minecraft:bed facing=east,occupied=true,part=head replace minecraft:emerald_ore 0
Código: [Seleccionar]
execute @a ~ ~ ~ fill ~-7 ~-7 ~-7 ~7 ~7 ~7 minecraft:emerald_ore 0 replace minecraft:bed facing=east,occupied=true,part=head
Código: [Seleccionar]
@a[score_esmeralda_min=1]

Con esto ya tienes un detector de bloques de mineral de esmeralda que no necesita de un testforblock por cada bloque a una distancia máxima X del jugador.
Espero que haya servido de ayuda, tanto a ti, como a todos lo que estuvieran interesados en saber algo más del comando stats o, por lo menos, a montar un detector en un mapa. Si tienen alguna duda no duden en responder o crear un nuevo tema detallando la situación problemática.
[/spoiler]

Hola antes que nada gracias por la molesteia de responderme lo unico es que sigo sin entender como poner los ultimos 3 comandos que pusistes:

Citar
execute @a ~ ~ ~ fill ~-6 ~-6 ~-6 ~6 ~6 ~6 minecraft:bed facing=east,occupied=true,part=head replace minecraft:emerald_ore 0
Citar
execute @a ~ ~ ~ fill ~-7 ~-7 ~-7 ~7 ~7 ~7 minecraft:emerald_ore 0 replace minecraft:bed facing=east,occupied=true,part=head
Citar
@a[score_esmeralda_min=1]
si tienes imagenes mucho mejor para saber exactamente como debe de quedar, gracias ;)





Respuesta #4 Agosto 16, 2017, 02:17:27 am

KaliNuska




  • Desconectado

  • *

    • *
    • *
    • *
  • Mensaje personal
    KaliNuska = comandos y redstone de calidad :D
  • Actividad

  • 0%
  • Logros

Más información

Hola antes que nada gracias por la molesteia de responderme lo unico es que sigo sin entender como poner los ultimos 3 comandos que pusistes:

Citar
execute @a ~ ~ ~ fill ~-6 ~-6 ~-6 ~6 ~6 ~6 minecraft:bed facing=east,occupied=true,part=head replace minecraft:emerald_ore 0
Citar
execute @a ~ ~ ~ fill ~-7 ~-7 ~-7 ~7 ~7 ~7 minecraft:emerald_ore 0 replace minecraft:bed facing=east,occupied=true,part=head
Citar
@a[score_esmeralda_min=1]
si tienes imagenes mucho mejor para saber exactamente como debe de quedar, gracias ;)
He de decir que la explicación la enfocaba, más bien, a montar el sistema utilizando las funciones de la última versión, mediante el comando function, pero no supone ningún problema si prefieres hacerlo mediante bloques de comandos.

En la siguiente imagen te dejo el orden que tienes que seguir para activar el mecanismo y el tipo de bloque de comandos que debes usar (haz click en la imagen para verla en grande):


Además te explicaré con un poco más de detalle el selector de objetivo que incluí como comando final:

Cuando se ha detectado, al menos, un mineral de esmeralda alrededor de un jugador, el objetivo scoreboard "esmeralda" de dicho jugador será igual o superior a 1. Esto significa que si en cualquier comando utilizas el selector que te indico, afectará aquellos jugadores sobre los que se ha detectado esmeralda. Del mismo modo, aquellos jugadores sobre los que no se ha detectado esmeralda, no se verán afectados por el selector. Con todo esto, utilizar el selector en el comando que hayas decidido usar como output, es la forma óptima de hacer que sólo resulten afectados por tu output los jugadores que hayan activado el detector de esmeralda.



Share via delicious Share via digg Share via facebook Share via furl Share via linkedin Share via myspace Share via reddit Share via stumble Share via technorati Share via twitter

xx
Detectar cada vez que el jugador rompe cierto bloque! Ayuda!

Iniciado por Bleaket

5 Respuestas
1803 Vistas
Último mensaje Febrero 06, 2015, 02:27:58 am
por Bleaket
xx
Detectar cuando un jugador se pone una calabaza.

Iniciado por lNaut7000

1 Respuestas
411 Vistas
Último mensaje Marzo 29, 2015, 04:14:42 pm
por lol_600
xx
Detectar que un jugador pone un comando o escribe algo

Iniciado por Amasteo

2 Respuestas
292 Vistas
Último mensaje Diciembre 04, 2016, 08:19:51 am
por Amasteo
xx
DETECTAR JUGADOR EN UN BLOQUE

Iniciado por angjosar

6 Respuestas
3955 Vistas
Último mensaje Septiembre 22, 2014, 07:06:46 pm
por angjosar