和平旗幟
和平旗幟是可合成物品,可在指定區塊半徑內阻止一般自然生成轉換為精英。設定 suppressEvents: true 時,也會抑制 EliteMobs 處理的動作事件與定時事件生成嘗試。它不會阻止任意自訂或區域 BOSS 的生成,不會移除現有精英,也不提供通用生物保護。
運作方式
- 合成: 玩家使用預設配方(或管理員設定的自訂配方)合成和平旗幟。預設配方需要骨頭環繞任意顏色的旗幟。
- 放置: 功能啟用時,放置和平旗幟會立即登記保護。預設半徑 4 涵蓋以所在區塊為中心的 9×9 區塊正方形,不限制高度;它不是從旗幟方塊量起的圓形。
- 移除: 破壞和平旗幟方塊會移除保護區域,允許菁英怪物再次在該區域生成。
- 持久化: 已放置的和平旗幟會儲存到磁碟,在伺服器重啟後保留。當包含和平旗幟的區塊載入時,外掛程式會驗證旗幟方塊是否仍然存在,如果它已被其他方式摧毀,則會自動移除保護。
預設合成配方
BBB
BWB
BBB
- B = 骨頭
- W = 任意旗幟(接受全部 16 種旗幟顏色)
此配方會產生一面帶有自訂圖案、顯示名稱和說明的藍色旗幟,標識為和平旗幟。
設定
所有和平旗幟的設定都在 PeaceBanner.yml 中。完整參考請參閱設定頁面。
| 設定 | 預設值 | 說明 |
|---|---|---|
enabled | true | 是否啟用和平旗幟功能 |
craftable | true | 玩家是否可以合成和平旗幟 |
chunkRadius | 4 | 已放置旗幟周圍壓制菁英怪物的半徑(以區塊為單位) |
suppressEvents | true | 已放置的旗幟是否同時壓制 EliteMobs 事件(行動事件和計時事件) |
recipeShape | BBB / BWB / BBB | 合成格配置 |
recipeIngredients | B: BONE, W: ANY_BANNER | 將配方字元對應到材料 |
itemName | &aPeace Banner | 和平旗幟物品的顯示名稱 |
itemLore | (參見設定檔) | 物品上顯示的說明文字 |
placedMessage | (參見設定檔) | 放置旗幟時發送的訊息 |
removedMessage | (參見設定檔) | 破壞旗幟時發送的訊息 |
chunkRadius 在每面旗幟放置時讀取並隨旗幟儲存。修改設定不會改變現有旗幟的範圍,重新啟動後也一樣;要使用新半徑,請重新放置旗幟。預設物品說明中的 4 是固定文字,不會隨半徑變化,而 placedMessage 會替換 $radius。
enabled: false 會停用生成抑制、放置/破壞/載入處理以及合成配方。它不會刪除已儲存的旗幟紀錄,也不會禁止管理員給予指令。craftable: false 只會停用配方。
管理員指令
| 指令 | 權限 | 說明 |
|---|---|---|
/em peacebanner give <player> | elitemobs.peacebanner.admin | 給予線上玩家一面和平旗幟;背包已滿時掉落在玩家位置 |
/em peacebanner list | elitemobs.peacebanner.admin | 列出所有已放置的和平旗幟及其座標和區塊半徑 |
重疊旗幟
可以放置多個保護區域重疊的和平旗幟。系統使用引用計數,因此只要至少有一面旗幟覆蓋,區塊就會保持受保護狀態。移除單一旗幟只會取消未被其他旗幟覆蓋的區塊的保護。
技術細節
- 新放置的和平旗幟透過物品的持久化資料容器(PDC)標籤識別,而非外觀。在未登記位置放置普通旗幟不會建立保護。
- 旗幟資料儲存在
plugins/EliteMobs/data/peace-banners.yml中。 - 區塊載入時的驗證只檢查儲存位置是否存在任何旗幟方塊,不會重新檢查和平旗幟標籤或圖案。如果該位置不再是旗幟,例如被爆炸或世界編輯移除,保護會在此時取消,而不是在外部修改發生時立即取消。
- 已儲存的紀錄歸屬於世界的 UUID。EliteMobs 初始化時未載入的世界,其紀錄會保持未啟用,直到該世界載入後,保護才會自動啟用。沿用相同名稱的其他世界不會繼承這些紀錄;EliteMobs 會改為記錄一則警告。