Skip to content

PlanetData Reference

Patrik Pilát edited this page Jun 14, 2026 · 1 revision

PlanetData Reference

This page is the complete field reference for PlanetData JSON files, loaded from data/<namespace>/orrery_planets/*.json.

Top-level fields

Field Type Required Description
dimension string (resource key) Yes The dimension this planet corresponds to, e.g. "orrery:eris". Must match an existing dimension definition.
planet_name string Yes Internal identifier used by Northstar's planet-name lookups (rocket destinations, etc.).
gravity double Yes Surface gravity as a multiple of Earth's gravity. 1.0 = Earth-normal, 0.084 = Eris (~8.4%). Also drives fall damage scaling — see below.
has_oxygen boolean Yes Whether the planet has a breathable atmosphere.
temperature int Yes Surface temperature value, consumed by Northstar's temperature systems.
atmosphere_cost int Yes Cost value for atmosphere-related Northstar mechanics.
computing_cost int Yes Computing cost for navigating/landing on this planet.
engine_constant double Yes Engine performance constant used in rocket travel calculations.
sun_multiplier float Yes Northstar's internal sun-strength multiplier (e.g. solar panel output). Distinct from sky.sun_brightness.
has_sky boolean Yes Whether Orrery's custom sky renderer (PlanetSkyMixin) handles this dimension's sky at all. If false, vanilla sky rendering applies.
can_see_sky_at_day boolean Yes Whether the sky is visible during the in-game day cycle.
has_weather boolean Yes Whether rain/snow weather can occur on this planet.
seed_offset long Yes Offset applied to the world seed for this dimension's terrain generation. Ensures different planets sharing a base seed don't generate identical terrain.
is_in_orbit boolean Yes Marks this dimension as an orbit-type location for Northstar's systems (as opposed to a surface).
wind_multiplier float Yes Scales wind-related effects, where applicable.
sky object Yes if has_sky is true Nested object describing sky rendering — see below.

sky object fields

Field Type Description
has_stars boolean Whether stars render in the sky.
star_brightness float Base star brightness. See the note on the brightness formula below.
sun_brightness float Brightness multiplier (0.0–1.0+) applied to the rendered sun disc.

How fields are consumed

Gravity → fall damage

There is no separate fall damage field. PlanetFallDamageMixin computes effective fall distance as:

effectiveFallDistance = actualFallDistance * gravity

This effective distance is compared against the vanilla 3-block safe-fall threshold. A planet with gravity: 0.084 lets players fall roughly 12x further than on Earth before taking damage, since the effective distance is scaled down proportionally.

Star brightness formula

PlanetSkyMixin computes rendered star brightness as:

renderedBrightness = sky.star_brightness - (vanillaStarBrightness(partialTick) * 0.5)

vanillaStarBrightness follows the normal Minecraft day/night cycle (0 during day, ramping up at night). This means:

  • During the in-game "day", renderedBrightness ≈ sky.star_brightness (stars near full configured brightness)
  • During the in-game "night", renderedBrightness is reduced by up to 0.5 This is intentional — on an airless world, the day/night cycle doesn't represent atmospheric scattering, but the formula still produces a subtle variation tied to the cycle for visual interest.

Sun rendering

If has_sky is true, a small sun disc is rendered using the northstar:textures/environment/baresun.png texture, tinted by sky.sun_brightness (applied as an RGB multiplier, with alpha fixed at 1.0). A sun_brightness of 1.0 is full white; lower values dim the sun toward black.

sun_multiplier vs sky.sun_brightness

These are separate fields with separate purposes:

  • sun_multiplier — read by NorthstarPlanetsMixin, affects Northstar's gameplay mechanics (e.g. solar panel power generation)
  • sky.sun_brightness — read by PlanetSkyMixin, purely visual, affects how bright the rendered sun disc appears A planet could theoretically have a visually bright sun (sky.sun_brightness: 1.0) but contribute nothing to solar power (sun_multiplier: 0.0), or vice versa. Set both according to what makes sense for the planet — for Eris, both are low/zero since it's extremely distant from the Sun.

Validation and error handling

PlanetDataLoader parses each file with PlanetData.CODEC. If a file fails to parse:

  • The specific file is skipped (logged as [Orrery] Failed to parse planet <id>: <error>)

  • Other valid files in the same reload are still loaded normally

  • The planet from the failed file will not appear in /orrery or be recognized by any Mixin Common parse failures:

  • Missing required fields

  • Wrong types (e.g. a string where a number is expected)

  • Malformed or missing sky object when has_sky is true — note that sky is part of the top-level codec group, so a malformed sky object fails the entire file's parse, not just the sky portion

Full example (Eris)

{
  "dimension": "orrery:eris",
  "planet_name": "eris",
  "gravity": 0.084,
  "has_oxygen": false,
  "temperature": -230,
  "atmosphere_cost": 0,
  "computing_cost": 900,
  "engine_constant": 15.0,
  "sun_multiplier": 0.0,
  "has_sky": true,
  "can_see_sky_at_day": true,
  "has_weather": false,
  "seed_offset": 9,
  "is_in_orbit": true,
  "wind_multiplier": 0.0,
  "sky": {
    "has_stars": true,
    "star_brightness": 1.0,
    "sun_brightness": 0.6
  }
}

Clone this wiki locally