🥖 睡眠飢餓消耗與水下溺水免疫
📌 程式碼儲存庫原始碼聲明:本 Wiki 中的文件反映了程式碼儲存庫目前的最新原始碼狀態,可能包含尚未在 CurseForge 和 Modrinth 上發布的開發中功能或最新提交。
🥐 睡眠飢餓消耗機制
在現實生活中,整夜的睡眠同樣會消耗人體熱量;而在 Minecraft 中,清晨醒來自然產生進食需求更貼近真實生存體驗。
當啟用 truesleep:sleep_hunger 規則(預設:ON)時,正在就寢的玩家在時間加速期間會經歷微妙且平衡的食物疲勞消耗。
📐 食物疲勞度計算公式
$$\text{exhaustion} = \text{strideTicks} \times 0.0008\text{ 點食物疲勞消耗}$$
- 在常規的 $10{,}000\text{ 刻}$ 完整夜晚($12542 \to 24000$)中,累計疲勞度為: $$\text{總疲勞度} = 10000 \times 0.0008 = 8.0\text{ 點} = 2.0\text{ 點飢餓值 (1 個雞腿)}$$
- 若睡滿 $12{,}000\text{ 刻}$ 的超長晝夜週期,大約僅會消耗 $3.0\text{ 至 }4.0\text{ 點飢餓值}$。
🛡️ 絕對防飢餓致死安全底線
True Sleep 絕不會讓正在睡眠的玩家因飢餓而受到任何傷害甚至死亡。 當玩家的飢餓值下降到 6 點(3 個雞腿) 時,飢餓消耗將自動徹底停止:
java
if (player.getFoodData().getFoodLevel() <= 6) return;🫧 肺部呼吸停滯(水下溺水免疫)
在原版 Minecraft 中,如果在水下放置床鋪或就寢時被流動水淹沒,氧氣值會迅速歸零,導致窒息掉血並被強制踢出床鋪。
當啟用 truesleep:drown_immunity(預設:ON)時,True Sleep 將啟動 肺部呼吸停滯保護 (Pulmonary Stasis):
- 針對睡眠中的玩家精準攔截
Entity.baseTick()。 - 持續將空氣值充滿至最大容量
getMaxAirSupply()($300\text{ 刻}$ 空氣上限)。 - 讓玩家可以安心在風景優美的海底基地中享受愜意的小憩,再也無需擔心窒息溺水!
java
if (serverLevel.getGameRules().get(TrueSleepRules.DROWN_IMMUNITY)) {
this.setAirSupply(this.getMaxAirSupply());
}🎛️ 控制遊戲規則 (GameRules)
| 遊戲規則 | 類型 | 預設值 | 功能說明 |
|---|---|---|---|
truesleep:sleep_hunger | Boolean | true | 模擬睡眠時的自然食物消耗,最低保護下限為 6 點飢餓值。 |
truesleep:drown_immunity | Boolean | true | 防止玩家在水下就寢時受到溺水窒息傷害。 |
