Healthy DietFEATURE GUIDE 繁體中文
04 / SHELF LIFE

從設定到結算,讀懂食物保存期限。

逐一檢視編輯器的八個子頁,理解基礎時長、溫度、變質倍率、冷鮮與過期結算;再了解物品離開背包後的計時、信任與離線保護。

八個獨立子頁伺服器結算容器與多人離線帳本
先分清三種數值:基礎保存時長是設定,物品目前溫度與剩餘時長是執行狀態。伺服器資料包和玩家持有物品的實際狀態可能不同。

01一次結算經過哪些環節

先有物品層級基礎時長,再隨物品所在環境改變溫度和變質速度;伺服器負責結算剩餘時間。

設定基礎時長依整分鐘儲存
環境改變溫度自然 / 冰箱 / 冷凍室
倍率與冷鮮保護溫度曲線 / 維度 / 保鮮率
結算到期消失或替換為產物

溫度曲線調節變質速度;「效果」子頁調節吃下食物時的溫度效果。兩者是獨立清單,不會因為設定了某個效果就自動改變保存期限。

遊戲日與現實天不同:編輯器的 1 遊戲日 = 20 分鐘,1 天 = 1440 分鐘;儲存到 durationMinutes 時取整分鐘。內建物品可能覆蓋設定類的 10℃ 初溫,不要把類別預設值當成所有食物的初溫。
原始碼依據:ShelfDurationUnit、S2ShelfConfig、ShelfTemperatureCurve.effectiveRate。

02編輯器的八個子 Tab

下列八個標籤與遊戲中「保存期限」編輯器的排列一致。選擇一項可檢視欄位、用途和容易混淆的邊界;網頁不能儲存設定。

01 / 時間與過期行為

保存期限

設定新物品的基礎保存時間和基礎變質倍率。單位按鈕在分鐘、小時、天、遊戲日間切換;輸入可含小數,儲存時換算成整分鐘。沒有針對某維度設定倍率時,該維度保持 1 倍。

可編輯項目作用
保存期限 / 基礎變質倍率分別確定起始時長與變質速率基準;倍率 0 表示基礎衰減為零。
過期產物 / 繼承溫度到期替換成指定物品;minecraft:air 表示消失。開啟繼承時僅把到期瞬間的溫度傳給產物,產物的保存期限重新計時。
過期指令持有者手中的物品到期時,以持有者為上下文執行;留空不執行。容器內或掉落物到期不觸發該指令。
維度變質倍率逐維度依 ID 設定變質倍率,例如地獄可以與主世界不同;不是溫度偏移。
原始碼依據:ItemConfigEditScreenV2.buildShelfEditor、S2ShelfConfig.durationMinutes、ShelfDimensionMultiplier。

03離開背包後的時間與多人保護

食物在玩家身上、容器裡和地上使用不同的時鐘;伺服器負責結算,用戶端只依伺服器下發的速度顯示。

兩套時鐘與伺服器權威

玩家背包、裝備欄、副手和滑鼠上拿著的食物,依玩家線上遊玩時間結算,離線期間不走;箱子、冰箱、其他容器、地上的掉落物和放置的方塊食物,依世界時間結算,伺服器開著就繼續走。創造模式物品欄和 JEI 裡的食物不計時。

腐敗、溫度和冷鮮度都由伺服器計算,用戶端看到的只是伺服器發來的快照。提示裡的數字會依伺服器下發的目前速度逐秒推進,看起來是即時的,但真實數值始終以伺服器為準,修改用戶端不能造出新鮮食物;提示文字和顏色也以伺服器方案檔案為準。

換手、上線與切換維度會重新對錶

食物換手時,從新主人拿到的那一刻接著算,不會因為前主人的線上時間更長而一接過來就突然壞掉。玩家上線、切換維度時也會重新對錶;離線期間的時間不會補算進背包物品。

背包和地上掉落物大約每 20 秒重新整理一輪;按 S 可以立即結算並檢視最新數值。開啟容器、開始吃東西、使用 Tom 儲存終端存取時,也會順帶重新整理一次背包,不必等下一輪。

誰算物品的主人

設定了保存期限的食物放進容器的那一刻會打上放入者的主人標記。其他玩家開啟箱子時會看到紅框,拿不走;掉在地上的受保護食物也撿不起來。冰箱、Tom 儲存終端等容器遵循同樣的規則。

只有「放進容器」才算:野外寶箱裡你拿走一半,剩下的不會因為你碰過就歸你,其他玩家仍可公平拿取。反過來說,從未放進過容器的食物沒有主人,剛做好、剛撿到一直帶在身上的食物可以自由送人;標記一旦打上會跟著物品走,從自己的箱子拿回背包後仍然是你的。

按住 S 檢視詳細資訊,如果主人不是自己,最下面會多出一行「物品主人」。不同主人的同一種食物不能疊在一起,會分成兩疊,避免標記被覆蓋。

信任名單與所有權流轉

用 /hdtrust 管理自己的保護物品信任名單,無需 OP:

指令作用
/hdtrust add <玩家名>把線上玩家加入目前白名單,對方可以正常拿取你的受保護食物。
/hdtrust remove <玩家名>移出目前白名單,但保留「曾信任」歷史;對方手上已經拿走、尚未歸還的物品會過戶給他。
/hdtrust forget <玩家名>同時清除目前白名單和曾信任歷史,之後依從未信任處理。
/hdtrust list檢視目前白名單與曾信任名單;點擊名單裡的名字可直接移除或重新信任。

