L'DieDiet

L'DieDiet

L'DieDiet是一个为Minecraft设计的食物厌倦系统,专门用于与Diet模组集成。它通过引入食物习惯化系统和自定义食物组,鼓励玩家多样化饮食。

食物

🥗 L'DieDiet

L'DieDiet 是一个 Minecraft 的食物厌倦系统,专门设计用于与 Diet 模组集成。它通过引入食物习惯化系统和自定义食物组,鼓励玩家多样化饮食。


主要特性

  • 厌倦阶段:你吃同一种食物越多,它带来的益处就越少。总共有 5 个阶段 —— 从“新鲜”到完全厌恶。
  • 惩罚:在较高阶段,食物恢复的饥饿值和饱和度会减少,并且不再提供有益效果。
  • Diet 模组集成:该模组会考虑你的 Diet 数据并对其进行调整。如果你反复吃同样的东西,你在 Diet 模组中的进度会变慢。
  • 奖励系统:通过长期保持多样化的饮食,你可以获得独特的增益效果。

厌倦阶段

L'DieDiet 系统将每种食物的“厌倦等级”分为 5 个阶段(0-4)。进度取决于你连续(或在你的进食历史中)食用同一种物品的次数。

阶段机制(默认)

阶段 名称 特征与惩罚
0 新鲜 食物提供 100% 的益处。所有正面效果正常生效。
1 足够 饥饿值和饱和度恢复 -25%。你开始习惯这种味道。
2 无聊 饥饿值/饱和度 -50%。增益效果被禁用:来自该食物的任何魔法或加成不再生效。
3 恶心 饥饿值 -75%。Diet 模组属性增长 -50%。饱和度几乎不增加。
4 厌恶 Diet 属性增长 -100%(属性完全不增长)。饥饿值恢复至最低限度。

阶段会随时间降低,这由 RECOVERY_TIME_TICKS + RECOVERY_MULT_2_STATS 调节。

动态阈值 - 阶段转换对 Diet 模组属性的依赖

示例:

普通苹果:在 Diet 中仅提供 1 点属性(水果)。模组使用基础阈值列表:[5, 12, 20, 30]。 复杂炖菜:在 Diet 中提供 3 点属性(谷物、蛋白质、蔬菜)。配置:THRESHOLDS_3_STATS - [8, 18, 28, 40]。

多样性加成 - 基于饮食多样性的更快阶段恢复

加成计算方式:模组查看你最近吃过的食物历史(历史长度在 REWARD_HISTORY_LENGTH 中设置)并计算其中独特物品的数量。

公式:倍率 = 1.0 + (独特物品数量 * VARIETY_RECOVERY_BONUS_PER_FOOD)。

假设每个独特产品的加成 = 0.1 (10%)。你吃了 5 种不同类型的食物。倍率 = 1.5。基础恢复时间为 10 分钟。饮食多样化时的恢复时间为 10 / 1.5 = 6.6 分钟。

你可以配置的所有内容:

基础阶段阈值

各阶段的饥饿值恢复倍率

以刻为单位的完全恢复时间

食物总是恢复的最小饥饿值

为奖励而记住的最近食用食物数量

是否将厌倦惩罚应用于饱和度

是否启用与 Diet 模组的集成

是否在阶段 3+ 将厌倦惩罚应用于 Diet 属性

是否为具有多种 Diet 属性的食物启用加成阈值

属性越多的食物阶段阈值越高

是否对具有多种 Diet 属性的食物启用恢复时间惩罚

属性越多的食物恢复越慢

按厌倦阶段划分的 Diet 属性倍率

阶段 3:正面 Diet 属性倍率

阶段 3:负面 Diet 属性倍率

阶段 4:正面 Diet 属性倍率

阶段 4:负面 Diet 属性倍率

具有多种 Diet 属性的食物的加成阶段阈值

具有 2 种 Diet 属性的食物的阈值:[阶段1, 阶段2, 阶段3, 阶段4]

具有 3 种 Diet 属性的食物的阈值

具有 4 种 Diet 属性的食物的阈值

具有 5 种 Diet 属性的食物的阈值

