Cell & Spawns¶
For: intermediate admins tuning maps, plus advanced users sizing cells.
The game world, the size of each spiral cell, where players spawn inside a cell, and where they return after a match:
world-engine:
enabled: false
general:
world-name: world
cell-size: 10000
tp-spread-radius: 5
cell-layout: SPIRAL
spawnpoint-algorithm:
enabled: true
search:
max-retries: 8
y-tolerance: 7
spawn-close-to-structure:
enabled: false
structures: [VILLAGE, TEMPLE, SHIPWRECK, RUINED_PORTAL]
attempts: 3
max-distance: 125
When enabled, matches teleport participants to a fresh cell on start
and return them to the lobby at the end. Spectators travel along and
land on the shared spectator spawn. Enabling it also spreads
strongholds past the vanilla
128-per-world limit; tweak the rates in
settings/world-engine/strongholds.json.
world-name is the world partitioned into cells. Leave it on the
default overworld unless you have a reason not to.
Cell Size¶
cell-size is the size of one spiral cell in blocks, hard-capped at
50,000. Do not go below 5,000, and do not change it after cells have
already been generated: every size lays its own grid, so cells from two
sizes can overlap and clip into each other.
Cell Index¶
The engine hands out cells from a persistent counter. Inspect it with
/manhunt worldengine cellindex get and overwrite it with
/manhunt worldengine cellindex set <value>. Set values clamp to the
addressable grid; if the counter ever grows past it, it restarts at
zero on the next fetch with a console warning telling you to reset the
world manually. The capped grid always stays inside the vanilla world
border at every cell size.
Cell Layout¶
cell-layout decides where each counter value lands on the grid:
SPIRAL(default) hands out adjacent cells marching outward from the origin. It is predictable (cell 12 sits next to cell 11) and keeps match areas inside a small set of region files, which keeps the on-disk footprint tight and manual cleanup easy.SCATTERshuffles every index through a seeded permutation, so consecutive matches land far apart instead of side by side. Players cannot predict or pre-explore where the next match will be, and chunk generation spreads across the whole grid instead of hammering one growing frontier. It is still a true permutation: no cell repeats until every addressable cell has been used once.
Scatter costs vs spiral: match areas land in many region files (larger footprint, harder manual cleanup), and locations are not guessable from the index. Only switch layouts with no live matches: running matches remap immediately, and cells from before the switch may overlap new ones.
Spawn Spread¶
tp-spread-radius is the radius around each cell center used when
picking player spawns. Keep it between 5 and 15; it hard-caps at
cell-size / 2. The Start Border uses this
value in its size calculation.
Mid-match joiners scatter the same way: into the match cell when the engine runs it, or around the recorded start center when it does not. Joiners also arrive vulnerable: any leftover game-end invulnerability is cleared on entry, so released holds play fair.
Spawnpoint Algorithm¶
Validates every spawn: below tree leaves, with air at the feet and head blocks (grass and torches count as air; pressure plates do not). Water, lava, and powder snow are never picked, and ocean and lava cells are skipped when fetching. The spawning block below is never lava: solid ground wins, and water ground is a last resort when no solid roll exists.
Spawns are height-leveled around the median roll within y-tolerance,
re-rolling up to max-retries times. Turn the algorithm off for plain
highest-block spawns.
Obstructed Respawn Re-picks¶
When a death-respawn pin is missing or blocked, the plugin re-picks around living teammates, falling back to enemies when none are alive. Holds re-pick both when the hold starts and when it releases, so mid-hold grief cannot strand anyone.
Spawn Close to Structure¶
Keeps a cell only when a listed structure sits within max-distance
(50 to 200, default 125) blocks of it. Each fetch runs up to attempts
lookups (1 to 5, default 3); on exhaustion the last passing spawn is
kept. Allowed words:
VILLAGE: any village typeTEMPLE: desert pyramid or jungle pyramidSHIPWRECK: ocean or beachedRUINED_PORTAL: any ruined portal variantBURIED_TREASUREMINESHAFT: regular and mesaOCEAN_MONUMENTMANSIONPILLAGER_OUTPOST
Unknown words are skipped with a warning. Keep the list focused: each lookup costs performance on cell fetch. Pair this with the overworld structure boosts.
Lobby Teleports & Bounds¶
Lobby teleport points, boundary boxes, and upkeep live on their own page now: see Multi-Lobby Boundaries.
The fastest way to get a lobby is /manhunt worldengine tpto lobbyworld,
run twice: it generates the jmh_lobby void world (filled by the
DEFAULT preset, or the preset you name) and points lobby 0 at the
spawn automatically.
Set advanced.lobbies.general.lobby-world-name to use your own world instead.