射箭 函数 Minecraft 1.17数据包
小棋孜
2021年07月30日 09:36

技能函数中其中之一,很好的例子

效果:"运行该函数的实体会向其面前射出一根伤害为5的箭,可用execute positioned ~ ~ ~ 执行该函数来改位置"

玩家不占用记分板,利用标记marker

也许还不完善

主要用到坐标差来计算 动量=-

summon minecraft:marker ^ ^ ^1 {Tags:["qiq2i","qiq2i_skill_1","qiq2i_skill_1_arrow1b"]}

#做差-- 用到 qiq2i_1 qiq2i_2

summon arrow ~ ~ ~ {Tags:["qiq2i","qiq2i_skill_1","qiq2i_skill_1_arrow1b_2"],damage:3}

#0

execute as @e[tag=qiq2i_skill_1_arrow1b_2,distance=..3,limit=1,sort=nearest] store result score @e[tag=qiq2i_skill_1_arrow1b,distance=..3,limit=1,sort=nearest] qiq2i_1 run data get entity @s Pos[0] 100000

execute as @e[tag=qiq2i_skill_1_arrow1b,distance=..3,limit=1,sort=nearest] store result score @s qiq2i_2 run data get entity @s Pos[0] 100000

execute as @e[tag=qiq2i_skill_1_arrow1b,distance=..3,limit=1,sort=nearest] run scoreboard players operation @s qiq2i_2 -= @s qiq2i_1

execute as @e[tag=qiq2i_skill_1_arrow1b,distance=..3,limit=1,sort=nearest] store result entity @e[tag=qiq2i_skill_1_arrow1b_2,distance=..3,limit=1,sort=nearest] Motion[0] double 0.00002 run scoreboard players get @s qiq2i_2

#1

execute as @e[tag=qiq2i_skill_1_arrow1b_2,distance=..3,limit=1,sort=nearest] store result score @e[tag=qiq2i_skill_1_arrow1b,distance=..3,limit=1,sort=nearest] qiq2i_1 run data get entity @s Pos[1] 100000

execute as @e[tag=qiq2i_skill_1_arrow1b,distance=..3,limit=1,sort=nearest] store result score @s qiq2i_2 run data get entity @s Pos[1] 100000

execute as @e[tag=qiq2i_skill_1_arrow1b,distance=..3,limit=1,sort=nearest] run scoreboard players operation @s qiq2i_2 -= @s qiq2i_1

execute as @e[tag=qiq2i_skill_1_arrow1b,distance=..3,limit=1,sort=nearest] store result entity @e[tag=qiq2i_skill_1_arrow1b_2,distance=..3,limit=1,sort=nearest] Motion[1] double 0.00002 run scoreboard players get @s qiq2i_2

#2

execute as @e[tag=qiq2i_skill_1_arrow1b_2,distance=..3,limit=1,sort=nearest] store result score @e[tag=qiq2i_skill_1_arrow1b,distance=..3,limit=1,sort=nearest] qiq2i_1 run data get entity @s Pos[2] 100000

execute as @e[tag=qiq2i_skill_1_arrow1b,distance=..3,limit=1,sort=nearest] store result score @s qiq2i_2 run data get entity @s Pos[2] 100000

execute as @e[tag=qiq2i_skill_1_arrow1b,distance=..3,limit=1,sort=nearest] run scoreboard players operation @s qiq2i_2 -= @s qiq2i_1

execute as @e[tag=qiq2i_skill_1_arrow1b,distance=..3,limit=1,sort=nearest] store result entity @e[tag=qiq2i_skill_1_arrow1b_2,distance=..3,limit=1,sort=nearest] Motion[2] double 0.00002 run scoreboard players get @s qiq2i_2

data modify entity @e[tag=qiq2i_skill_1_arrow1b_2,distance=..3,limit=1,sort=nearest] Owner set from entity @s UUID

execute as @e[distance=..64] at @s run playsound minecraft:entity.arrow.shoot player @s

tag @s remove qiq2i_arrow1b

kill @e[tag=qiq2i_skill_1_arrow1b]

#me 1