具有多种 Diet 属性的食物的恢复时间惩罚

具有 2 种 Diet 属性的食物的恢复时间倍率

具有 3 种 Diet 属性的食物的恢复时间倍率

具有 4 种 Diet 属性的食物的恢复时间倍率

具有 5 种 Diet 属性的食物的恢复时间倍率

多样性加成 - 多样化食物的加速恢复

阶段 1+ 每个独特产品的恢复速度加成


自定义食物组

默认有 17 个组来展示模组的功能:

  1. 最低限度 图标:🍞 (黄色) | 标志:-c (连续) 阈值:7 (任意物品) 效果:获得 2 分钟的舒适效果。 冲突:当神圣食物被激活时,此效果被立即移除。

  2. 地下室亚洲 图标:🥢 (红色) | 标志:-c (连续) 阈值:5 (独特物品) 效果:获得 3 分钟的再生和速度效果。 冲突:被神圣食物移除。如果尝试用牛奶(牛奶净化)冲掉,会引发恶心效果。

  3. 冠军早餐 图标:💪 (金色) | 标志:-c (连续) 阈值:3 (独特物品) 效果:获得 10 分钟的力量效果。 冲突:被神圣食物移除。使其更容易忍受“为食草动物”饮食(移除其负面效果)。

  4. 寒冷虚空 图标:❄ (青色) | 标志:-o (历史中) 阈值:7 (任意物品) 效果:获得 15 分钟的防冻效果。 冲突:与实体热量相互冲突(效果相互抵消)。被神圣食物移除。

  5. 快餐 图标:🍔 (金色) | 标志:-c (连续) 阈值:5 (任意物品) 效果:获得 10 分钟的缓慢效果。 依赖:如果“身体是圣殿”激活,额外引发周期性饥饿。

  6. 水果主义 图标:🍎 (红色) | 标志:-c (连续) 阈值:7 (独特物品) 效果:获得 +1 颗心(2.0 点生命值)的加成和 15 分钟的急迫效果(持续刷新)。

  7. 为食草动物 图标:🌿 (绿色) | 标志:-o (历史中) 阈值:5 (独特物品) 效果:持续的虚弱效果和周期性的恶心效果。 冲突:当冠军早餐或神圣食物被激活时,负面效果被移除。

  8. 高度数 图标:🍺 (金色) | 标志:-o (历史中) 阈值:7 (任意物品) 效果:周期性的恶心效果(持续,直到被净化)。 依赖:如果“身体是圣殿”激活,会对生命值造成大量伤害(-4.0 点生命值 / 2 颗心)。

  9. 液体五十度灰 图标:💧 (蓝色) | 标志:-o (历史中) 阈值:10 (任意物品) 效果:获得 5 分钟的舒适效果和持续的 +1 颗心(+2.0 点生命值)加成。

  10. 牛奶净化 图标:🥛 (白色) | 标志:-o (历史中) 阈值:1 (牛奶桶) 效果:如果食用了海鲜(海洋世界)或亚洲食物(地下室亚洲),会引发 3 分钟的恶心效果。 加成:如果在净化前“冠军早餐”处于激活状态,则获得 3 分钟的速度效果。

  11. 矿工的藏匿处 图标:⛏ (灰色) | 标志:-c (连续) 阈值:7 (任意物品) 效果:获得 5 分钟的夜视效果。

  12. 神圣食物 图标:✨ (金色) | 标志:-o (历史中) 阈值:1 (金制物品) 效果:解毒。移除几乎所有其他组的效果(水果主义和液体组除外)。 依赖:仅当“身体是圣殿”激活时,才给予 3 分钟的再生效果。

  13. 海洋世界 图标:🐟 (蓝色) | 标志:-o (历史中) 阈值:5 (任意物品) 效果:获得 10 分钟的水下呼吸 V 效果。 冲突:被牛奶(牛奶净化)“冲掉”时引发恶心效果。

  14. 甜食爱好者 图标:🍭 (浅紫色) | 标志:-c (连续) 阈值:10 (独特物品) 效果:将 Diet 模组中的糖分水平降低 0.5(针对糖分过量的治疗效果)。

  15. 实体热量 图标:🔥 (红色) | 标志:-o (历史中) 阈值:7 (任意物品) 效果:获得 15 分钟的防火效果。 冲突:取消寒冷虚空效果。被神圣食物移除。

  16. 身体是圣殿 图标:⛪ (白色) | 标志:-c (连续) 阈值:10 (独特物品) 效果:“脏食物”的组成员倍率。应用灰度视觉滤镜。 依赖:为快餐和酒精激活“隐藏”的负面效果。

  17. 被低估 图标:⭐ (黄色) | 标志:-o (历史中) 阈值:7 (任意物品) 效果:为所有 Diet 模组类别提供 +0.25 的加成(使你的饮食更加均衡)。

