關(guān)于minecraft地圖扁平化轉(zhuǎn)檔(1.12.2>1.15.2)函數(shù)修改的記錄15-32(完結(jié)篇)
本文目的
給自己寫個(gè)參考;
記錄地圖更新過程;
加深記憶改變自己的書寫習(xí)慣;
如果能幫到其他需要轉(zhuǎn)檔的玩家也是極好的。
要不是我在wiki上找不到指令修改的歸納總結(jié)......
文章中提到的內(nèi)容都是在國際版上進(jìn)行的,修改針對(duì)在網(wǎng)易開局域網(wǎng)(租賃服)的情況,但也適用于其他啟動(dòng)器。

15.修改effect命令
effect [玩家] [狀態(tài)] [時(shí)間] [等級(jí)] [模式] > effect give [玩家] [狀態(tài)] [時(shí)間] [等級(jí)] [模式]
effect?[玩家] clear?> effect clear?[玩家]
effect?[玩家]?[狀態(tài)] 0?>?effect?clear?[玩家]?[狀態(tài)]
effect中狀態(tài)效果的數(shù)字id需改成英文id

16.修改particle命令顆粒名稱

iconcrack > item [物品id](刪去原句末物品id)

17.修改replaceitem命令槽位名稱
刪去“slot.”
物品的[數(shù)據(jù)值]部分刪去

18.修改gamemode數(shù)值

19.修改spawnpoint命令坐標(biāo)
扁平化后spawnpoint的x、z坐標(biāo)不再允許小數(shù)
20.修改方塊ID
由于數(shù)量過多,請(qǐng)參考下方wiki鏈接中的方塊與物品ID部分:
https://minecraft-zh.gamepedia.com/Java%E7%89%881.13/%E6%89%81%E5%B9%B3%E5%8C%96
方塊類型數(shù)據(jù)值由不同方塊名稱區(qū)分 而方塊狀態(tài)改為在方塊名后定義數(shù)據(jù)值:
setblock -59 6 -15 minecraft:stone_button 3 >?setblock -59 6 -15 minecraft:stone_button[facing=south]
21.修改entitydata命令
原entitydata [實(shí)體] [數(shù)據(jù)標(biāo)簽]等價(jià)于data?merge?entity [實(shí)體] [數(shù)據(jù)標(biāo)簽]或data modify entity?[實(shí)體] [數(shù)據(jù)標(biāo)簽名稱] set value [數(shù)據(jù)標(biāo)簽值]
但data命令中的選擇器只允許選擇一個(gè)實(shí)體 所以選擇多個(gè)實(shí)體時(shí)需要搭配execute(只是一種方法)
如:
entitydata @e[type=arrow] {pickup:2b}
改為
execute as @e[type=arrow,limit=1]?run?data?merge?entity?@s {pickup:2b}
或
execute as @e[type=arrow,limit=1] run data?modify?entity @s pickup set value 2
22.修改命令中的后置數(shù)據(jù)標(biāo)簽條件
如
tag @e[type=minecraft:item_frame] add 1 {ItemRotation:1b}
改為
tag @e[type=minecraft:item_frame,nbt={ItemRotation:1b}] add ResetItemRotation
23.修改實(shí)體ID

24.修改xp命令
如:
xp 1L @a 改為 xp add @a 1 levels
xp 1 @a 改為 xp add @a 1?points
負(fù)數(shù)同理
25.修改replaceitem命令
replaceitem槽位名稱變化
"slot."被刪除
26.修改物品數(shù)據(jù)標(biāo)簽位置并刪除數(shù)據(jù)值
如:
replaceitem entity @a[scores={Joined=1},gamemode=!spectator] container.0 written_book 1 0 {resolved:1,author:"Runwill(Creator2005)",title:"鏡像決斗規(guī)則",generation:0,pages:["[{\"text\":\"玩家分場次決斗, 剩余一人未被擊敗則游戲結(jié)束; 所有玩家使用相同的鏡像決斗特定裝備。\"}]"]}
改為
replaceitem entity @a[scores={Joined=1},gamemode=!spectator] container.0?written_book{resolved:1,author:"Runwill(Creator2005)",title:"鏡像決斗規(guī)則",generation:0,pages:["[{\"text\":\"玩家分場次決斗, 剩余一人未被擊敗則游戲結(jié)束; 所有玩家使用相同的鏡像決斗特定裝備。\"}]"]}?1
由于使用物品數(shù)據(jù)標(biāo)簽的地方實(shí)在太多,我使用正則來進(jìn)行替換:


27.修改選擇器r、rm參數(shù)
r=1 > distance=1
rm=1?> distance=1..(由于distance參數(shù)對(duì)取值范圍的端點(diǎn)取等 所以需要用如tag的其他方法排除r=的實(shí)體?如rm=0)
如:


28.修改數(shù)據(jù)標(biāo)簽ench


29.修改含中文的數(shù)據(jù)標(biāo)簽Name、Lore
Name:"中文" > Name:"[{\"text\":\"中文\"}]"
Lore:["中文"] > Lore:["{\"text\":\"中文\"}"]


30.修改聲音事件名稱(playsound)
由于數(shù)量過多,請(qǐng)參考下方wiki鏈接中的聲音事件部分:
https://minecraft-zh.gamepedia.com/Java%E7%89%881.13/%E6%89%81%E5%B9%B3%E5%8C%96
31.修改有包含@s選擇器的JSON文本的命令(tellraw、title等)
扁平化后tellraw等帶有JSON文本的命令執(zhí)行時(shí),其中的@s不再選擇命令的目標(biāo),而是命令的執(zhí)行者,所以需要進(jìn)行以下修改(此處用score元素演示):
tellraw @a [{"score":{"name":"@s","objective":"GuanZhu"}]
改為
execute as @a run tellraw @s?[{"score":{"name":"@s","objective":"GuanZhu"}]
32.修改地圖內(nèi)獨(dú)立于函數(shù)的部分(命令方塊、告示牌事件、實(shí)體已擁有的標(biāo)簽)

到此為止,地圖的扁平化就結(jié)束啦(終于)
很多舊版本的命令到了高版本可以進(jìn)一步優(yōu)化,比如用give給予藥水可以一次寫多瓶 不需要寫一堆一次給一瓶的give了,祝各位游戲愉快(^?ω?^ )

特別鳴謝 MC_himcd?QAQxianyuQAQ