Healthy DietFEATURE GUIDEEnglish
REFERENCE / CONFIGURATION

Configuration reference: files and in-game UI

Locate each server or client file, check field defaults and see a read-only approximation of the configuration screens and refresh rules.

server.jsondisplay.jsonUI previewsReload boundaries
Defaults and previews: “Default” means a new file or code initial value, not your server’s current value. The HTML UI is read-only and does not connect, save or show live data. _note_* fields are explanatory only.

01Files, owners and refresh

Unless noted, paths are relative to config/healthy_diet/. A datapack entry instead lives under data/<namespace>/healthy_diet/. Filter file, scope or field without sending a request.

File / directoryScopeResponsibilityTypical refresh
server.jsonServer authoritativeGame rules, privacy, shelf stack merge, testing logsOP gameplay screen or /hdreload
display.jsonLocal clientTooltip layout, temperature unit and default display modesSave client screen; restart client after manual edit
colors/color_schemes.jsonBoth sides / appearanceNamed gradients referenced by groups, quality, tooltips and schemes/hdreload on server; reload local client files locally
colors/solid_colors.jsonBoth sides / appearancePalette for the editor color picker/hdreload on server; client-local refresh separately
fatigue/fatigue_gradient.jsonAppearanceColor and animation of fatigue and recovery lines/hdreload
fatigue/fatigue_exempt.jsonServer gameplayItem IDs exempt from other-food recovery counting/hdreload
shelf_life/seasons.jsonServer gameplaySeasonal spoilage multipliers; fallback without Ecliptic Seasons/hdreload
shelf_life/schemes/*.jsonSynced displayShelf-life templates, colors and seasonal names/hdreload and send scheme to clients
temperature/block_heat.jsonServer gameplayBlock heat rules when not using the LSO world-temperature branch/hdreload or temperature screen save
temperature/weather_offsets.jsonServer gameplayRain/snow and storm offsets across 24 solar terms/hdreload or temperature screen save
temperature/day_night_offsets.jsonServer gameplayNoon and midnight offsets across 24 solar terms/hdreload or temperature screen save
temperature/season_temperature.jsonServer gameplayExtra ambient-temperature offsets per term (on top of EC climate)/hdreload or temperature screen save
bottle_fills.jsonServer gameplayRight-click fluid source consumption and output/hdreload
fog_effects.jsonLocal clientUnderwater / lava fog distance for configured effectsReload local client file, not server reload
item_rarities.jsonServer / syncedItem-level fallback rarity IDs/hdreload; /hdset rarity also updates it
tooltip_templates.jsonEditor localLocal tooltip-row templatesEditor reads/writes local instance; not global client sync
quality_registry/*.jsonStartup registrationNew item IDs, source, model, quality, edible behavior and stack limitsRestart both sides for new/removed IDs
datapack/data/<ns>/healthy_diet/World datapack + HD overrideitems / tooltips / blocks / nutrition_* / quality_levels / rarities / effect_linesVanilla /reload for world pack; /hdreload for HD override
A config JSON file, a world/HD datapack and a startup registry entry have different lifecycles. Copying a datapack file into old config/healthy_diet/items/ does not make it a current item definition.

02server.json: server-authoritative sections

One file has three sections: gameplay, privacy, shelfMerge. Older separate files migrate into this one and move to migration_backup/.

FieldNew-file defaultBehavior
shelfTemperatureEnabledfalseMaster switch for shelf life and temperature. Off pauses decay, temperature/freshness, expiration products and commands, temperature rejection, zone effects and associated tooltip lines; existing item data remains and downtime is not retroactively charged.
lsoIntegrationEnabledtruePermit hd:shelf to read the complete LSO world environment. Does not disable other LSO compatibility.
ecIntegrationEnabledtruePermit direct EC climate and HD seasonal spoilage multipliers, without changing EC data already supplied by LSO.
proxyHeatstrokeEffecttrueServer checks every five seconds: mirror LSO heatstroke to EC heatstroke for the blur effect, removing it when the source is absent or immune.
bonusUpdateTicks100Attribute-bonus refresh interval (1–1,728,000 ticks; about five seconds by default).
effectUpdateTicks200Potion-bonus refresh interval (1–1,728,000 ticks; about ten seconds by default).
ejectIllegalProtectedItemsfalseIf an untrusted holder has a protected item: true drops it at their feet; false freezes it in place and warns. Default avoids losing items due to misclassification.
removeOwnerOnDeathDropfalsetrue clears protection on all death drops; false sets the deceased UUID only for previously unowned drops and preserves existing owners.
debugLogsfalseServer diagnostic logs for block right-clicks and placed/portion food. Reload with /hdreload; disable after troubleshooting.
privacy.sendCommandTextToAllPlayersfalseBy default only OP4 receives stage command text. true sends full stage configuration to non-OP players without changing execution permissions.
shelfMerge.mergeRemainingMinutes5Maximum difference between remaining durations to allow stacking (1–1,440 minutes).
shelfMerge.mergeTempThreshold10.0Maximum item-temperature difference for stacking (0–100°C); NaN differences are ignored.
shelfMerge.mergeColdFreshThreshold20.0Maximum cold-fresh-progress difference (0–100) for stacking.
The OP in-game server screen saves gameplay only. Edit privacy and shelfMerge on disk, then /hdreload. A read-only file causes the save to fail without changing authoritative in-memory values.

03display.json: local client preferences

Local appearance and editing defaults do not take part in server gameplay synchronization. Server rules belong in server.json → gameplay.

FieldNew-file defaultBehavior
nutritionPerLine6Maximum regular-tooltip nutrition/conditional entries, then truncate with an ellipsis; 1 means only the first entry, not one per line (1–100).
titleproWrapWidth1000TitlePro title wrap width in pixels (1–100,000).
defaultConditionalGainEnabledtrueDefault “actual gain” choice for a newly drafted conditional rule, not a runtime switch for saved rules.
infoGapWidth20Fixed gap between left text and right-aligned content in D mode (0–100,000).
maxInfoWidth320Max D information panel width; S detail view is not constrained by this limit (0–100,000).
showUnifiedPotionStylefalseMaster potion-style switch; false bypasses item and default force-unify choices.
enableEnchantmentInfotrueAutomatically show enchantment-book descriptions in D mode when translation keys exist.
enablePotionInfotrueControls the D-mode vanilla/HD/external effect, unified-attribute and LSO-thirst information block. Normal compact effects, zone effects, JEI/custom D text and enchantment descriptions remain.
hideSystemPrefixesfalseOnly hide HD-generated line-prefix symbols and spacing, not custom names, inline separators or segmented text.
temperatureUnitcelsiuscelsius or fahrenheit for this client’s tooltip/HUD; stored config and editors remain Celsius; invalid choices fall back to Celsius.
temperatureUnitChosenfalseWhether this client explicitly chose a temperature unit; local first-run prompt state.
groupLocalizePromptedfalseLocal OP prompt state for translating bundled group names; not a shared setting.
defaultEffectsShiftOnlyfalseDefault new potion line visibility: always vs Shift-only; existing lines retain their own choice.
defaultForceUnifyfalseInitial force-unify choice for new effect lines; only applies where an item already has tooltip config / datapack entry.
defaultFoodBarDisplayModealwaysalways / shift / info / off. off falls back to vanilla food-value rows; affects unconfigured items and new rows.

Obsolete panel offset/width and text-shadow fields no longer belong in this file. _note_* fields are read-only help. Save the client screen to apply immediately; restart that client after manual file edits.

04Nutrition datapack: groups, stages and bonuses

Paths under data/<namespace>/healthy_diet/ are nutrition_groups/<groupId>.json (one group definition), nutrition_stages/<groupId>.json (stages + hideAutoBonus), and nutrition_bonuses/<groupId>.json (remark + bonuses). The HD override goes under config/healthy_diet/datapack/; filenames are group IDs. At most 64 groups.

Group fields

FieldDefaultExplanation
displayNameGroupGroup label shown in UI/tooltips; bundled defaults may have localized names.
nutritionSymbolΨ Nutrition-line prefix; blank falls back to the default plus a space.
order0Ascending display order, tie-broken by group ID.
color / colorStyle#FFFFFF / nullHex solid color or scheme key. Style controls dynamic/nameStyle/speed/steps/waveStep/pulseDelay/reversals/bold/italic/underlined for schemes; ignored for solid colors.
decayRate6.0Every consumed hunger point reduces nutrients by 1/decayRate; nonpositive disables natural decay.
iconemptyOptional item icon resource; blank uses UI fallback.
initialValue0Starting group value for a new player or newly added group, 0–100.
gainMultiplier1Multiplies positive and negative food changes; 0 allowed; negative/nonfinite values fall back to 1. Final group value clamped to 0–100.
enabledtrueDisabling hides/freezes the group for all players and stops decay, conditions and bonuses.
requiredPlayerTagemptyExact player scoreboard tag required; blank means no restriction. Not an item/block tag.
requiredModIdemptyLoaded server mod ID required; blank means no restriction.
nutritionTipColorsgeneratedFour slots: regular/conditional × gain/loss; customization controls whether gain follows the group-name color.

Stage and bonus fields

FieldDefaultExplanation
stages[].min/max0/100Inclusive integer bounds; checks round the current value first. Adjacent stages cannot overlap or leave gaps.
stages[].label/tooltip/commandsempty / [] / []Optional title, extra hover lines and configured stage commands; command text is only sent to OP4 unless privacy permits more.
hideAutoBonusfalseIf true, suppress automatic range title and bonus preview in all stage tooltips for this group.
remarkemptyEditor list label; blank uses filename, does not affect settlement.
bonuses[].conditions{}Group IDs map to {min,max}; multiple conditions are AND.
bonuses[].attributeBonuses[][]attribute (default max_health), operation add/multiply_base/multiply_total (default add), value.
bonuses[].effectBonuses[][]effect ID, level (0=I), duration ticks (default 200), showParticles (default false).
An example group may use displayName “Fruit”, nutritionSymbol “Ψ ”, decayRate 6, gainMultiplier 1 and color scheme key “a”; this is an illustrative file, not a requirement that every group use the same scheme.

05Items, tooltips, blocks and quality

Datapack directories: items/<itemPath>.json, tooltips/<itemPath>.json, blocks/<blockPath>.json, quality_levels/<id>.json, rarities/<id>.json, effect_lines/<effectId>.json. Item/tooltip entries support .json.disabled; blocks do not. Effect-line style overrides an item only when its potion row opts into force-unify.

Item field groups

FieldMeaning
nutritionGroup ID → food change, multiplied by group gain multiplier, lifetime factor and consumed portion count.
effectsConfigured after-eating potions: level, tick duration, probability, particles, optional freshness curve.
foodCooldownShort-term maxUses, cooldownCount, cooldownMinutes and restoreHunger.
foodFatigueLifetime lossStart and aversionCount; linear decay only when both are set.
shelfBase time, temperature curves, dimension multipliers, cold-fresh/retention, environmental temperature and eating effects.
onEatCommands / suppressEffectsEating commands and removal of intrinsic item effects, each with its own delay.
conditionalRulesNutrition conditions → target changes, commands and hints, saved as whole rules.
stackSizeItem-level maximum stack, 0 = vanilla; restart required, no separate NBT-variant limit.
quality / rarityBind quality/rarity IDs; rarity resolves variant → generic → item_rarities.json → vanilla.
nbtLock / variantNameNBT matching and annotation; empty nbtLock denotes generic item entry.

Block interaction fields

FieldDefaultMeaning
state{}Subset of block-state properties; empty matches any. More specific states take precedence.
hand / itemsany / []any, empty main hand or item matched against item IDs or #tags when hand=item.
consumeItem0Main-hand count consumed; Creative consumes none; insufficient quantity does not match.
sneakanyany, require or forbid sneaking.
cooldownTicks20Per-variant cooldown, 0–72,000 ticks; 0 writes no cooldown.
cancelVanillafalseCancel vanilla interaction on match; affects deduplication of long-press interactions.
nutrition{}Group ID → change, using group gain multiplier but not lifetime decay or food portions.
effects / effectDelay[] / 0Potion entries and delay; food freshness curves have no shelf-life item here.
commands / commandsAtBlock[] / falseCommands may interpolate {x}, {y}, {z}; true changes execution position to block center.
titles / commandDelay[] / 0TitlePro titles and commands share a tick delay.

06Shelf life and temperature fields

Per-item shelf values differ from seasonal and environmental files in shelf_life/ and temperature/. Defaults apply to a newly created configuration; bundled foods may override them.

FieldDefaultExplanation
durationMinutes / durationUnit60 / minutesBase minutes 1–99,999; editor units minutes, hours, real days (1,440 min) or game_days (20 min). Invalid unit falls back to minutes.
resultItem / inheritTemperatureOnExpireminecraft:air / trueAir disappears; other result inherits only temperature, not previous shelf-life progress.
expireCommandemptyRuns in holder context on held expiration, not container or dropped expiration.
baseDecayMultiplier1.0Nonnegative base spoilage multiplier.
temperatureCurves[]Up to 16 temperature-to-decay curves with linear endpoints and optional outer buffers.
dimensionDecayMultipliers{}Dimension ID → multiplier; unlisted dimensions ×1.
schemehd:shelf_enDisplay scheme ID; obsolete hd:shelf is normalized to the current scheme.
coldRetention / coldRecoveryRate / coldDegradationRatefalse / 1 / 15Enable recovery when fully frozen; minutes recovered per minute 0–100; permanent recovery-cap loss per 1–100% base-time consumption step.
temperatureEffectCurves[]Up to 20 temperature-zone effects applied on eating, independent of decay curves.
common.minTemperatureC / maxTemperatureC / initialTemperatureC-30 / 100 / 10Item absolute bounds and initial temperature; bundled foods may override.
common.eatableMinTemperatureC / eatableMaxTemperatureC-5 / 35Cannot eat outside this Celsius range.
common.coldFreshStartC / freezingStartC / fullyFrozenC3 / -5 / -20Cold-fresh progress and freeze thresholds.
common.highTemperatureC / preservationRate30 / 0.8Hot-zone start and spoilage protection at 50% cold-fresh progress.
naturalEnvironment.temperatureChangeC / temperatureChangeMinutes1 / 2Ambient baseline: 1°C each two minutes by default.
naturalEnvironment.lowSpeed* / highSpeed*separateCooling and warming speed-step increase, temperature difference and multiplier cap.
naturalEnvironment.*SpeedMultiplierBonus0Extra frozen/low/normal/high zone temperature-change speed.
fridgeTemperature.*ChangeC / *Minutesfridge 5/2; freezer 10/2Baseline fridge/freezer temperature-change speeds.
fridgeTemperature.*SpeedMultiplierBonus0Extra four-zone change speed in fridges.
temperatureZoneEffectsnullLegacy four-slot migration input; normalized to temperatureEffectCurves. Do not use for new entries.

Curve and effect endpoints

ArrayFields / constraints
temperatureCurves[]startTemperatureC < endTemperatureC; endpoint multipliers 0–100; optional startBufferTemperatureC / endBufferTemperatureC. Outside interval/buffers the curve contributes ×1. Legacy startBufferC/endBufferC migrate read-only.
temperatureEffectCurves[]effectId; absolute Celsius start/end; includeStart/includeEnd (default true); start/end levels 0–127 (0 = I); start/end durations 1–72,000 ticks (20 ticks = 1 s); particles default true. Legacy four-zone migration may create a valid single-point range.

Seasonal and environment files

PathPurpose
shelf_life/seasons.jsonfallbackMultipliers.shelfLifeMultiplier defaults ×1 without EC; seasons[] includes ID, term range 0–23, multiplier 0–100 and display name; legacy six-season files remain supported.
temperature/season_temperature.jsonterms[]: term 0–23 and ambient offset −100–100°C, added to EC climate.
temperature/weather_offsets.jsonterms[]: rain −1 and thunder −2 defaults; no offset without precipitation.
temperature/day_night_offsets.jsonterms[]: noon/night defaults 0, smoothly interpolated within days and between terms.
temperature/block_heat.jsonentries[] block + rules[] temperature −1000–1000 and state properties; non-LSO branch, first fully matching rule wins.

07Appearance schemes and utilities

FileStructure and limits
colors/color_schemes.jsonScheme ID → {colors:[#RRGGBB,...]}; two or more colors make a visible gradient; editing a shared scheme affects every reference.
colors/solid_colors.jsonArray of #RRGGBB picker swatches; invalid values ignored.
fatigue/fatigue_gradient.jsonenableGradient, fatigueLevelGradient and fatigueRecoveryGradient with scheme, stars, dynamic style, speed/steps/wave/pulse/reversals. Changes display only, not cooldown thresholds.
fatigue/fatigue_exempt.jsonItem ID array; default includes rotten flesh, potions, spider eyes and milk buckets. Exemption applies to recovery counting, not “never fatigued”.
tooltip_templates.jsonLocal editor text/scheme/stars/shiftOnly/dynamic/animation fields; not shared player config.
item_rarities.jsonItem ID → rarity ID fallback below NBT and generic entries.
bottle_fills.jsonArray of {item, fluid, result, resultNbt}; source blocks only; invalid resultNbt drops NBT but still gives the result item.
fog_effects.jsoneffects (Night Vision by default), waterFogStart 80, waterFogEnd 160, lavaFogEnd 6; local distance, not color.
effect_lines/<effectId>.jsonEffect name and unified scheme/style/animation; only overrides an effect row when force-unify is enabled.

Palettes provide colors; tooltip layout and visibility control whether text is drawn.

08In-game configuration UI diagrams

Configuration menu (/hdconfig)

/hdconfig is a client-local command that itself checks OP4. Non-OP players can reach local appearance settings from other game screens, but cannot invoke this command directly. The page mockups are read-only; no real values are retrieved.

Mod settings · OP view · Read-only HTML diagram derived from the in-game layout; not a screenshot or live server data.
Mod settings · OP view
Client appearanceLocal display.json · available to every player
Server gameplayOP4 · gameplay section of server.json
Temperature integrationsOP4 · five server tables plus separate LSO world temperature
Biome temperatureOP4 · biome overrides and EC climate where available
SaveBack
Close returns to the previous game screen without saving unsaved subpage drafts.

Client appearance · twelve editable rows

Client appearance defaults · Read-only HTML diagram derived from the in-game layout; not a screenshot or live server data.
Client appearance defaults
Tooltip nutrient entries6
Title wrap width (px)1000
D info aligned gap / max panel width (px)20 / 320
Unified potion style / enchantment info / potion infoOff / On / On
Hide prefixes / temperature unitOff / Celsius
Effects Shift-only / force unifyOff / Off
Food value row default displayAlways
SaveBack
Each ↺ resets one row’s unsaved draft. Save writes display.json locally and applies it; Back discards. File-only defaultConditionalGainEnabled, temperatureUnitChosen and groupLocalizePrompted are not among the twelve rows.

Server gameplay · nine entries and reset action

Server gameplay defaults · OP4 · Read-only HTML diagram derived from the in-game layout; not a screenshot or live server data.
Server gameplay defaults · OP4
Shelf life and temperature / LSO / ECOff / On / On
Proxy heatstroke effectOn
Attribute / potion refresh (ticks)100 / 200
Drop illegally held protected items / remove owner on deathOff / Off
Test logsOff
Reset default definitionsConfirmation required · separate dangerous action
SaveBack
Only server.json → gameplay is edited here; privacy and shelfMerge require file editing followed by /hdreload. Reset default definitions writes bundled group, stage, bonus, quality and rarity definitions into the HD override layer (overwrites same IDs, fills missing, keeps user-made IDs) and immediately reloads. Back up first; this is not a reset of the nine switches.

Temperature integrations · five tables + separate LSO entry

Five server table tabs share one draft and one validated Save; changing tabs retains unsaved changes. The sixth opens an independent form. The tabs below explain file groups only; they cannot modify any data.

Spoilage multipliers

Per-season ID rate 0–100; default ×1; requires an active EC term and enabled EC integration. Legacy six-season files remain six entries.

Term order: Beginning of Spring, Rain Water, Awakening of Insects, Spring Equinox, Clear and Bright, Grain Rain, Beginning of Summer, Grain Full, Grain in Ear, Summer Solstice, Minor Heat, Major Heat, Beginning of Autumn, End of Heat, White Dew, Autumn Equinox, Cold Dew, Frost Descent, Beginning of Winter, Minor Snow, Major Snow, Winter Solstice, Minor Cold, Major Cold. The preview does not load the 24 actual server entries.

LSO world temperature and biome temperature

LSO dimension form · Read-only HTML diagram derived from the in-game layout; not a screenshot or live server data.
LSO dimension form
Dimension IDFull ID such as minecraft:the_nether; read-only after loading a file
Base temperatureFinite LSO world-temperature number −1000–1000, not °C
Sea level / altitude effectInteger sea_level_height (new draft 64); has_altitude toggles high-altitude cooling
Query / file list / SaveQuery does not write. Delete is only permitted for HD override entries.
SaveBack
Save writes an HD datapack override and still requires the LSO /reload mechanism. Closing discards the draft; the old day-cycle tick field is absent.
Biome climate form · OP4 · Read-only HTML diagram derived from the in-game layout; not a screenshot or live server data.
Biome climate form · OP4
BiomeSelect one ID; vanilla base temperature is read-only and not °C
Noon / midnight and rain / thunderBlank inherits global; zero is an explicit override, not addition
24 EC termsView extra HD temperature, optional EC offset/precipitation and estimated °C
Query / Refresh / Save / Delete overrideQuery and Refresh do not write; Delete removes only HD weather/day-night overrides
SaveBack
EC term edits and average temperature/precipitation tools appear only when EC is installed. Estimated °C excludes block, weather and day/night additions; saving EC changes requires its /reload. Without EC, the four HD biome override inputs still work.

09Save and reload by owner

ChangeAction / reason
server.jsonSave gameplay in OP screen; manually edit privacy and shelfMerge then /hdreload. Only gameplay is exchanged through the screen.
display.json, local fog / templatesSave on each client; restart the client after manual edits. Server /hdreload cannot edit local files.
HD override of groups, stages, bonuses, items, tooltips, blocks, quality, rarity and effect linesSave and /hdreload to reconstruct from disk and resynchronize online players. For world datapacks, use vanilla /reload.
quality_registry/ entry or stackSizeDistribute matching definitions and resources; restart for startup registration / item-level attribute.
Client textures and fontsInstall on each client; a server-side reference cannot transmit resources.
/hdreload is not vanilla /reload: world packs, other mods and local client files each have their own reload mechanism.