-
Notifications
You must be signed in to change notification settings - Fork 3
Adding Spheres (Starry Skies 3.x)
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.
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 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:
The most simple of spheres, consisting of a single block
-
block
(BlockStateProvider): The block the sphere consists of
A sphere with modifiable top and bottom, like grass on top of dirt, or sand that is supported by a bottom layer of sandstone.
-
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
"a sphere in a sphere". Most commonly used for ore that is surrounded by stone, but useful for all kinds of stuff.
-
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
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.
-
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
A sphere filled with a fluid like water or lava, kept in shape by a solid shell
-
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
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.
-
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
A sphere consisting out of three layers: a main part, an outer shell and an inner core.
-
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
Consists of air surrounded by a shell
-
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
-
A vanilla dungeon in sphere form! Features a central spawner surrounded by air and a shell.
-
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
-
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
-
blocks
(list of BlockStates): The blocks that are stacked with equal thickness from top to bottom
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.
-
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.
General
Starry Skies 3.x
- Adding Spheres
- Adding Spheres (Advanced)
- Adding Configured Decorators
- Adjusting Generation Probabilities
- Creating Starry Dimensions
- Making Spheres Locatable
- Advancement Criteria
Starry Skies 2.x