BetterFood 行为
BetterFood 使用考虑饥饿值的食物选择,而不是简单地先吃最有营养的物品。
触发时机
BetterFood 以最高事件优先级响应原版的 FoodLevelChangeEvent,并且仅在玩家饥饿值下降时才会处理。玩家必须拥有 betterfood.user 权限,并且没有通过 /betterfood toggleEating 关闭自动进食。
选择规则
当插件决定吃什么时,会按两步进行:
- 理想候选 —— 首先寻找最适合当前缺失饥饿值的单一最佳食物:
- 优先选择能在缺失饥饿值范围内提供最高饥饿值的食物(饱和度用于打破平局)。
- 如果没有完全匹配的,则回退到溢出最小的食物(饱和度用于打破平局)。
- 背包匹配 —— 然后扫描玩家的背包存储以查找该理想食物。如果玩家实际并未携带该食物,插件会遍历整个背包,对玩家拥有的每一种支持食物应用相同的契合/溢出比较,然后选出可用的最佳食物。
其目的是避免在饥饿缺口较小时浪费强效食物,因为更弱的物品就足够了。
进食之后,恢复的饥饿值会上限为 20,饱和度的上限为所得到的饥饿值,与原版限制一致。
受保护的物品
当前代码保护的远不止重命名或带有描述的食物。如果食物具有以下任意自定义物品特征,BetterFood 都会避免自动消耗:
- 自定义名称或物品名称
- 描述(lore)
- 自定义模型数据
- 附魔
- 属性修饰符
- 不可破坏状态
- 持久数据容器标签
这旨在降低误食插件物品或装饰物品的可能性。
支持的食物
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 会保留它。
示例包括碗或其他返回容器的食物。残留物会返回到背包中,如果背包空间不足则会掉落在玩家身旁。