Skip to content

Creating Starry Dimensions (Starry Skies 3.x)

DaFuqs edited this page Jan 30, 2025 · 4 revisions

You are able to create new dimensions using Starry Skies worldgen. For this we will have to:

  • create a System Generator
  • create 1+ Generation Groups
  • create new Spheres
  • create the Dimension

Creating the System Generator

A system generator specifies how and which Spheres generate. It also defines the generation of the dimension floor.

Directory: data/<your_pack>/starry_skies/system_generator/

{
  "spheres_per_system": 2000, // int; a system is a 50x50 collection of chunks (configurable)
  "min_distance_between_spheres": 10, // int
  "floor_height": 3, // int
  "floor_state": { // block state; if `floor_height>0`, this block will generate up to the floor height - minus the bottommost block which will be `bottom_state`
    "Name": "minecraft:water"
  },
  "bottom_state": { // block state; if `floor_height>0`, this block will generate as the very bottom of the dimension
    "Name": "minecraft:bedrock"
  },
  "fixed_spheres": [
    // a list of spheres that should generate by default
    // these spheres will always be present at this coordinates
    // keep in mind spheres generate in systems of 50x50 chunks and cannot generate across those boundaries
    // hence we do not generate a sphere at x:0 z:0, which would be exactly at a border, making the sphere generate incomplete
    {
      "system_x": 0,
      "system_y": 0,
      "x": 16,
      "y": 70,
      "z": 16,
      "sphere_id": "starry_skies:spawn/overworld"
    }
  ]
}

Creating 1+ Generation Groups

A Generation Group is a set of spheres that share the same 'priority' to generate, so to speak. Each time a system (a 50x50 chunk collection of spheres) is generated, each sphere generation attempt will look at the weighted list of Generation Groups in the dimension and then looks at the weighted list of Spheres in that Generation Group.

That makes sure that even if there are 1000 entries in a Generation Group called ores and only 2 entries in a Generation Group called wood, you can still be sure wood and ore spheres generate in the ratio of your choice.

Directory: data/<your_pack>/starry_skies/generation_group/

{
  "system_generator": "starry_skies:overworld", // id of a System Generator
  "weight": 10 // float
}

Creating new spheres

See Adding Spheres Your spheres should have a generation entry specifying one of your previously created Generation Groups.

Directory: data/<your_pack>/starry_skies/configured_sphere/

{
  "type": "starry_skies:shell",
  "config": {
    [...]
    "generation": {
      "group": "starry_skies:overworld/wood", // the id of one of your generation groups
      "weight": 1.5 // float; how common your sphere should be. Higher values are picked more frequently
    }
  }
}

Creating the dimension

Last but not least your dimension file! Works exactly as creating any other dimension, just using starry_skies:starry_skies as the chunk generator.

Directory: data/<your_pack>/dimension (vanilla)

{
  "type": "starry_skies:end",
  "generator": {
    "type": "starry_skies:starry_skies",
    "system_generator": "starry_skies:end", // id of your System Generator
    "biome_source": { // defines which biomes are used in the dimension
      "type": "minecraft:fixed",
      "biome": "starry_skies:end"
    }
  }
}