食物舒适度数据
为已注册的食物指定带正负号的舒适度数值。
食物舒适度文件直接把物品ID映射到整数,可以写正数或负数。这里修改的是基础数值;实际食用时还会应用重复进食、精制品质和玩家舒适度规则。
文件放在哪里
使用data/<namespace>/comfort_level/*.json。一个文件可以列出多种食物;文件命名空间标识资源,不限制能引用哪些命名空间的物品。加载器按资源ID排序后依次处理,同一物品以后处理的资源为准。不同数据包中的同路径资源先经过常规数据包资源选择,再进入这一步合并。
最小示例
内置面包条目使用以下完整文件:
{
"minecraft:bread": 3
}
字段
| 字段 | 类型 | 默认值 | 作用 |
|---|---|---|---|
minecraft:bread | integer | 所有文件均未定义时为0 | 动态物品ID键的示例,这里给予3点基础舒适度。每个键必须指向已注册的食物;未知物品和非食物会被跳过并记录警告。 |
没有固定的外层字段。将minecraft:bread替换为要修改的食物ID,或继续添加物品ID条目。零和负数都能加载;加载器不会按玩家舒适度范围截断数值。
精制品质读取物品存档数据,不在这个文件里定义:
| NBT键 | 类型 | 默认值 | 含义 |
|---|---|---|---|
WellMadeFood | object | 不存在 | 保存食物品质的复合标签。缺失或不是复合标签时,不调整品质收益。 |
WellMadeFood.Bonus | integer | 0 | 只采用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。把需要的条目复制到数据包中;导出文件不会自动作为食物资源加载。
相关页面
重复进食与玩家最终舒适度变化见舒适度。