Here's one of the commands I mentioned in the "advertisement", being the arrow beacon.
Put both commands in a repeating command block, then power them: 1: execute as @e[type=arrow,distance=..10] run tag @s add smoke
2: execute as @e[type=arrow,tag=smoke] run execute at @e[type=minecraft:arrow,tag=smoke,nbt={inGround:1b}] run particle minecraft:composter ~ ~1 ~ 0.1 45 0.1 0 200 force @a
This will shoot a green beacon up in the air when the arrow hits the ground. Pick it up to stop this effect.
this can also be used in many OTHER ways. The first command is needed for all of them. (I call it the base command for a good reason!)
3A:
execute as @e[type=arrow,tag=smoke] run execute at @e[type=minecraft:arrow,tag=smoke,nbt={inGround:1b}] run particle minecraft:sneeze ~ ~1 ~ 0.7 0.7 0.7 0 30 force @a[distance=..5]
3B:
execute as @e[type=arrow,tag=smoke] run execute at @e[type=minecraft:arrow,tag=smoke,nbt={inGround:1b}] run effect give @a[distance=..2] minecraft:instant_damage 1 0 false
this allows for a poison like effect. It does instant damage because without it, it gives it to you way too fast to even take damage at all.
It ALSO works with sounds. need I say more?
execute as @e[type=arrow,tag=smoke] run execute at @e[type=minecraft:arrow,tag=smoke,nbt={inGround:1b}] run execute at @s run playsound minecraft:entity.wither.death master @p .
Surely, for the first command, you would need at @s? Also, these commands are very disorganised, for example the last command just needs to be execute at @e[type=arrow,tag=smoke,nbt={inGround:1b}] run playsound . . .