Skip to content

Adding Spheres (Starry Skies 3.x)

DaFuqs edited this page Feb 14, 2025 · 9 revisions

You can add new spheres using a data pack. All of Starry's builtin spheres are added this way, too. Feel free to use those as a handy reference.

Example

Let's take a look at one of the builtin spheres: the Sand Sphere. It consists mostly of Sand, but the bottommost layer is Sandstone instead.

{
  "type": "starry_skies:modular", // The id of the type of sphere we are working with. Think of it like a vanilla feature, like `minecraft:tree`
  "config": { // All data the sphere type needs to generate. Think: configured feature data ("tall oak tree with bees")
    "main_block": { // StateProvider; the main block the sphere consists of: Sand
      "type": "minecraft:simple_state_provider",
      "state": {
        "Name": "minecraft:sand"
      }
    },
    "bottom_block": { // StateProvider; the block used for the bottommost layer of the sphere: Sandstone
      "type": "minecraft:simple_state_provider",
      "state": {
        "Name": "minecraft:sandstone"
      }
    },
    // `main_block` and `bottom_block` here are unique to spheres with type `starry_skies:modular`
    // Other types of sphere might utilize other properties
    // Everything else below this comment is identical for any sphere type

    "size": { // FloatProvider; how big this sphere can get
      "type": "minecraft:uniform",
      "min_inclusive": 5,
      "max_exclusive": 13
    },

    "decorators": {
      // A list of decorators the sphere can spawn with and their chance with 1.0 being 100%.
      // This sand sphere can spawn with various types of Suspicious Sand, Cactus, Dead Grass or a Treasure Chest
      // Each entry is rolled individually. So you might see a sphere that has multiple of these, or none at all
      "starry_skies:suspicious_sand_desert_pyramid": 0.03,
      "starry_skies:suspicious_sand_desert_well": 0.03,
      "starry_skies:suspicious_sand_trail_ruins_common": 0.03,
      "starry_skies:suspicious_sand_trail_ruins_rare": 0.03,
      "starry_skies:cactus": 0.3,
      "starry_skies:dead_grass": 0.3,
      "starry_skies:x_spot_desert_pyramid": 0.1
    },
    "spawns": [
      // A list of entries which mobs can spawn on this sphere
      // It can spawn small groups of Rabbits (50% chance) or Camels (25% chance)
      {
        "type": "minecraft:rabbit",
        "chance": 0.5,
        "min_count": 2,
        "max_count": 3
      },
      {
        "type": "minecraft:camel",
        "chance": 0.25,
        "min_count": 1,
        "max_count": 2
      }
    ],
    "generation": {
      // And finally how frequently this sphere generates
      // It belongs to the generation group `starry_skies:overworld/essential` (which also contains Grass, Gravel & Glowstone spheres and more)
      // Each time a sphere generates a generation group for that dimension is chosen (which are also weighted)
      // and then an entry in that generation group is chosen by weight.
      // The higher the weight, the higher the probability is for that entry to be chosen
      "group": "starry_skies:overworld/essential",
      "weight": 4.0
    }
  }
}

