Chunk Generator - ShaneBeee/SkBee GitHub Wiki

So you wanna generate a world with Skript?
Well you came to the right place.

[!NOTE]

  • You will need to enable chunk-generator in the SkBee config. Because this is a complex system, it is disabled in the config by default.
  • This will not work for the main/default world. This will only work for worlds created with SkBee's world creator.
  • This will not work if your world is auto-loaded by SkBee, so either disable auto loading in the SkBee config, or make sure to disable auto-load for this specific world in the SkBee Worlds config.

[!WARNING]

  • This system is still considered highly experimental. I've done a lot of testing but small moves can crash your server.

[!TIP] I recommend using SkNoise to generate noise for your biomes/chunks (if you need that)

CHUNK GENERATOR REGISTRATION:

Ok let's talk about registration. We register our chunk generator so we can later pass it over to our world creator to create a world with our new generator.
This structure has a few entires which are optional as well as a few sections which are optional.

Let's start with the structure:

register chunk generator with id %string%

Pretty straight forward here, pick an ID and register your generator, we will later use this with our world creator.

ENTRIES:

(these are all optional, and are false by default)
vanilla decor = By enabling this, Minecraft will decorate the surface and caves based on what the biome tells it to use.
vanilla structures = By enabling this, Minecraft will generate vanilla structures (vanilla decor needs to be enabled for this to work).
vanilla caves = By enabling this, Minecraft will carve caves for you.
vanilla mobs = By enabling this, Minecraft will spawn mobs in new chunks based on biome specifics.

SECTIONS:

(These are all optional, but some do rely on others. height gen and block pop require chunk gen)
biome gen = Generate the biomes to be placed in the world. Further Reading
chunk gen = Generate your surface layer of your world. Further Reading
height gen = Tell Minecraft where the highest block in a chunk is for generating structures. Further Reading
block pop = Used to decorate after initial surface is generated (Structures can be placed during this stage). Further Reading

WORLD CREATOR WITH GENERATOR:

Now that we have registered our chunk generator, let's apply it to our world creator.

Syntax:

set chunk generator of %worldcreator% to chunk generator with id %string%

Example:

on load:
	if world "mars" is not loaded:
		set {_w} to world creator named "mars"
		set chunk generator of {_w} to chunk generator with id "mars"
		load world from creator {_w}

register chunk generator with id "mars":
	chunk gen:
		loop 16 times:
			loop 16 times:
				set {_x} to (loop-number-1) - 1
				set {_z} to (loop-number-2) - 1

				# This is a custom expression I have created in my own script, this is not from SkBee
				# This is just meant to give you an idea of how noise works
				set {_n} to biome noise at vector({_x} + (chunkdata chunk x * 16), 1, {_z} + (chunkdata chunk z * 16))
				# Now we set the blocks from 0 to our noise level filling in our world
				set chunkdata blocks within vector({_x}, 0, {_z}) and vector({_x}, {_n}, {_z}) to red_concrete[]
				# Now we set our surface layer
				set chunkdata block at vector({_x}, {_n}, {_z}) to red_concrete_powder[]
	biome gen:
		# Let's give our world a lil mars lookin biome
		set chunkdata biome to crimson forest

How It Looks: