Kzeroko KTM2

食物舒适度数据

为已注册的食物指定带正负号的舒适度数值。

更新于 2026/9/27 4 分钟阅读

食物舒适度文件直接把物品ID映射到整数,可以写正数或负数。这里修改的是基础数值;实际食用时还会应用重复进食、精制品质和玩家舒适度规则。

文件放在哪里

使用data/<namespace>/comfort_level/*.json。一个文件可以列出多种食物;文件命名空间标识资源,不限制能引用哪些命名空间的物品。加载器按资源ID排序后依次处理,同一物品以后处理的资源为准。不同数据包中的同路径资源先经过常规数据包资源选择,再进入这一步合并。

最小示例

内置面包条目使用以下完整文件:

{
  "minecraft:bread": 3
}

字段

字段类型默认值作用
minecraft:breadinteger所有文件均未定义时为0动态物品ID键的示例,这里给予3点基础舒适度。每个键必须指向已注册的食物;未知物品和非食物会被跳过并记录警告。

没有固定的外层字段。将minecraft:bread替换为要修改的食物ID,或继续添加物品ID条目。零和负数都能加载;加载器不会按玩家舒适度范围截断数值。

精制品质读取物品存档数据,不在这个文件里定义:

NBT键类型默认值含义
WellMadeFoodobject不存在保存食物品质的复合标签。缺失或不是复合标签时,不调整品质收益。
WellMadeFood.Bonusinteger0只采用1–3级,其余数值不调整品质收益。正基础舒适度乘以1 + 0.33 × level,负基础舒适度除以同一系数,最后向零截断。

命运天平饮食标签

口味属于命运天平。物品标签位于data/isekaiexpansion/tags/items/fate_balance/meals/:fresh_produce.json、bread.json、cooked_fish.json、carrots.json与spicy_foods.json,采用Minecraft物品标签格式。可选的外部条目允许跳过未安装的食物;安装对应模组时,辛辣标签包含expandeddelight:chili_pepper。

先由品质调整食物基础值。基础值为正时,所选口味会为匹配食物增加+4,或使限制性口味分类外的食物减少3。零与负基础值跳过口味修正。调整后的正值继续计算重复进食和性格,负值跳过重复进食。食物提示使用同一计算。食物分类为空时,对应口味命途不可选。

校验

空对象不提供条目,也没有必填的食物。每个属性都会被当作物品ID处理;误写的元数据键会进入物品检查,不会直接忽略。

数值采用整数转换,不是严格整数校验:小数会被截断,数字字符串也可能被接受。编写时应使用32位范围内的有符号JSON整数。加载器没有明确的范围拒绝或截断逻辑,不应依赖溢出转换。

格式错误的物品ID、未注册物品和非食物分别跳过。如果一个有效食物的数值转换失败,会记录错误并停止处理该文件的后续条目,但保留这个文件先前已写入的值;其他资源仍会加载。根对象类型错误也会记录并跳过。空白文本不是合法JSON,不能代替{}。

重载

这些是服务端数据资源,在启动和/reload时加载。每次完成应用都会替换已解析的食物表,因此删除条目后基础值恢复为0。数据包同步会把最终表发送给客户端,用于食物显示。

以下开发命令为已注册食物生成建议值,不是导出当前覆盖表:

/ise dev dumpFoodComfort

结果写入config/isekaiseries/ktm2foodcomfort.json。把需要的条目复制到数据包中;导出文件不会自动作为食物资源加载。

相关页面

重复进食与玩家最终舒适度变化见舒适度。