Skip to content
Fallenflower0328 edited this page Jun 25, 2026 · 17 revisions

1 介绍

1.1 欢迎来到 饮食均衡-苹果籽版 的WIKI!

这是一个 Minecraft 模组,适配 1.21.1 Neoforge,为 Minecraft 提供了营养值系统,让玩家的生存更有深度!

1.2 模组功能

在游戏内提供了一个营养值系统,玩家可以通过食用食物获取营养值,某种营养不足会产生负面效果,而营养充足则会得到属性加成或者强力效果!(当然,这一切都是完全可自定义的!一切取决于你!)

1.3 WIKI 信息

上次更新:2026/6/25

模组版本:2.2.0

2 快速开始

2.1 模组安装

本模组已上传至 CurseForge 和 Modrinth ,你应该能够很容易下载到。 如果你连接不上这些站点,对于中国大陆玩家,也可以在 MCMOD 处下载。 此外,本模组的 Github 仓库也开放了 Release 下载,你可以直接在那里下载到最新版本。 然后,打开你的 Minecraft 版本目录,找到一个有 Neoforge 加载器的版本,将下载的模组文件(一般是 appleseed-xxx-xxx.jar )放入其中的 mods 目录。 然后,启动游戏,你应该能在“模组”页面左侧的列表中中看到一个名为 AppleSeed 的模组。 如果你按照上述步骤操作,并且成功看到了预期的内容,那么恭喜你,本模组已经成功安装到你的游戏中!

2.2 初次体验

你已经成功安装了本模组,接下来你可以开启生存模式,自由探索这个模组的内容。 如果你没有更改本模组配置,那么你打开物品栏,应该可以在配方书按钮旁看见本模组的按钮-上面印着鸡腿图案,和你的饱食度长得很像。 现在,按下那个按钮,你就会看到一个界面,上面是你的营养值数据。 关掉这个界面,随便找点什么原版的食物,然后打开物品栏,把你的鼠标指针放上去,你应该可以在物品提示中看见“营养值:...”的字样,上面列出了你吃下这个东西能够获得的营养值。 如果你现在饿了,你就可以吃掉它,然后再次找到那个鸡腿图案的按钮,进入那个界面,你应该会发现你的某项营养值上涨了。同理,在默认情况下,当你失去饱食度,或者受到攻击,也会失去一定量的所有营养值。所以,保护好自己,然后吃点好的。 如果你照做了,那么要不了多久你应该就能看见自己的生命值变多了,这时候再打开刚才那个界面,你可以在界面标题旁找到一个类似对话气泡的图标,把你的鼠标指针放上去,它就会显示你当前激活的营养值效果。只要你一直保持营养充足,这些效果就会永远存在,甚至越来越强! 当然,如果你对本模组内置的饮食效果不那么满意,或者是正在开发自己的模组包... 那么你就可以继续看看下面的 WIKI ,它们会教你如何掌控这一切!

2.3 基本配置

现在,打开你的版本文件夹,然后打开 config 目录,里面应该有个名为 appleseed_common.toml 的文件,这就是本模组的配置文件。 在其中的 General Settings 分类中,你可以找到这三个配置项:

ignore_hunger

entrance_visibility

craft_chain_search_depth

它们分别控制的是:

营养摄入是否忽略饱食度

入口按钮可见性

合成树搜索深度

接下来我们分别讲讲它们的具体作用。

2.3.1 ignore_hunger 配置项

这是控制营养摄入是否忽略饱食度的配置。通常情况下,在饱腹后你就不能再吃东西了,因此在一般情况下你不需要管这个配置,保持它为 false 就行。 但是如果你安装了 AlwaysEat 这种模组,允许你在饱腹后继续吃东西,那么如果你希望在饱腹状态下也能摄入营养,就将这个配置项改为 true 。

2.3.2 entrance_visibility 配置项

这是控制入口按钮可见性的配置,它允许以下数值:

default - 默认可见性,显示在物品栏上

invisible - 不可见,在此状态下只能使用快捷键或者指令打开界面

