適用版本:1.20.6 / 1.21.1(Spigot、Paper、PurPur)
因 Minecraft 1.20.5 帶來的大幅 NBT 格式改動,
許多伺服器在升級後出現 ItemMeta 資料遺失的情況。
目前仍有不少插件依賴舊版的 ItemMeta 序列化方式,
這讓升級到 1.20.5 / 1.20.6,甚至未來的 1.21+ 變得相當困難。
Misteln 的主要目標,是讓伺服器能夠正確讀取並處理舊版格式的 ItemMeta,
從而確保依賴舊序列化邏輯的插件仍能在新版 Minecraft 上正常運作。
- 適用範圍 -
倘若升級至 1.20.5(或更新版本)後遇到以下問題,Misteln 可適用於你的伺服器:
1. 插件儲存的界伏盒(Shulker Box)物品遺失了數量、附魔、物品名稱等資訊。
2. 插件儲存的物品遺失了屬性修飾(例如:攻擊力、最大生命值)。
3. 插件儲存的玩家頭顱無法顯示自訂皮膚。
- 技術細節 -
Misteln 是基於 Purpur 伺服器軟體進行分支,兼容 Paper 與 Spigot。
透過注入 CraftMetaItem#setVersion 與 CraftMetaItem#deserializeInternal,
對 internal 欄位內的 NBT 進行升級操作,
並將舊版的標籤轉移到新版格式(如 EntityTag)
使得舊插件在 1.20.5 及以後版本的物品資料處理能如預期運作。
- 重要提醒 -
Misteln 的定位是一個臨時方法,可以把它想像成「葉克膜」一樣,
幫助伺服器撐過 1.20.5 之後版本帶來的轉換陣痛。這並不是一個永久解決方案。
最終的理想做法,還是讓各個插件都更新其資料處理邏輯,請參考 ItemStack#serializeAsBytes 函數。
一旦你選擇使用 Misteln,就代表你接受了它帶來的「依賴性」。
如前項所說,若你之後移除 Misteln,但插件本身沒更新資料儲存邏輯,
尚未被更新的舊版資料將無法被正確讀取。
相等於選擇用 Misteln 這層相容層,來換取當前的穩定運作。
此核心是開發者為自身使用所撰寫,
分享該專案是為了幫助社群,若在其他伺服器上出現問題,
支援可能有限,請自行斟酌使用風險。
- 注意事項 -
以下情況會使得在移除 Misteln,
改用相同版本 Paper/Purpur 等核心後會導致 1.20.5 前的物品 ItemMeta 資料遺失:
1. 插件並未在安裝時讀取物品資料
2. 插件沒有回寫新版格式的資料
1.20.5 後及已被 Misteln 轉檔成功、正確回寫的資料將不受影響。
- 下載位置 -
- 相關聲明 -
請不要出售輝煌團隊開發之程式,或者出售程式功能,
我們的程式都是無償提供給各伺服器使用,
故我們開發這些程式並沒有任何的實質收益,
故這類行為是會一定程度上降低我們的開發意願,
也有可能會使我們有將免費開源程式變為付費閉源程式的想法,望理解。