信任始終看最初的主人:朋友拿走你的食物再放進他的箱子,主人仍然是你,不會被轉手洗掉。你主動把食物扔出去,等於送人,標記會被清掉;朋友拿了你的食物再主動扔出,也一樣算送人。

死亡掉落不算送人:原本沒有主人的食物會在你死亡的那一刻補上你的標記,已有標記的保持原主人;陌生人撿不走,你自己和你信任的朋友能撿,復活後可以拿回來。若伺服器開啟 removeOwnerOnDeathDrop(適合 PVP 服),死亡掉落會強制清空保護標記,任何人都能拾取。

被凍住的物品:從未被信任的人透過管道、指令等方式拿到別人的保護食物時,這件物品會被凍住:保存期限不再推進,不能吃、不能喝,也放不進箱子、熔爐或合成格,無法過戶,只會在背包裡佔位置並提示持有者。服主可以開啟 ejectIllegalProtectedItems,把這類物品直接扔到持有者腳下;預設關閉,以免信任檔案異常時誤傷整批物品。

全員離線時,容器裡的食物不算腐敗

受保護食物的主人和目前所有受信任玩家全部不在線時,箱子、冰箱等容器裡的這段時間不計入腐敗;只要名單裡還有一位有權者線上,就照常結算。

例子:小 A 信任小 B。小 A 在 20:00 離線,小 B 在 22:00 離線,第二天 08:00 小 A 上線開啟箱子:20:00–22:00 小 B 仍在線,照常計算 2 小時;22:00–次日 08:00 兩人都離線,這 10 小時一分鐘都不算。

伺服器用離線帳本記錄「全員不在線」的時段,箱子本來只在被開啟時結算,所以等有人回來檢視時才會一次扣除。離線帳本只記錄啟用後的時段,更早以前的離線時間無法補回;扔在地上的受保護食物不享有這項保護,仍然會壞。

容器、戰利品與掉落物

關著的箱子不會被持續掃描。食物身上記錄著上一次結算的時間,開啟箱子時依上次的溫度一次性補算中間時段;中途天氣變化不會分段重算,結果與持續模擬略有出入,但很接近,也幾乎不佔效能。

開啟箱子、在箱子裡點物品或按 S 都會立即結算。箱子裡尚未開始計時的食物——例如被指令或其他模組直接塞入、或老存檔在設定保存期限之前放入的物品——會在開啟箱子或按 S 的那一刻打上標記並開始計時。箱子被挖掉時,會先對好時間、清除冰箱狀態再掉出,不會出現「掉在地上還以為自己在冰箱裡」的情況。漏斗和管道往箱子裡塞物品時也要遵守合併規則,疊在一起時依較差的那份計算。

寶箱裡生成的食物、怪物掉落的食物,在生成的那一刻就打上保存期限標記,是一份從零開始計時的新鮮食物;女僕、機械動力等直接把收穫塞進自己庫存的也算。自己合成、燒製或機器加工出來的食物不算,要等第一次被玩家或容器看到才開始計時。

地上的掉落物依 20 秒一個時段對齊,同一時段掉落的同種食物保存期限資料完全一樣,所以仍能疊在一起;落地後最開始的一小段時間不計入,誤差偏向玩家。區塊卸載後不再計算,重新載入時會一次補上中間時間。

放在地上的蛋糕等方塊食物依世界時間結算:區塊載入時結算一次,同一區塊 3 分鐘內只算一次;使用 FTB Chunks 等強制載入的區塊則每分鐘結算一次。壞掉的蛋糕會消失或掉出過期產物;拿著一個已經壞掉的蛋糕放下去,會當場變成過期產物。完整未吃過的蛋糕挖起來還能帶回原保存期限,吃過的挖不回來。

安裝 Jade 後,準星指向地上的食物時,HUD 會多一行保存期限,時間精確到秒、百分比保留一位小數,資料同樣來自伺服器;箱子裡和手上的食物仍看物品提示。

堆疊與合併閾值

條件預設閾值
剩餘保存期限差不超過 5 分鐘
物品溫度差不超過 10℃
冷鮮度差不超過 20(0–100 刻度)

三個條件都滿足才能合併,疊好後依較差的那份計算,不能拿新鮮食物去「洗白」快壞的。閾值可在 config/healthy_diet/server.json 的 shelfMerge 段中調整。地上的掉落物要求保存期限資料完全相同才能疊;保冷上限不同的兩份也不能疊。

過期指令與產物

過期指令只在食物於玩家身上壞掉,或咬一口已經放壞的蛋糕時執行;在容器裡或地上自行壞掉不會執行。過期產物是一件全新物品,不攜帶原來的 NBT,數量保留;放不下時塞回背包,背包也滿則掉在地上。

原始碼依據:S2Engine、S2Handler、S2OfflineLedger、S2StackMerge、TrustManager、HDTrustCommand、PlacedFoodRefresh。
接著了解顯示普通物品提示和 S 詳情中的保存期限行,由 Tooltip 的版面與顯示規則控制。
檢視 Tooltip →