跳至主要內容

設定檔指南

MagmaCore 的共用設定載入器會在套用預設值前拒絕無法讀取或無效的 YAML,包括繼承的設定。共用儲存流程會先寫入暫存檔並同步至磁碟,再取代目標檔案;支援時使用原子取代。在 Windows 上,如果其他程序(例如防毒軟體或檔案索引器)暫時占用該檔案,導致取代被拒絕,儲存流程最多會再重試四次,總等待時間最長 250 毫秒。儲存錯誤會傳遞給呼叫端,請先解決檔案問題再重試。

本頁面幫助您了解如何正確編輯 .yml (.yaml) 檔案。Nightbreak 外掛程式使用 .yml 設定檔。無效的 YAML 或不支援的值可能導致檔案無法載入;部分設定會退回預設值。請保留備份,並在重新載入後查看主控台。

下面您將找到每種設定條目類型以及在修改任何值時應如何格式化它們。

如何編輯 .yml 檔案​

檔案以 .yml 檔案格式儲存,Notepad++ 是推薦用於設定工作的檔案編輯軟體。當然,您也可以使用您選擇的任何其他文字編輯器。

已停用的設定檔​

當外掛程式更新停用某種設定格式時,MagmaCore 會將符合條件的檔案移至 plugins/MagmaCore/outdated files/<PluginName>/<archive batch>/,保留原始內容與相對路徑。主控台會顯示封存位置。內容匯入前後也會執行這項處理,防止舊套件悄悄將已停用的檔案恢復為使用中的設定。內容匯入也會把更新後的套件不再提供的檔案移到這個資料夾;請參閱套件更新停止提供的檔案。

如果有替代檔案,外掛程式會重新產生內建預設設定。已停用的 DLC 檔案需要更新內容套件。自訂檔案需要依目前格式重寫;請將封存檔案與相關參考文件對照,移植您需要的設定。原樣還原封存檔案可能導致它再次被封存。

封存使用所屬外掛程式提供的特定規則。未知設定或格式錯誤本身並不能證明檔案使用已停用的格式。仍須查看主控台中的一般載入錯誤。

有些規則淘汰的是舊的內建預設值,而不是某種格式。規則可以指定只有較舊預設值才會包含的確切數值,例如舊的選單欄位或任務清單;只要該數值仍存在,整個檔案就會被封存。內建 Lua 腳本的規則則會比對檔案的 SHA-256 校驗碼(忽略歸位字元)與該腳本先前各內建版本的校驗碼。只有未經編輯的副本才會相符,因此您修改過的腳本會保留在原處,外掛程式接著會寫入目前的預設版本。

例如,BetterStructures 將舊的 Valid worlds 設定替換為 Valid worlds v2。EliteMobs 會封存部分過時的內建物品、舊版公會歡迎任務,以及先前內建 Lua 技能與附魔腳本的未編輯副本。FreeMinecraftModels 也會封存已識別的、已停用的裝備物品 Lua 腳本;目前的道具腳本與附魔效果各自使用受支援的介面約定。

重複的檔名​

透過 MagmaCore 載入內容的外掛程式,會以檔名識別每個內容檔案,包括子資料夾中的檔案。當同一個內容資料夾中有兩個檔案檔名相同時,只會載入完整路徑排序(不區分大小寫)在最前面的那個。主控台會發出警告,並列出已載入與被略過的路徑。若副本內容相同,或它們是 YAML 檔案且被略過副本中的每個數值都與已載入的相符(兩個內容套件附帶同一個共用檔案時就會如此),則不會發出警告。應分別載入的檔案請使用不同的檔名。有些資料夾的規則更嚴格:BetterStructures modules 資料夾下的 schematic 檔名重複時,會中止模組載入。

Boolean​

Boolean 值為 true 或 false。它們看起來像這樣:

value1: true
value2: false

Boolean 只接受 true 或 false 值。它們通常用於打開或關閉特定功能。

String​

String 值通常只是普通文字。強烈建議您在引號之間建立 String 值,遵循以下格式:

value: "String"

包含顏色代碼的字串應加上引號,尤其是首字元為 & 時。在支援的文字欄位中,"&aTest" 會產生綠色文字。是否支援彩色文字取決於具體設定。顏色代碼可參考此頁面。