ftb_compat - 需要安装 FTB Library 模组,安装后会显示在 FTB Library 的左侧边栏。

2.3.3 craft_chain_search_depth 配置项

这是控制合成树搜索深度的配置。在了解它的效果之前,你需要先了解一下本模组的自动计算功能运作方式。 本模组提供了自动计算物品营养的功能,可以根据已有材料自动补全物品的营养数据。在计算某个物品的营养数据时,模组会搜索其配方的所有原料,如果某个原料是食物,就先计算这个食物的营养数据,如果某个原料不是食物,就会先查看它是否有营养数据,如果有就直接用,没有就会先检查计数是否大于这个配置值,如果不大于就向下计算,同时增加一个计数。 所以这个配置项设置的是搜索合成树上的任意一个分支允许的最大连续非食物物品数量。 越大的数值可以覆盖到越多的食物,但是也会降低自动计算的速度。 但非常大的数值或许可以接受,因为所有生成的计算好的营养数据都是长久存在的,只要模组列表和食物配方不变,就不需要更新营养数据。

2.4 数据文件编写前的准备工作

接下来的内容需要你对数据包编写有一定了解,在继续之前,请先了解数据包相关的基本知识。

通过编写物品营养数据文件,你可以让其它模组中的食物变得有营养!

接下来我们以 Farmer's Delight 模组的番茄为例,在 2.4 和 2.5 两个小节里演示如何编写物品的营养数据文件。(希望你已经安装了 Farmer's Delight 模组!)

首先你需要有一个数据包,然后打开数据包的 data 目录,在里面创建一个随便叫什么(不能有空格和除了下划线以外的符号)都行的目录,这个目录就是你的数据包的命名空间。

然后继续在里面新建一个 diet 目录,这就是绝大部分针对本模组的数据文件存放的地方。

接下来在里面分别创建以下目录,后面几节的教程会用到:

blocks

foods

groups

这样你就拥有了自定义本模组所有内容的基础!

2.5 物品营养数据编写

书接上回,我们已经有了一个基础的数据包结构,接下来,在刚才创建的 foods 目录创建一个新的文件 farmersdelight_tomato.json 。

然后在其中编写以下内容:

{
    "source_item":"farmersdelight:tomato",
    "nutritions:{
        "fruits":0.02,
        "vegetables":0.02
    }
}

接下来,你可以打包你的数据包,然后把它放入你的存档进行测试!

最后启动游戏进入存档,如果一切无误,你应该能够看见番茄现在有了营养值!

source_item 字段用来表示这个营养数据文件所属的物品。

nutritions 字段记录了每项营养值的量,格式为<营养值ID>:0.0-1.0之间的值

2.6 指令用法

我们在之前的教程中已经为番茄添加了营养数据,但是你可能会发现某些使用番茄制作的食物依然没有营养。

难道自动计算系统坏了?不!准确来说,你需要使用指令进行营养数据的更新!

接下来,我们来讲讲本模组的一些实用指令及其用法:

2.6.1 概述

本模组所有指令全部以 /diet 开头,涵盖了大多数你可能需要的功能!

2.6.2 cache 分支

用法:/diet cache <clear|regenerate|reload>

/diet cache clear - 清理整个 config/apple_seed_foods 目录,以便后续重新生成。

/diet cache regenerate - 清理整个 config/apple_seed_foods 目录,然后重新生成并重新加载,上文提到的营养数据更新操作使用这个指令就能完成!

/diet cache reload - 重新加载整个服务端的数据。

2.6.3 nutritions 分支

用法:/diet nutritions query

查看指定玩家的当前营养值数据。

用法:/diet nutritions <set|add|remove> <count: 0.0-1.0>

设置、增加、减少指定玩家的指定营养素数值。

2.6.4 config 分支

用法:/diet config set <ingoreHunger|entranceVisibility|craftChainSearchDepth>

设置对应的设置项到指定值。

2.6.5 screen 分支

用法:/diet screen

打开本模组的界面。

