minecraft如何用更好指令實(shí)現(xiàn)二段跳(可詳細(xì)解析java1.13+適用)
在這里我先介紹一下我的思路
如果您恰好有興趣,可以先了解一下思路,但如果沒興趣也可以往下翻,去看詳細(xì)說明后直接復(fù)制到游戲里也可以。
以胡蘿卜釣竿為主控端,隨后去檢測玩家到地板上是y軸動(dòng)量為0,則Motion[1]約等于-784則獲最重要的一步,當(dāng)然也可以直接用OnGround代替,但是指令的二段跳效果要好的是漂浮,需要在動(dòng)量到達(dá)一定時(shí)在去跳躍就會(huì)顯得更具有特性,不會(huì)失去原有活
總體就是在y軸動(dòng)量趨于0時(shí)獲得漂浮,xz軸也不會(huì)失活如下圖

則之后的漂浮就很好解釋了,漂浮時(shí)間就只有幾刻,然后直接清掉就行了,正常應(yīng)該都是可以做的到的,主要就是要搞懂其動(dòng)量趨近于0就行,就是斜率為0咯,效果如上圖還是很好的效果的,我還做了其他的輔助進(jìn)行操作,比如可視化的經(jīng)驗(yàn)cd

就是可進(jìn)行二段跳時(shí)則就是滿的,反之則空,且不能頻繁二段,當(dāng)然你要是能看得懂我的你也可以進(jìn)行修改也可以詢問我
接下來直接抄就行了
橙色為一次性,用普通命令方塊或手打
紫色為循環(huán)的,用循環(huán)命令方塊
青色為連鎖的,用連鎖命令方塊
先創(chuàng)個(gè)計(jì)分板
/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軸的動(dòng)量:execute as @a at @s store result score @s Motion1 run data get entity @s Motion[1] 10000
跟經(jīng)驗(yàn)值有關(guān)的計(jì)數(shù)cd:
在100級(jí)時(shí),滿經(jīng)驗(yàn)點(diǎn)為742點(diǎn),因此可視化用741:
execute as @a[level=100,nbt={OnGround:1b}] run experience set @s 741 points
在空中時(shí)禁止恢復(fù)的狀態(tài),需要在地板上持續(xù)恢復(fù)狀態(tài)才可進(jìn)行跳躍
execute as @a[level=0,nbt={OnGround:0b}] run experience set @s 0 points
這里是在地板上的恢復(fù)速度,數(shù)值可選1~8:
execute as @a[nbt={OnGround:1b},level=0] run experience add @s 1 points
恢復(fù)滿后恢復(fù)成100級(jí)
execute as @a[nbt={OnGround:1b},level=1..98] run experience set @s 100 levels
使用二段跳后降為0則無法使用二段跳:(此處為需要連鎖)
連鎖就是你先我后的順序,只有前面完成了指令才可以進(jìn)行下一步
execute as @a[level=99] run experience set @s 0 points
execute as @a[level=99] run experience set @s 0 levels
在這里就需要趨近于0的需求了,在這里總區(qū)間獲得標(biāo)記(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
主體:(但實(shí)際上所有指令相輔相}注意連鎖命令方塊
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.這里的值可以適當(dāng)修改想要X段跳,則把數(shù)值改成{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
輸完這些你就會(huì)獲得這樣的總體趨勢(shì),注意命令方塊的方向與連鎖
此處所有命令方塊都用保持開啟反正看懂的話就一點(diǎn)也不麻煩了呢qwq

隨后你就完成了所有,只需要把胡蘿卜釣竿從背包里拿出來就行了,當(dāng)然如果你會(huì)一點(diǎn)的話也可以把胡蘿卜釣竿打上標(biāo)簽,我這里為了那些不是很懂的人也就舍去了物品的標(biāo)簽
以上總體大概就是我的想法了,其實(shí)已經(jīng)算是機(jī)制上夠完整了,就是一條我暫時(shí)沒辦法修改的一種機(jī)制作為火箭跳夾在特性當(dāng)中,雖然所有的漂浮類二段跳一般都存在火箭跳的機(jī)制,但我這里也算是極大縮小了其概率,但依然存在問題,也望各位佬佬指點(diǎn)指點(diǎn)