Details

為什麼? 設定字串可以接受 & 等特殊字元。如果它們出現在開頭,例如 value: "&aString" 中的內容沒有加引號,YAML 可能將 & 解讀為錨點,而非一般文字。請為整個字串加上引號,避免解析錯誤或非預期的值。

Serialized Location​

Serialized Location 是一種特定類型的 String,看起來像這樣:

location: world,1.0,2.0,3.0,4.0,5.0

它們用於儲存和設定位置,格式為 worldName,X,Y,Z,YAW,PITCH。Yaw 和 pitch 決定玩家看向的方向,使用與 Minecraft 位置相同的數值。

Multiplier​

Multiplier 值將外掛程式值乘以該數字。這些值永遠不應該在引號之間。這是一個例子:

damageMultiplier: 1.0

在這種情況下,傷害倍數將乘以 1,這意味著與預設值沒有變化。如果 Multiplier 為 2.0,則值將乘以 2.0。如果為 0.5,則將乘以 0.5。

乘以 0.5 等同於除以 2。允許的範圍由具體設定決定;使用零、負數或較大的倍數前,請查看對應的參考文件。

Integer​

Integer 值只是整數。例如:

value: 10

只有腳本文件明確支援數值範圍的欄位才接受 ~。這是由對應功能解析的字串,並非 YAML 數字或通用設定選項。例如:

value: 1~10

關於 Integer 值的主要事情是它們必須是整數。這意味著 10.1 無效。

Double​

Double 是可以有小數部分的十進制數字。例如:

value: 10.01

只有腳本文件明確支援數值範圍的欄位才接受 ~。這是由對應功能解析的字串,並非 YAML 數字或通用設定選項。例如:

value: 1.0~10.01

Double 也可以是像整數一樣的整數,例如 10.0 或甚至表示為 10。

Float​

Float 是精度較低的 32 位元十進制數字。例如:

value: 10.42452

只有腳本文件明確支援數值範圍的欄位才接受 ~。這是由對應功能解析的字串,並非 YAML 數字或通用設定選項。例如:

value: 1.0~10.42452

Float 也可以是整數,例如 10.0 或甚至表示為 10。

String List​

String List 是 String 值的列表。這些往往是最難設定的值,因為它們需要非常特定的設定格式:

valuesList:
- "value,1"
- "value,2"
- "value,3"

與 String 一樣,建議將值保留在引號之間。每個 String List 都有自己的格式,因此您必須找到您正在編輯的特定格式;但是,從全域來看,整體格式應該是這樣的。

Map List​

映射清單包含多個映射項目。這個 YAML 範例將各個值巢狀置於具名映射下;實際鍵名取決於具體設定:

parentMap:
- Map1:
key: value
- Map2:
key: value
keyForList:
- "value1"
- "value2"

如您所見,Map Lists 可以包含任何類型的格式,但如果您在指令碼中使用它們,則需要參考文件以查看不同對映的有效鍵和值。

Color Codes​

您還可以使用以下修飾符分配顏色或使文字加粗:

代碼顏色範例
&4深紅色
&4深紅色範例。
&c紅色
&c紅色範例。
&6橙色
&6橙色範例。
&e黃色
&e黃色範例。
&2深綠色
&2深綠色範例。
&a綠色
&a綠色範例。
&b水藍色
&b水藍色範例。
&3深水藍色
&3深水藍色範例。
&1深藍色
&1深藍色範例。
&9藍色
&9藍色範例。
&d亮紫色
&d亮紫色範例。
&5深紫色
&5深紫色範例。
&f白色
&f白色範例。
&7灰色
&7灰色範例。
&8深灰色
&8深灰色範例。
&0黑色
&0黑色範例。
&r重置顏色&r重置範例。
&l粗體&l粗體範例。
&o斜體&o斜體範例。
&n底線&n底線範例。
&m刪除線&m刪除線範例。
&k隨機&k
&f範例。

正如您在範例中看到的,修飾符遵循常規 Minecraft 語法,但在與 EliteMobs 一起使用時,§ 被替換為 &。您可以使用它來修改大多數 EliteMobs 文字,例如怪物名稱、任務文字、地牢名稱等。

