Actualizado:
1. Preparación (una vez)
/team add red "Rojo"
/team add blue "Azul"
/team modify red color red
/team modify blue color blue
/team modify red friendlyFire false
/team modify blue friendlyFire false
/scoreboard objectives add flags dummy "Banderas"
/scoreboard objectives add died deathCount
/scoreboard objectives setdisplay sidebar flags
/scoreboard players set Rojo flags 0
/scoreboard players set Azul flags 0
Mete a los jugadores en los equipos con /team join red NOMBRE. Consulta el comando team. Los jugadores pueden hablar de sus planes con /teammsg (comandos de chat privado).
2. Marcar dónde están las banderas
/summon marker ~ ~ ~ {Tags:["red_flag"]}
/summon marker ~ ~ ~ {Tags:["blue_flag"]}
Ejecuta cada uno en el centro de una base y pon ahí un estandarte como decoración.
3. Coger la bandera enemiga (iterativo)
Estos pasos son para que el rojo coja la bandera azul; haz lo mismo al revés para el azul.
/execute at @e[type=marker,tag=blue_flag] unless entity @a[tag=has_blue] as @a[team=red,distance=..1.5,limit=1,sort=nearest] run tag @s add take_blue
/item replace entity @a[tag=take_blue] armor.head with blue_banner
/tag @a[tag=take_blue] add has_blue
/tag @a[tag=take_blue] remove take_blue
Solo el jugador rojo más cercano coge la bandera, y solo si nadie la tiene. El estandarte sustituye al casco, así que juega sin cascos.
4. Hacer brillar a quien la lleva (iterativo)
/effect give @a[tag=has_blue] glowing 1 0 true
5. Puntuar en tu base (iterativo)
/execute at @e[type=marker,tag=red_flag] as @a[tag=has_blue,distance=..2] run scoreboard players add Rojo flags 1
/execute at @e[type=marker,tag=red_flag] as @a[tag=has_blue,distance=..2] run tellraw @a {"text":"¡El rojo ha capturado la bandera!","color":"red"}
/execute at @e[type=marker,tag=red_flag] as @a[tag=has_blue,distance=..2] run item replace entity @s armor.head with air
/execute at @e[type=marker,tag=red_flag] as @a[tag=has_blue,distance=..2] run tag @s remove has_blue
Quita la etiqueta lo último; si no, las líneas anteriores dejan de coincidir.
6. Devolver la bandera al morir (iterativo)
/gamerule keep_inventory true
/execute as @a[scores={died=1..},tag=has_blue] run item replace entity @s armor.head with air
/tag @a[scores={died=1..}] remove has_blue
/scoreboard players reset @a[scores={died=1..}] died
Ejecuta la gamerule una vez (keepInventory en 1.21.10 y anteriores) para que el estandarte no caiga al suelo y alguien lo recoja. Cuando desaparece la etiqueta, el paso 3 puede volver a dar la bandera.
7. Comprobar quién gana (iterativo)
/execute if score Rojo flags matches 3.. run title @a title {"text":"¡Gana el rojo!","color":"red"}
Detén después los bloques de comandos y pon las puntuaciones a 0 antes de la siguiente partida.
Solución de problemas
- No se puede coger la bandera: revisa a qué equipo pertenece el jugador y la distancia de 1.5 bloques.
- Se suma la puntuación muchas veces: asegúrate de que la etiqueta se quita al final del paso 5.
- La bandera no vuelve al morir: el objetivo died tiene que usar deathCount.
Comprueba tu comando
El Command Error Doctor (en inglés) revisa en tu navegador los errores de sintaxis más comunes.