BetterFood の動作
BetterFoodは、最も栄養価の高いアイテムを最初に食べるのではなく、空腹度を考慮した食料選択を使用します。
トリガー条件
BetterFoodは、最高のイベント優先度でバニラのFoodLevelChangeEventに反応し、プレイヤーの空腹度が減少しているときのみ動作します。プレイヤーはbetterfood.user権限を持っている必要があり、また/betterfood toggleEatingによって自動食事をオフにしていない状態である必要があります。
選択ルール
プラグインが何を食べるかを決定する際、2段階の処理を行います:
- 理想的な候補 – まず、不足している空腹度に対して最適な単一の食料を探します:
- 不足している空腹度に収まる範囲で、最も空腹度回復値が高い食料を優先します(同値の場合は満腹度で判定)。
- うまく収まるものがない場合は、最小のオーバーフローとなる食料にフォールバックします(同値の場合は満腹度で判定)。
- インベントリ照合 – 次に、プレイヤーのインベントリ収納をスキャンして該当する理想の食料を探します。プレイヤーが実際にそれを所持していない場合、プラグインはインベントリ全体を確認し、プレイヤーが所持するすべての対応食料に対して同じフィット/オーバーフロー比較を適用し、利用可能な中から最適なものを選択します。
これは、わずかな空腹度のギャップのために強力な食料を無駄遣いするのを避けることが目的であり、より弱いアイテムで足りる場合はそちらを優先します。
食事後、回復される空腹度は20を上限とし、満腹度も結果の空腹度値を上限としてキャップされます。これはバニラの制限と一致しています。
保護されたアイテム
現在のコードは、名前変更されたものやロア付きの食料だけでなく、はるかに多くのものを保護します。BetterFoodは、以下のようなカスタムアイテム特性を持つ食料の自動消費を避けます:
- カスタム名またはアイテム名
- ロア
- カスタムモデルデータ
- エンチャント
- 属性修飾子
- 破壊不能状態
- 永続データコンテナタグ
これは、プラグインアイテムや装飾アイテムを誤って消費する可能性を減らすことを目的としています。
対応食料
BetterFoodは以下の食料を自動消費します:
| 食料 | 空腹度回復 | 満腹度回復 |
|---|---|---|
| リンゴ | 4 | 2.4 |
| ベイクドポテト | 5 | 6.0 |
| ビートルート | 1 | 1.2 |
| ビートルートスープ | 6 | 7.2 |
| パン | 5 | 6.0 |
| ニンジン | 3 | 3.6 |
| ステーキ | 8 | 12.8 |
| 焼き鳥 | 6 | 7.2 |
| 焼きダラ | 5 | 6.0 |
| 焼きマトン | 6 | 9.6 |
| 焼き豚 | 8 | 12.8 |
| 焼きウサギ | 5 | 6.0 |
| 焼き鮭 | 6 | 9.6 |
| クッキー | 2 | 0.4 |
| 乾燥昆布 | 1 | 0.6 |
| グロウベリー | 2 | 0.4 |
| 金のニンジン | 6 | 14.4 |
| スイカの薄切り | 2 | 1.2 |
| キノコシチュー | 6 | 7.2 |
| ジャガイモ | 1 | 0.6 |
| パンプキンパイ | 8 | 4.8 |
| ウサギシチュー | 10 | 12.0 |
| スイートベリー | 2 | 0.4 |
除外食料
以下の食用アイテムは自動消費から意図的に除外されています。これらは生肉、特殊アイテム、またはネガティブな効果や予測不能な効果を持つ食料です:
- 牛肉(生)
- ケーキ
- 鶏肉(生)
- コーラスフルーツ
- タラ(生)
- エンチャントされた金のリンゴ
- 金のリンゴ
- ハチミツ入りの瓶
- マトン(生)
- 毒のジャガイモ
- 豚肉(生)
- フグ
- ウサギ肉(生)
- 腐った肉
- 鮭(生)
- クモの目
- 怪しげなシチュー
- 熱帯魚
新しいMinecraftバージョンで追加されたその他の食用素材で、まだ分類されていないものもスキップされます。プラグインは起動時に未分類の食用素材を検出した場合、警告をログに出力します。
コンテナの残り
消費された食料が残りのアイテムを残す場合、BetterFoodはそれを保持します。
例としては、ボウルやその他のコンテナを返す食料があります。残りはインベントリに返却されるか、インベントリスペースがない場合はプレイヤーの足元にドロップされます。