請注意,當正常工作時,修飾符本身不會顯示在您的文字中。它們僅出於演示目的在此處顯示。

還可以組合顏色和其他文字修飾符。例如,您可以這樣做:

&a&o獲取斜體的綠色文字。

如果我們希望我們的自訂怪物有一個漂亮的彩色名稱,我們會這樣做:

name: "$normalBossLevel &aScary &dDragon"

從 EliteMobs 10 開始,您還可以為任何 EliteMobs 文字使用顏色漸層,如此範例所示:

name: "&cNormal Red Text <gradient:#FF6B00:#FFD700:#FFFF00> Cool Gradient Text </gradient>"

在此範例中:

  • &c 對漸層之前的文字應用標準紅色格式。
  • <gradient:...> 開始漸層定義。
  • #FF6B00、#FFD700 和 #FFFF00 是漸層中使用的顏色。
  • Cool Gradient Text 是受漸層影響的文字。
  • </gradient> 結束漸層部分。

只有漸層標籤內的文字會受到影響;標籤外的格式保持不變。

漸層已不再是 EliteMobs 專屬的功能。文字解析器位於 MagmaCore 中,因此所有包含它的外掛程式都能在受支援的文字欄位中使用相同語法,以及其他 MiniMessage 標籤(<rainbow>、<#RRGGBB>、<red> 等具名顏色、<bold> 等裝飾標籤)。

Material​

Material 值只是您可以在 MineCraft 中找到的 Materials,例如 IRON_CHESTPLATE。有關有效 Material 列表,請參閱此頁面。

helmet: IRON_HELMET

Material 在多種設定中用作值,例如怪物裝備、戰利品掉落、任務獎勵等。

Filename​

Filename 值只是格式化為與 MagmaGuy 的外掛程式一起使用的 .yml 設定檔。這些可以是從物品到任務的任何東西。

uniqueLootList:
- filename: magmaguys_toothpick.yml

修剪世界​

您可以使用 WorldBorder 等相容工具裁剪不需要的地形,縮小世界檔案以便散布。請確認工具支援您的確切伺服器版本,並在備份副本上操作;舊的相容性清單並不能證明它支援新的世界格式。

Details

提示 如果您是第一次執行此操作,最好建立世界的備份,以防出現問題。

安裝外掛程式後,導航到世界的中心或您希望修剪的特定區域。然後,執行命令 /wb set x,其中 x 代表您想要的區域的大致半徑大小。

Details

提示 如果 /wb 對您不起作用,請嘗試 /worldborder:wb。

執行此命令後,飛到世界的邊緣,以驗證世界邊界已正確設定並覆蓋預期大小。當您被推回並在聊天中收到訊息時,您將認識到到達了世界邊界邊緣。

trim_pic_1.jpg

在上圖中,我們的目標是修剪紫色方塊周圍的世界,只在它們周圍留下幾個區塊。為了實現這一點,我們站在紅色方塊上紫色區域的中間,並執行 /wb set 50,將世界邊界設定在紫色區域之外。

接著使用 /wb trim [freq] [pad]。緩衝距離的單位是方塊,頻率控制每秒檢查的區塊數量。/wb trim 200 20 每秒最多檢查 200 個區塊,並在邊界外保留 20 格方塊的距離。執行 /wb trim confirm 確認前,請檢查緩衝範圍,必要時增加距離。單位定義見 WorldBorder 的 trim 指令。

站在該世界中使用 /wb clear 移除它的外掛程式邊界,或繼續保留邊界。

修剪世界資料夾​

停止伺服器,並在備份副本上操作。不要刪除除 region、raids.dat 和 level.dat 之外的所有內容:地形、實體、興趣點和維度資料都可能是必需的。保留伺服器和外掛程式實際使用的目錄結構。

舊版 Vanilla 世界的地獄使用 DIM-1,終界使用 DIM1。Vanilla 26.1 的預設維度已移至 dimensions/minecraft/overworld、dimensions/minecraft/the_nether 和 dimensions/minecraft/the_end,其中包含各自的 region、entities 和 poi 資料夾。所需結構取決於伺服器軟體及版本。散布前,請在另一台伺服器上匯入副本並檢查世界。

Minecraft 26.1 · Paper