Skip to main content

Creating Custom Space Objects

This guide explains how players can create their own space systems and celestial bodies using JSON files.
Each object type (system, star, planet, satellite, asteroid) has its own format with required and optional fields.


1. General Notes

  • JSON files must be placed in your data pack or mod under:

    data/<namespace>/recipes/space/<object_type>/<object_name>.json

    Example for a planet:

    data/myspace/recipes/space/planet/mars.json
  • All resource identifiers (id, texture, system, star, planet) are case-sensitive.

  • Texture paths are written without .png

  • If a required object (system, star, planet) is not found, the game will throw an error when loading.


2. System

A system is the root container for stars and planets.

{
"type": "industrialupgrade:system_add",
"name": "сentauri",
"distance": 1
}

Fields:

KeyTypeDescription
namestringUnique name of the system.
distanceintDistance of this system from the solar system

3. Star

Stars must belong to a system and are defined with angle and size.

{
"type": "industrialupgrade:star_add",
"name": "сentauri_a",
"system": "сentauri",
"texture": "modid:textures/star/сentauri_a",
"angle": 0,
"size": 1.0
}

Fields:

KeyTypeDescription
namestringStar name.
systemstringSystem name where this star belongs.
texturestringPath to texture (without .png).
angleintOrbital angle position in system layout.
sizedoubleSize of the star (relative scale).

4. Planet

Planets orbit stars inside a system.

{
"type": "industrialupgrade:planet_add",
"name": "proxima_b",
"system": "сentauri",
"texture": "modid:textures/planet/proxima_b",
"level": "TWO",
"star": "сentauri_a",
"temperature": -60,
"pressure": false,
"distance": 1.5,
"type": "NEUTRAL",
"oxygen": false,
"colonies": true,
"angle": 45,
"time": 687.0,
"size": 6.8,
"rotation": 24.6
}

Fields:

KeyTypeDescription
namestringPlanet name.
systemstringParent system.
texturestringPath to texture.
levelEnumlevel (e.g., ONE, TWO to EIGHT).
starstringThe star this planet orbits.
temperatureintAverage surface temperature (°C).
pressurebooleanWhether the planet has atmospheric pressure.
distancedoubleDistance from its star (relative units).
typeEnumPlanet type (DANGEROUS, NEUTRAL, SAFE).
oxygenbooleanDoes the planet have breathable oxygen?
coloniesbooleanCan colonies exist here?
angleintOrbital angle relative to star.
timedoubleOrbital period (days).
sizedoubleRelative size.
rotationdoubleRotation speed (hours).

5. Satellite (Moons)

Satellites orbit planets.

{
"type": "industrialupgrade:satellite_add",
"name": "proxima_b_a",
"system": "сentauri",
"texture": "modid:textures/satellite/proxima_b_a",
"level": "THREE",
"planet": "proxima_b",
"temperature": -40,
"pressure": false,
"distance": 0.05,
"type": "DANGEROUS",
"oxygen": false,
"colonies": false,
"angle": 30,
"time": 0.3,
"size": 1.2,
"rotation": 10.0
}

Fields: same as planet, except:

  • planet — parent planet name instead of star.

6. Asteroid Belt

Asteroids orbit stars and may spawn in belts.

{
"type": "industrialupgrade:asteroid_add",
"name": "asteroid_belt",
"system": "сentauri",
"texture": "modid:textures/celestial/asteroid_belt",
"level": "FOUR",
"star": "сentauri_a",
"temperature": -150,
"distance": 2.8,
"type": "NEUTRAL",
"colonies": false,
"angle": 180,
"time": 1500.0,
"size": 0.5,
"rotation": 5.0,
"minLocation": 2.5,
"maxLocation": 3.5,
"amount": 1000
}

Fields:

KeyTypeDescription
namestringAsteroid name.
systemstringParent system.
texturestringPath to texture.
levelEnumlevel (e.g., ONE, TWO to EIGHT).
starstringThe star this planet orbits.
temperatureintAverage surface temperature (°C).
distancedoubleDistance from its star (relative units).
typeEnumPlanet type (DANGEROUS, NEUTRAL, SAFE).
coloniesbooleanCan colonies exist here?
angleintOrbital angle relative to star.
timedoubleOrbital period (days).
sizedoubleRelative size.
rotationdoubleRotation speed (hours).
minLocationdoubleMin distance from its star for render
maxLocationdoubleMax distance from its star for render
amountintnumber of asteroids for render

7. Tips & Best Practices

  1. Always create a system first, then stars, then planets, satellites, and asteroid belts.

  2. Use consistent lowercase names for system, star, and planet references.

  3. Textures must exist in your resource pack. Example path:

    assets/modid/textures/<system|star|planet|satellite|asteroid>/<unique_name>.png
  4. Match level and type to existing enums (ONE, TWOto EIGHT; DANGEROUS, NEUTRAL, SAFE).

  5. Distances, times, and sizes are relative, not fixed real units. Balance them for gameplay.


8. Conclusion

With this system, you can build your own galaxies:

  • Define systems as containers.
  • Add stars inside them.
  • Place planets orbiting stars.
  • Attach satellites to planets.
  • Create asteroid belts around stars.

Carefully configure values for distance, time, size, and rotation to shape your custom space world.