
饮食均衡-苹果籽版
均衡饮食为你带来益处!
查看大图🍎 Diet — AppleSeed Edition
Neoforge 1.21.1 | 数据驱动 | 完全可配置 | 整合包友好
膳食均衡,健康生活 🥗
为 Minecraft 的饮食系统引入深度机制!通过多样化饮食获得奖励,饮食失衡时获得负面效果。
灵感来自 TheIllusiveC4 的项目 Diet — https://github.com/illusivesoulworks/diet
📖 关于
Diet — AppleSeed Edition 是著名膳食均衡模组 Diet 的精神续作,为 Neoforge 1.21.1 完全重写。
本模组引入了一套完整的饮食营养系统,鼓励玩家多样化饮食,而不是只吃金胡萝卜!
💡 特性:
- ✅ 100% 数据驱动,零硬编码
- ✅ 强大的自动营养计算引擎
- ✅ 完整的配置系统,支持每组分段覆盖
- ✅ 通过 Minecraft 配方智能追溯原料
- ✅ 支持所有 Mod 食物
- ✅ 多语言支持
- ✅ 软依赖 — 不安装 FTB Library / SomeAssemblyRequired 也能正常运行
- ✅ 方块食物支持(如蛋糕),按口计算营养值
- ✅ 模拟配方系统,支持自定义营养计算
- ✅ 可配置的非食物原料配方递归深度
🎯 五大营养组
| 图标 | 营养组 | 缺失惩罚 (0-25%) | 进阶 (61-70%) | 强化 (71-80%) | 巅峰 (81-100%) |
|---|---|---|---|---|---|
| 🌾 | 谷物 | 缓慢 I | 生命上限 +4 | 生命上限 +6 生命恢复 I |
生命上限 +6 攻击伤害 +1 生命恢复 I |
| 🥬 | 蔬菜 | 反胃 I | 生命上限 +2 护甲韧性 +3 |
生命上限 +2 护甲韧性 +4 |
生命上限 +2 护甲韧性 +4 急迫 I |
| 🥩 | 蛋白质 | 虚弱 I | 生命上限 +2 护甲值 +1 |
生命上限 +4 护甲值 +2 |
生命上限 +6 护甲值 +4 抗性提升 I |
| 🍎 | 水果 | 挖掘疲劳 I | 生命上限 +2 攻击速度 +0.05 |
生命上限 +4 攻击速度 +0.1 |
生命上限 +6 攻击速度 +0.2 |
| 🍬 | 糖类 | 无 | 速度 II | 速度 II | 速度 II 饥饿 V |
💡 26% – 60%:所有营养组均无效果。
💡 糖类特殊:0–50% 无效果,51% 起提供速度加成。
🎮 游戏内功能
📱 膳食均衡界面
打开膳食均衡界面:
- 物品栏按钮:按
E→ 点击配方书旁的「膳食均衡」按钮(默认模式) - FTB Library 侧边栏:按钮出现在 FTB Library 侧边栏中(ftb_compact 模式,需安装 FTB Library)
- 按键绑定:在 控制 → AppleSeed 分类中为「Open Diet GUI」绑定按键
- 指令:
/diet screen(无需权限)
┌─────────────────────────────────────────────┐
│ Diet / 膳食均衡 │
├─────────────────────────────────────────────┤
│ 🌾 Grains [████████░░░░] 80% │
│ 🥬 Veggies [███████░░░░░] 70% │
│ 🥩 Protein [████████████] 100% │
│ 🍎 Fruits [████░░░░░░░░] 40% │
│ 🍬 Sugars [█████████░░░] 90% │
├─────────────────────────────────────────────┤
│ ✨ Active Effects: │
│ Resistance I │
│ +6.0 Max Health / 最大生命值 │
│ +4.0 Armor / 护甲值 │
└─────────────────────────────────────────────┘
营养组超过 5 个时,界面支持分页浏览。
🔘 入口可见性模式
通过配置 entrance_visibility 或 /diet config set entranceVisibility <mode> 控制:
| 模式 | 行为 |
|---|---|
default |
在物品栏配方书旁显示「膳食均衡」按钮 |
ftb_compact |
使用 FTB Library 侧边栏按钮(需安装 FTB Library)。未安装时自动回退为 default |
invisible |
隐藏所有入口按钮(仍可通过按键绑定或 /diet screen 指令打开) |
💡 切换至/出
ftb_compact模式时自动执行/reload以刷新 FTB Library 侧边栏。
💬 物品提示
所有可食用物品在鼠标悬停时显示营养值。
Cake / 蛋糕
──────
Nutrition: / 营养值:
Grains: +3.2% / 谷物: +3.2%
Sugars: +15.8% / 糖类: +15.8%
Protein: +1.5% / 蛋白质: +1.5%
💡 仅显示值大于 0 的营养素。 💡 完整支持 SomeAssemblyRequired 的三明治。
🧱 方块食物
方块食物(如蛋糕)已完全支持,营养值按口计算。
// diet/blocks/cake.json
{
"source_block": "minecraft:cake",
"bites": 7,
"nutritions": {
"grains": 0.03,
"sugars": 0.15,
"proteins": 0.02
}
}
每口蛋糕增加总营养值的 1/7。
⚙️ 营养机制
📉 营养衰减
营养值会根据玩家行为衰减:
| 事件 | 衰减量 |
|---|---|
| 每失去 1 点饱食度 | 0.5% × decay_multiplier |
| 每受到 1 次伤害 | 0.1% × decay_multiplier |
🛡️ 衰减豁免
每个营养组可配置忽略特定来源的衰减:
| 配置字段 | 效果 |
|---|---|
ignore_hunger |
饱食度降低时该营养素不减少 |
ignore_attack |
受到攻击时该营养素不减少 |
可在 appleseed-common.toml 的 [Group_Overrides] 中按组设置。
📈 营养获取
食用食物时,根据食物的营养成分增加营养值,乘以该组的 gain_multiplier。
💀 死亡机制
由游戏规则 keepNutritions 控制:
false(默认):重生时重置为初始值。true:死亡后保留营养值。
/gamerule keepNutritions true
🚀 智能自动计算引擎
🧠 配方驱动的营养计算
这是模组最强大的功能!无需手动编写数据文件!
世界加载时,模组会:
- 🔍 扫描所有已注册的配方
- 🍳 识别所有带有 FoodProperties 的物品
- 🔗 递归追溯每个食物的原料
- 🧮 自动计算营养成分
- 💾 将结果保存为 JSON 缓存至
config/apple_seed_foods/
📊 计算示例
以蛋糕为例:
| 原料 | 数量 | 营养贡献 |
|---|---|---|
| 牛奶桶 | 3 | 蛋白质 |
| 糖 | 2 | 糖类 |
| 鸡蛋 | 1 | 蛋白质 |
| 小麦 | 3 | 谷物 |
蛋糕营养值 = 3×牛奶 + 2×糖 + 鸡蛋 + 3×小麦
──────────────────────────────────────────────────
结果: 谷物 +3.2% / 糖类 +15.8% / 蛋白质 +1.5%
✅ 支持的配方类型
- ✅ 合成配方(有序 / 无序)
- ✅ 熔炉 / 烟熏炉 / 高炉
- ✅ 营火烹饪
- ✅ 切石机
- ✅ 锻造
📁 数据加载优先级
当多个来源为同一食物定义营养值时,高优先级覆盖低优先级:
1. appleseed_data.json ← 最高优先级
2. 数据包 diet/foods/*.json ← 可覆盖内置
3. 其他模组的 diet/foods/*.json
4. AppleSeed 内置食物数据
5. config/apple_seed_foods/*.json ← 自动生成(最低优先级)
🧪 模拟配方
模拟配方允许你为没有实际合成配方的物品定义自定义营养计算,或覆盖现有的基于配方的计算。
// data/appleseed/recipes/simulate/custom_food.json
{
"type": "appleseed:simulate_recipe",
"inputs": [
{
"item": "minecraft:wheat",
"count": 3
},
{
"item": "minecraft:sugar",
"count": 2
}
],
"outputs": [
{
"item": "minecraft:cake",
"count": 1
}
]
}
模拟配方支持物品和流体作为输入:
{
"type": "appleseed:simulate_recipe",
"inputs": [
{
"fluid": "minecraft:water",
"count": 1000
},
{
"item": "minecraft:wheat",
"count": 2
}
],
"outputs": [
{
"item": "minecraft:bread",
"count": 1
}
]
}
💡 模拟配方在自动计算时与原版配方一起处理。
🔧 指令
营养管理
| 指令 | 权限 | 描述 |
|---|---|---|
/diet nutritions query <player> |
2 | 查看玩家的营养值 |
/diet nutritions set <player> <id> <0.0–1.0> |
2 | 设置特定营养值 |
/diet nutritions add <player> <id> <0.0–1.0> |
2 | 增加营养值(上限 1.0) |
/diet nutritions remove <player> <id> <0.0–1.0> |
2 | 减少营养值(下限 0.0) |
物品营养管理
| 指令 | 权限 | 描述 |
|---|---|---|
/diet item <group> <value> |
2 | 设置手持物品的营养值 |
/diet item <group> <value> <item> |
2 | 设置特定物品的营养值 |
方块营养管理
| 指令 | 权限 | 描述 |
|---|---|---|
/diet block <block> <group> <value> |
2 | 设置方块食物的营养值 |
/diet block <block> <group> <value> <bites> |
2 | 设置方块食物的营养值和可食用次数 |
配置管理
| 指令 | 权限 | 描述 |
|---|---|---|
| `/diet config set ignoreHunger <true | false>` | 2 |
/diet config set entranceVisibility <mode> |
2 | 设置按钮可见性模式:invisible / default / ftb_compact |
/diet config set craftChainSearchDepth <depth> |
2 | 设置非食物原料的配方递归搜索深度 |
缓存管理
| 指令 | 权限 | 描述 |
|---|---|---|
/diet cache clear |
4 | 删除所有自动生成的营养文件 |
/diet cache regenerate |
4 | 清空缓存 + 执行 /reload 重建 |
/diet cache reload |
2 | 执行 /reload 重新加载全部营养数据 |
界面
| 指令 | 权限 | 描述 |
|---|---|---|
/diet screen |
无 | 打开膳食均衡界面 |
💡 所有营养 ID 参数都支持 Tab 补全。 💡 入口可见性参数支持 Tab 补全。
⚙️ 配置文件
位置:config/appleseed-common.toml。
[General_Settings]
| 键 | 类型 | 默认值 | 描述 |
|---|---|---|---|
ignore_hunger |
bool | false |
饱食度满时食用是否还计算营养 |
entrance_visibility |
string | "default" |
按钮可见性模式:invisible、default、ftb_compact |
craft_chain_search_depth |
int | 3 |
配方追溯中非食物原料的最大递归深度 |
[Group_Overrides]
覆盖营养组级别的行为。每个预设组拥有:
*_is_negative— 自动计算时忽略该营养组的贡献*_ignore_attack— 受到攻击时该营养素不衰减*_ignore_hunger— 饱食度降低时该营养素不衰减
示例:
[Group_Overrides]
grains_is_negative = false
grains_ignore_attack = false
grains_ignore_hunger = false
fruits_is_negative = false
fruits_ignore_attack = false
fruits_ignore_hunger = false
vegetables_is_negative = false
vegetables_ignore_attack = false
vegetables_ignore_hunger = false
proteins_is_negative = false
proteins_ignore_attack = false
proteins_ignore_hunger = false
sugars_is_negative = false
sugars_ignore_attack = false
sugars_ignore_hunger = false
[Nutritions_Settings] > [Effects_Override]
覆盖每个营养组的效果范围。留空(默认)则使用数据文件中的定义。
[Nutritions_Settings.Effects_Override]
# grains_ranges = ["0-25:effect(minecraft:slowness,0)"]
# fruits_ranges = ["0-25:effect(minecraft:mining_fatigue,0)"]
[Nutritions_Settings]
| 键 | 类型 | 默认值 | 描述 |
|---|---|---|---|
grains_initial |
double | 0.5 |
新玩家谷物初始值 |
fruits_initial |
double | 0.5 |
新玩家水果初始值 |
vegetables_initial |
double | 0.5 |
新玩家蔬菜初始值 |
proteins_initial |
double | 0.5 |
新玩家蛋白质初始值 |
sugars_initial |
double | 0.5 |
新玩家糖类初始值 |
📁 数据包配置
📂 目录结构
data/
└── <namespace>/
└── diet/
├── groups/ ← Group definitions (required / 必需)
│ ├── grains.json
│ ├── fruits.json
│ ├── vegetables.json
│ ├── proteins.json
│ ├── sugars.json
│ └── disabled_groups.json ← Groups to disable (array / 数组)
└── foods/ ← Food nutrition data (optional / 可选)
├── apple.json
├── bread.json
└── ...
📄 食物数据格式
每个文件定义一个食物。支持单对象和数组两种格式。auto_calculated 字段缺失时默认为 false。
// 单对象格式 — diet/foods/apple.json
{
"source_item": "minecraft:apple",
"nutritions": {
"fruits": 0.02
}
}
// 数组格式,仅可在config/appleseed_data.json中使用
[
{
"source_item": "minecraft:apple",
"nutritions": {
"fruits": 0.02
}
},
{
"source_item": "minecraft:bread",
"nutritions": {
"grains": 0.05
}
}
]
| 字段 | 必填 | 类型 | 描述 |
|---|---|---|---|
source_item |
是 | string | 物品 ID |
nutritions |
是 | object | 营养组名 → 营养值映射 (0.0 – 1.0) |
auto_calculated |
否 | bool | 是否为自动生成。默认为 false |
📄 营养组定义格式
{
"icon": "minecraft:apple",
"color": "#9e2a2b",
"order": 1,
"default_value": 0.5,
"gain_multiplier": 1.0,
"decay_multiplier": 1.0,
"beneficial": true,
"translation_key": "diet.group.fruits",
"effects": [
"0-25:effect(minecraft:mining_fatigue,0)",
"61-70:attribute(minecraft:generic.max_health,2.0)",
"71-80:attribute(minecraft:generic.max_health,4.0)",
"81-100:attribute(minecraft:generic.max_health,6.0)"
]
}
| 字段 | 类型 | 描述 |
|---|---|---|
icon |
string | 用作图标的物品 ID |
color |
string | UI 显示的十六进制颜色 |
order |
int | 膳食界面中的排序 |
default_value |
float | 新玩家初始营养值 (0.0 – 1.0) |
gain_multiplier |
float | 食物营养获取倍率 |
decay_multiplier |
float | 营养衰减速率倍率 |
beneficial |
bool | 高值是否有益(影响UI颜色) |
translation_key |
string | 营养组名称的本地化键 |
effects |
array | 效果范围定义 |
📄 效果格式
"min-max:effect(namespace:id,amplifier),attribute(namespace:id,amount),..."
| 元素 | 格式 | 示例 |
|---|---|---|
effect(id,amplifier) |
effect(modid:effect_id,level) |
effect(minecraft:slowness,0) = 缓慢 I |
attribute(id,amount) |
attribute(modid:attr_id,value) |
attribute(minecraft:generic.max_health,4.0) = +4 最大生命值 |
同一范围内的多个效果/属性用逗号分隔。
🚫 禁用营养组
disabled_groups.json — 一个包含要完全禁用的营养组名称的数组:
["grains", "sugars"]
🍎 appleseed_data.json
位于 config/appleseed_data.json 的特殊配置文件,拥有最高优先级。格式为食物条目数组:
[
{
"source_item": "minecraft:golden_apple",
"nutritions": {
"fruits": 0.5,
"sugars": 0.3
}
}
]
🔌 软依赖
FTB Library 兼容
当安装 FTB Library 时,支持在侧边栏注册按钮以打开膳食均衡界面。在配置中设置 entrance_visibility 为 ftb_compact,或使用 /diet config set entranceVisibility ftb_compact。
按钮通过 assets/appleseed/sidebar_buttons/diet.json JSON 资源定义,在 FTB Library 侧边栏显示为「Diet Balance」。
SomeAssemblyRequired 兼容
完整支持 SomeAssemblyRequired 的三明治 — 根据三明治内所有原料计算营养值。
🎮 按键绑定
在 控制 → AppleSeed → Open Diet GUI 中注册了按键绑定。无论入口可见性模式如何,均可使用该按键打开膳食均衡界面。
📦 整合包使用
本模组为整合包作者设计:
- 创建自定义食物营养数据:在数据包的
data/<namespace>/diet/foods/下 - 覆盖营养组行为:通过
appleseed-common.toml→[Group_Overrides] - 定义最高优先级食物数据:在
config/appleseed_data.json中 - 禁用不需要的营养组:通过
disabled_groups.json - 自定义营养效果:在
diet/groups/下的组 JSON 文件中 - 自动计算覆盖所有 Mod 食物 — 大多数物品无需手动编写数据
📝 许可证
LGPLv3
正在加载版本记录…

正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。