Skip to content

🥖 睡眠飢餓消耗與水下溺水免疫

📌 程式碼儲存庫原始碼聲明:本 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_hungerBooleantrue模擬睡眠時的自然食物消耗,最低保護下限為 6 點飢餓值。
truesleep:drown_immunityBooleantrue防止玩家在水下就寢時受到溺水窒息傷害。

Official documentation & web portal for Dasik Igaijinn mods.