Skip to content

Minecraft Flat and Custom World Types: level-type and generator-settings

Set a superflat, large-biomes or amplified world from server.properties: the level-type values and the generator-settings JSON that customises a flat world.

Updated August 19, 2026
Minecraft

A creative-build server on a flat plain, a resource world with four-times-larger biomes, a survival map with mountains that scrape the height limit — all three are two lines in server.properties, and all three have to be set before the world first generates. This guide covers the level-type presets, the generator-settings JSON that customises a superflat world, and the traps that make people think the setting did not work.

It is a Java Edition topic and a companion to Minecraft World Management, which covers seeds, pre-generation, borders and resets. Everything here happens at world creation; that article covers everything afterwards.

The Two Keys

level-type=minecraft\:flat
generator-settings={"biome":"minecraft:plains","layers":[{"block":"minecraft:bedrock","height":1},{"block":"minecraft:dirt","height":2},{"block":"minecraft:grass_block","height":1}]}
server.properties

level-type picks the preset. generator-settings customises it, and what it accepts depends entirely on which preset you chose.

The backslash before the colon is not a typo

server.properties is a Java properties file, in which : is one of the characters that separates a key from its value. The server escapes it when it writes the file, which is why a freshly generated file contains level-type=minecraft\:normal. Write it the same way. The namespace can also be omitted entirely — level-type=flat works — which sidesteps the escaping question altogether.

server.properties open in the panel file editor on a flat-world server: level-type is set to the flat preset with the colon backslash-escaped, level-name is flatworld, and generator-settings holds the layer JSON on a single line with every colon escaped the same way

Every level-type Value

Value What you get
minecraft:normal The standard world: hills, valleys, oceans, caves. The default
minecraft:flat Superflat. A completely flat surface of fixed layers, one biome. Customisable via generator-settings
minecraft:large_biomes The same generator as normal, with biomes at roughly 4× the scale
minecraft:amplified The same generator as normal, with a much larger vertical range — terrain routinely passes Y=255 and sometimes Y=320
minecraft:single_biome_surface Normal terrain generation, but the entire Overworld is one biome

Two things are true of all five. They change the Overworld only — the Nether and the End generate normally in every case. And they are read once, when the world folder is created; see the last section.

Every other key in the file is documented in Minecraft server.properties: The Complete Reference.

Superflat, in Detail

The default superflat world is one layer of bedrock, two of dirt and one of grass block, biome plains, with the walkable surface at Y=-60. Villages generate fairly often, and strongholds can appear.

generator-settings takes a JSON object with these fields:

Field Required Default Meaning
layers Yes (may be empty) A list of layers, read bottom to top, starting at the world floor
layers[].height Yes Thickness of the layer, 0 to 4064
layers[].block No minecraft:air The block ID for that layer
biome No minecraft:plains The single biome of the world
lakes No false Force lava lakes to generate, even in biomes that normally have none
features No false Generate the biome's placed features — trees, plants, ores
structure_overrides No all structure sets Which structure sets may generate. A structure set ID, a tag, or a list of IDs

So a void world — the built-in "The Void" preset — is:

level-type=minecraft\:flat
generator-settings={"biome":"minecraft:the_void","layers":[{"block":"minecraft:air","height":1}]}
server.properties

And a deep stone world for a mining or redstone server, with no features at all:

level-type=minecraft\:flat
generator-settings={"biome":"minecraft:desert","layers":[{"block":"minecraft:bedrock","height":1},{"block":"minecraft:stone","height":3},{"block":"minecraft:sandstone","height":116}]}
server.properties

Copy a preset from the game rather than inventing one

The nine built-in presets — Classic Flat, Tunnelers' Dream, Water World, Overworld, Snowy Kingdom, Bottomless Pit, Desert, Redstone Ready and The Void — are all reachable in single-player from Create New World → World Type: Superflat → Customize → Presets. Build the layer stack there, confirm it looks the way you want, and translate it into the JSON above. The layer table below saves you the first step for the two most commonly asked for.

Preset Layers, bottom to top Biome
Classic Flat bedrock ×1, dirt ×2, grass block ×1 plains
The Void air ×1 the void
Redstone Ready bedrock ×1, stone ×3, sandstone ×116 desert
Tunnelers' Dream bedrock ×1, stone ×230, dirt ×5, grass block ×1 windswept hills

The in-game preset code is not the same thing as generator-settings

The semicolon-and-asterisk string you can copy out of the Superflat Customization screen — minecraft:bedrock,2*minecraft:dirt,minecraft:grass_block;minecraft:plains — is a client format, and it is not what server.properties reads. The server wants the JSON object above. The preset code also cannot express features and structures at all: the wiki notes that when a preset code is used, feature and structure behaviour comes from whichever default preset was selected on the list, not from the code. Older guides quoting a leading version number (3;minecraft:bedrock,…) are older still — version numbers were dropped in 1.13, and structures stopped being expressible in preset codes in 1.16.

