ETH官方钱包

前往
大廳
主題

Function Macro

| 2023-08-03 11:59:46 | 巴幣 2 | 人氣 159

活了沒(méi)幾個(gè)版本的指令方塊邪教廢了。

Function macro是23w31a (1.20.2)的新東西。
基本上就是之前做的拼接指令,但比較快。

在function檔案內(nèi)用$開(kāi)頭標(biāo)記這行是macro,然後用$(variable)把變數(shù)替換進(jìn)來(lái)。
例如
$damage @p $(value)

呼叫這個(gè)function的時(shí)候,用NBT的格式傳參數(shù)
function f {value: 3}
或是指定NBT資料來(lái)源
function f with storage name path
(跟data get一樣,也可以with block或with entity)

變數(shù)只能是普通的名稱,不能用.指定路徑,所以參數(shù)都要放在最上層。

function macro是超純的字串拼接,如果給{value: 3.0d},上面那個(gè)macro拼湊出來(lái)的指令就會(huì)變成
damage @p 3.0d
然後執(zhí)行失敗。
所以小數(shù)要事先取substring [0, -1)轉(zhuǎn)成字串再傳。
更:Mojang發(fā)現(xiàn)這個(gè)很麻煩,現(xiàn)在會(huì)幫忙刪掉字尾了。

甚至離譜一點(diǎn),macro寫(xiě)成
$$(command)
也沒(méi)問(wèn)題,參數(shù)傳一條完整的指令就會(huì)動(dòng)了。

聽(tīng)說(shuō)有人測(cè)試,即使macro比普通的function指令慢,也還是比以前的execute if指令樹(shù)快。
所以是個(gè)能用的新科技。

列舉幾個(gè)應(yīng)用方式

用變數(shù)值當(dāng)指令參數(shù)(例如damage

可翻譯的tellraw遊戲劇情
用類(lèi)似story.dialogue24_$(counter)的翻譯字串ID搭配計(jì)分板算句數(shù),可維護(hù)性會(huì)比較高

仿伺服器的sidebar用法
包括動(dòng)態(tài)標(biāo)題、用分?jǐn)?shù)排序假玩家名
更:謝謝Mojang,現(xiàn)在有score display可以做排序顯示了

剩下的小事,某些QOL更新把我的隨機(jī)數(shù)資料包報(bào)廢了,可疑的燉湯走入歷史。

創(chuàng)作回應(yīng)

更多創(chuàng)作