Worlds
Managed and imported worlds, the generator and its five presets, the border, the gamerules and what pre-generation does.
A sandbox world is a row in sandbox_worlds and, usually, a folder the plugin owns. Everything about
it is edited from /sandbox → MANAGE WORLDS; there is no world list in a config file.
Two kinds
MANAGED | IMPORTED | |
|---|---|---|
| Folder | exylia_sandbox_<id>, created by the plugin | an existing folder you name |
| Terrain | this plugin's generator, from a preset | whatever is already there |
| On creation | the folder is deleted and rebuilt | nothing is touched |
| On deletion | the folder is deleted | the row is removed, the folder stays |
| Biome and generation | editable | ignored; the screen shows N/A |
Both kinds get the same border, the same gamerules and the same PvP.
Status
A world moves through CREATING → PREGENERATING → READY, or lands on UNAVAILABLE when the world
could not be loaded at all. Only a READY world accepts players: the row in the world selector is drawn
without its glow and clicking it does nothing.
The generator
The generator turns every vanilla stage off — noise, surface, bedrock, caves, decorations, structures and mob spawning — and writes the chunk itself. There are no caves, no ores, no ravines and no villages in a managed world unless a preset's decoration pass puts something there.
Height is a base plus a gentle two-octave undulation, with a mountain lift that only appears in the
upper part of the noise range and adds at most ten blocks. Under it comes the layer stack of the
preset, then bedrock at the bottom of the world. Below y = minY + 40 the infinite fill becomes
deepslate regardless of the preset.
The five presets
| Preset | Base height | Layers, top down | Decoration |
|---|---|---|---|
| Plains | 74 | grass block, 3 dirt, stone | short grass, fern, poppy, dandelion, oak trees |
| Desert | 72 | 2 sand, 4 sandstone, stone | cactus, dead bush |
| Snowy | 78 | 3 snow block, 3 dirt, stone | packed ice spikes, blue ice |
| Mushroom | 74 | mycelium, 3 dirt, stone | brown and red giant mushrooms |
| Badlands | 86 | 3 red sand, 4 red sandstone, then eight terracotta bands, stone | cactus |
The decoration pass is driven by the preset's material list and its chances are fixed: 6% for an oak tree per eligible column, 7% and 6% for the two mushrooms, 10% for grass and ferns, 1.8% for powder snow, 1.5% for blue ice and dead bush, 0.8% for a flower, 0.4% for a cactus and 0.3% for an ice spike. Trees and mushrooms only spawn away from the chunk edges, because a decoration pass cannot reach into the neighbouring chunk.
heightVariation and stoneVariants are written into every world's generation record and shown in
every preset, but nothing reads them. Changing a preset's terrain means changing its baseHeight,
its layer stack or its feature list.
The border
BORDER in the world screen is the diameter, and the number the screen displays next to a world
is the radius — half of it. The border is always centred on 0, 0. Left-click adds 500,
right-click removes 500 with a floor of 100, and shift-left-click types a number.
The random-teleport search stays rtp.border-margin blocks clear of the edge, so a 3000-block border
with the default margin of 20 lands players inside a 1480-block radius.
Gamerules and difficulty
GAMERULES in the world screen opens thirteen toggles and the difficulty cycle. They are applied every time the world is loaded.
| Toggle | Gamerule or flag |
|---|---|
mob_spawning | doMobSpawning |
spawn_mobs, spawn_animals | the world's spawn flags |
mob_griefing | mobGriefing |
daylight_cycle | doDaylightCycle |
weather_cycle | doWeatherCycle |
tile_drops | doTileDrops |
entity_drops | doEntityDrops |
show_death_messages | showDeathMessages |
immediate_respawn | doImmediateRespawn |
announce_advancements | announceAdvancements |
disable_item_drops | this plugin's own: cancels item drops in the world |
disable_powder_snow | this plugin's own: cancels powder snow damage and placement |
Difficulty cycles PEACEFUL → EASY → NORMAL → HARD.
Two things are not toggles. PvP is forced on in every sandbox world, and keepInventory is forced
off — although death is cancelled before vanilla ever gets to drop anything, so in practice nothing
is lost either way.
The toggle works while the world stays loaded, but it is not written to the world's stored settings. After a restart it is back to its default. Every other toggle on that screen is persisted.
Pre-generation
When a managed world is created, the plugin asks Chunky to generate a square out to the border radius
and waits. Progress is shown in the world list as PREGEN <percent>, and the world stays
PREGENERATING until it finishes.
Two marker files inside the world folder carry the state across restarts: .pregen_pending while a
pre-generation is unfinished, and .sandbox-generated once the world is complete. The second one, not
level.dat, is what the plugin checks to decide whether a world already exists.
Pre-generations run one at a time. When the last one in the queue finishes, the plugin calls
Bukkit.shutdown(). This is intended for the first boot, but it fires just the same when you create a
world from the panel on a live server. Do it in a maintenance window.
If Chunky is missing or reports an API version this plugin does not know, pre-generation is skipped entirely: the world is marked complete straight away and generates chunks as players walk into them.
What happens to chunks
Chunk saving is turned off in every READY sandbox world, and spawn chunks are not kept in memory.
Nothing a player builds, breaks or drops in a sandbox world survives a restart of that world — which is
the point.
Deleting a world
The world screen's last slot deletes it, through a confirmation screen. A managed world's folder goes with it; an imported world keeps its folder and only loses its row. Players inside are teleported out when the plugin unloads the world at shutdown.
Something missing on this page? Tell us on Discord