World Presets

World presets define complete world configurations that appear in the "World Type" dropdown during world creation. They specify which dimensions exist and how each generates terrain. Vanilla presets include Default, Superflat, Large Biomes, Amplified, and Single Biome.

Custom world presets let you offer players pre-configured world types with your custom dimensions, terrain, and biomes.

Reference: World preset


World Preset

A world preset defines the complete dimension configuration for a world. At minimum, it should include an Overworld dimension, but can also customize or replace the Nether and End, or add entirely new dimensions.

dp.worldPreset("my_preset") {
	dimension(DimensionTypes.OVERWORLD) {
		type = myDimType
		// Generator configuration
	}
	// Optionally add NETHER, END, or custom dimensions
}
Kotlin

Basic Example

dp.worldPreset("custom_world") {
	// Overworld with custom terrain
	dimension(DimensionTypes.OVERWORLD) {
		type = myOverworldType
		noiseGenerator(
			settings = myNoiseSettings,
			biomeSource = multiNoise { /* ... */ }
		)
	}

	// Standard Nether
	dimension(DimensionTypes.THE_NETHER) {
		type = DimensionTypes.THE_NETHER
		noiseGenerator(
			settings = NoiseSettings.NETHER,
			biomeSource = multiNoise { /* ... */ }
		)
	}

	// Standard End
	dimension(DimensionTypes.THE_END) {
		type = DimensionTypes.THE_END
		noiseGenerator(
			settings = NoiseSettings.END,
			biomeSource = theEnd()
		)
	}
}
Kotlin

Custom Dimension in Preset

dp.worldPreset("aether_world") {
	// Replace Overworld with custom dimension
	dimension(DimensionTypes.OVERWORLD) {
		type = aetherDimType
		noiseGenerator(
			settings = aetherNoise,
			biomeSource = checkerboard(scale = 3, highlands, forest, shores)
		)
	}
}
Kotlin

Flat Level Generator Preset

Flat level generator presets appear in the Superflat customization screen, offering quick-select layer configurations. Vanilla presets include Classic Flat, Tunnelers' Dream, Water World, and Redstone Ready.

Reference: Superflat - Presets

val flatPreset = dp.flatLevelGeneratorPreset("classic_flat") {
	// Display item in UI
	// displayItem = Items.GRASS_BLOCK

	// Flat world settings
	// layers, biome, structure overrides
}
Kotlin

Flat Generator Layers

When using a flat generator in a dimension:

dimension("flat_world", type = myDimType) {
	flatGenerator(biome = Biomes.PLAINS) {
		layers {
			layer(Blocks.BEDROCK, height = 1)
			layer(Blocks.STONE, height = 3)
			layer(Blocks.DIRT, height = 3)
			layer(Blocks.GRASS_BLOCK, height = 1)
		}
		// structureOverrides = ...
	}
}
Kotlin

Complete Example

fun DataPack.createSkylandsPreset() {
	// 1) Custom dimension type
	val skyType = dimensionType("skylands_type") {
		minY = 0
		height = 256
		hasSkylight = true
		hasCeiling = false
		natural = true
		bedWorks = true
		hasRaids = true
		ambientLight = 0.1f
	}

	// 2) Noise settings
	val skyNoise = noiseSettings("skylands_noise") {
		noiseOptions(minY = 0, height = 256, sizeHorizontal = 2, sizeVertical = 1)
		defaultBlock(Blocks.STONE) {}
		defaultFluid(Blocks.WATER) { this["level"] = "0" }
	}

	// 3) Biome
	val skyBiome = biome("skylands_biome") {
		temperature = 0.5f
		downfall = 0.5f
		hasPrecipitation = true
		effects {
			skyColor = 0x87CEEB
			fogColor = 0xC0D8FF
			waterColor = 0x3F76E4
			waterFogColor = 0x050533
		}
	}

	// 4) World preset
	worldPreset("skylands") {
		dimension(DimensionTypes.OVERWORLD) {
			type = skyType
			noiseGenerator(
				settings = skyNoise,
				biomeSource = fixed(skyBiome)
			)
		}
	}
}
Kotlin