为 L'DieDiet 创建数据包的指南

数据包允许你配置食物组、激活它们时的奖励,以及厌倦系统的例外情况。

  1. 食物组 组配置文件位于:data/<命名空间>/food_groups/<组ID>.json

主要组参数:

字段 类型 描述
name 字符串 组名称(显示在界面中)。
active_effect_text 字符串 组激活时在 GUI 中可见的副标题。
flag 字符串 计数模式:-o(总计 — 统计历史中的所有内容)或 -c(连续 — 食用连续次数)。
threshold 整数 需要吃多少食物才能激活该组。
require_unique 布尔值 true — 仅计算不同的物品,false — 全部加起来。
hide_activation_message 布尔值 true — 隐藏快捷栏上方橙色的激活文本。
advancement 字符串 激活时授予的进度的路径(例如,mod:folder/adv)。
tooltip_icon 字符串 工具提示中的图标符号(例如,)。
tooltip_icon_color 字符串 图标颜色(例如,goldredaqua)。
items 数组 物品列表(minecraft:apple)或标签(#forge:fruits)。
  1. 效果 在 effects 数组内部,你可以定义各种加成或惩罚。 常见效果字段:
  • duration_type(或 type):
    • "fixed" — 固定时间的效果。
    • "until_death" — 持续到死亡为止的永久效果。
    • "until_death_intermittent" — 永久,但会间歇性生效(闪烁)。
    • "history_intermittent" — 只要玩家的历史中包含该组的食物,就会生效。
  • effect_type
    • "mob_effect" — 标准药水效果。
    • "health" — 最大生命值加成。
    • "diet" — 为 Diet 模组添加额外属性。
    • "overlay" — 全屏视觉效果。
  • effect_id:效果 ID(例如,minecraft:regeneration)或 Diet 组名称。
  • value:生命值、Diet 属性的值,或叠加纹理的路径。
  • amplifier:效果等级(0 = 一级)。
  • duration_ticks:以刻为单位的持续时间。

高级效果设置:

  • requires_active_groups:必须已经激活才能触发此效果的组 ID 列表。
  • cancel_on_groups:激活后会取消此效果的组 ID 列表。
  • interval_active_ticks[最小, 最大] — 间歇模式下的活动时间。
  • interval_pause_ticks[最小, 最大] — 间歇模式下的暂停时间。
  • duration_multipliers:对象 {"其他组ID": 1.5},如果另一个组激活,则会增加效果的强度。
  1. 排除项 排除文件位于:data/<命名空间>/exclusions/<文件ID>.json

在这里,你可以为特定物品强制设置厌倦阶段(例如,让某种食物永远被认为是“无聊的”,或者相反,“新鲜的”)。

{
  "overrides": {
    "minecraft:rotten_flesh": 4,
    "minecraft:golden_apple": 0
  }
}

物品也可以通过物品标签完全排除:data/ldiediet/tags/items/excluded_foods.json

进度

当你添加自己的自定义进度时,你可以将进度授予链接到某个组。为此,请使用此模板创建一个进度:

{
    "parent": "........",
    "display": {
        "icon": {
            "item": "..........."
        },
        "title": "..........",
        "description": "............",
        "frame": "task",
        "show_toast": true,
        "announce_to_chat": true,
        "hidden": false
    },
    "criteria": {
        "award": {
            "trigger": "minecraft:impossible"
        }
    }
}