Throwable Arrow

An arrow that you can throw with just your hands!

Supported Versions:

1.21.11+

Commands by Row:

Row 1

1. [impulse] /scoreboard objectives add pos dummy

Row 2

2. [impulse] /scoreboard objectives add throwArrow minecraft.used:minecraft.arrow

Row 3

3. [impulse] /give @p minecraft:arrow[minecraft:custom_data={throw:1},minecraft:consumable={animation:"trident",sound:"entity.parrot.step",has_consume_particles:false,on_consume_effects:[{type:"minecraft:play_sound",sound:"entity.arrow.shoot"}]}]

Row 4

4. [repeat] /execute as @a[nbt={SelectedItem:{components:{"minecraft:custom_data":{throw:1}}}}] at @s if score @s throwArrow matches 1.. run summon minecraft:arrow ^ ^1 ^.5 {Tags:["throw"]}
5. [chain] /execute as @a[nbt={SelectedItem:{components:{"minecraft:custom_data":{throw:1}}}}] at @s if score @s throwArrow matches 1.. run summon minecraft:marker ^ ^1 ^5 {Tags:["throwDest"]}
6. [chain] /execute as @a[nbt={SelectedItem:{components:{"minecraft:custom_data":{throw:1}}}}] at @s if score @s throwArrow matches 1.. run scoreboard players reset @s throwArrow

Row 5

7. [repeat] /execute as @e[tag=throw] at @s store result score arrowX pos run data get entity @s Pos[0] 1000
8. [chain] /execute as @e[tag=throw] at @s store result score arrowY pos run data get entity @s Pos[1] 1000
9. [chain] /execute as @e[tag=throw] at @s store result score arrowZ pos run data get entity @s Pos[2] 1000
10. [chain] /execute as @e[tag=throw] at @s store result score arrowDestX pos as @e[tag=throwDest,limit=1,sort=nearest] run data get entity @s Pos[0] 1000
11. [chain] /execute as @e[tag=throw] at @s store result score arrowDestY pos as @e[tag=throwDest,limit=1,sort=nearest] run data get entity @s Pos[1] 1000
12. [chain] /execute as @e[tag=throw] at @s store result score arrowDestZ pos as @e[tag=throwDest,limit=1,sort=nearest] run data get entity @s Pos[2] 1000
13. [chain] /scoreboard players operation arrowDestX pos -= arrowX pos
14. [chain] /scoreboard players operation arrowDestY pos -= arrowY pos
15. [chain] /scoreboard players operation arrowDestZ pos -= arrowZ pos
16. [chain] /execute as @e[tag=throw] at @s if entity @e[tag=throwDest,distance=..5] store result entity @s Motion[0] double .001 run scoreboard players get arrowDestX pos
17. [chain] /execute as @e[tag=throw] at @s if entity @e[tag=throwDest,distance=..5] store result entity @s Motion[1] double .001 run scoreboard players get arrowDestY pos
18. [chain] /execute as @e[tag=throw] at @s if entity @e[tag=throwDest,distance=..5] store result entity @s Motion[2] double .001 run scoreboard players get arrowDestZ pos
19. [chain] /execute as @e[tag=throw] at @s run kill @e[tag=throwDest,distance=..5,limit=1,sort=nearest]
20. [chain] /execute as @e[tag=throw] at @s run tag @s remove throw

Preview

impulse
impulse
impulse
repeat
chain
chain
repeat
chain
chain
chain
chain
chain
chain
chain
chain
chain
chain
chain
chain
chain

Video

Too lazy to copy and paste each command?