Minecraft – use command blocks to teleport a player who died

minecraft-commandsminecraft-java-edition

I need to detect if a player has died and teleport that one to location XY and give the other team a point.

I can detect if a player has died with testfor @a[score_HEALTH=1] applied to a redstone pulse, but that just outputs a signal if a player has died, not who has died.

Is there a way to detect which player has died? Is there a way to use the detected player who has died as an argument in the next command block, like /tp @f X Y Z, where @f stands for the found player of the last command block?

If nothing of that works, are there workarounds?

Best Answer

Any selector arguments you use in testfor can be used in tp. Like so:

1.7 to 1.12: /tp @a[score_HEALTH=1] X Y Z
1.13+:       /tp @a[scores={HEALTH=..1}] X Y Z

There are problems with using low health to check for death. Instead, I'd recommend adding a deaths scoreboard:

/scoreboard objectives add deaths deathCount

This score will get set to 1 when a player dies (automatic, because of the type of objective), your commands can teleport players with a deaths score of 1 and then set it back to 0 (so the player isn't repeatedly teleported).

The following commands are a full solution, including the team score incrementing, for 1.13+:

tp @a[scores={deaths=1..}] 73 10 31
execute as @a[scores={deaths=1..},team=red] run scoreboard players add blue points 1
execute as @a[scores={deaths=1..},team=blue] run scoreboard players add red points 1
scoreboard players set @a deaths 0