Tengo 6 bloques de comando alineados, y quiero que todos hagan algo, pero solo cuando los 6 sean activados. ¿Hay alguna forma de hacer esto? (1.20.1)
Respuesta
¿Demasiados anuncios?Para ejecutar un comando condicionalmente basado en si se recibe una señal de redstone, puede ser más fácil lograrlo moviendo la lógica condicional al circuito de redstone en sí.
En tu caso específico, deseas que cada bloque de comando se ejecute únicamente si todos son activados al mismo tiempo. Si designas tus 6 bloques de comando como A, B, C, D, E y F, la condición para ejecutar sus comandos puede expresarse como: ((A && B) && (C && D)) && (E && F)
. Ten en cuenta que el operador "y" es asociativo, lo que significa que cualquier par de bloques de comando, o pares de pares de bloques de comandos, pueden agruparse en cualquier orden, siempre y cuando se realicen todas las pruebas por pares.
Entonces, las señales de redstone que deseas activar en tus bloques de comando son filtradas por las compuertas AND, luego enviadas a un solo cable de "salida" que se ramifica en 6, con una rama conectando a cada bloque de comando. De esta manera, todos los bloques de comando se activan juntos si el resultado de todas las pruebas es true
, o ninguno de los bloques de comando se activa si alguna de las pruebas es false
.
Dado que esto es muy abstracto, puede ser útil tener un diagrama de referencia. Las imágenes a continuación muestran este principio aplicado para construir un código de acceso de 3 dígitos usando estanterías de libros picadas: el bloque de comando teleporta al jugador sólo si las 3 estanterías de "entrada" tienen libros colocados en la ranura correcta. (Una estantería de libros picada emite una señal igual al número de ranura del último libro colocado o removido).
He indicado qué números desean los 'inputs', así como los números de las ranuras activas en cada una de las estanterías de libros que no son de entrada, en la primera imagen. Las tres imágenes muestran el mismo mecanismo: la segunda es simplemente una perspectiva diferente, y la tercera es la misma vista que la segunda, pero después de que el mecanismo ha sido activado y el comando ha sido ejecutado.
La idea es la misma para cada comparación: para cada estantería de libros de entrada del usuario, prueba si el número de señal es mayor o igual al valor deseado, y si el valor deseado es mayor o igual a la señal de entrada. La única vez que ambas comparaciones serán true
es cuando la señal de entrada coincide exactamente con el valor deseado. Así, el código de acceso correcto (3 - 6 - 5) se puede expresar en la forma: ((S >= 3) && (3 >= S)) && (S >= 6) && ((S >= 5) && (5 >= S))
.
El mismo principio de comparaciones por pares implementado usando circuitos de redstone con comparadores se puede aplicar a tu situación -- aunque dado que tienes 6 conjuntos de condiciones en lugar de 3, ¡tu mecanismo puede terminar siendo más complejo!