🥖 睡眠時満腹度消費と溺死無効化(肺停止保護)
📌 リポジトリソースコードに関する免責事項: このWikiのドキュメントはリポジトリ内の現在のソースコードの状態を反映しており、CurseForgeおよびModrinthでの公式リリース前の最新コミットや開発中の機能が含まれている場合があります。
🥐 睡眠時満腹度消費メカニズム
現実世界でも睡眠中に基礎代謝でエネルギーが消費されるように、朝起きた時に自然とお腹が空いている仕様はサバイバルの没入感を高めます。
truesleep:sleep_hunger ルールが有効(初期値:ON)な場合、就寝中のプレイヤーはワープ進行中に適度でバランスの取れた満腹度消費を経験します。
📐 満腹度消費(疲労度)の計算式
$$\text{exhaustion} = \text{strideTicks} \times 0.0008\text{ 隠し満腹度(疲労ポイント)}$$
- 標準的な $10{,}000\text{ ticks}$ の夜間($12542 \to 24000$)において、合計疲労度は次の通りです: $$\text{総疲労度} = 10000 \times 0.0008 = 8.0\text{ ポイント} = 2.0\text{ 満腹ポイント (肉アイコン1個)}$$
- $12{,}000\text{ ticks}$ の最長睡眠サイクルでも、消費されるのはおよそ $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{ ticks}$)の満タン状態に維持。 - 美しい海底拠点で溺れる心配なく優雅な昼寝や就寝を楽しめます!
java
if (serverLevel.getGameRules().get(TrueSleepRules.DROWN_IMMUNITY)) {
this.setAirSupply(this.getMaxAirSupply());
}🎛️ 制御ゲームルール (GameRules)
| ゲームルール | 型 | 初期値 | 機能説明 |
|---|---|---|---|
truesleep:sleep_hunger | Boolean | true | 睡眠中の自然な満腹度消費をシミュレート(下限6ポイント)。 |
truesleep:drown_immunity | Boolean | true | 水中で就寝した際の溺死ダメージを完全に無効化。 |
