java函數_函數(Java版)
此特性為Java版獨有。
原因:與其他Java版/基巖版特性頁面標題統(tǒng)一
注意: 中文Wiki的移動頁面需要在討論批準後進行,大量移動由機械人完成。
請不要使用複製粘貼來移動頁面,因為這樣會丟失所有的編輯歷史。
??本文章介紹的是Java版中的函數(shù)。關於基巖版的函數(shù),請見「
函數(shù)(Function)是一個允許玩家利用擴展名為.mcfunction的文本文件編寫和執(zhí)行多行指令的功能。本頁面主要講述如何使用Java版中的函數(shù)。
要使用函數(shù),首先必須在[世界名稱]/datapacks/[數(shù)據(jù)包名稱]/data/[命名空間]/functions這個頂層資料夾中放置名為[函數(shù)名稱].mcfunction文本文件,這個文件將包含此函數(shù)內(nèi)所有需要執(zhí)行的指令。注意它必須是UTF-8無BOM的格式,否則將不能被Minecraft讀取。如果是單人遊戲,這個世界資料夾可以在
在執(zhí)行函數(shù)時,推薦寫為嚴謹格式[命名空間]:[函數(shù)名稱]。如果你可以確認你的函數(shù)不和其他現(xiàn)有函數(shù)衝突,則可以簡寫[函數(shù)名稱],程序?qū)⑾缺闅v預設命名空間minecraft:中的函數(shù)名稱,再檢索其他命名空間。但是為了避免在未來的版本因為mojang對預設命名空間的改動而導致意料之外的事,最好使用自訂的命名空間並明確地使用它。datapacks/[數(shù)據(jù)包名稱]/data/custom/functions/example/test.mcfunction的函數(shù)檔案。則需描述為custom:example/test(相對路徑)
作為一個文本檔案,函數(shù)可以很容易地進行修改,並且在執(zhí)行大量指令時更不容易像指令方塊一樣造成延遲。如果對函數(shù)檔案或其位置進行了修改,則可以使用
成功執(zhí)行函數(shù)將會在聊天欄顯示資訊:執(zhí)行了函數(shù)[函數(shù)名]中的[數(shù)量]條指令。函數(shù)內(nèi)部指令的成功與否並不能直接被比較器檢測(雖然你還是可以透過
測試函數(shù)系統(tǒng)。這個簡單的函數(shù)使用了發(fā)送了3次
在一個.mcfunction文件裡,每一條有效的指令佔據(jù)一行,並且不允許在行首使用斜槓。玩家可以在函數(shù)文件中透過#來加入注釋。
在函數(shù)文件中,單個指令的長度不受指令方塊字元數(shù)上限32,500的限制,但是同一遊戲刻執(zhí)行的總指令數(shù)量受/gamerule maxCommandChainLength的限制(預設為65536)。超過此數(shù)量限制的指令將在執(zhí)行時被忽略。
函數(shù)將在一遊戲刻內(nèi)執(zhí)行其中的所有指令。同時,如果一個函數(shù)是被其他的函數(shù)所引用,那麼它將同其父函數(shù)在同一遊戲刻執(zhí)行。函數(shù)會使用一切被稱為函數(shù)的指令環(huán)境,這包括指令執(zhí)行者、位置、坐標等。
無論指令的順序如何,對函數(shù)內(nèi)發(fā)生的指令環(huán)境的變更都不會影響同一函數(shù)內(nèi)(及其子函數(shù)內(nèi))其他指令使用的指令環(huán)境,直到下一次疊代為止。
例如:
execute as @a at @s run function foo:bar
其中foo:bar的內(nèi)容是:
teleport @s ~ ~5 ~
setblock ~ ~-1 ~ minecraft:emerald_block
execute at @s run setblock ~ ~-1 ~ minecraft:diamond_block
這3個指令會將所有玩家向上傳送5方格、將綠寶石方塊放置在玩家傳送前位置的腳下,並將鑽石方塊放置在玩家傳送後位置的腳下。這個特性不會影響到指令中出現(xiàn)的目標選擇器參數(shù)。
遊戲中目前有以下幾種方式執(zhí)行函數(shù):
允許玩家執(zhí)行一個函數(shù)一次。
函數(shù)中指令的執(zhí)行者為執(zhí)行此指令的實體或指令方塊。
語法:function
達成一個進度時,可以執(zhí)行一個函數(shù)作為獎勵。函數(shù)中指令的執(zhí)行者是達成進度的玩家。
獎勵函數(shù)在進度JSON檔案中透過以下方式調(diào)用:
{
"rewards": {
"function": "命名空間:指向函數(shù)文件的路徑"
}
}
函數(shù)可以透過資料包中的標籤組合到一起。這些標籤被調(diào)用時就會執(zhí)行所有有/function #(命名空間):tag的函數(shù)。
有tick標籤的函數(shù)會自動在每一個遊戲刻的開始執(zhí)行。有l(wèi)oad標籤的函數(shù)會在載入資料包之後執(zhí)行。
函數(shù)功能加入遊戲。
函數(shù)中的指令不再允許以/開頭。
現(xiàn)在僅能使用#來注釋,不再允許使用先前的//。
加入了新的參數(shù):[if|unless] [選擇器]。
在指令中使用函數(shù)時,函數(shù)執(zhí)行被跳過(執(zhí)行條件不符)的情況現(xiàn)在被視為指令失敗。
自訂函數(shù)被移動至資料包中。
函數(shù)在載入時就會被完全解析與緩存。
函數(shù)現(xiàn)在可以有標籤了。
標籤了tick的函數(shù)現(xiàn)在會在每一個遊戲刻的開始幸運行。
關於「Function」的錯誤由錯誤追蹤器維護,請在此匯報錯誤。
總結
以上是生活随笔為你收集整理的java函數_函數(Java版)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java中thread实例_Java多线
- 下一篇: java虚拟机如何判断两个类相同_你有没