---
title: "Minecraft Flat and Custom World Types: level-type and generator-settings"
description: "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."
url: "https://www.gameserverkings.com/knowledge-base/minecraft/flat-and-custom-world-types/"
category: "Minecraft"
category_url: "https://www.gameserverkings.com/knowledge-base/minecraft/"
published: "2026-08-19T10:06:31.576Z"
updated: "2026-08-19T10:50:27.328Z"
source_format: "markdown"
site: "GameServerKings"
---

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

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](/knowledge-base/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

```properties title="server.properties"
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}]}
```

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

> [!IMPORTANT] 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](<https://cdn.gskinternal.com/articles/images/minecraft-server-properties-level-type.png>)

## 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](/knowledge-base/minecraft/server-properties-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:

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

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

```properties title="server.properties"
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}]}
```

> [!TIP] 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 |

> [!WARNING] 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](/knowledge-base/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](/knowledge-base/minecraft/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](/knowledge-base/minecraft/world-management/).

> [!CAUTION] 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](/knowledge-base/general/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](/knowledge-base/minecraft/admin-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](/knowledge-base/minecraft/world-management/).

## What to Read Next

- [Minecraft World Management](/knowledge-base/minecraft/world-management/) — seeds, pre-generation, world borders, resets and multi-world setups
- [Minecraft server.properties: The Complete Reference](/knowledge-base/minecraft/server-properties-reference/) — every key, including `generate-structures` and `initial-enabled-packs`
- [Getting started with your Minecraft server](/knowledge-base/minecraft/java-getting-started/) — first boot and the properties file basics
- [How to Install Datapacks and Resource Packs](/knowledge-base/minecraft/datapacks-and-resource-packs/) — for custom world presets and dimension overrides
- [Minecraft Server Commands](/knowledge-base/minecraft/admin-commands/) — game rules, `/seed` and `/worldborder`
- [Converting a Singleplayer World to a Minecraft Server](/knowledge-base/minecraft/converting-a-singleplayer-world/) — if you built the flat world locally and want to upload it instead
- [How to create a backup](/knowledge-base/general/how-to-create-a-backup/) — before you generate anything new

**Primary sources used for this guide** (all checked 19 August 2026): the Minecraft Wiki on [server.properties](https://minecraft.wiki/w/Server.properties), [Superflat](https://minecraft.wiki/w/Superflat), [Superflat/Settings](https://minecraft.wiki/w/Superflat/Settings), [world preset definition](https://minecraft.wiki/w/World_preset_definition), [Single Biome](https://minecraft.wiki/w/Single_Biome), [Large Biomes](https://minecraft.wiki/w/Large_Biomes), [Amplified](https://minecraft.wiki/w/Amplified) and the [Java Edition level format](https://minecraft.wiki/w/Java_Edition_level_format).

---

Made with 💜 by GameServerKings
