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

Comprueba tu comando

El Command Error Doctor (en inglés) revisa en tu navegador los errores de sintaxis más comunes.