Healthy DietFEATURE GUIDE中文
REFERENCE / CONFIGURATION

配置项详解:文件字段与游戏内界面。

按文件定位服务器玩法与客户端显示设置,再用游戏内界面预览核对每个可见选项的作用、保存范围和刷新方式。

server.jsondisplay.json游戏内界面预览刷新边界
默认值与预览边界:表中的“默认”指代码或新建配置的初始值,不表示你的服务器正在使用该值。下方仿游戏 UI 是只读 HTML 示意,不连接游戏、不显示实时配置,也不能保存;实际行数、语言、第三方模组与权限可能不同。带 _note_ 前缀的字段只是只读说明,修改不会生效。

01配置放在哪,归谁管

所有路径都相对于实例的 config/healthy_diet/;数据包路径另见 data/<命名空间>/healthy_diet/。先看“作用域”,再看“典型刷新方式”。

共 18 个配置入口;输入文件名、路径或字段名过滤。

文件 / 目录作用域负责内容典型刷新
server.json
gameplay / privacy / shelfMerge
服务端权威保质期总开关、联动开关、属性/效果刷新间隔、保护物品、测试日志、阶段命令隐私、堆叠合并门槛OP 页保存或编辑后 /hdreload
display.json客户端本地Tooltip 每行营养数、TitlePro 换行宽度、D 页宽度、温度单位、默认显示模式客户端显示设定保存;手改后重进客户端
colors/color_schemes.json两端外观命名渐变方案,供品质、营养组、提示行和保质期方案引用服务端 /hdreload;客户端本地文件按各端读取
colors/solid_colors.json两端外观编辑器纯色取色盘的色卡数组服务端 /hdreload;客户端本地文件按各端读取
fatigue/fatigue_gradient.json显示外观厌倦等级行、恢复进度行的方案与动画参数/hdreload
fatigue/fatigue_exempt.json服务端玩法吃下后不推进其他冷却食物恢复计数的物品 ID 列表/hdreload
shelf_life/seasons.json服务端玩法季节/节气保质期倍率、未加载 EC 时的回退倍率、显示名/hdreload
shelf_life/schemes/*.json两端显示保质期提示的文案模板、状态配色、符号、季节显示名/hdreload 并下发方案
temperature/block_heat.json服务端玩法非 LSO 分支的方块热源表:方块、状态条件、贡献温度/hdreload 或温度配置页保存
temperature/weather_offsets.json服务端玩法24 节气降雨/雷暴的温变偏移/hdreload 或温度配置页保存
temperature/day_night_offsets.json服务端玩法24 节气的正午/午夜温变幅度/hdreload 或温度配置页保存
temperature/season_temperature.json服务端玩法24 节气附加环境温度(叠加在 EC 气候上)/hdreload 或温度配置页保存
bottle_fills.json服务端玩法手持物品右键液体源方块后的消耗与产物规则/hdreload
fog_effects.json客户端本地拥有指定效果时的水下/岩浆雾距离各客户端读取本地文件;服务器重载不代改
item_rarities.json服务端/同步物品 ID → 品级 ID 的物品级兜底指定/hdreload;/hdset rarity 会写它
tooltip_templates.json编辑器本地[模板] 按钮使用的提示行模板数组编辑器读写本实例文件;不当作跨客户端同步内容
quality_registry/*.json启动期注册新增独立品质物品的来源、注册名、品质、食用与堆叠属性启动时生效;/hdreload 只重读待生效列表
datapack/data/<ns>/healthy_diet/
HD 覆盖层;世界数据包为 data/<ns>/healthy_diet/
items / tooltips / blocks / nutrition_* / quality_levels / rarities / effect_lines
数据包(世界 + HD 覆盖层)物品、提示、方块、营养、品质、品级和效果行定义;HD 覆盖层优先级最高世界数据包用 /reload;HD 覆盖层用 /hdreload
三个层次不要混:配置文件(config/healthy_diet/*.json)、数据包(data/.../healthy_diet/)和启动期注册(quality_registry/)的生效方式不同。把数据包文件复制到 config/healthy_diet/items/ 不会生成可由游戏读取的物品配置。
源码依据:ConfigManager 的路径常量与 loadAll、ServerConfigFile.migrate、QualityRegistryLoader。

02server.json:服务端权威分节

一个文件三个分节:gameplay、privacy、shelfMerge。旧版分离文件会在加载时迁入本文件,原文件移入 migration_backup/。

结构示意(省略只读 _note_ 字段)
{
  "gameplay": {
    "shelfTemperatureEnabled": false,
    "lsoIntegrationEnabled": true,
    "ecIntegrationEnabled": true,
    "proxyHeatstrokeEffect": true,
    "bonusUpdateTicks": 100,
    "effectUpdateTicks": 200,
    "ejectIllegalProtectedItems": false,
    "removeOwnerOnDeathDrop": false,
    "debugLogs": false
  },
  "privacy": { "sendCommandTextToAllPlayers": false },
  "shelfMerge": {
    "mergeRemainingMinutes": 5,
    "mergeTempThreshold": 10.0,
    "mergeColdFreshThreshold": 20.0
  }
}

gameplay:玩法与刷新间隔

字段类型 / 默认作用与边界
shelfTemperatureEnabledboolean / false保质期与温度系统总开关。关闭时暂停衰减、温度/冷鲜推进、过期产物与过期指令、温度拒食、温区效果和相关提示;已有物品数据保留,关闭时段从下次结算中扣除,不追溯补算。
lsoIntegrationEnabledboolean / true是否允许 hd:shelf 使用 LSO 的完整世界环境;不关闭其他 LSO 兼容。
ecIntegrationEnabledboolean / true是否允许 hd:shelf 直接使用 EC 气候和 HD 的 EC 季节倍率;不修改 EC 已由 LSO 提供的内容。
proxyHeatstrokeEffectboolean / true把 LSO 中暑镜像为 EC 中暑(服务端每 5 秒检查,仅借助 EC 的模糊效果);无 LSO 中暑或带免疫时移除 EC 中暑。
bonusUpdateTicksint / 100属性加成结算间隔,单位 tick;限制在 1–1728000。默认约 5 秒。
effectUpdateTicksint / 200药水效果加成刷新间隔,单位 tick;限制在 1–1728000。默认约 10 秒。
ejectIllegalProtectedItemsboolean / false玩家持有从未被信任的保护物品时:true 丢到脚下;false 留在原位冻结并警告。默认关闭以免误判造成掉落消失。
removeOwnerOnDeathDropboolean / false死亡掉落:true 清除所有掉落物的保护数据;false 只给原本无主的掉落写入死者 UUID,已有主人的掉落保持原主人。
debugLogsboolean / false服务端测试日志开关;开启后输出方块右键与放置食物/分口食物的详细日志。/hdreload 应用。

privacy:阶段命令文本

字段类型 / 默认作用与边界
sendCommandTextToAllPlayersboolean / false默认只向权限 4 的玩家下发阶段命令文本;true 时非 OP 也收到完整阶段配置,可用于公开玩法说明。它不改变命令执行权限。

shelfMerge:堆叠合并门槛

字段类型 / 默认作用与边界
mergeRemainingMinutesint / 5两堆剩余保质期的最大差(分钟)仍可合并;限制在 1–1440。
mergeTempThresholdfloat / 10.0两堆物品温度的最大差(°C)仍可合并;限制在 0–100,NaN 差值忽略。
mergeColdFreshThresholdfloat / 20.0两堆冷鲜进度(0–100)的最大差仍可合并;限制在 0–100。
保存边界:OP 配置页的「服务端显示」当前往返的是 gameplay 分节;privacy 与 shelfMerge 需要编辑 server.json 后执行 /hdreload。文件只读时配置页保存失败,不会改内存中的权威值。
源码依据:ServerGameplayConfig、ServerPrivacyConfig、ShelfMergeConfig、ServerConfigFile、ConfigManager.saveServerGameplayConfig。

03display.json:客户端本地偏好

这份文件只影响当前客户端的外观与编辑默认值,不参与服务器玩法同步。服务端下的玩法开关在 server.json 的 gameplay,不要写回这里。

字段类型 / 默认作用与边界
nutritionPerLineint / 6普通 Tooltip 营养与条件条目的显示上限;超过上限截断并附省略号。设为 1 只显示第一条,不是每组单独换行;编辑器范围 1–100。
titleproWrapWidthint / 1000TitlePro 标题换行宽度(像素);编辑器范围 1–100000。
defaultConditionalGainEnabledboolean / true新建条件营养规则时“实际增益”的默认开关;只初始化草稿,不是已保存规则的运行开关。
infoGapWidthint / 20D 模式右对齐提示行左右内容的固定间距;编辑器范围 0–100000。
maxInfoWidthint / 320D 模式信息面板的最大宽度(像素),超出换行;S 模式不受此上限限制。编辑器范围 0–100000。
showUnifiedPotionStyleboolean / false统一药水样式总开关;关闭时绕过所有物品和默认的“强制统一”选择。
enableEnchantmentInfoboolean / trueD 模式自动显示附魔书说明(按 Enchantment Descriptions 约定读取语言键)。
enablePotionInfoboolean / trueD 模式药水/效果信息总开关。关闭后 D 页不显示原版药水说明、HD 效果行、外部模组效果行、属性统一段和 LSO 口渴行;普通模式紧凑效果行、温区效果行、JEI/手写 D 文本和附魔说明不受影响。
hideSystemPrefixesboolean / false只隐藏 HD 自动添加的行首符号及其间距;不隐藏玩家手写名称、行内分隔符或分段文本。
temperatureUnitstring / celsiuscelsius 或 fahrenheit;只影响本客户端提示/HUD,配置文件和编辑器仍用摄氏。非法值回落摄氏。
temperatureUnitChosenboolean / false本客户端是否已明确选择温度单位;用于首次提示,不上传同步。
groupLocalizePromptedboolean / falseOP 的营养组名称本地化提示是否已在本客户端显示或回答;仅本地记录。
defaultEffectsShiftOnlyboolean / false新建药水效果行的默认显示模式:false 常显,true 仅按住 Shift;已保存的行保留自己的设置。
defaultForceUnifyboolean / false新建效果行时“强制统一”的默认值;只对已有 Tooltip 配置/数据包条目的物品生效。
defaultFoodBarDisplayModestring / alwaysalways 常显、shift 仅 Shift、info 仅 D 页、off 整体停用并退回原版饮食值行;只影响没有自身提示配置的物品和新建行。
已移除的旧键:面板宽度/偏移、文字阴影等旧外观字段不再由 display.json 控制;不要按旧教程写回。文件以 _note_ 开头的说明字段只读。手改本文件后需要重进客户端;在“客户端显示设定”中保存会立即写回。
源码依据:DisplayConfig、HdDisplayConfigScreen、ConfigManager.loadDisplayConfig。

04营养数据包:组、阶段、加成

三类文件都在 data/<命名空间>/healthy_diet/ 下,以营养组 ID 关联;HD 覆盖层写在 config/healthy_diet/datapack/。文件名就是组 ID,最多 64 个组。

类型路径文件内容
营养组nutrition_groups/<组id>.json一个 GroupDefinition 对象:名称、符号、排序、颜色、衰减、初始值、获取倍率和可用条件。
阶段nutrition_stages/<组id>.jsonstages 数组与 hideAutoBonus;文件键是所属营养组。
加成nutrition_bonuses/<组id>.jsonremark 与 bonuses 数组;每条含条件、属性加成和效果加成。

营养组字段

字段默认说明
displayNameGroup界面和提示中的组名;实际默认组由内置数据包提供中文名。
nutritionSymbolΨ 营养行前缀符号;空白会回落到默认符号并补一个空格。
order0营养界面排序,升序;相同序号按组 ID 字母序。
color#FFFFFF#RRGGBB 为纯色;其他字符串按 color_schemes.json 的方案键处理。
colorStylenull方案键配色时的动画参数:dynamic、nameStyle、speed、steps、waveStep、pulseDelay、两个反转开关及 bold/italic/underlined。纯色时忽略。
decayRate6.0自然衰减速率:每消耗 1 点饱食度降低 1/decayRate 营养值;小于等于 0 视为不衰减。
icon""可选图标资源名;留空使用界面默认显示。
initialValue0新玩家或新增该组时的初始营养值,0–100。
gainMultiplier1食物对该组的正负变化都乘此倍率;允许 0,负数/NaN/Infinity 视为非法并回落 1。最终值仍夹在 0–100。
enabledtrue组总开关。关闭后该组对所有玩家隐藏、冻结、停止衰减与条件/加成;恢复后继续。
requiredPlayerTag""要求玩家拥有的计分板标签,精确匹配;空 = 不限制。不是物品/方块标签。
requiredModId""要求服务端已加载的 modid;空 = 不限制。未安装时该组对该玩家禁用,可用于整合包预置可选联动。
nutritionTipColors自动生成四个独立提示颜色槽(普通/条件 × 增益/损失);nutritionTipColorsCustomized 决定增益槽是否跟随组名颜色。手改前建议先用编辑器。
营养组示例(文件名即组 ID)
{
  "displayName": "水果",
  "nutritionSymbol": "Ψ ",
  "order": 2,
  "color": "a",
  "decayRate": 6.0,
  "initialValue": 0,
  "gainMultiplier": 1.0,
  "enabled": true
}

这里的 "a" 是方案键示例,不是要求所有组都用它。

阶段字段

字段默认说明
stages[].min / max0 / 100闭区间边界;实际判定先把营养值四舍五入到整数。相邻阶段应连续,编辑器会拒绝重叠和空档。
stages[].label""阶段名称。
stages[].tooltip[]该阶段的附加提示文本行。
stages[].commands[]进入/处于该阶段时按服务端规则执行的命令;文本只向 OP4 或开启隐私开关的服务器下发。
hideAutoBonusfalse文件级开关;true 时该组所有阶段悬停不再自动追加范围标题和加成预览。

加成字段

字段默认说明
remark""编辑器列表中的备注名,不参与结算;留空显示文件名。
bonuses[].conditions{}组 ID → {min,max} 的映射;同一加成内多个条件按“且”判断。
bonuses[].attributeBonuses[][]attribute(默认 minecraft:generic.max_health)、operation(add/multiply_base/multiply_total,默认 add)、value。
bonuses[].effectBonuses[][]effect、level(0 = I 级)、duration(tick,默认 200)、showParticles(默认 false)。
源码依据:GroupDefinition、StageConfig、GroupBonusConfig、ConfigManager.loadGroupsFromPacksChecked、loadStageConfigsFromPacksChecked、loadGroupBonusesFromPacksChecked。

05物品、提示、方块与品质

这些类型的字段较多,下面只给字段组和入口;具体玩法解释分别放在营养、保质期、Tooltip 和品质章节,避免同一字段在三处写出不同含义。

数据包类型路径主要字段 / 说明相关章节
物品items/<物品路径>.json营养、效果、厌倦、保质期、指令、条件规则、堆叠、品质、品级、NBT 变体营养 · 厌倦 · 保质期
Tooltiptooltips/<物品路径>.json名称覆盖、附加行、显隐开关、NBT 变体Tooltip · 显示美化
方块blocks/<方块路径>.json状态/主手/潜行条件、营养、效果、命令、冷却、取消原版交互小功能
品质quality_levels/<id>.json字符串 ID、名称、纯色/方案、分段、覆盖层品质
品级rarities/<id>.json品级 ID、分段、色表或方案、动画参数显示美化
效果行effect_lines/<效果id>.json按效果 ID 固定的提示行配色与修饰;仅在物品效果行“强制统一”时压过物品设置Tooltip

物品配置的字段组

字段组说明详见
nutrition组 ID → 营养变化量;正负都乘组获取倍率,再与终身衰减和分口份数结算。营养值
effects食用后药水效果,含等级、tick 时长、概率、粒子与新鲜度曲线。TitlePro 与效果
foodCooldown短期厌倦:maxUses、cooldownCount、cooldownMinutes、restoreHunger。食物厌倦
foodFatigue终身衰减:lossStart、aversionCount;两者都设置才启用线性衰减。食物厌倦
shelf基础时长、温度曲线、维度倍率、冷鲜/保冷、环境温变、食用温度效果。保质期
onEatCommands / suppressEffects进食指令与清除物品自带效果;分别有独立延迟。进食反馈
conditionalRules营养条件 → 目标营养变化/命令/提示;一条规则整体保存。条件规则
stackSize物品级堆叠上限,0 = 原版默认;重启生效。NBT 变体不能拥有独立堆叠上限。服主手册
quality / rarity绑定品质 ID 与品级 ID;品级按“命中变体 → 通用条 → item_rarities.json → 原版”的优先级取。品质与品级
nbtLock / variantNameNBT 变体锁与备注;空 nbtLock 是通用条,非空是变体。NBT 变体

方块右键变体字段

字段默认说明
state{}方块状态属性子集;空 = 匹配该方块任意状态。状态属性越多,匹配优先级越高。
handanyany、empty(主手为空)或 item(主手物品需命中 items)。
items[]物品 ID 或 #标签 列表;仅 hand=item 时参与匹配。
consumeItem0触发时消耗主手数量;创造模式不消耗,数量不足视为条件不满足。
sneakanyany、require 或 forbid。
cooldownTicks20同一变体的触发冷却,0–72000 tick;0 = 不写冷却。
cancelVanillafalse匹配后是否取消原版方块交互;为 true 时长按会去重,为 false 时每次原版重发都要结算。
nutrition{}组 ID → 变化量;受组获取倍率影响,但没有终身衰减和分口。
effects / effectDelay[] / 0效果列表与施加延迟(tick);方块交互没有物品保质期,曲线效果不生效。
commands / commandsAtBlock[] / false指令可写 {x} {y} {z};true 时执行位置改为方块中心。
titles / commandDelay[] / 0TitlePro 标题与命令共用延迟(tick)。
禁用与变体:items 与 tooltips 支持 .json.disabled 禁用约定;blocks 没有这种约定。NBT 变体可以覆盖食物/提示字段,但 stackSize 是物品单例属性,变体中会被强制为 0。
源码依据:ItemConfig、ItemTooltipConfig、BlockConfig、QualityLevelConfig、RarityConfig、EffectLineConfig、ConfigManager.findBlockVariant 与数据包加载器。

06保质期与温度环境字段

物品的 shelf 字段控制单件食物;shelf_life/ 与 temperature/ 下的文件控制季节、环境温变和显示方案。字段默认值适合新建,实际物品常在默认数据包中覆盖。

物品 shelf 顶层字段

字段默认说明
durationMinutes60基础保质时长,按分钟存储,1–99999。编辑器的 durationUnit 只是显示单位,不改变存储。
durationUnitminutesminutes、hours、days(现实日,1440 分钟)或 game_days(20 分钟)。非法值回落 minutes。
resultItemminecraft:air过期后替换成的物品;空气表示消失。
inheritTemperatureOnExpiretrue替换时让产物继承过期瞬间温度;只继承温度,产物保质期仍从 0 开始。
expireCommand""玩家持有物品过期时以持有者为上下文执行的命令;掉落物/容器内过期不触发,不写入物品 NBT。
baseDecayMultiplier1.0基础变质倍率,非负。
temperatureCurves[]温度 → 变质倍率曲线,最多 16 条;字段见下。
dimensionDecayMultipliers{}维度 ID → 倍率;未列出的维度为 1。
schemehd:shelf_en保质期显示方案 ID;旧 hd:shelf 会规范化到现行方案,不要继续写旧值。
coldRetentionfalse是否启用保冷:完全冻结时回充已消耗时间,非冻结时正常消耗并永久降低回充上限。
coldRecoveryRate1.0完全冻结时每分钟回充的保冷分钟数,0–100。
coldDegradationRate15.0每损失基础保质时间的该百分比,回充上限永久下降一档,1–100。
temperatureEffectCurves[]食用时的温度区间效果,最多 20 条;字段见下。

温度曲线与食用温度效果

对象字段说明
temperatureCurves[]startTemperatureC / endTemperatureC主区间端点,要求起点小于终点。
startMultiplier / endMultiplier端点倍率,0–100,按端点线性过渡。
startBufferTemperatureC / endBufferTemperatureC可选外缓冲端点;不填则主区间外不生效。旧 startBufferC/endBufferC 只读迁移。
数量最多 16 条;区间外倍率为 1。
temperatureEffectCurves[]effectId效果注册名;普通药水按常规施加,LSO 四个食用温度效果保留冷热语义。
startTemperatureC / endTemperatureC绝对摄氏度区间;普通新建要求起点小于终点。
includeStart / includeEnd端点是否包含,默认都包含。旧固定温区迁移可能生成单点区。
startLevel / endLevel0 = I 级,范围 0–127;区间内线性过渡。
startDuration / endDurationtick,范围 1–72000;20 tick = 1 秒。
particles是否显示粒子,默认 true;数量最多 20 条。

common 与温变子对象

对象 / 字段默认说明
common.minTemperatureC / maxTemperatureC-30 / 100物品可存在的温度范围。
common.initialTemperatureC10新物品初始温度。
common.eatableMinTemperatureC / eatableMaxTemperatureC-5 / 35可食用温度区间;超出时按服务端规则拒绝食用。
common.coldFreshStartC / freezingStartC / fullyFrozenC3 / -5 / -20冷鲜点、冷冻点、完全冻结点;用于冷鲜进度与保冷判定。
common.highTemperatureC / preservationRate30 / 0.8高温区起点、保鲜率;保鲜率参与变质倍率。
naturalEnvironment.temperatureChangeC / temperatureChangeMinutes1 / 2自然环境基础温变:每 2 分钟 1°C。
naturalEnvironment.lowSpeed* / highSpeed*0.3 / 5 / 5;1 / 5 / 5温差加速:每 5°C 增加的倍率步长与上限;升温/降温分开配置。
naturalEnvironment.*SpeedMultiplierBonus0冷冻区、低温区、常温区、高温区的额外加速倍率。
fridgeTemperature.*ChangeC / *Minutes冰箱 5 / 2;冷冻室 10 / 2冰箱/冷冻柜的基础温变速度。
fridgeTemperature.*SpeedMultiplierBonus0冰箱内四个温区的额外加速倍率。
temperatureZoneEffectsnull旧固定四温区输入,只读兼容;首次归一化时转换为 temperatureEffectCurves 并清空。新配置不要再写。

shelf_life/ 与 temperature/

文件结构 / 字段说明
shelf_life/seasons.jsonfallbackMultipliers.shelfLifeMultiplier(默认 1.0);seasons[] 含 id、range(EC 节气 0–23)、shelfLifeMultiplier(0–100)、displayName未加载 EC 时使用回退倍率;旧 6 季节文件照读照存,不强制迁移。
temperature/season_temperature.jsonterms[] 含 term(0–23)与 offset(-100–100)附加环境温度,叠加在 EC 气候上,不替换 EC 气候。
temperature/weather_offsets.jsonterms[] 含 term、rain(默认 -1)、thunder(默认 -2)雨雪/雷暴温变偏移;无降水不查表;范围 -100–100。
temperature/day_night_offsets.jsonterms[] 含 term、noon、night(默认 0)正午/午夜温变幅度;日内按余弦过渡,节气间平滑插值;全 0 等同关闭。
temperature/block_heat.jsonentries[] 含 block 与 rules[];规则含 temperature(-1000–1000)与 properties只在非 LSO 分支生效;同一方块按规则顺序匹配,第一条属性全命中的生效,空属性为兜底。
源码依据:S2ShelfConfig、ShelfTemperatureCurve、ShelfTemperatureEffectCurve、ShelfDurationUnit、SeasonConfig、SeasonTemperatureConfig、WeatherOffsetsConfig、DayNightOffsetsConfig、BlockHeatConfig。

07外观方案与小工具

这些文件多数是共享外观或本机小工具,不改变营养/保质期结算。改配色前先确认目标行引用的是哪个方案键。

文件结构与关键字段边界
colors/color_schemes.json方案 ID → { "colors": ["#RRGGBB", ...] };方案 ID 被营养组、品质、提示行、品级和保质期方案引用单个颜色可用,但两个以上才形成可见渐变;改共享方案会影响所有引用位置。
colors/solid_colors.json["#RRGGBB", ...] 色卡数组供编辑器纯色选择;非法项被忽略,不会生成颜色。
fatigue/fatigue_gradient.jsonenableGradient;fatigueLevelGradient 与 fatigueRecoveryGradient,各含 scheme、stars、dynamic、speed、steps、nameStyle、waveStep、pulseDelay、两个反转开关和修饰只影响厌倦提示的颜色与动画,不改变冷却/厌食阈值。
fatigue/fatigue_exempt.json物品 ID 字符串数组;默认含腐肉、药水、蜘蛛眼、牛奶桶吃下这些物品不会推进其他冷却食物的恢复计数;不是“吃它永不厌倦”的配置。
tooltip_templates.json模板数组:text、scheme、stars、shiftOnly、dynamic、nameStyle、speed、steps、waveStep、pulseDelay、两个反转开关编辑器 [模板] 按钮读取;属于本实例编辑辅助,不把它当作跨客户端下发内容。
item_rarities.json物品 ID → 品级 ID 的映射物品级兜底;命中 NBT 变体的品级在物品配置条目中,优先级更高。/hdset rarity clear <物品ID> 删这里。
bottle_fills.json{ item, fluid, result, resultNbt } 数组只匹配液体源方块;创造模式不消耗也不产出;resultNbt 解析失败仍给结果物品,仅不带 NBT。
fog_effects.jsoneffects(默认夜视)、waterFogStart 80、waterFogEnd 160、lavaFogEnd 6客户端本地;改变雾距离而非雾颜色;效果结束前平滑回退;服务器重载不代改本地文件。
effect_lines/<效果id>.jsonid、scheme、dynamic、nameStyle、speed、steps、waveStep、pulseDelay、两个反转开关和修饰只在物品药水效果行开启“强制统一”时压过物品自身设置;文本固定为效果名。
颜色方案结构
{
  "silver_mist": { "colors": ["#8e9eab", "#eef2f3"] },
  "warm_example": { "colors": ["#f7971e", "#ffd200"] }
}

方案键只是颜色来源,不决定某条提示是否显示;显隐仍由 Tooltip 配置和可见性开关控制。

源码依据:RaritySchemeConfig、RarityColors、FatigueGradientConfig、TooltipTemplateConfig、BottleFillConfig、FogEffectConfig、EffectLineConfig。

08游戏内配置 UI:逐项图解

下面按实际界面的入口和行顺序绘制 HTML 示意。深灰面板、黄色分组标题、输入框、♻、底部按钮参考游戏内界面;窄屏可在预览框内左右滑动。此处的按钮和数值不连服务器,只有温度预览页签可切换说明。

入口:/hdconfig 的四个配置按钮

/hdconfig 是客户端本地命令,执行命令本身会检查 OP4;非 OP 玩家可从其他游戏界面进入本地“客户端外观配置”,不等于可以直接执行该命令。下列预览为 OP 视角,并不表示网页或服务器控制台可以打开本机界面。

菜单预览 · OP 视角(普通玩家从其他界面进入此菜单时,仅“客户端外观配置”可用,后三项置灰)
客户端外观配置
每位玩家都能进入;只改变本机 display.json,不会调整服务器玩法。
服务端玩法配置
需要 OP 4;从服务端读取 server.json → gameplay,保存后等服务端回执并同步给在线玩家。
温度系统联动配置
需要 OP 4;读取季节倍率、方块热量、雨雪、昼夜、季节温变五组服务端表;另有 LSO 世界温度独立入口。
群系温度
需要 OP 4;按具体群系编辑其昼夜/天气温差,有 EC 时还可编辑 24 节气温度与降水。
关闭
回到打开此菜单前的游戏页面;不会自动保存子页尚未提交的草稿。

客户端外观配置:12 个可编辑项

行内数值是 DisplayConfig 新建时的默认值,不是你当前 display.json 的值。游戏中列表最多显示 12 行,可滚轮查看;每行的 ♻ 仅把该行草稿还原为默认值,仍需点击底部“保存”。

客户端页预览 · 向下滚动框内列表可见后 3 项(预览本身只读)
客户端外观配置
客户端布局
营养行最大条目数♻6
标题自动换行宽度(像素)♻1000
信息右对齐间隙(像素)♻20
D 模式信息面板最大宽度(像素)♻320
显示强制统一药水样式♻关
自动显示附魔信息♻开
自动显示药水信息♻开
隐藏前缀♻关
温度单位♻摄氏
Tooltip 可见性默认值
默认效果行仅 Shift 显示♻关
默认强制统一药水效果样式♻关
饮食值行默认显示方式♻常显
营养行最大条目数 · 6
普通 Tooltip 营养与条件条目的显示上限;超出截断为“…”而不是另起行。1 只保留第一条;可设 1–100。
标题自动换行宽度 · 1000 px
TitlePro 标题文本超过指定像素宽度才换行;可设 1–100000。
信息右对齐间隙 · 20 px
D 信息模式中左侧文本与右对齐内容之间的固定空隙;可设 0–100000。
D 模式信息面板最大宽度 · 320 px
限制 D 信息面板宽度,超出时内容换行;S 保质期模式按自然宽度,不受此项限制。
显示强制统一药水样式 · 关
总开关。关闭时,即使物品行或下面“默认强制统一”开启,也不使用 HD 的统一效果样式。
自动显示附魔信息 · 开
在 D 信息模式自动显示附魔书说明,前提是有对应翻译文本;不影响附魔本身。
自动显示药水信息 · 开
控制 D 模式中的药水/效果信息块;关闭不影响普通紧凑效果行、温区效果行、手写说明或附魔说明。
隐藏前缀 · 关
仅隐藏 HD 自动加在行首的符号及间距;手写名称、行内分隔符仍保留。
温度单位 · 摄氏
点击在摄氏/华氏之间循环;只换本客户端 Tooltip 和 HUD 的显示,编辑界面与保存的配置仍用摄氏。
默认效果行仅 Shift 显示 · 关
新建效果行及未配置物品的默认可见方式;关=常显,开=按住 Shift 才显示,已保存行不改。
默认强制统一药水效果样式 · 关
新建效果行的强制统一初始值;先要打开上面的统一样式总开关,已保存行保留自己的选择。
饮食值行默认显示方式 · 常显
循环“常显 → Shift → 信息(D) → 关闭”;关闭退回原版/相关模组饮食值行。只影响未单独设置的物品及新建行。
保存 / 返回 / ♻
保存写当前客户端的 display.json 并立即应用;返回不保存草稿;♻ 只重置当前一行,不是全局恢复。
文件中有、界面里没有:defaultConditionalGainEnabled、temperatureUnitChosen、groupLocalizePrompted 是本地偏好/提示状态;不在这 12 个可编辑行里。_note_* 只读,完整字段见上方 display.json 表。

服务端玩法配置:9 项与重置动作

此页只保存 server.json → gameplay;privacy、shelfMerge 没有对应的游戏内行。下列为新建默认值,服务器实值要以 OP 打开时收到的回包为准。

服务端页预览 · 在框内滚动查看末尾“测试与调试”和“重置”
服务端玩法配置
服务端保质期玩法
保质期与控温系统♻关
启用 LSO 联动♻开
启用 EC 联动♻开
代理中暑效果♻开
服务端营养玩法
属性加成刷新间隔(tick)♻100
药水效果刷新间隔(tick)♻200
物品所有权保护
非法持有时掉落到脚下♻关
死亡掉落移除主人标记♻关
测试与调试
测试日志♻关
重置
重置默认定义重置
保质期与控温系统 · 关
保质期、温度、冷鲜的总开关;关闭期间暂停推进与相关效果,已有数据保留,重新打开不追补关闭时段。
启用 LSO 联动 · 开
允许食物保质期读取 LSO 的世界环境;关闭不等于关闭其他 LSO 功能。
启用 EC 联动 · 开
允许食物直接使用 EC 气候与 HD 季节变质倍率;不修改 LSO 自带的季节影响。
代理中暑效果 · 开
服务端把 LSO 中暑镜像为 EC 中暑以显示模糊效果;不代替玩家体温规则,是否生效还取决于联动和免疫状态。
属性加成刷新间隔 · 100 tick
营养组的属性奖励重新计算周期,默认约 5 秒;允许 1–1728000 tick。
药水效果刷新间隔 · 200 tick
营养组的药水效果奖励刷新周期,默认约 10 秒;允许 1–1728000 tick。
非法持有时掉落到脚下 · 关
从未被信任的玩家持有受保护物品时,开=丢到脚下,关=留在原位冻结并警告;默认关可减少误判丢失风险。
死亡掉落移除主人标记 · 关
开=所有死亡掉落物清除已有主人,关=仅为原本无主的掉落标注死者,已有主人的保持不变。
测试日志 · 关
开启后服务端输出方块右键和放置/分口食物的诊断明细;所有玩家都会记,排查后建议关闭。
重置默认定义 · 重置
不是重置这 9 个开关!点此后还要确认,会把营养组、阶段、加成、品质、品级五类默认定义写回 HD 覆盖层,同名覆盖、缺失补齐、自建 ID 保留,并立即重载;不可撤销,操作前备份。
保存 / 返回 / ♻
保存发送服务端并等待成功回执;失败不当作成功。返回放弃未保存草稿;♻ 只改当前行的待保存值。
特别注意“重置”:红色操作钮和每行的 ♻ 是两种完全不同的动作;前者经确认后立即改服务端数据包,即使没点底部“保存”也会执行。

温度系统联动配置:五个表页 + LSO 世界温度入口

六个入口按游戏内的两行三列排列。前五个是同一页签组,切换页签会保留未保存的输入;点击其中任一“保存”会校验并一起提交五张表。第六个“LSO 世界温度”会打开独立页面,不走五表合并保存。预览页签只切换下方说明,不修改文件。

温度页预览 · 点击页签切换示意(数据行示例,真实条目来自服务端)
温度系统联动配置
季节保质期倍率
立春♻1
雨水♻1
… 后续按服务端季节表排列
变质倍率 · 服务端季节表
每行一个实际存在的季节/节气 ID,0–100,默认复位为 1;大于 1 加速变质,小于 1 减慢。需 EC 有效节气及服务端“启用 EC 联动”,不改变气温;旧六季节文件仍按六条显示。
方块温变 · 搜索框
按中文名、英文名、方块 ID 或语言键过滤;清空恢复全部。搜索不丢弃已改却未保存的温度。
方块温变 · 每个方块/状态行
正数加热、负数降温,范围 -1000 至 1000;同一方块不同状态会分行,距离和遮挡影响实际贡献。♻ 还原打开页面时的该行数值;“新增方块”从背包选择可放置方块并进入确认流程。HD 自有热量表用于 HD/EC 回退分支;LSO 的世界热量读取走其来源,不能把两者当同一张表。
昼夜温变 · 每节气双框
左“正午”、右“午夜”,各为 -100 至 100°C,默认 0;一天内平滑过渡。若群系另填对应端点,群系值优先。
季节温变 · 每节气单框
每节气额外加算的摄氏温差,-100 至 100°C,默认 0;有 EC 时按当前节气,没有则取立春;不是覆盖 EC 的既有温度。
雨雪温变 · 每节气双框
左“雨/雪”默认 -1°C,右“雷雨/雪”默认 -2°C;各可设 -100 至 100°C。无降水时不施加;群系单独覆盖优先,雷暴不再叠加普通雨雪值。
保存 / 返回 / ♻
五个表页共用一次服务端保存,切页不会丢草稿;保存前校验全部页。每个 ♻ 仅复位对应输入框,返回放弃未保存值。方块页底部另有“新增方块”。
LSO 世界温度
第六个按钮打开独立表单(见下),不是五表页签;仅在 LSO 联动环境中有实际作用,保存后须按 LSO 数据包机制执行 /reload。

24 节气行顺序:立春、雨水、惊蛰、春分、清明、谷雨、立夏、小满、芒种、夏至、小暑、大暑、立秋、处暑、白露、秋分、寒露、霜降、立冬、小雪、大雪、冬至、小寒、大寒。预览只显示前两行,不代表其余 22 行缺失。

LSO 世界温度:独立维度表单

独立页预览 · 新建草稿示意;不代表当前世界、LSO 文件或服务端的真实值
LSO 世界温度
新增草稿(确认后才写入)
维度 ID(新建时输入维度 ID)基础温度20海平面高度 / 海拔影响
64海拔影响: 开
 
维度 ID
新建时填完整维度 ID(如 minecraft:the_nether);载入现有文件后只读,不能借改 ID 覆盖另一维度。
基础温度
LSO 世界温度的绝对量纲,不是 °C;可设 -1000 至 1000 的有限数字。
海平面高度 / 海拔影响
sea_level_height 为整数,初始草稿 64;has_altitude 控制高度影响,开启时高处更冷。
查询当前维度
从服务端请求玩家当前维度的世界温度快照;不保存。
文件列表
可搜索、载入或新增维度;“删除”只对 HD 覆盖层文件开放,原生/世界数据包文件只读,删覆盖后回落下一层。
保存 / 关闭
保存写入 HD 配置数据包(已有条目编辑,原生条目创建覆盖),成功后仍须手动 /reload;关闭不保存草稿。旧“昼夜循环刻数”字段不在当前表单中。

群系温度:按群系的覆盖与 24 节气

群系页预览 · 示例群系仅用于排版;“基温:?” 表示此离线示意没有游戏内读数
设定群系基础温度
群系(基温:?)minecraft:plains查询其他群系
昼夜温差正午 · 留空继承午夜 · 留空继承平均温度
雨雪/雷雨温差雨雪 · 留空继承雷雨 · 留空继承平均降水
立春额外 0EC 偏移降水值预计 °C自动分配
雨水额外 0EC 偏移降水值预计 °C自动分配
… 其余节气同结构
群系(基温:…)/ 查询其他群系
一次编辑一个群系。基温来自原版群系、只读且不是摄氏度;输入群系 ID 或从列表选择,右侧按钮仅在 EC 可用时显示。
昼夜温差 · 正午 / 午夜
此群系的两个独立覆盖值(°C):留空继承全局同名端点,填 0 表示显式覆盖成零而非继承;不会与全局值相加。
雨雪/雷雨温差 · 两个输入框
同样留空继承全局,填数值覆盖;只影响温度,雷雨时用雷雨框,不再加普通雨雪框。与昼夜覆盖均属于 HD 自有配置。
平均温度 / 平均降水
EC 环境才出现;批量调整各节气的预计 °C 或最终降水值,属于草稿,仍需保存。
24 节气 · 黄色额外温差
只读展示“季节温变”页同一节气的值;想修改须回温度系统的“季节温变”页;不包含在右侧的 EC 预计气温内。
24 节气 · EC 偏移 / 最终降水
有 EC 时可编辑;EC 偏移不是 °C,最终降水是基础值加节气偏移,不等于完整降雨概率。留空沿用原有设置。
24 节气 · 预计气温 / 自动分配
预计气温按摄氏展示 EC 气候估算,不含方块、天气、昼夜额外值,不能代表玩家/食物最终温度。改预计值后点该行“自动分配”反推 EC 偏移,再点保存。
查询所在群系 / 刷新
前者选玩家脚下的群系并请求配置;后者重算预计值、空白默认值和当前服务端温度详情,不写盘。
保存 / 删除覆盖 / 关闭
保存提交 EC 气候(有 EC 时)及 HD 群系覆盖;EC 气候改动需按 EC 资源重载机制执行 /reload。删除覆盖仅删除此群系 HD 昼夜/天气覆盖以恢复继承,不是删除 EC 或原版群系;关闭不保存草稿。
无 EC 时的界面差异:不显示 24 条 EC 节气编辑行,也没有“查询其他群系/平均温度/平均降水”;群系昼夜与雨雪四个覆盖框仍可用。旧的独立“LSO 群系温度”和“LSO 方块温变”按钮不在当前温度页的六个有效入口里,别按旧截图寻找。
源码依据:HdModConfigScreen.init、HdPanelConfigScreen.render、HdDisplayConfigScreen.buildClientRows/buildServerRows/onSave、HdTempIntegrationScreen.init/onSave、LsoDimensionTempScreen.init、LsoDimensionFileListScreen.init、HdBiomeClimateScreen.init/save、CPacketResetDefaults.handle。

09保存与刷新方式

同一个“保存”在不同位置含义不同:客户端本地文件、服务端权威分节和启动期注册不能互相替代。

游戏内配置菜单

入口覆盖内容权限 / 生效
客户端外观配置display.json:Tooltip 布局、温度单位、默认显示模式所有玩家;保存写本机文件,立即应用
服务端玩法配置server.json 的 gameplay:保质期总开关、联动、刷新间隔、保护物品、测试日志OP4;服务端保存并回执,在线玩家收到投影
温度系统联动配置季节倍率、方块热量、雨雪/昼夜/节气温度及 LSO 世界温度入口OP4;五个主表页同批保存,LSO 世界温度另存
群系温度按群系的昼夜/天气温差;有 EC 时还可调节气温度与降水OP4;EC 字段保存后按其资源机制重载

改完之后做什么

只改服务端规则例如 server.json、营养组/阶段/加成、物品、方块、品级、颜色和保质期方案:保存或编辑后执行 /hdreload,让本模组重新读盘并向在线玩家重发权威内容。
只改本机外观例如 display.json、客户端 fog_effects.json、本地提示模板:在各客户端处理;服务器执行 /hdreload 不会替你改这些本地文件。
修改内容推荐动作为什么
server.json gameplay / privacy / shelfMergegameplay 用 OP 页保存;privacy、shelfMerge 手改后 /hdreload游戏内页只往返 gameplay;另两节没有该页编辑行。
display.json、本地雾效、本地模板在对应客户端保存;手改后重进客户端不参与服务端同步,/hdreload 不远程重写本地文件。
营养组 / 阶段 / 加成、物品、提示、方块、品质、品级、效果行保存后 /hdreload;世界数据包改动可用原版 /reloadHD 覆盖层由 /hdreload 以磁盘为准重建;世界数据包由资源管理器刷新。
新增/删除 quality_registry/ 条目两端同步定义后重启物品注册只发生在启动阶段;/hdreload 只重算待生效列表。
物品 stackSize重启堆叠上限是物品单例属性;NBT 变体不能各自覆盖。
共享客户端资源(贴图、字体等)分发到各客户端服务端配置只能描述引用,不能把资源推送到客户端。
不要把 /hdreload 当成原版 /reload:它只重载 Healthy Diet 自身可重载的配置和 HD 覆盖层;原版数据包/资源包、其他模组的资源以及客户端本地文件仍按各自流程处理。
需要确认具体物品字段?营养、厌倦、保质期、Tooltip 和品质章节分别解释字段的玩法含义;本页负责“字段在哪、游戏内选项是什么、改完怎么生效”。
查看服主手册 →
源码依据:HdModConfigScreen、HdDisplayConfigScreen、HdTempIntegrationScreen、HDReloadCommand.reloadAll、QualityRegistryLoader。