minecraft如何用更好指令实现二段跳(可详细解析java1.13+适用)
在这里我先介绍一下我的思路
如果您恰好有兴趣,可以先了解一下思路,但如果没兴趣也可以往下翻,去看详细说明后直接复制到游戏里也可以。
以胡萝卜钓竿为主控端,随后去检测玩家到地板上是y轴动量为0,则Motion[1]约等于-784则获最重要的一步,当然也可以直接用OnGround代替,但是指令的二段跳效果要好的是漂浮,需要在动量到达一定时在去跳跃就会显得更具有特性,不会失去原有活
总体就是在y轴动量趋于0时获得漂浮,xz轴也不会失活如下图

则之后的漂浮就很好解释了,漂浮时间就只有几刻,然后直接清掉就行了,正常应该都是可以做的到的,主要就是要搞懂其动量趋近于0就行,就是斜率为0咯,效果如上图还是很好的效果的,我还做了其他的辅助进行操作,比如可视化的经验cd

就是可进行二段跳时则就是满的,反之则空,且不能频繁二段,当然你要是能看得懂我的你也可以进行修改也可以询问我
接下来直接抄就行了
橙色为一次性,用普通命令方块或手打
紫色为循环的,用循环命令方块
青色为连锁的,用连锁命令方块
先创个计分板
/scoreboard objectives add carrot minecraft.used:minecraft.carrot_on_a_stick
/scoreboard objectives add jump dummy "time"
/scoreboard objectives add Motion1 dummy "Motion[1]"
获取命令方块:/give @s command_block
之后直接塞命令方块:
在地板上禁止用钓竿:/execute as @a[scores={carrot=1..},level=100,nbt={OnGround:1b}] at @s run scoreboard players set @s carrot 0
二段跳粒子效果: / execute as @a at @s if score @s jump matches 1 run particle minecraft:firework ~ ~ ~ 0 0 0 0.03 8 normal @a
获取玩家在y轴的动量:execute as @a at @s store result score @s Motion1 run data get entity @s Motion[1] 10000
跟经验值有关的计数cd:
在100级时,满经验点为742点,因此可视化用741:
execute as @a[level=100,nbt={OnGround:1b}] run experience set @s 741 points
在空中时禁止恢复的状态,需要在地板上持续恢复状态才可进行跳跃
execute as @a[level=0,nbt={OnGround:0b}] run experience set @s 0 points
这里是在地板上的恢复速度,数值可选1~8:
execute as @a[nbt={OnGround:1b},level=0] run experience add @s 1 points
恢复满后恢复成100级
execute as @a[nbt={OnGround:1b},level=1..98] run experience set @s 100 levels
使用二段跳后降为0则无法使用二段跳:(此处为需要连锁)
连锁就是你先我后的顺序,只有前面完成了指令才可以进行下一步
execute as @a[level=99] run experience set @s 0 points
execute as @a[level=99] run experience set @s 0 levels
在这里就需要趋近于0的需求了,在这里总区间获得标记(tag)
execute as @a[scores={carrot=1..,Motion1=..-783},level=100,nbt={OnGround:0b}] at @s run tag @s add jump
execute as @a[scores={carrot=1..,Motion1=-785..130},level=100,nbt={OnGround:0b}] at @s run tag @s add jump
主体:(但实际上所有指令相辅相}注意连锁命令方块
1.execute as @a[tag=jump] run scoreboard players add @s jump 1
2.execute as @a at @s if score @s jump matches 1 run effect give @s minecraft:levitation 1 26 true
3.execute as @a at @s if score @s jump matches 3.. run effect clear @s minecraft:levitation
4.这里的值可以适当修改想要X段跳,则把数值改成{y|y=742/X}:
execute as @a at @s if score @s jump matches 1 run experience add @s -742 points
5.execute as @a at @s if score @s jump matches 3.. run scoreboard players set @s carrot 0
6.execute as @a at @s if score @s jump matches 3.. run tag @s remove jump
7.execute as @a at @s if score @s jump matches 3.. run scoreboard players set @s jump 0
输完这些你就会获得这样的总体趋势,注意命令方块的方向与连锁
此处所有命令方块都用保持开启反正看懂的话就一点也不麻烦了呢qwq

随后你就完成了所有,只需要把胡萝卜钓竿从背包里拿出来就行了,当然如果你会一点的话也可以把胡萝卜钓竿打上标签,我这里为了那些不是很懂的人也就舍去了物品的标签
以上总体大概就是我的想法了,其实已经算是机制上够完整了,就是一条我暂时没办法修改的一种机制作为火箭跳夹在特性当中,虽然所有的漂浮类二段跳一般都存在火箭跳的机制,但我这里也算是极大缩小了其概率,但依然存在问题,也望各位佬佬指点指点