#teleport
$execute if score .0 number matches $(follow) as @a[tag=$(character)] at @s anchored eyes run execute at @s positioned ^ ^ ^ rotated ~ ~ as @e[type=item_display,tag=$(id)_$(character)_$(type)_particle,scores={particle_animation=0}] run teleport @s $(follow_range)

#follow
scoreboard players set @s particle_follow 5
$execute if score .1 number matches $(follow) as @a[tag=$(character)] at @s anchored eyes run execute at @s positioned ^ ^ ^ rotated ~ ~ as @e[type=item_display,tag=$(id)_$(character)_$(type)_particle] run function main:mechanics/particles/teleport {"follow_range":"$(follow_range)"}

#animation
execute as @s[scores={particle_animation=0}] at @s run data merge entity @s {item:{id:"minecraft:paper",count:1b,components:{"minecraft:item_model":"minecraft:particles/blank"}}}
$execute as @s[scores={particle_animation=1}] at @s run data merge entity @s {item:{id:"minecraft:paper",count:1b,components:{"minecraft:item_model":"minecraft:particles/$(particle)/1"}}}
$execute as @s[scores={particle_animation=2}] at @s run data merge entity @s {item:{id:"minecraft:paper",count:1b,components:{"minecraft:item_model":"minecraft:particles/$(particle)/2"}}}
$execute as @s[scores={particle_animation=3}] at @s run data merge entity @s {item:{id:"minecraft:paper",count:1b,components:{"minecraft:item_model":"minecraft:particles/$(particle)/3"}}}
$execute as @s[scores={particle_animation=4}] at @s run data merge entity @s {item:{id:"minecraft:paper",count:1b,components:{"minecraft:item_model":"minecraft:particles/$(particle)/4"}}}
$execute as @s[scores={particle_animation=5}] at @s run data merge entity @s {item:{id:"minecraft:paper",count:1b,components:{"minecraft:item_model":"minecraft:particles/$(particle)/5"}}}
$execute as @s[scores={particle_animation=6}] at @s run data merge entity @s {item:{id:"minecraft:paper",count:1b,components:{"minecraft:item_model":"minecraft:particles/$(particle)/6"}}}
$execute as @s[scores={particle_animation=7}] at @s run data merge entity @s {item:{id:"minecraft:paper",count:1b,components:{"minecraft:item_model":"minecraft:particles/$(particle)/7"}}}
$execute as @s[scores={particle_animation=8}] at @s run data merge entity @s {item:{id:"minecraft:paper",count:1b,components:{"minecraft:item_model":"minecraft:particles/$(particle)/8"}}}
$execute as @s[scores={particle_animation=9}] at @s run data merge entity @s {item:{id:"minecraft:paper",count:1b,components:{"minecraft:item_model":"minecraft:particles/$(particle)/9"}}}
$execute as @s[scores={particle_animation=10}] at @s run data merge entity @s {item:{id:"minecraft:paper",count:1b,components:{"minecraft:item_model":"minecraft:particles/$(particle)/10"}}}
$execute as @s[scores={particle_animation=11}] at @s run data merge entity @s {item:{id:"minecraft:paper",count:1b,components:{"minecraft:item_model":"minecraft:particles/$(particle)/11"}}}
$execute as @s[scores={particle_animation=12}] at @s run data merge entity @s {item:{id:"minecraft:paper",count:1b,components:{"minecraft:item_model":"minecraft:particles/$(particle)/12"}}}