2.6.6 item 分支

用法:/diet item count:0.0-1.0 []

设置或者创建对应物品的指定营养素的营养数据到 config/appleseed_data.json 中,如果不填物品ID则默认为手持物品添加数据。

2.6.7 block 分支

用法:/diet block count:0.0-1.0 []

设置或者创建对应方块食物的指定营养素的营养数据到 config/appleseed_data.json 中,如果不填 bites 参数则默认为1或者不修改已有数据。

2.7 营养素数据

是的,营养素种类也可以自定义!不过营养素数据不支持热重载!

2.7.1 新建营养素

不满足于默认的五种营养素?接下来你将学习如何新建自己的营养素!

此处以新建名为“维生素”的营养素为例,演示如何新建营养素。

找到刚才我们新建的那个数据包,打开 diet/groups 目录,然后新建一个文件 vitamin.json ,这个文件的文件名就是这个营养素的ID。

接下来在里面输入这些内容:

{ "icon": "minecraft:golden_apple", "color": "#189132",
"order": 5, "default_value": 0.5, "gain_multiplier": 1.0,
"decay_multiplier": 1.0,
"is_negative": false,
"ignore_attack": false,
"ignore_hunger": false, "beneficial": true, "translation_key":"diet.group.vitamin", "effects":[] }

然后你就可以打包你的数据包,然后加载它,如果没有问题,那么你应该能够在本模组的界面上翻页后看到你新建的营养素!

营养素的字段有些复杂,接下来我们逐个讲解。

2.7.1.1 icon字段

这个字段主要控制营养素显示在饮食均衡UI上的图标,它的值可以是游戏中任意一个物品的物品ID。

2.7.1.2 color字段

这个字段主要控制营养素的颜色,它使用十六进制RGB色码。并且它的效果同时作用于Tooltip的对应条目和在饮食均衡UI上对应的百分比数字。

2.7.1.3 order字段

这个字段主要控制营养素在饮食均衡UI上的排列位置,它的值必须是非负整数。

2.7.1.4 default_value字段

这个字段控制营养素的初始值,作用于没有开启keepNutrition游戏规则时玩家死亡后重置回的营养值以及新玩家加入游戏时的营养值,它的值可以是介于0~1之间的任意小数。

2.7.1.5 gain_multiplier和decay_multiplier字段

这两个字段分别控制营养素的获取效率和消耗倍率,它们的值可以是任意非负小数。

特别注意:在默认情况下,每次受击时,无论是否失去了生命值,都会扣除0.1%的所有营养素。此外,每失去1饱食度,也会扣除0.5%所有营养素。

2.7.1.6 is_negative字段

这个字段控制营养素是否是负面的,如果是,这个营养素就不会随着自动计算流程沿着合成链传播。

2.7.1.7 ignore_hunger和ignore_attack字段

这两个字段控制营养素是否忽略由失去饱食度或受到攻击造成的营养素扣除,设置为true可以使该营养素不受对应衰减因素的影响。

2.7.1.8 beneficial字段

这个字段的功能还在开发中,请保持其为true!

2.7.1.9 translation_key字段

这个字段控制营养素的翻译键名,会在Tooltip和饮食均衡UI中显示,需要搭配包含对应翻译键的资源包使用。

2.7.1.10 effect字段

这个字段控制营养素的实际效果,可以在这里配置营养素的生效区间和对应效果,每一条效果都是以字符串形式存在,以下是一个示例:

"0-25:effect(minecraft:nausea,0),attribute(minecraft:generic.max_health,-2.0)"

这条效果的实际效果是:当该营养素的值在0%~25%之间时,给予玩家永久的反胃I效果,并-2最大生命值。

以下是通用的营养素效果条目示例:

"<范围最小值>-<范围最大值>:effect(<效果ID>,<效果等级>),attribute(<属性ID>,<属性值>)"

2.7.2 禁用营养素

不想要某种已经存在的营养素?你可以通过一些简单的步骤禁用它们!

