戊二腈
如果某实体位于某方块上时,则在竖直方向上给该实体一个竖直方向的加速度
例:给位于绿宝石块上的船一个竖直向上的加速度


附加题:给位于钻石块上的船一个朝船面对方向的加速度
(附加题会以评分方式给出80金粒和2人气)


最佳可能给的较慢,望谅解

开心的阿诺
本帖最后由 开心的阿诺 于 2022-7-22 08:15 编辑

(因为没在游戏上测试,可能有些语法错误)
execute as @e[type=实体ID,nbt={OnGround:1b}] at @s if block ~ ~-1 ~ 方块ID run data modify entity @s Motion[1] set value+竖直加速度

附加题如果要加速度精确的话可能要用三角函数(

钠钠钠镓
本帖最后由 钠钠钠镓 于 2022-7-22 05:02 编辑

给位于绿宝石块上的船一个竖直向上的2m/tick加速度:
  1. /execute as @e[type=boat] at @s if block ~ ~-1 ~ emerald_block run data modify entity @s Motion[1] set value 2.0d
复制代码


给位于钻石块上的船一个朝船面对方向的2m/tick加速度:
一次性运行,将区块0,0强加载
  1. /forceload add -2 -2 2 2
复制代码

在需要给予加速度时单次顺序运行
  1. /execute as @e[type=boat] at @s if block ~ ~-1 ~ diamond_block positioned 0.0 0.0 0.0 run summon marker ^ ^ ^2 {Tags:["example.marker"]}
  2. /execute as @e[type=boat] at @s if block ~ ~-1 ~ diamond_block run data modify entity @s Motion set from entity @e[type=marker,tag=example.marker,limit=1] Pos
  3. /kill @e[type=marker,tag=example.marker]
复制代码

若使用数据包,可简化为以下形式:
在需要给予加速度时单次运行
  1. /execute as @e[type=boat] at @s if block ~ ~-1 ~ diamond_block run function example:run
复制代码

data/example/functions/run.mcfunction
  1. execute positioned 0.0 0.0 0.0 run summon marker ^ ^ ^2 {Tags:["example.marker"]}
  2. data modify entity @s Motion set from entity @e[type=marker,tag=example.marker,limit=1] Pos
  3. kill @e[type=marker,tag=example.marker]
复制代码



戊二腈
钠钠钠镓 发表于 2022-7-22 04:58
给位于绿宝石块上的船一个竖直向上的2m/tick加速度:

船上有玩家的时候命令没有起作用,应该怎么解决呢