文章目錄

下載了資料包(Data Pack)放進 Minecraft 伺服器後,資料包常常沒有任何效果,有些情況伺服器也不會顯示錯誤。只要把資料包放到正確的位置並檢查清單,就能找出沒有作用的原因並修正。
本文的測試環境是 Windows 11、Java 25 與原版伺服器 26.3。開始前要先有一台能啟動的伺服器,還沒有的話可以先架設 Java 原版伺服器。如果資料包會修改世界的內容,安裝前要先備份伺服器的世界。
資料包的位置
資料包要放在世界資料夾裡的 datapacks,也就是伺服器資料夾裡的 world/datapacks。伺服器開著時也可以放入資料包,server.jar 與世界的其他檔案都不用動。
資料包可以是資料夾,也可以是不用解壓縮的 .zip 檔。打開資料包後要直接看到 pack.mcmeta 與 data,就像下面這樣:

如果打開後只看到另一個資料夾,就代表多包了一層,放進去也不會有作用。放對與放錯的差別如下:
載入與確認
資料包放好後,在伺服器視窗輸入 reload,新放入的資料包會自動啟用。接著輸入 datapack list 查看清單,資料包的名稱出現在已啟用的那一行,就代表載入成功。訊息裡的 [Not Secure] 不用理會:

資料包有效果時,進遊戲也看得到。下圖是測試資料包執行後,文字出現在遊戲聊天欄的樣子:

如果資料包在 available 那行,就輸入 datapack enable "file/hello" 啟用它。名稱要照清單寫,壓縮檔要含 .zip,引號也不能省略。
大多數資料包只要 reload 就能使用。資料包新增的是維度或附魔時,則要輸入 stop 再重新啟動,否則清單雖然顯示已啟用,使用時卻會出現 Unknown dimension 或 Can't find element 這類訊息。
沒有作用時的排查
資料包沒有作用時,先看 datapack list 有沒有這個資料包,再看 reload 時伺服器視窗印出的訊息:
datapack list |
情況 | 伺服器視窗的訊息 | 處理方式 |
|---|---|---|---|
| 沒有出現 | 放錯資料夾 | 沒有訊息 | 移到 world/datapacks |
| 沒有出現 | 壓縮檔多包一層 | 印出 Missing metadata in pack |
解壓縮後把內層資料夾移到 datapacks |
| 沒有出現 | 資料夾多包一層,或 pack.mcmeta 檔名不對 |
印出 Found non-pack entry |
把 pack.mcmeta 放到第一層並修正檔名 |
| 已啟用 | 舊版資料包,資料夾是 functions |
沒有訊息,執行時顯示 Unknown function |
下載支援目前版本的資料包 |
| 已啟用 | 資料包裡有舊指令或錯誤的指令 | 印出 Failed to load function |
下載支援目前版本的資料包 |
| 伺服器無法啟動 | 資料包新增的維度或附魔有錯 | 印出 Failed to load datapacks |
把資料包移出 datapacks 再啟動 |
伺服器不會因為版本號碼太舊或太新就拒絕資料包,舊版的資料包也會顯示已啟用。因此資料包已啟用卻沒有作用時,多半是資料包太舊,直接下載支援目前版本的檔案最簡單。要移除資料包時,把它移出 datapacks 再輸入 reload 即可。
自己修改資料包時
如果找不到新版的檔案,或資料包是自己寫的,就要自己修改內容。Minecraft 在 1.21 的開發版把資料包的資料夾由複數改成單數,舊版資料包要把 data/<命名空間> 底下的 functions 改成 function,tags/functions 改成 tags/function,再輸入 reload。
function 裡只要有一行無法解析,reload 時伺服器視窗就會印出 Failed to load function,下一行則是錯誤原因。下圖的 hello:bad 把第 2 行的 setblock 打成 setblok,line 2 就是出錯的行數,下方一長串 at 開頭的內容不用理會:

function 寫了舊指令時也是同樣的訊息,舊的遊戲規則名稱可以查 Minecraft gamerule 新舊名稱對照。26.3 的 pack.mcmeta 要用 min_format 與 max_format 宣告支援的版本,資料包版本是 121:
1{
2 "pack": {
3 "description": "test pack",
4 "min_format": 121,
5 "max_format": 121
6 }
7}
實測紀錄
我用只有一行 say 的測試資料包,在原版 26.3 伺服器逐一重現上面的情況。每種情況都從新世界開始,放入資料包後先 reload,再重開伺服器確認一次。維度與附魔的錯誤則用另外的測試資料包確認。
總結
資料包要放在世界資料夾裡,打開後不能多包一層,放好後重新載入就能使用。實測伺服器不會因為版本號碼不符就拒絕資料包,因此已啟用卻沒有作用時,要先懷疑資料包太舊。