Minecraft – How to identify all players within a given radius of a player

minecraft-commandsminecraft-java-edition

Version 1.13

I'm creating a spell book, and have two self heal spells that are working fine, but I'm hitting a wall trying to make a group heal.

The working spell Heal 1 is a stack of six command blocks, always active, first on repeat, all others on chain. I have a scoreboard trigger for spellHeal1, and a spell book that activates the trigger when a player clicks the spell name. This is all working currently.

Command blocks:

1: execute as @a[level=1..,scores={spellHeal1=1}] run scoreboard players set @s spellHeal1 2
2: scoreboard players set @a[scores={spellHeal1=1}] spellHeal1 0
3: xp add @a[scores={spellHeal1=2}] -7 points
4: effect give @a[scores={spellHeal1=2}] minecraft:instant_health
5: scoreboard players set @a[scores={spellHeal1=2}] spellHeal1 0
6: scoreboard players enable @a spellHeal1

For the group heal, blocks 1-3 will still work for identifying the player casting the spell, resetting it for anyone that didn't have enough XP, and subtracting XP for successful casters. Blocks 5 and 6 will work for resetting the spell trigger for everyone every cycle.

I need to replace block 4 with something that will give the effect to all players within a 10 block radius of the players with spellHeal1=2 (i.e. the casters). I'm thinking it'll be something along the lines of creating an invisible entity at player location, or maybe a falling_block, and then giving the effect within a radius of that, but I'm hitting a mental block here. I've never used either of those things, just played with them a bit following tutorials. I haven't fully wrapped my head around properly implementing them.

Any ideas?

Best Answer

As @Fabian alluded to in his comment, it should be a simple matter to replace command 4 with an execute command:

execute at @a[scores={spellHeal2=2}] run effect give @a[distance=..10] minecraft:instant_health

What this does is run the effect command at the location of the spell caster, and target all players within 10m of them.

Another option would be summon a splash potion at the spell caster's location (again, you would need to execute at @a[...]), but there's potentially some downsides to this, such as range limitations and uneven healing.