L'DieDiet

L'DieDiet是一个为Minecraft设计的食物饱食度系统,专门用于与Diet模组集成。

食物

🥗 厌倦饮食

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


主要特色

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

厌倦阶段

厌倦饮食系统将每种食物的“厌倦程度”分为 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 (任何物品) 效果:舒适 II 分钟。 冲突:激活神圣食物时效果立即移除。
  2. 地下室亚洲 图标:🥢 (红色) | 标志:-c (连续) 阈值:5 (独特物品) 效果:生命恢复和速度 III 分钟。 冲突:被神圣食物移除。如果尝试用牛奶(牛奶清洁)送服,会导致反胃。
  3. 冠军早餐 图标:💪 (金色) | 标志:-c (连续) 阈值:3 (独特物品) 效果:力量 X 分钟。 冲突:被神圣食物移除。使“食草动物”饮食更容易忍受(移除其负面效果)。
  4. 冰冷虚空 图标:❄ (青色) | 标志:-o (在历史中) 阈值:7 (任何物品) 效果:冰霜抗性 XV 分钟。 冲突:与有形热量互斥(效果互相抵消)。被神圣食物移除。
  5. 快餐 图标:🍔 (金色) | 标志:-c (连续) 阈值:5 (任何物品) 效果:缓慢 X 分钟。 依赖性:如果“身体是神殿”处于激活状态,额外导致周期性饥饿。
  6. 水果主义 图标:🍎 (红色) | 标志:-c (连续) 阈值:7 (独特物品) 效果:额外 +1 颗心 (2.0 HP) 和急迫 XV 分钟(持续刷新)。
  7. 食草动物 图标:🌿 (绿色) | 标志:-o (在历史中) 阈值:5 (独特物品) 效果:持续的虚弱和周期性反胃。 冲突:激活冠军早餐或神圣食物时移除负面效果。
  8. 高浓度 图标:🍺 (金色) | 标志:-o (在历史中) 阈值:7 (任何物品) 效果:周期性反胃(持续到被清除)。 依赖性:如果“身体是神殿”激活,对生命值造成严重伤害 (-4.0 HP / 2 颗心)。
  9. 50 道阴影的液体 图标:💧 (蓝色) | 标志:-o (在历史中) 阈值:10 (任何物品) 效果:舒适 V 分钟和恒定的额外 +1 颗心 (+2.0 HP)。
  10. 牛奶清洁 图标:🥛 (白色) | 标志:-o (在历史中) 阈值:1 (牛奶桶) 效果:如果曾食用海鲜(海洋世界)或亚洲食物(地下室亚洲),则导致反胃 III 分钟。 奖励:如果在清洁前冠军早餐处于激活状态,则给予速度 III 分钟。
  11. 矿工宝库 图标:⛏ (灰色) | 标志:-c (连续) 阈值:7 (任何物品) 效果:夜视 V 分钟。
  12. 神圣食物 图标:✨ (金色) | 标志:-o (在历史中) 阈值:1 (金质物品) 效果:排毒。移除几乎所有其他组的效果(水果主义和液体除外)。 依赖性:仅在“身体是神殿”激活时给予生命恢复 III 分钟。
  13. 海洋世界 图标:🐟 (蓝色) | 标志:-o (在历史中) 阈值:5 (任何物品) 效果:水下呼吸 V X 分钟。 冲突:用牛奶(牛奶清洁)“送服”时导致反胃。
  14. 嗜甜者 图标:🍭 (浅紫色) | 标志:-c (连续) 阈值:10 (独特物品) 效果:将 Diet 模组中的糖类等级降低 0.5(对糖过量的治疗效果)。
  15. 有形热量 图标:🔥 (红色) | 标志:-o (在历史中) 阈值:7 (任何物品) 效果:火焰抗性 XV 分钟。 冲突:取消冰冷虚空效果。被神圣食物移除。
  16. 身体是神殿 图标:⛪ (白色) | 标志:-c (连续) 阈值:10 (独特物品) 效果:对“肮脏食物”的组乘数。施加灰度视觉滤镜。 依赖性:激活快餐和酒精的“隐藏”负面效果。
  17. 被低估者 图标:⭐ (黄色) | 标志:-o (在历史中) 阈值:7 (任何物品) 效果:在所有 Diet 模组分类中给予 +0.25 奖励(使你的饮食更均衡)。

为厌倦饮食创建数据包的指南

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

  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 字符串 图标颜色(例如 gold、red、aqua)。
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:HP、Diet 属性的值,或叠加纹理的路径。
  • amplifier:效果等级(0 = 等级 I)。
  • 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"
        }
    }
}