This Sand Sphere is bundled in the path /data/**starry_skies**/starry_skies/configured_sphere/**overworld/essential/sand**.json, so it's sphere id will be starry_skies:overworld/essential/sand. You can locate the sphere by using the command /starry_skies_locate starry_skies:overworld/essential/sand to find the next one close by. Works just like the vanilla locate command!

Sphere Types

Sphere Types define how the blocks in the sphere are distributed: While a sphere of type starry_skies:simple will only ever consist of a single block, the type starry_skies:core will consist of 2 different blocks: an inner and an outer one.

If you are a modder, you can also register eate completely new sphere types, similarly how you would register a feature.

Here are the Sphere Types you will most often be tinkering with:

starry_skies:simple

The most simple of spheres, consisting of a single block

Config Values

  • block (BlockStateProvider): The block the sphere consists of

starry_skies:modular

A sphere with modifiable top and bottom, like grass on top of dirt, or sand that is supported by a bottom layer of sandstone.

Config Values

  • main_block (BlockStateProvider): The block the sphere consists of
  • top_block (BlockStateProvider): The block used for the topmost layer
  • bottom_block (BlockStateProvider): The block used for the bottommost layer

starry_skies:core

"a sphere in a sphere". Most commonly used for ore that is surrounded by stone, but useful for all kinds of stuff.

Config Values

  • main_block (BlockStateProvider): The block the sphere consists of
  • core_block (BlockStateProvider): The block used for the blocks in the center of the sphere
  • core_radius (FloatProvider): The radius of the core

starry_skies:shell

The sister sphere of starry_skies:core. Instead of defining the size of the inner sphere, you are defining the size of the "hull". Most commonly used for wood that is surrounded by matching leaves.

Config Values

  • main_block (BlockStateProvider): The block the sphere consists of
  • shell_block (BlockStateProvider): The block used for the blocks around the center of the sphere
  • shell_thickness (IntProvider): The thickness size the shell

starry_skies:fluid

A sphere filled with a fluid like water or lava, kept in shape by a solid shell

Config Values

  • fluid_block (BlockState): The fluid this sphere is filled with
  • shell_block (BlockStateProvider): The block used for the blocks around the center of the sphere
  • shell_thickness (IntProvider): The thickness size the shell
  • fluid_fill_percent (FloatProvider): How much of the sphere's inner is filled with fluid
  • hole_in_bottom_chance (float): A chance between 0.0 to 1.0 that the sphere generates with a hole in the bottom, making fluid spill out

starry_skies:fluid_core

Pretty much like the fluid variant, but with an additional core floating in the center, like a magma sphere swimming in lava, or ice in water.

Config Values

  • fluid_block (BlockState): The fluid this sphere is filled with
  • shell_block (BlockStateProvider): The block used for the blocks around the center of the sphere
  • shell_thickness (IntProvider): The thickness size the shell
  • fluid_fill_percent (FloatProvider): How much of the sphere's inner is filled with fluid
  • hole_in_bottom_chance (float): A chance between 0.0 to 1.0 that the sphere generates with a hole in the bottom, making fluid spill out
  • core_block (BlockStateProvider): The block used for the blocks in the center of the sphere
  • core_radius (FloatProvider): The radius of the core

starry_skies:shell_core

A sphere consisting out of three layers: a main part, an outer shell and an inner core.

Config Values

  • main_block (BlockStateProvider): The block the sphere consists of
  • shell_block (BlockStateProvider): The block used for the blocks around the center of the sphere
  • shell_thickness (IntProvider): The thickness size the shell
  • core_block (BlockStateProvider): The block used for the blocks in the center of the sphere
  • core_radius (FloatProvider): The radius of the core

starry_skies:cave

Consists of air surrounded by a shell

Config Values

  • shell_block (BlockStateProvider): The block the sphere consists of
  • shell_thickness (IntProvider): The thickness size the shell
  • top_block (BlockStateProvider): The block used for the topmost layer
  • bottom_block (BlockStateProvider): The block used for the bottommost layer
  • cave_floor_block (BlockStateProvider): The block used for the floor of the inner spac
  • treasure_chest:
    • loot_table (LootTable ID): the loot table in that sphere's center
    • chance (float): the chance of a chest generating from 0.0-1.0

starry_skies:dungeon

A vanilla dungeon in sphere form! Features a central spawner surrounded by air and a shell.

Config Values

  • shell_block (BlockStateProvider): The block the sphere consists of
  • shell_thickness (IntProvider): The thickness size the shell
  • top_block (BlockStateProvider): The block used for the topmost layer
  • bottom_block (BlockStateProvider): The block used for the bottommost layer
  • cave_floor_block (BlockStateProvider): The block used for the floor of the inner space
  • entity_type (EnitityType ID): The entity the spawner will spawn
  • treasure_chest:
    • loot_table (LootTable ID): the loot table in that dungeon sphere's chest
    • chance (float): the chance of a chest generating for each valid inner position from 0.0-1.0

starry_skies:horizontal_stacked

A sphere that consists of a stack of blocks that variate from top to bottom. Useful for creating nationality flags, or stacking groups of themed blocks

Config Values

  • blocks (list of BlockStates): The blocks that are stacked with equal thickness from top to bottom

starry_skies:structure_interior

Identical to starry_skies:shell, with one big difference: its inside is filled with structures of 9x9x9 size. This is how Starry's Stronghold, Nether Fortress & End City spheres work.

Config Values

  • main_block (BlockStateProvider): The block the sphere consists of
  • shell_block (BlockStateProvider): The block used for the blocks around the center of the sphere
  • shell_thickness (IntProvider): The thickness size the shell
  • center_structures (weighted list of structure ids): Structures that can be selected for the innermost structure position
  • structures (weighted list of structure ids): Structures that can be selected for all other positions

The structures referenced in center_structures and structures need to be 9x9x9 in size.