ResurrectionChest 設定檔與權限
權限
| 權限 | 用途 | 預設值 |
|---|---|---|
resurrectionchest.* | 賦予管理員存取基礎指令以及 downloadall、forcereinstallcontent、downloadpluginupdate、applypluginupdate、reload 與 clear 子指令的權限,並向他們顯示首次啟動提醒。setup 與 initialize 檢查的是下方各自的節點 | op |
resurrectionchest.setup | 賦予管理員存取 /resurrectionchest setup、recommendedplugins、downloadallcontent 與 updatecontent 的權限 | op |
resurrectionchest.initialize | 允許透過/resurrectionchest initialize開啟首次設定選單。 | op |
resurrectionchest.use | 允許玩家註冊箱子並將死亡掉落物路由到其中 | true |
resurrectionchest.model.free | 允許玩家使用免費的 FreeMinecraftModels 箱子視覺效果(Wooden Chest) | true |
resurrectionchest.model.premium | 允許玩家使用進階的 FreeMinecraftModels 箱子視覺效果(Angelic Chest) | op |
resurrectionchest.use 是實際箱子行為的關鍵權限。管理員與模型權限分別僅影響指令與可選的視覺效果。
指令
| 指令 | 權限 | 用途 |
|---|---|---|
/resurrectionchest | resurrectionchest.* | 顯示簡短的資訊提示,指向設定流程 |
/resurrectionchest initialize | resurrectionchest.initialize | 開啟首次引導設定。推薦設定、手動設定和使用目前內容都會將設定標記為完成。 |
/resurrectionchest setup | resurrectionchest.setup | 開啟設定選單(瀏覽並切換箱子內容包、檢查插件更新、查看推薦插件、切換自動更新) |
/resurrectionchest recommendedplugins | resurrectionchest.setup | 開啟(在主控台則列出)ResurrectionChest 推薦的搭配插件:FreeMinecraftModels 與 ResourcePackManager |
/resurrectionchest downloadall | resurrectionchest.* | 從 Nightbreak 下載插件更新(如有)以及每個可用的內容包 |
/resurrectionchest downloadallcontent | resurrectionchest.setup | 從 Nightbreak 下載每個可用的內容包 |
/resurrectionchest updatecontent(別名 updateallcontent) | resurrectionchest.setup | 僅重新下載已過時的已安裝內容包 |
/resurrectionchest forcereinstallcontent <package|all> | resurrectionchest.* | 即使已安裝版本已是最新,仍重新下載某個內容包(或每個已下載的內容包)。內容包名稱會 tab 補完為 Nightbreak 代號 wooden-chest 與 angelic-chest,外加 all |
/resurrectionchest downloadpluginupdate | resurrectionchest.* | 若有可用的 ResurrectionChest 插件更新則下載之 |
/resurrectionchest applypluginupdate | resurrectionchest.* | 不重啟伺服器即套用已下載的插件更新。參見免重啟的插件更新 |
/resurrectionchest reload | resurrectionchest.* | 重新載入 ResurrectionChest |
/resurrectionchest clear | resurrectionchest.* | 清除每個被追蹤的 ResurrectionChest 方塊;掉落每個被追蹤箱子的物品欄內容,並移除箱子與告示牌方塊 |
/resurrectionchestchangelog [dismiss|disable] | op、resurrectionchest.*、resurrectionchest.setup 或 resurrectionchest.initialize | 在遊戲內顯示未讀的 ResurrectionChest 發行說明。參見更新日誌通知 |
已下載的插件更新會放置在伺服器的更新資料夾中。它們會在下次伺服器重啟後生效,除非您透過 /resurrectionchest applypluginupdate 或 nightbreak.applyPluginUpdatesWithoutRestart 設定提早套用。
隨附的 MagmaCore 工具在沒有其他插件佔用這些名稱時,也會註冊共用的 /nightbreak、/nightbreaklogin、/nightbreaklogout 與 /logify 指令。參見 Nightbreak 權杖。
插件檔案
| 路徑 | 用途 |
|---|---|
plugins/ResurrectionChest/config.yml | 下表中的所有設定 |
plugins/ResurrectionChest/playerData.yml | 每個已註冊箱子一筆記錄,以玩家 UUID 為鍵:箱子的 location、註冊該箱子時選定的 chestModel 前綴,以及用於將較舊註冊記錄遷移至目前方塊擁有權標籤的 trackedBlockSchemaVersion |
plugins/ResurrectionChest/content_packages/ | wooden_chest.yml / angelic_chest.yml 內容包定義(isEnabled、name、description、version、folderName、nightbreakSlug、contentFilePrefixes,以及選用的 downloadLink 與 category) |
plugins/ResurrectionChest/nightbreak-changelogs.yml | /resurrectionchestchangelog 背後共用更新日誌收件匣的已讀/已略過狀態。參見更新日誌通知 |
plugins/ResurrectionChest/imports/ | 手動匯入的放置資料夾。留在此處的任何檔案都會在啟動時被解包——模型檔案會被導入 FreeMinecraftModels,且 FreeMinecraftModels 會自動重新整理。參見手動匯入與遊戲內管理 |
plugins/ResurrectionChest/resource_pack/ | 共用的 Nightbreak 選單圖示與字型資源,於插件載入時從隨附的 MagmaCore 匯出,並在隨附副本變更時再次匯出 |
請勿在伺服器運行期間手動編輯 playerData.yml;每當箱子被註冊或移除時,ResurrectionChest 都會重寫它。
設定項
config.yml 目前公開以下面向使用者的設定:
| 設定鍵 | 類型 | 預設值 |
|---|---|---|
setupDone | boolean | false |
nightbreak.autoDownloadPluginUpdates | boolean | false |
nightbreak.applyPluginUpdatesWithoutRestart | string | never |
Input name for death chest | string | [DeathChest] |
Enable high compatibility / low security mode for plugin conflicts | boolean | false |
Lower worn armor's durability on death | boolean | true |
Amount of durability to lower on death | int | 100 |
Chest creation message | string | &8[ResurrectionChest] &aYou've created your Death Chest! |
Chest destruction message | string | &8[ResurrectionChest] &cYour Death Chest has been destroyed! |
Chest missing message | string | &8[ResurrectionChest] &4Your Death Chest is missing! |
Chest protected region message | string | &8[ResurrectionChest] &cYou can't create a Death Chest here - this area is protected! |
Death message | string | &8[ResurrectionChest] &aYour items have been moved to your Death Chest! |
deathChestRemovedMessage | string | &8[ResurrectionChest] &cYour Death Chest has been removed! |
Enable particle effects for death chests | boolean | true |
Particle effect 1 | string | ENCHANTMENT_TABLE |
Particle effect 2 | string | ENCHANTMENT_TABLE |
Particle effect 3 | string | PORTAL |
blacklistedWorlds | list | [none] |
storeXP | boolean | true |
xpPercentageKept | double | 0.75 |
deathChestNameTag | string | $playerName's &fResurrection Chest |
freeSingleDeathChestModelName | string | resurrectionchest_free_single |
freeDoubleDeathChestModelName | string | resurrectionchest_free_double |
premiumSingleDeathChestModelName | string | resurrectionchest_angelic_single |
premiumDoubleDeathChestModelName | string | resurrectionchest_angelic_double |
自動插件與內容更新
nightbreak.autoDownloadPluginUpdates 是隨 ResurrectionChest 一同提供的共用 Nightbreak/MagmaCore 設定。其預設值為 false。
- 當設為
false(預設)時,不會自動下載任何東西。ResurrectionChest 仍會在啟動幾分鐘後(該延遲會逐插件錯開)檢查插件更新,之後大約每小時一次,以便遊戲內的更新按鈕能夠顯示結果,但任何實際下載都需要由您自行觸發。 - 當設為
true時,ResurrectionChest 會在啟動幾分鐘後下載可用的插件更新以及已過時的內容包。已下載的內容更新會在伺服器重啟後使用。已下載的插件更新同樣會等待重啟,除非nightbreak.applyPluginUpdatesWithoutRestart提早套用它。 - 自動插件下載需要有效的 Nightbreak 帳戶權杖以及有效的支持者會員資格。
您可以在遊戲內透過 /resurrectionchest setup 中的 Automatic Updates 工具列切換按鈕來變更此設定,或直接編輯 config.yml。
設定選單也提供 Plugin Update 條目(顯示已安裝/可用的版本,並在點擊時下載更新)以及 Recommended Plugins 條目(與 /resurrectionchest recommendedplugins 相同的清單)。
免重啟的插件更新
已下載的插件更新會在伺服器的更新資料夾中等待。/resurrectionchest applypluginupdate 可在不重啟伺服器的情況下換上更新。ResurrectionChest 會被停用,其 jar 會被替換,接著載入並啟用新版本。依賴 ResurrectionChest 的其他 MagmaGuy 插件會隨之重新載入。
在以下情況下,此指令會拒絕執行並顯示訊息:
- 沒有已下載的更新在等待
- 等待中的更新並未比執行中的版本新,或其 jar 無效
- 有其他作者的插件依賴(depend)或軟依賴(soft-depend)ResurrectionChest。請改為重啟伺服器
- 已有另一個插件替換作業正在執行
若新版本無法啟用,會重新載入先前的 jar,更新則保留在更新資料夾中,待下次重啟時套用。請使用此指令,而不要使用第三方的插件重載工具。
config.yml 中的 nightbreak.applyPluginUpdatesWithoutRestart 決定任何插件更新下載完成後立即發生的行為,無論下載來自 downloadpluginupdate、downloadall、設定選單的 Plugin Update 條目,或自動下載:
| 值 | 行為 |
|---|---|
never | 預設值。更新會等到下次重啟。擁有 resurrectionchest.* 的在線管理員會收到需要重啟的通知,並看到 applypluginupdate 指令 |
when-empty | 若沒有玩家在線則立即套用更新,否則每 30 秒檢查一次,並在伺服器無人時套用 |
immediately | 下載完成後立即套用更新 |
其他任何值都視為 never。
替換作業會停用並重新啟用 ResurrectionChest,因此與 /resurrectionchest reload 一樣,玩家尚未從箱子領取的經驗值會被捨棄。箱子中的物品不受影響。
領地保護
註冊死亡箱被視為建造行為:在告示牌被接受之前,ResurrectionChest 會向 MagmaCore 的共用 LocationQueryRegistry 詢問該玩家是否可以在該箱子方塊處建造。
- WorldGuard 與 GriefPrevention 會自動整合。共用的位置歸屬提供者也能透過將該位置回報為受保護來拒絕註冊。沒有保護或歸屬提供者時,不會施加額外限制。
- 若某個保護插件拒絕該建造行為,註冊會被拒絕,並向玩家發送
Chest protected region message。 - 若某個保護介接器拋出錯誤,該查詢會失敗封閉(註冊被拒絕),而不會默默繞過保護。
內建介接器首先在啟動時連接,後續查詢也會根據已啟用的插件重新檢查連接狀態。若 WorldGuard 或 GriefPrevention 已啟用但其介接器連接失敗,失敗會被記錄,且只要該插件仍啟用,所有註冊都會被拒絕。/resurrectionchest reload 不會重試連接。連接會在該保護插件被停用或重新載入後、ResurrectionChest 免重啟更新後,或伺服器重啟後重試。
護甲耐久度懲罰
Lower worn armor's durability on death(預設 true)與 Amount of durability to lower on death(預設 100)會在玩家身上穿戴的護甲被導入死亡箱的過程中套用:
- 出現在死亡掉落物中的每一件穿戴護甲,其損傷值都會增加
Amount of durability to lower on death - 若這會使該件護甲達到或超過其最大耐久度,該件護甲會被完全從掉落物中移除(它會被摧毀而非被儲存)
- 否則放進箱子裡的就是那件已受損的護甲
耐久度懲罰為零或負數時不產生任何效果。
此懲罰只會在 ResurrectionChest 實際處理的死亡上執行——當 keepInventory 開啟時、當該世界被列入黑名單時、當玩家缺少 resurrectionchest.use 時,以及當已註冊的箱子遺失時,都會跳過它。
高相容性模式
Enable high compatibility / low security mode for plugin conflicts(預設 false)控制 ResurrectionChest 在對方塊採取動作前驗證的嚴格程度。
- 設為
false時,告示牌或箱子只有在仍帶有插件寫入方塊持久資料中的擁有者標記時,才會被視為 ResurrectionChest 的方塊。 - 設為
true時,追蹤位置上缺少擁有權標記可以被接受。但衝突的擁有者標記仍會被拒絕,追蹤的箱子也仍須為箱子方塊。
當其他插件會移除 ResurrectionChest 的擁有權標記時,請使用此模式。它只放寬缺少標記的檢查,並不允許任意替換方塊或衝突的擁有權標記。
經驗值處理
當 storeXP 啟用時:
- ResurrectionChest 在遊戲過程中追蹤玩家的總經驗值,但會在死亡的那一刻讀取玩家的即時總量,因此透過其他插件 API 直接授予的經驗值仍會被計入
- 死亡時儲存
round(total XP * xpPercentageKept),並將結果限制在非負整數範圍內 - 將掉落的經驗值設定為
0 - 當擁有者下次打開其已註冊的箱子時歸還儲存的經驗值(雙箱的任一半皆算數)
- 在領取之前再次死亡會累加到已儲存的量上,而非取代它
xpPercentageKept 在讀取設定時會被夾限至 0-1 範圍內,因此大於 1 的值會視同 1,負值或無效值則視同 0。
重要例外:
- 如果
keepInventory處於啟用狀態,ResurrectionChest 不會做任何事。 - 如果
keepLevel處於啟用狀態,經驗值儲存分支會被跳過,並保持原版等級處理不變。 - 儲存的經驗值僅保存在記憶體中。它不會被寫入
playerData.yml,因此伺服器重啟、/resurrectionchest reload、插件重新載入或免重啟的插件更新都會捨棄任何尚未被領取的經驗值。已經在箱子裡的物品不受影響。
溢出處理
物品會一次一組堆疊地放入箱子,且允許部分放入:
- 放得下的部分會被儲存,包括補滿既有的堆疊
- 只有剩餘的數量會留在死亡地點的正常死亡掉落清單中
- 玩家會收到箱子已滿的警告
FreeMinecraftModels 整合
如果安裝了 FreeMinecraftModels,ResurrectionChest 可以在真實箱子上方生成視覺箱子模型。
目前行為:
- 當玩家擁有
resurrectionchest.model.premium且進階模型確實已載入時,優先使用進階視覺效果(Angelic Chest) - 否則,當玩家擁有
resurrectionchest.model.free時,使用免費視覺效果(Wooden Chest) - 如果兩個權限皆未提供可用的模型,則不會生成模型,並按原樣使用原版箱子
- 視覺模型會根據箱子大小在單箱和雙箱變體之間切換
- 真實箱子仍然是儲存後端
- 每當 FreeMinecraftModels 完成重新載入(包括在 ResurrectionChest 之外啟動的重新載入)時,模型都會重新整理;若箱子處已有相符的模型,會直接沿用,而不會生成重複的模型
模型選擇只會在箱子註冊時決定一次,並以該箱子的 chestModel 儲存在 playerData.yml 中。這造成兩個後果:
- 若註冊當下尚未安裝 FreeMinecraftModels,該箱子會被記錄為沒有模型,即使之後安裝了 FreeMinecraftModels,它仍會是一般的原版箱子
- 之後的權限變更不會回溯升級或降級既有的箱子
這兩種情況下,玩家都必須重新註冊該箱子(打掉它並再次放置告示牌)才能取得新的模型。
當自訂模型處於啟用狀態時,玩家可以直接與其互動:
- 右鍵點擊模型可開啟底層箱子的物品欄
- 左鍵點擊模型可銷毀註冊(僅限箱子擁有者可以這麼做;非擁有者左鍵點擊會收到紅色訊息,且不會銷毀任何東西)
如果 FreeMinecraftModels 缺失或模型無法生成,底層箱子仍可正常運作。
內容包
ResurrectionChest 附帶兩個包裝了 FreeMinecraftModels 箱子模型的內容包:
- Wooden Chest(免費):提供
resurrectionchest_free_single/resurrectionchest_free_double。由resurrectionchest.model.free使用。 - Angelic Chest(進階):提供
resurrectionchest_angelic_single/resurrectionchest_angelic_double。由resurrectionchest.model.premium使用。
每個內容包安裝時位於 FreeMinecraftModels 的 models 資料夾下,解除安裝時則位於 models_disabled。透過 /resurrectionchest setup 切換它們會在這些資料夾之間移動檔案,並自動重新載入 FreeMinecraftModels。
基於原始碼的注意事項
目前原始碼顯示有幾項設定條目雖然在 config.yml 中公開,但在 DefaultConfig 以外的地方並未被引用:
Particle effect 1Particle effect 2freeSingleDeathChestModelNamefreeDoubleDeathChestModelName與premiumDoubleDeathChestModelName(插件在內部將模型名稱前綴resurrectionchest_free與resurrectionchest_angelic硬編碼,然後根據箱子大小附加_single或_double,因此「Double」設定鍵目前並不會影響箱子視覺效果)
相比之下,Particle effect 3 是目前程式碼中有明顯實際使用的粒子設定:它會在載入時被解析一次(若名稱不是有效的粒子,則退回 PORTAL 並印出主控台警告),之後只要箱子所在區塊已載入就每 tick 生成一次。將 Enable particle effects for death chests 設為 false 會完全取消該每 tick 任務,這在已註冊箱子眾多的伺服器上是最省資源的選項。premiumSingleDeathChestModelName 則用於在指派進階前綴前驗證進階模型檔案是否存在;免費模型檔案的存在與否並未另外檢查。
另外還有兩項與指令介面相關的注意事項:
/resurrectionchest initialize開啟首次設定,需要resurrectionchest.initialize。/resurrectionchest setup開啟內容、更新及推薦插件管理。/resurrectionchest clear並不會限定於單一玩家。它會一次清除伺服器上每一個已註冊的箱子。
清理指令遵循設定的擁有權檢查,未通過檢查的方塊保持不變。如果箱子所在世界已卸載,只會清除註冊資料,不會移除該世界中的方塊。