# Dimensions and celestial bodies

What data controls on Space's bodies and what stays in code.

## Celestial bodies

The solar system is defined in code: 32 bodies with their hierarchy, orbits, rotation, gravity, sun power and default traits. Ten bodies have a dimension: Kerbin, shown as Earth, is `minecraft:overworld`, and Moho, Eve, Mun, Minmus, Duna, Ike, Dres, Laythe and Tekto use `hbmspace:<body>`. `hbmspace:orbit` holds orbital stations. A datapack cannot add, remove or change a body; gravity, atmosphere, sky, travel and radiation treat any other dimension, including `hbmspace:thatmo`, as Kerbin. Live state such as atmosphere composition and temperature is world save data.

Data controls each body's dimension and dimension type, its timelines, biomes, terrain settings, carvers, features and structures, the [`reserves` and `travel` settings](https://movblock.mov/ntm-next/wiki/space/settings.md), [atmospheric reactions](https://movblock.mov/ntm-next/wiki/space/recipe-types/atmosphere.md) and bedrock-ore rows.

## Dimensions

| Dimension | Biome source | Noise settings |
| - | - | - |
| `hbmspace:dres` | `hbmspace:celestial`, 2 biomes | `hbmspace:dres` |
| `hbmspace:duna` | `hbmspace:celestial`, 5 biomes | `hbmspace:duna` |
| `hbmspace:eve` | `hbmspace:celestial`, 5 biomes | `hbmspace:eve` |
| `hbmspace:ike` | `minecraft:fixed` `hbmspace:ike` | `hbmspace:ike` |
| `hbmspace:laythe` | `hbmspace:celestial`, 4 biomes | `hbmspace:laythe` |
| `hbmspace:minmus` | `hbmspace:celestial`, 2 biomes | `hbmspace:minmus` |
| `hbmspace:moho` | `hbmspace:celestial`, 4 biomes | `hbmspace:moho` |
| `hbmspace:mun` | `minecraft:fixed` `hbmspace:mun` | `hbmspace:mun` |
| `hbmspace:orbit` | `minecraft:flat`, biome `hbmspace:space` | |
| `hbmspace:tekto` | `hbmspace:celestial`, 5 biomes | `hbmspace:tekto` |
| `hbmspace:thatmo` | `minecraft:fixed` `hbmspace:thatmo` | `hbmspace:thatmo` |

Each surface body's dimension type is `hbmspace:<body>`, with the body's world clock `hbmspace:<body>` and the timelines `hbmspace:<body>_day` and `hbmspace:<body>_villager_schedule`. The day timeline's `period_ticks` and sun-angle keyframes set the body's day length and sun path at runtime, for the sky, solar power and day–night logic. Space overrides some environment attributes in code, such as sky, fog and cloud colours, star brightness and sky light, so data values for them may be replaced.

## Terrain

Body terrain uses `minecraft:noise` generators with Space's [biome source and density functions](https://movblock.mov/ntm-next/wiki/space/world-generation.md). The router's `temperature` is the body's celestial biome map, and `preliminary_surface_level` and `final_density` follow the celestial relief. Mun, Laythe, Tekto and Thatmo carve noise caves through [`hbmspace:noise_caves`](https://movblock.mov/ntm-next/wiki/space/world-generation/noise_caves.md) at `noise_router.barrier`. Surface rules under `surface_rule` use Space's [material conditions](https://movblock.mov/ntm-next/wiki/space/world-generation/surface_depth.md).

Relief heights and the celestial biome IDs are Java tables: a new dimension can reuse an existing body's layers and biomes but cannot add celestial biomes. Some behaviour is keyed to IDs: Duna's terraces to noise settings `hbmspace:duna`, crater grounding of Mun and Minmus bases to `hbmspace:mun` and `hbmspace:minmus`, and the Martian base to the `hbmspace:martian` world preset.

A body whose `default_fluid` is a solid block other than `default_block`, with a router using Space's density functions, treats that block as its sea during the surface pass; Mun uses basalt and Minmus smooth Minmus rock.

## World preset

`hbmspace:martian` is an Overworld preset with noise settings `hbmspace:martian`, listed in `#minecraft:normal`. It sends each joining player to Duna once and enables the [Martian base](https://movblock.mov/ntm-next/wiki/space/world-generation/martian_base.md).
