Minecraft Wiki

除另有声明,转载时均必须注明出处若簡繁轉換出錯,請以遊戲內為準请勇于扩充与修正内容有兴趣逛逛我们的微博沟通交流,欢迎到社区专页需要协助,请在告示板留言

了解更多

Minecraft Wiki
Advertisement

Template:Desktop

函數(Function)是一個允許玩家利用擴展名為.mcfunction的文字文件編寫和執行多行命令的功能。

用法

要使用函數,首先必須把文字文件放置在.minecraft/世界名称/data/functions資料夾中。隨後可使用後文所述的幾種方法執行。

函數檔案必須繼續分類到多個子資料夾中,然後使用命名空间:指向函数文件的路径的格式執行,其中命名空间functions資料夾下第一層子資料夾的名稱。 例如,custom:example/test會引用檔案世界名称/data/functions/custom/example/test.mcfunction。如果調用函數時未指定命名空間,則預設為minecraft:

在文字文件裡,要每行放置一個有效的命令(不輸入斜槓/)。玩家可以在函數文字文件中使用#加入注釋。如果新增或修改了函數檔案,可使用/reload命令從硬盤中重新載入函數檔案,讓Minecraft識別出函數檔案的變更。在函數裏執行的命令會遵守/gamerule maxCommandChainLength

函數中的命令可超越命令方塊中32,500的字元限制。同時,函數中的所有內容會在1遊戲刻內同幸運行。函數中調用的其它函數也會在同一刻內執行。在一個執行週期內,函數中命令順序的改變不會影響本函數、函數內調用的其它函數的命令中相對座標的參考點。/execute命令可以繞過這個特性。例如:

tp @a ~ ~5 ~
setblock ~ ~-1 ~ emerald_block
execute @a ~ ~ ~ setblock ~ ~-1 ~ diamond_block

這3個命令會將所有玩家向上載送5方格、將綠寶石方塊放置在玩家傳送前位置的腳下,並將鑽石方塊放置在玩家傳送後位置的腳下。/execute命令的這種行為不會影響目標選擇器中的座標參數,但會在每次執行命令前先檢查目標的目前位置。

函數檔案是簡單的文字文件,因此函數容易修改,且比起命令方塊而言,函數在大量執行時不易產生卡頓。然而,函數的成功輸出不能被紅石中繼器檢測(在不使用複雜的計分板命令的情況下)。

遊戲中目前有以下幾種方式執行函數:

命令

/function
  • 允許玩家執行一個函數一次。
  • 函數中命令的執行身份為實體或執行/function命令的命令方塊。
  • 具有可選參數ifunless,可僅在目标选择器選中或未選中對象幸運行函數。
  • 語法:function <函数名> [if|unless] [目标选择器]
/gamerule gameLoopFunction
  • 函數每一刻均執行一次。
  • 函數中命令的執行身份為伺服器本身。
  • 若需要執行多個函數,可在主函數內調用其它函數。
  • 語法:/gamerule gameLoopFunction <命名空间:指向函数文件的路径>

進度

達成一個進度時,可以執行一個函數作為獎勵。函數中命令的執行身份是達成進度的玩家。

獎勵函數在進度JSON檔案中透過以下方式調用:

{
    "rewards": {
        "function": "命名空间:指向函数文件的路径"
    }
}

歷史

release
1.12pre1函數功能加入遊戲。
pre3函數中的命令不再允許以反斜槓「/」開頭。
現在僅能使用#來注釋,不再允許使用先前的//
pre4加入了新的參數:[if|unless] [选择器]
pre6在命令中使用函數時,函數執行被跳過(執行條件不符)的情況現在被視為命令失敗。

錯誤

Template:Issue list

Advertisement