在数据包的 diet/groups 目录下,新建一个 disabled_groups.json ,然后在里面输入一个"[]",在这个"[]"中以逗号分隔加入你想禁用的营养素ID就可以了!

以下是一个示例,禁用了所有默认的营养素:

["vegetables","fruits","sugars","proteins","grains"]

2.8 方块食物数据

本模组支持部分来自其它模组的方块状的食物!

接下来,以较为特殊的来自 Farmer's Delight 模组的南瓜派作为示例,一步一步为其创建方块食物数据!

2.8.1 营养数据定义

像定义物品食物的营养那样,我们需要先为其定义基本的营养数据文件。

和物品食物不同,我们要在数据包的 diet/blocks 目录中新建它的营养数据文件。

方块食物营养数据文件的格式类似物品食物,但有一些区别,以下是南瓜派的营养数据文件内容:

{
  "source_block": "farmersdelight:pumpkin_pie",
  "bites": 4,
  "nutritions": {
    "sugars": 0.01,
    "proteins": 0.0213,
    "vegetables": 0.0135,
    "grains": 0.015
  }
}

和物品食物相似的部分这里不再赘述。方块食物数据特有的bites字段表示这个食物可以被食用几次,这决定了每次食用可以获得其多少分之一的营养。

2.8.2 标签配置

接下来,我们要让模组知道这个南瓜派方块是可以吃的食物,并且能正常显示其营养数据。要实现这个效果,我们就需要用到本模组提供的“食物方块”标签了。

我们现在需要在数据包的 appleseed 命名空间的 tags 目录下新建两个分别名为 block 和 item 的目录,两个目录里均新建一个名为 food_blocks.json 的文件。

然后在 appleseed/tags/block/food_blocks.json 中编写以下内容:

{
  "values":[
    "farmersdelight:pumpkin_pie"  //此处填写目标方块的方块ID
  ]
}

在 appleseed/tags/item/food_blocks.json 中编写以下内容:

{
  "values":[
    "minecraft:pumpkin_pie"  //此处填写目标方块对应的物品ID
  ]
}

当然,如果你正在使用 KubeJS ,那么这个过程就更简单了。

在 KubeJS 的 server_scripts 中新建一个脚本,写入以下内容:

ServerEvents.tags("item", event => {
    event.add("appleseed:food_blocks","minecraft:pumpkin_pie"
})
ServerEvents.tags("block", event => {
    event.add("appleseed:food_blocks","farmersdelight:pumpkin_pie"
})

这样就可以让放在地上的南瓜派变得有营养了!

2.9 配方调整与手动兼容

由于本模组的营养素自动计算系统并不完善,不能兼容很多模组的自定义配方,因此你可以通过禁用配方参与自动计算和编写模拟配方的形式手动兼容这些模组。

2.9.1 配方禁用

首先我们以禁用 Gensokyo Delight ~ Youkais' Feasts 模组的全部注液器配方为例,让自动计算系统忽略这些配方。

在游戏的配置文件夹里可以找到一个名为 appleseed_banned_recipe.json 的文件(如果没有就自己创建一个),然后在里面输入以下内容:

{
  "banned_recipes":[
	 "youkaisfeasts:filling/*"  //此处可以使用通配符批量禁用,也可以使用完整配方ID禁用单个配方
   ]
}

这样我们就禁用掉了 Gensokyo Delight ~ Youkais' Feasts 的所有注液器配方。

2.9.2 模拟配方编写

对于一些配方不兼容或者通过方块交互形式获取的物品,可以通过编写模拟配方的方式补全合成链或者绕过有问题的合成链部分。

以下是以 Farmer's Delight 的盘装烤鸡为例的一个模拟配方示例:

{
  "type": "appleseed:simulate_recipe",
  "inputs": [
    {"type": "item", "id": "farmersdelight:roast_chicken_block", "count": 1},
    {"type": "item", "id": "minecraft:bowl", "count": 4}
  ],
  "outputs": [
    {"type": "item", "id": "farmersdelight:roast_chicken", "count": 4}
  ]
}