Minecraft Wiki

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

了解更多

Minecraft Wiki
Advertisement
Disambig gray  本文章介紹的是基岩版中的函數。關於Java版中的函數,請見「Java版函數」。關於函數指令,請見「指令/function」。
Information icon
此特性為基岩版獨有。

函數(Function)是一個允許玩家利用擴展名為.mcfunction的文字文件編寫和執行多行指令的功能。本條目主要講述如何使用基岩版中的函數。

用法[]

函數的文字檔案應處於行為包內的頂層資料夾「functions」([行为包]/functions)或其子資料夾內。

子資料夾與命名空間[]

該資料夾下可以有不同的子資料夾,以代表不同的命名空間。

舉個例子:執行函數sub/foo就是在執行檔案[行为包]/functions/sub/foo.mcfunction

/reload[]

執行此指令將重新載入已存在的和新增的函數。

成功結果[]

成功執行一個函數後,聊天欄中會出現「成功執行[数量]個功能項」。舊版中的意見回饋資訊可能有所不同。

函數的語法[]

.mcfunction檔案中,一條指令應該占單獨一行,且開頭不能有斜槓/。可以在一行開頭加上#來進行注釋。

min_engine_version[]

需要在包內的manifest.json檔案中聲明函數適用的最低版本,此字段也叫做最小引擎版本。

該字段指定了執行指令的遊戲版本的版本號。例如,若/fill指令在1.9.0中發生了變動,如果你的行為包帶有"min_engine_version": [1, 8, 0],那麼在執行包含/fill的函數時,它將視為舊版本的/fill指令來執行(如同遊戲版本仍為1.8.0)。

需要注意,manifest.jsonformat_version會影響min_engine_version的讀取方式。當format_version1時,min_engine_version會被讀取為最高1.12.0的最小引擎版本;當format_version2時,min_engine_version會被讀取為1.13.0至目前版本的最小引擎版本。例如,如果填寫了"format_version": 1"min_engine_version": [1, 19, 50],那麼最小引擎版本將被讀取為1.12.0而非1.19.50

manifest檔案範例[]

{
    "format_version": 1,
    "header": {
        "description": "Function worldedit",
        "name": "Function worldedit",
        "uuid": "11111111-1111-1111-1111-111111111111",
        "version": [1, 8, 1],
        "min_engine_version": [1, 8, 0]
    },
    "modules": [
        {
            "description": "",
            "type": "data",
            "uuid": "22222222-2222-2222-2222-222222222222",
            "version": [1, 8, 1]
        }
    ]
}

簡易的函數範例[]

test.mcfunction

title @p title Test
setblock ~ ~2 ~ diamond_ore
say Test
# some comment

更複雜的函數範例[]

BuildHut.mcfunction ——這個函數會在你身邊建造一個簡易的木塊或石頭房子。注意:因為函數會依次執行逐行指令,玻璃窗和木門將會取代第一條指令放置的石頭牆。

fill ~-2 ~-1 ~-2 ~2 ~2 ~2 stonebrick 0 hollow
fill ~-2 ~-1 ~-2 ~2 ~-1 ~2 planks
fill ~ ~ ~2 ~ ~ ~2 wooden_door 1
fill ~-2 ~1 ~ ~-2 ~1 ~ glass
fill ~2 ~1 ~ ~2 ~1 ~ glass
fill ~ ~1 ~-2 ~ ~1 ~-2 glass

執行函數[]

函數會在一個遊戲刻內執行其中的所有指令,包括所調用的函數裏的指令。

限制[]

一個函數最多可執行10,000個指令(包括對其他函數的調用)。

指令[]

/function[]

  • 執行一次指定函數。
  • 透過執行/function指令的執行者來執行函數中的指令。
  • 用法/function <文件路径/函数文件>

條件語句[]

現在的函數支持檢測的特定條件極為有限,因為函數按照順序執行指令,/testfor等指令不能起到作用。要解決這個問題,可以設定函數的最低引擎版本為「1.19.9」或更高,然後使用類似於Java版中的條件語句/execute (if|nless) ...

歷史[]

基岩版
1.8.01.8.0.10加入了函數功能。
?函數檔案現在只在行為包中可用。
1.13.01.13.0.1現在在指令列表中現在可以看到函數檔案。

語言

Advertisement