Configuration
ShadowEdit
The world editor and the world generator in one jar: sculpt it, then generate it.
Where the files are
plugins/ShadowEdit/ The plugin creates them on first start and updates them by itself on new versions, keeping your changes.
Applying changes
/shadowedit reload Reloads the files without restarting the server.
No setting found
Try another word, or search every plugin.
Settings
The files that decide how the plugin behaves. Start here.
config.yml
General settings 83 settings
config.ymlplugins/ShadowEdit/config.yml File notes
Only the server-wide settings live here. Everything else has its own file:
lang/<locale>.yml the translations palettes/*.yml the material palettes brushes/*.yml saved brush presets schematics/ your builds worlds/<pack>/ the world packs
UPDATES: when a new version changes this file, a language file or one of the bundled palettes and brushes, it is moved to the new version for you. Everything you changed or added is carried over; the settings you never touched take the new defaults. Your previous file is kept in backup/<date>/, and if something could not be carried over (an option that no longer exists, a value of a different kind) you find it in PORTING-<version>.txt, with what to do. World packs are not updated: /sedit pack reset <name> brings back the bundled one.
THE ONE NUMBER THAT MATTERS
performance.tps-floor. It is the promise this plugin makes to the server: below it, everything stops and waits. Raise it to 19 and the plugin is slower and more polite; lower it to 15 and it is faster and more aggressive. There is no other place where load is tuned.
COLOURS - written the Minecraft way, with &
&0-&9 &a-&f colours &l bold &o italic &n underline &#ff8800 an exact colour &r back to normal
The richer tags are still there for what & cannot do:
<gradient:#7a5cff:#39d0ff>ShadowEdit</gradient>
Full documentation: docs/
config-version1core3 keysserver-id"creator-1"A name for this server. Reserved for several servers sharing one database: this version does not use it yet (see STORAGE below).
language"en_US"The language used when no better one is known.
follow-client-localetrueEvery player sees their own client language, when that file exists.
Performance - the governor
Every heavy thing this plugin does - a //set of twenty million blocks, a world being pregenerated, a schematic being pasted - asks ONE object how much time it may take this tick. That object is the governor, and these are its numbers.
Keep reading
tpsFactor = (tps - tps-floor) / (tps-target - tps-floor)
playerScale = 1 - min(online / players-full-load, 1) * player-weight
idle = online == 0 ? idle-boost : 1
budget = tick-budget-ms * tpsFactor * playerScale * idle
(never more than 45 ms, whatever the multipliers)At tps-floor the factor is zero, and zero means the plugin does NOTHING until the server recovers: no block is written, no chunk is asked for. That, and not good intentions, is what makes the TPS promise a promise. With ShadowOptimizer installed, its emergency brake (or a POOR/CRITICAL health verdict) also stops us for a moment.
Big edits never read the world on the main thread: the chunks they need are loaded asynchronously, copied, and the edit is computed on the worker threads. Only what is small and already loaded (up to 65,536 blocks: a brush click, a room) is done on the spot.
performance8 keystick-budget-ms8.0How much time per tick, at most, for EVERYTHING this plugin does.
tps-floor18.0Below this the plugin stops completely. The promise.
tps-target19.5Above this it uses the full budget.
players-full-load40With this many players online the player weight is at its maximum.
player-weight0.6How much players count. 0 = not at all, 1 = a great deal.
idle-boost4.0Multiplier when the server is empty: pregeneration uses the machine.
worker-threads-1The compute pool. -1 = (cores of this machine) - 1.
max-blocks-per-tick120000A hard ceiling, even when the budget would allow more.
Editor
editor22 keyswand"GOLDEN_AXE"The selection wand. Left click = first point, right click = second.
brush-tool"BLAZE_ROD"The item that brushes answer to when the brush does not name one.
sculpt-tool"DIAMOND_HOE"The item that sculpt mode answers to.
max-selection-blocks-1The default block limit per operation, for players who have no shadowedit.limit.blocks.<n> permission. -1 = no limit. The permission wins when a player has one; //limit can only lower it.
confirm-over-blocks1000000Above this an operation asks for confirmation first.
brush-max-blocks200000A single brush click may not exceed this.
brush-max-radius64And may not be larger than this. Also a permission: shadowedit.limit.radius.<n>
max-history-entries25How many undo steps are kept per player. The free edition keeps at most 25 whatever this says; with a key, up to 200.
history-to-disk-over250000Above this many blocks an edit goes to a compressed file in data/history/ at once. Smaller ones follow when the server stops (and ten minutes after the player leaves), so //undo works after a restart too. Chest contents, signs and spawners are kept as well.
history-retention-days14Writes are always ordered by chunk: it is worth a factor of three on a large //set, and it is what lets the plugin load one chunk at a time, asynchronously, instead of all of them on the main thread.
relight"DEFERRED"NONE | DEFERRED | IMMEDIATE The server relights every block it writes on its own. This only re-sends the touched chunks to the players who see them, once the operation is over, for clients that still show old shadows: DEFERRED sends eight chunks every two ticks, IMMEDIATE all at once, NONE nothing (the least bandwidth).
physics-at-endtrueAt the end of an edit, give water and lava their flow update and let sand, gravel and concrete powder fall, a few per tick (at most 20,000 blocks per edit). false = everything stays exactly as placed, the way WorldEdit leaves it.
snapshot-max-blocks40000000The most blocks one operation may read at once (the selection plus the margin its neighbours need). Above this the command refuses and says so: split the work, or raise this if the server has the memory (about 4 bytes per block, plus 48 per changed block).
progress-after"400ms"How long an operation must take before the boss bar appears.
selection-particlestrueThe selection outline, drawn with particles and never with blocks: a plugin that draws with blocks is the one that leaves invisible barriers on somebody's server forever.
selection-color"#39d0ff"selection-refresh-ticks15How often the outline is redrawn. A dust particle lives a little over a second, so redrawing twice a second only draws the same outline on top of itself - and every point is one packet.
selection-max-points240The ceiling on points for the whole box, spread over the twelve edges in proportion to how long each one is.
Every point is one packet to one player. This used to be 600 at 10 ticks, which is 1200 packets a second for every builder holding a selection - on a build server with twenty of them, 24000 a second of nothing but outline. Raise it if your selections are huge and you have the bandwidth; the outline does not get more readable, only denser.
selection-view-range40How far a point is still worth sending, in blocks.
The client does not draw dust past about 32 blocks, so anything beyond that is a packet sent for something nobody can see. 40 leaves a margin, because the cut is measured from the player's feet.
horizon-range300How far a wand or a brush reaches.
fuzzy-max-blocks2000000The ceiling for the magic (connected blocks) selection.
Commands
commands1 keyworldedit-aliases"auto"The short WorldEdit style aliases: //set, //pos1, //brush.
auto - register them, unless WorldEdit or FAWE is installed force - register them anyway false - never
"auto" is the right answer: a server that already has WorldEdit should not have its commands taken away.
Schematics
schematics3 keyscache-size64How many parsed schematics stay in memory. Browsing a folder of a thousand files does not fill it: this is a count, not a size.
max-volume64000000A file larger than this is not a structure, it is a map.
allowed-entities[item_frame, glow_item_frame, painting, armor_stand, item_display, block_display, text_display, boat, chest_boat, minecart, chest_minecart]+8
Which entities may be recreated by a paste. A .schem arrives from the internet by way of an admin who did not write it: without this list, one could make a hundred primed creepers appear.
Worlds
Free edition: up to two managed worlds, empty (void) or vanilla. With a key: any number, and worlds generated from a pack. A pack world is never opened without a key: it stays on disk, untouched, and opens again as soon as a key is active.
worlds8 keysauto-loadtrueReopen the managed worlds at start-up, before anybody else opens them without a generator.
unload-empty-after"10m"Unload a managed world with nobody in it. 0 to never.
default-border0A border for new worlds. 0 = none.
read-only[ ]Worlds where nothing may be edited, whatever the permissions say.
delete-retention-days7A deleted world is renamed, not removed: this many days to change your mind before the folder really goes.
void-platformtrueThe void world: a glass platform at spawn, so nobody falls the moment they arrive.
void-platform-block"GLASS"void-biome"the_void"Packs
Looking at packs (/sedit pack list, info, problems) is free. Creating worlds from them, copying and resetting them need a key.
packs1 keyallow-commandsfalseWhether a structure may run commands when it is generated. FALSE by default: a pack downloaded from the internet must not be able to run anything.
Storage
Nothing to do: on first start a local H2 database appears in data/creator.mv.db. No user, no password, nothing to install.
Keep reading
If you have a MySQL and prefer it, set enabled: true and fill the fields. The tables create themselves on the first connection. (An external MySQL is a Premium feature; without a key the plugin stays on the local file and says so in the console, which for one server is the right choice anyway.)
Several servers on one database: not supported yet. Each server would open the other's managed worlds and resume its pregenerations. Give each server its own database (or table-prefix).
The database is still called "shadowcreator", like the tables (scr_) and the local file: it is the name of the data, which did not change when the plugin was renamed.
storage5 keystable-prefix"scr_"fallback-to-localtruestorage.mysql7 keysenabledfalsehost"127.0.0.1"port3306database"shadowcreator"username"root"password""parameters"useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC&characterEncoding=utf8"storage.pool5 keysmaximum-pool-size10minimum-idle2connection-timeout-ms10000idle-timeout-ms600000max-lifetime-ms1800000storage.h21 keyauto-serverfalseLicence
The key goes in license.yml, not here: a support request that says "send me your config" must not come with somebody's licence in it.
license2 keysgrace-days7Days of grace before dropping to the free edition when a subscription has just run out, or when the host binding matches nothing we can see (far more often a NAT than a thief).
resolve-public-iptrueAsks the ShadowMC licence service (/ip) which public address this server has: behind NAT it is the only way to recognise it. It answers with the address it sees, and nothing about the server is sent. Only when a licence is installed: a server without a key asks nobody. false = never ask.
UI
ui2 keysconfirm-timeout"30s"How long the [ Confirm ] button of a huge edit stays valid.
chat-timeout"30s"How long a menu waits for you to type an answer in chat.
Debug
debug2 keyslog-sqlfalseprofilertrueTime every command and edit for /sedit diag. Costs almost nothing.
bStats (anonymous usage statistics, https://bStats.org)
What is sent, every 30 minutes: a random server id (serverUuid, not derived from anything), the plugin version, the Minecraft/Paper and Java versions, the operating system and core count, the online mode, how many players are online (a number only) and the licence tier (free/premium/creator). NO player data: no names, no UUIDs, no addresses, no worlds.
Keep reading
false switches off this plugin only. enabled: false in plugins/bStats/config.yml switches off every bStats plugin on the server at once.
metrics1 keyenabledtrueLanguages
The texts the plugin shows to players, one file per language.
lang/
Texts and messages 2 files
lang/plugins/ShadowEdit/lang/ Every message the plugin shows to players, one file per language. The keys are not listed one by one: here are the files, how many texts they hold and the placeholders they use.
| File | Language | Texts |
|---|---|---|
lang/en_US.yml reference | English | 918 |
lang/it_IT.yml | Italiano | 918 |
Most used placeholders
The plugin replaces them with the right value: leave them written as they are.
<prefix><label><world><name><count><value><blocks><pattern><pack><radius><id><size><amount><biome>
Message groups
prefix1command14edit40selection46pattern17mask10clipboard7schem17history12brush83palette13navigation8flora2world49pack17pregen15genesis25general6status24help228license46confirm6prompt2menu218effect4structure8
Other
Ready-made content, examples, imports: the files you copy and edit as a model.
brushes/
Brushes 5 files
brushes/plugins/ShadowEdit/brushes/ 5 files with the same structure. Below, 2 of them in full, one for each different shape; the others are listed by name.
cliff.ymlhill.ymlmixed-forest.ymlmountain.ymlpath.yml
Example brushes/mountain.yml
File notes
The brush that raises a mountain in under a minute. Big radius, sharp falloff: the falloff is what makes the difference between a mountain and a dome.
typestampradius48.0strength0.8falloffSHARPpattern"stone"range300options5 keysstamp"mountain"height"40"palette"alpine"erosion"5"talus"44" Example brushes/mixed-forest.yml
File notes
Mixed forest. The minimum spacing and the slope limit are what make the difference between a wood and a sprinkling of trees.
typeforestradius16.0strength0.5falloffSMOOTHpattern"oak_log"range250options4 keystree"oak"density"0.14"spacing"4"max-slope"28" palettes/
Palettes 6 files
palettes/plugins/ShadowEdit/palettes/ 6 files with the same structure. Below, the most commented one in full, as a model; the others are listed by name.
alpine.ymlbeach.ymldesert.ymlmeadow.ymlnether.ymlrock.yml
Example palettes/alpine.yml
Alpine palette
File notes
This is the palette that explains all the others, so it is commented line by line.
Layers apply FROM THE TOP, starting at the first non-air block going down. Each one takes up its own depth; a layer that does not apply - because the height or the slope is wrong - still takes up its depth, and the next one goes underneath. Without that rule, snow that does not apply would push the grass up by one block exactly where the bare rock was supposed to be.
min-slope / max-slope are in DEGREES and they are the lines that matter: they decide where bare rock shows instead of grass, which is the difference between a mountain and a hill painted white on top.
name"Alpine"layers[{ blocks: snow_block, depth: 2, above-y: 165, max-slope: 38 }, { blocks: "4:stone,2:andesite,1:cobblestone,1:gravel", depth: 4, min-slope: 38 }, { blocks: grass_block, depth: 1, max-slope: 32 }, { blocks: "6:dirt,1:coa …+4
blocksSnow, high up only and only where it is not too steep: snow does not settle on a vertical wall, and putting it there anyway makes the whole range look like plaster.
blocksBare rock on the crags. Four blocks, because a single one lets the dirt show through the moment anyone digs.
blocksGrass in the hollows, and nowhere else.
blocksThe dirt under the grass.
blocksAnd then stone, all the way down. -1 means "to the bottom".
worlds/
Worlds 74 files
worlds/plugins/ShadowEdit/worlds/ 74 files with the same structure. Below, 4 of them in full, one for each different shape; the others are listed by name.
end/biomes/azure-fields.ymlend/biomes/chorus-forest.ymlend/biomes/crystal-shores.ymlend/biomes/deep-void.ymlend/biomes/end-barrens.ymlend/biomes/obsidian-spires.ymlend/biomes/shattered-isles.ymlend/biomes/void-gardens.ymlend/caves/default.ymlend/effects/default.ymlend/noise/caves.ymlend/noise/detail.ymlend/noise/terrain.ymlend/ores/default.ymlend/ores/extra.ymlend/pack.ymlend/regions/default.ymlend/spawns/default.ymlend/structures/default.ymlnether/biomes/ash-plains.ymlnether/biomes/basalt-spires.ymlnether/biomes/blackstone-ridges.ymlnether/biomes/crimson-groves.ymlnether/biomes/crystal-hollow.ymlnether/biomes/glowstone-caverns.ymlnether/biomes/magma-sea.ymlnether/biomes/soul-marsh.ymlnether/biomes/warped-groves.ymlnether/caves/default.ymlnether/effects/default.ymlnether/noise/caves.ymlnether/noise/detail.ymlnether/noise/terrain.ymlnether/ores/default.ymlnether/ores/extra.ymlnether/pack.ymlnether/regions/default.ymlnether/spawns/default.ymlnether/structures/default.ymloverworld/biomes/alpine-peaks.ymloverworld/biomes/alpine-slopes.ymloverworld/biomes/badlands.ymloverworld/biomes/birch-forest.ymloverworld/biomes/crystal-hollows.ymloverworld/biomes/dark-woods.ymloverworld/biomes/deep-dark-halls.ymloverworld/biomes/deep-ocean.ymloverworld/biomes/desert.ymloverworld/biomes/dripstone-caverns.ymloverworld/biomes/forest.ymloverworld/biomes/frozen-ocean.ymloverworld/biomes/fungal-depths.ymloverworld/biomes/lush-caverns.ymloverworld/biomes/magma-caves.ymloverworld/biomes/meadow.ymloverworld/biomes/ocean.ymloverworld/biomes/plains.ymloverworld/biomes/river.ymloverworld/biomes/snowy-taiga.ymloverworld/biomes/sunflower-plains.ymloverworld/biomes/swamp.ymloverworld/biomes/taiga.ymloverworld/caves/default.ymloverworld/effects/default.ymloverworld/noise/caves.ymloverworld/noise/detail.ymloverworld/noise/terrain.ymloverworld/ores/default.ymloverworld/ores/extra.ymloverworld/pack.ymloverworld/regions/default.ymloverworld/spawns/default.ymloverworld/structures/surface.ymloverworld/structures/underground.yml
Example worlds/overworld/noise/terrain.yml
The overworld terrain
File notes
This file does two things: it says WHICH noise feeds each of the six parameters, and it says how those parameters become a height.
The six parameters live in detail.yml and in this file. Three make the SHAPE (continentalness, erosion, peaks-and-valleys), three make the BIOME (temperature, humidity, weirdness). That separation is why you can change the biome map without touching the relief, and the other way round.
which noise for which parameter
continentalness"continentalness"erosion"erosion"peaks-valleys"peaks-valleys"temperature"temperature"humidity"humidity"weirdness"weirdness"density-3d"density"The 3D noise, which is what allows overhangs, natural arches and caves that open on the side of a hill. Without it the terrain is a height map and there is never anything above your head.
density-scale11.0How "steep" the change from solid to empty is. Lower = more vertical walls.
density-weight0.85How far the 3D noise is allowed to bend the surface. Above 1.2 the world starts to look like cheese.
The splines
A spline is a sentence written as a list of points. It passes THROUGH the points (Catmull-Rom), so "at -0.15 I want height 66" really does give height 66.
height-spline[[-1, -58], [-0.7, -42], [-0.45, -24], [-0.19, 58], [-0.15, 66], [0.05, 72], [0.3, 80], [0.55, 96], [0.8, 128], [1, 168]]+7
Continentalness sets the base height.
The two points near -0.19 and -0.15 are not a mistake: they are the CONTINENTAL SHELF. Two points at almost the same x with different heights make a step, and that step is what makes a coast a coast instead of a ramp that slides down for two hundred blocks.
erosion-spline[[-1, 82], [-0.75, 62], [-0.5, 44], [-0.2, 26], [0.1, 14], [0.45, 7], [1, 2]]+4
Erosion sets HOW MUCH RELIEF is allowed at that point.
It is the parameter that produces plains in the middle of a continent: where erosion is high the ground is flat even though continentalness would say mountain. Raising the last point (at -1) raises the mountains without touching anything else.
peaks-spline[[-1, -0.75], [-0.55, -0.35], [-0.15, -0.05], [0.15, 0.15], [0.5, 0.55], [0.8, 0.88], [1, 1]]+4
Peaks and valleys distributes that relief. Below zero are valleys, above are ridges; the curve is steep at the top because summits have to be few and sharp.
The rivers
A river here is not a biome: it is a SHAPE, and it has to run downhill.
max-terrain-height is the line that matters: above that height the effect switches off. Without it you find water channels at height two hundred, and that is the mistake people notice before any other.
rivers7 keysenabledtruenoise"river"threshold0.855How close to the river line you have to be. Higher = narrower and rarer rivers.
width7.0depth5bank-smooth9The banks: without this blend the river is a water canyon with walls three blocks tall.
max-terrain-height105 Example worlds/overworld/structures/surface.yml
The surface structures
File notes
HOW A STRUCTURE FINDS ITS PLACE
Not "at random per chunk": on a grid with a jitter, exactly the way Minecraft does it. Three things pure randomness does not give you: the minimum distance is respected without having to search for it, the spread is genuinely even with no clumps and no deserts, and it is deterministic - the same seed puts the hamlet in the same place, which is what lets it be pregenerated and found again.
rarity: "1 / 1600" is read as a distance in BLOCKS: roughly one every 1600 blocks. It is the only number most people ever change.
HOW IT SITS IN THE GROUND
You never write a height. terrain.fit decides:
AUTO looks at the ground and picks one of the ones below.
Leave it on AUTO unless you have a reason.
PLATFORM levels the footprint to the median height. For a
building with a flat floor.
FOUNDATION leaves the ground alone and extends the building
downwards until it meets it. For towers and pillars.
CARVE digs into the slope. For anything set into a hillside.
BLEND raises and lowers the ground around the edge so that it
joins the structure. The slowest, and the best looking.
NONE writes it exactly where it is told and nothing else.margin is how many blocks around the footprint get blended. Small margins leave a step; above about 8 you start to notice the ground being flattened.
LOOT is a table name, and the table is rolled when the chest is OPENED, not when it is generated: that way a chest that nobody ever finds costs nothing, and the contents follow the server's own tables.
hermit-tower8 keysname"Hermit's Tower"object"watchtower"biomes[meadow, alpine-slopes, alpine-peaks, taiga, snowy-taiga]+2
hermit-tower.placement3 keysrarity"1 / 1400"jitter0.65min-distance-any220hermit-tower.position3 keysmodeSURFACEanchorBOTTOM_CENTERrotationRANDOM_90hermit-tower.terrain7 keysfitFOUNDATIONFOUNDATION and not PLATFORM: a tower on a slope should grow a taller base on the downhill side, not flatten the slope.
max-slope34max-height-difference14clear-above6margin3palette"rock"remove-floatingtruehermit-tower.contents2 keysloot[{ at: "marker:top", table: "minecraft:chests/stronghold_corridor", chance: 1 }, { at: CHEST, table: "minecraft:chests/simple_dungeon", chance: 0.8 }]+1
spawners[{ at: SPAWNER, mob: skeleton, delay: […], cou…]hermit-tower.gameplay1 keydiscovery-message"structure.found.hermit-tower"hermit-tower:
ruined-tower, forest-shrine, bandit-campforest-ruins7 keysname"Forest Ruins"object"ruin-pillars"biomes[forest, birch-forest, dark-woods, plains, taiga, meadow]+3
forest-ruins.placement3 keysrarity"1 / 700"jitter0.8max-per-chunk1forest-ruins.position5 keysmodeSURFACEy-offset-1-1: the ruins sink a block into the ground. A ruin sitting exactly on the surface reads as a model placed on a table.
anchorBOTTOM_CENTERrotationRANDOMmirrorRANDOMforest-ruins.terrain5 keysfitBLENDmax-slope24max-height-difference9clear-above3margin5forest-ruins.contents1 keyloot[{ at: CHEST, table: "minecraft:chests/simple_…]desert-ruins8 keysname"Buried Ruins"object"desert-ruin"biomes[desert, badlands]desert-ruins.placement3 keysrarity"1 / 1500"jitter0.6min-distance-any260desert-ruins.position4 keysmodeSURFACEThe visible part is four blocks of rubble; everything else hangs below it. The anchor is therefore the top, not the bottom.
anchorTOP_CENTERy-offset-1rotationRANDOM_90desert-ruins.terrain6 keysfitCARVEmax-slope20max-height-difference10clear-above2margin3palette"desert"desert-ruins.contents2 keysloot[{ at: CHEST, table: "minecraft:chests/desert_…]spawners[{ at: SPAWNER, mob: husk, delay: […], count:…]desert-ruins.gameplay1 keydiscovery-message"structure.found.desert-ruins"mountain-hamlet8 keysname"Hamlet"object"hamlet"biomes[plains, sunflower-plains, meadow, forest, alpine-slopes]+2
mountain-hamlet.placement3 keysrarity"1 / 3200"Rare on purpose: a hamlet every eight hundred blocks stops being a discovery and becomes scenery.
jitter0.5min-distance-any700mountain-hamlet.position2 keysmodeSURFACErotationRANDOM_90mountain-hamlet.terrain7 keysfitPLATFORMA whole village has to stand on level ground: PLATFORM, a wide margin, and a slope limit low enough that it never lands on a hill.
max-slope12max-height-difference12clear-above8margin8palette"meadow"remove-floatingtruemountain-hamlet.contents2 keysloot[{ at: CHEST, table: "minecraft:chests/village…]mobs[{ mob: "minecraft:villager", at: "marker:spawn", count: […] }, { mob: "minecraft:iron_golem", at: "marker:spawn", count: […] }, { mob: "minecraft:cat", at: "marker:spawn", count: […] }]+2
mountain-hamlet.gameplay1 keydiscovery-message"structure.found.hamlet"mine-entrance7 keysname"Mine Entrance"object"mine-entrance"biomes[meadow, alpine-slopes, taiga, snowy-taiga, badlands, plains, forest]+4
mine-entrance.placement3 keysrarity"1 / 1200"jitter0.7min-distance-any200mine-entrance.position4 keysmodeSURFACEThe anchor is the top: the shaft below is what has to reach the caves, and the head frame is what has to sit on the ground.
anchorTOP_CENTERy-offset-3rotationRANDOM_90mine-entrance.terrain5 keysfitFOUNDATIONmax-slope28max-height-difference14clear-above6margin3mine-entrance.contents2 keysloot[{ at: CHEST, table: "minecraft:chests/abandon…]spawners[{ at: SPAWNER, mob: cave_spider, delay: […],…]shipwreck7 keysname"Shipwreck"object"shipwreck"biomes[ocean, deep-ocean, frozen-ocean]shipwreck.placement3 keysrarity"1 / 1000"jitter0.8min-distance-any150shipwreck.position3 keysmodeOCEAN_FLOORrotationRANDOMmirrorRANDOMshipwreck.terrain6 keysfitFOUNDATIONOn a seabed the fit has to be gentle: a platform under a wreck is visible from a long way off through the water.
max-slope30max-height-difference8clear-above0margin2remove-floatingfalseshipwreck.contents1 keyloot[{ at: "marker:loot", table: "minecraft:chests/shipwreck_treasure", chance: 1 }, { at: CHEST, table: "minecraft:chests/shipwreck_supply", chance: 0.9 }]+1
floating-island8 keysname"Floating Island"object"floating-island"biomes[meadow, alpine-peaks, alpine-slopes, plains]floating-island.placement3 keysrarity"1 / 6000"The rarest thing in the pack. Seeing one has to mean something.
jitter0.4min-distance-any1200floating-island.position3 keysmodeFLOATINGy-offset46Above the terrain, not above sea level: over a mountain it stays over the mountain.
rotationRANDOM_90floating-island.terrain4 keysfitNONEclear-above0margin0remove-floatingfalsefloating-island.contents1 keyloot[{ at: CHEST, table: "minecraft:chests/end_cit…]floating-island.gameplay1 keydiscovery-message"structure.found.floating-island" Example worlds/overworld/noise/detail.yml
The overworld noises
File notes
Every noise has a name, and the rest of the pack calls it by name.
The two knobs that matter:
scale SMALLER = BIGGER shapes. 0.0008 is continents, 0.05 is
pebbles.
warp moves the sampling point with another noise. On its own it
is worth half the realism: without it ridges run parallel
and you can see they were generated; with it they wander
and fork.the three shape parameters
continentalness7 keysThe continents. Tiny scale: a landmass has to last for thousands of blocks.
typesimplexscale0.00075octaves4persistence0.5lacunarity2.13Not exactly 2.0: with an integer lacunarity the octave maxima always land on the same points, and on a large map that shows up as a grid.
salt11continentalness.warp2 keysnoise"warp-large"strength340.0erosion7 keysHow much relief is allowed. Bigger than continentalness: an eroded region is smaller than a continent.
typesimplexscale0.0014octaves3persistence0.45lacunarity2.07salt23erosion.warp2 keysnoise"warp-medium"strength160.0peaks-valleys7 keysThe ridges. Ridged, because that is what produces edges instead of bumps: it is the difference between mountains and large hills.
typeridgedscale0.0034octaves4persistence0.52lacunarity2.11salt37peaks-valleys.warp2 keysnoise"warp-medium"strength90.0the three climate parameters
Different scales from each other, and deliberately not multiples: temperature and humidity on the same scale would produce a chequerboard of biomes.
continentalness:
temperature, humidity, warp-mediumweirdness4 keysWeirdness forks the variants: it is what decides between birches and oaks at the same climate.
typesimplexscale0.0021octaves2salt89the service noises
warp-large4 keysThe two warps. Very different scales: one moves the continents, the other ripples the edges.
typesimplexscale0.00042octaves2salt101river5 keysThe rivers. The value the terrain uses is 1 - |this|, that is, a thin line where the noise crosses zero.
typesimplexscale0.0016octaves2salt107river.warp2 keysnoise"warp-medium"strength120.0density6 keysThe 3D density: overhangs and arches.
typesimplexscale0.0095octaves3persistence0.42lacunarity2.09salt109alpine-detail5 keysMountain detail: gullies and scree.
typeridgedscale0.021octaves3persistence0.5salt113dune-detail4 keysDune detail.
typebillowscale0.016octaves2salt127mesa-detail4 keysThe terraces of the badlands.
typesimplexscale0.011octaves2salt131clumping4 keysTree clumping: without it they fall like salt on a table.
typesimplexscale0.013octaves2salt137surface-wobble4 keysThe ragged border between surface layers.
typesimplexscale0.08octaves1salt139region4 keysWhich climate region. There is only one here, but the noise is already in place for anyone who wants two.
typesimplexscale0.00031octaves1salt149 Example worlds/overworld/pack.yml
Shadow Overworld
File notes
A realistic overworld: what a vanilla world would look like if somebody had spent a week fixing its relief.
Every file in this pack is commented. If you are reading because you want to change something, the three edits that give the most result for the time spent are, in order:
1. biomes/*.yml -> surface: the surface palettes change how the world looks more than anything else does. 2. structures/*.yml -> rarity: dropping YOUR schematics into objects/ and declaring them here is the step that makes the world yours. 3. noise/terrain.yml -> erosion-spline: raising its last point raises the mountains without breaking anything else.
After every edit: /sedit pack reload overworld
pack-version1id"overworld"name"Shadow Overworld"author"ShadowMC"description"Real mountains, rivers that run downhill, an underground with a plan."dimensionOVERWORLDmin-y-64The height limits. -64/320 are Minecraft's own since 1.18: changing them means a world that can no longer be opened with a different pack.
max-y320sea-level63sea-block"water"seed2 keysmodeRANDOMRANDOM: every world created from this pack gets its own seed. FIXED: every world from this pack is the SAME world.
value0spawn3 keysmodeSEARCHSEARCH spirals out from the origin looking for a solid column, out of the water, in one of the biomes listed. Without the list it settles for the first solid column, and that is often a cliff.
search-radius3000require-biome[plains, meadow, forest, sunflower-plains]vanilla4 keysWhat to let Minecraft do.
Vanilla structures are off because a vanilla village inside a custom world is spotted instantly: it is the one thing that looks like it came from another game. Ours live in structures/.
structuresfalsedecorationsfalsemobstrueNatural mob spawning stays on: OUR rules add to it, they do not replace it.
bedrocktrueperformance2 keyscache-columns4096structure-search-chunks2