调味得当

调味得当

受《旷野之息》启发的食物系统

食物

精心调味

《精心调味》用直接治疗和数据驱动的食物效果取代了 Minecraft 的饥饿系统。其灵感来源于《塞尔达传说:旷野之息》和 Matcha Flavoured 数据包中基于配料的烹饪系统。

该模组提供食物系统。整合包和数据包提供食物档案。

改动内容

  • 饥饿值 HUD 被隐藏。
  • 饥饿值、消耗度、饥饿伤害和基于饥饿值的生命恢复被禁用。
  • 玩家可以随时疾跑和进食。
  • 未配置的食物将恢复生命值而非饥饿值。
  • 数据包可以为任何现有的食物物品设置治疗效果、状态效果和制作等级。
  • 食物提示框显示最终的心数值和已配置的状态效果。
  • 相同的数据适用于原版物品和其他模组的物品。

未配置的食物会恢复其原版营养价值一半的生命值,最低恢复 1 点生命值。2 点生命值等于 1 颗心。

支持目标

Minecraft 模组加载器 Java
1.21.1 Fabric 21
1.21.1 NeoForge 21

Fabric 版本还需要 Fabric API。请在客户端和服务器端都安装此模组。

数据包设置

将烹饪目录(catalog)放置在此目录中:

<datapack>/
└── data/
    └── <namespace>/
        └── well_seasoned/
            └── cooking/
                └── <catalog>.json

每个目录都是一个 JSON 对象。它可以包含一个 intrinsics 数组、一个 foods 数组,或两者都包含。定义可以引用其他目录文件中的定义。

这个完整示例定义了一个固有属性并将其分配给一种食物:

{
  "intrinsics": [
    {
      "id": "example:fortifying",
      "effects": [
        {
          "id": "minecraft:resistance",
          "duration": 240,
          "amplifier": 0,
          "maximum_duration": 4800,
          "maximum_amplifier": 1,
          "ambient": false,
          "show_particles": true
        }
      ]
    }
  ],
  "foods": [
    {
      "item": "example:pumpkin_jam",
      "tier": "preserved",
      "healing": 3,
      "mode": "append",
      "intrinsics": [
        "example:fortifying"
      ]
    }
  ]
}

一个食物条目可以选择一个物品标签中的所有食物物品。使用 tag 代替 item:

{
  "foods": [
    {
      "tag": "example:fruit",
      "tier": "simple",
      "healing": 2,
      "intrinsics": [
        "example:refreshing"
      ]
    }
  ]
}

该标签使用标准的数据包物品标签格式。对于上述示例,请在 data/example/tags/item/fruit.json 处定义标签。不要在标签 ID 前添加 #。缺失和空的标签是允许的。标签中的非食物物品会被忽略。

一个明确的 item 条目会覆盖匹配的 tag 条目。如果两个配置的标签包含相同的食物且没有明确的物品条目,则重新加载将失败。

更改目录后运行 /reload。《精心调味》会将所有目录作为一个整体进行验证。如果任何目录无效,重新加载将失败,并保持上次有效的集合生效。固有属性 ID、明确的食物物品 ID 和食物标签 ID 在整个集合中必须唯一。

制作等级

等级会改变基础治疗效果和效果持续时间。特殊餐食还会增加一级效果等级。配置的最大值仍然适用。

等级 治疗 效果持续时间 效果等级
simple 1.00x 1.00x +0
preserved 1.35x 2.50x +0
meal 1.75x 5.00x +0
special_meal 2.00x 8.00x +1

例如,一个 healing: 3 的腌制食物(preserved)会恢复 4.05 点生命值。

目录参考

固有属性字段

字段 必需 默认值 描述
id 是 — 该固有属性的唯一命名空间 ID。
effects 是 — 一个或多个效果对象。

效果字段

字段 必需 默认值 描述
id 是 — 命名空间的生物效果 ID。
duration 否 1 基础持续时间(单位:刻)。必须为正数。
amplifier 否 0 基础效果等级,其中 0 为 I 级。
maximum_duration 否 24000 持续时间上限(单位:刻)。
maximum_amplifier 否 2 效果等级上限,其中 2 为 III 级。
ambient 否 false 使用环境效果样式。
show_particles 否 true 显示效果粒子。

每秒有 20 刻。等级倍率在应用到持续时间和效果等级上限之前生效。

如果玩家已经拥有相同等级的同种效果,食用该食物会增加一半的新持续时间,最少增加 20 刻。结果不能超过 maximum_duration。较弱的食物效果不会替换较强的已生效效果。

当多个食物来源提供相同效果时,最高的效果等级生效。具有相同效果等级的效果会累加持续时间。结果不能超过这些来源中最大的 maximum_duration。内置的物品效果概率会被保留。

食物字段

字段 必需 描述
item 条件性 现有食物物品的命名空间 ID。使用 item 或 tag 其中之一。
tag 条件性 物品标签的命名空间 ID。使用 tag 或 item 其中之一。
tier 是 四种制作等级之一。
healing 是 基础生命值点数,范围从 0 到 40。
mode 否 append 保留内置的物品效果。replace 移除它们。默认值为 append。
intrinsics 是 一个或多个固有属性 ID。

计划功能

路线图分为两个系统。以下功能是计划中的,除非其他部分说明它们已经支持,否则不属于当前版本。

食物效果兼容性

  • 为效果组合行为添加可配置的全局默认值。
  • 公开物品标签和数据格式,以便与其他模组兼容。
  • 提供防火食物的示例数据。

菜品效果继承

  • 检测菜品的配料或配方组件,包括来自农夫乐事(Farmer's Delight)及其扩展模组的食物。
  • 当菜品没有特定的食物条目时,允许它们继承并组合配料效果。
  • 允许整合包作者为特定菜品覆盖、禁用或替换继承的效果。
  • 为重复效果以及持续时间和效果等级的缩放添加可配置规则。
  • 为组合菜品添加单独的持续时间和强度倍率。允许高于 1.0 的值。例如,0.75 的倍率使每个继承的效果具有 75% 的效率。
  • 支持数据驱动的强化配料,使制作出的餐食比简单食物更强或持续时间更长。例如,土豆汤可能比烤土豆提供更多的抗火效果。
  • 公开配料标签和数据格式,以便与其他模组兼容。
  • 验证配料数据并为组合餐食提供示例数据。