Structures and features on a flat world

Both features and lakes default to false, which is why a plain superflat world looks so empty. Turning features on gives you the biome's trees, grass and ores; structure_overrides controls villages, strongholds, mineshafts and the rest. There is also the separate generate-structures key in server.properties, which must stay true for any structure to generate regardless of what the generator settings say.

Large Biomes, Amplified and Single Biome

large_biomes scales Overworld climate zones up by roughly four times. It does not scale mountains or rivers, so you get larger clusters of the same terrain rather than bigger mountains. It has no effect on the Nether. Practically: a much longer walk to the biome you want, which makes rare biomes genuinely rare and biome-locked resources worth trading for.

amplified raises the vertical range dramatically. The world type's own in-game description recommends a "beefy" computer, and that applies to the server too — generating this terrain costs more CPU and more memory per chunk, and the resulting world is bigger on disk. If you are going to run one, pre-generate it and put a border on it; both are covered in Minecraft World Management.

single_biome_surface gives normal terrain shape with one biome everywhere. It is the old "Buffet" world type. There is a documentation conflict worth knowing about here: the wiki's server.properties page lists generator-settings as applying to this preset, while the Single Biome page states that from server.properties it "defaults to plains and cannot be customized." We have not been able to resolve that from a primary source. If you need a specific biome, the reliable route is a data pack that overrides the Overworld dimension with a fixed biome source — see How to Install Datapacks and Resource Packs.

Custom World Types From Data Packs

Since 1.19, world presets are a registry that data packs can add to. A pack ships a JSON file at data/<namespace>/worldgen/world_preset/<name>.json defining which dimensions the world has and how each generates, and superflat presets get their own registry at worldgen/flat_level_generator_preset/.

For a server, the useful consequence is that level-type is not limited to the five vanilla values — it takes a namespaced world preset ID, and a data pack installed before first generation can supply one. This is how packs ship "skyblock" or "caves only" world shapes without a plugin.

Two practical notes. The data pack has to be present when the world is created, because that is the only moment level-type is read. And initial-enabled-packs in server.properties controls which packs are auto-enabled on world creation, which matters if the pack is not enabled by default.

Why Changing It Later Does Nothing

This is the single most common support ticket on this topic, and it is worth being precise about the mechanism.

level-type and generator-settings are consulted once, when the server creates a new world directory. After that, the generator and its settings live inside the world save itself — in world/data/minecraft/world_gen_settings.dat on 26.1 and later, and inside level.dat before that. From then on the server reads the world, not the properties file.

So editing level-type on an existing world:

  • does not change any chunk that already exists;
  • does not change chunks generated afterwards either, because the world's own stored settings win.

To actually get a different world type you need a new world. Change level-name to a new value in server.properties, restart, and the server generates a fresh world in a new folder — with your old one still on disk if you change your mind. That mechanism, and how to move a world in or out, is covered in Minecraft World Management.

Take a backup before experimenting

Generating a new world does not delete the old one, but it does mean players spawn somewhere unrecognisable, and the recovery is fiddly if you have also renamed things. Snapshot from the Backups tab first — see How to create a backup.

Common Issues

  • "I set level-type=flat and the world is still normal." The world already existed. Check whether a folder matching level-name is present in the File Manager. If it is, the properties file is not being consulted.
  • "My generator-settings line is ignored." It is one line with no line breaks, and it must be valid JSON. A stray newline from pasting out of a browser silently truncates it. Check the console at boot for a generation warning.
  • The world generated but every layer is air. layers was empty or the JSON failed to parse, so the default of minecraft:air applied to everything. Rebuild the string.
  • Mobs everywhere on a superflat world. Expected: the surface sits at Y=-60, deep in slime-chunk territory, and there is no terrain to break up spawn areas. Light the build area, or set the spawn game rules — the current snake_case game rule names are in Minecraft Server Commands.
  • Everything is one biome and you did not ask for that. level-type is single_biome_surface, or a data pack is overriding the Overworld dimension.
  • The world is enormous on disk. Amplified and large-biomes worlds cost more per chunk than a normal world. Set a border and pre-generate to it — Minecraft World Management.

Primary sources used for this guide (all checked 19 August 2026): the Minecraft Wiki on server.properties, Superflat, Superflat/Settings, world preset definition, Single Biome, Large Biomes, Amplified and the Java Edition level format.


Made with 💜 by GameServerKings

Need a Minecraft server?

Deploy an instantly-provisioned Minecraft server on high-clock hardware — DDoS protected, no contracts, cancel anytime.

From $4.80 /month