World Reset Engine¶
The plugin provides a world reset engine that can be used to reset the match area. It works through partitioning the world into configurable cells and creating fresh matches on unused ones. This allows for practically infinite matches to run on just one world, which is:
- a clean solution compared to manually regenerating a world
- more performant than world resets other plugins offer
- far less likely to break on updates
The world reset engine can be configured in the config.yml file.
Setup Guide¶
- Enable the
settings.world-engine.enabledoption inconfig.yml. - Set the
settings.world-engine.target-worldoption to the name of the world you want to reset. The default should work for most servers. - Set the
settings.world-engine.lobby-teleportoption to the location you want players to be teleported to after the world is reset. The default should work for most servers. - Restart the server to apply the changes.
- Check
/datapack listand make sure thejmanhunt_world_enginedatapack is enabled. If not, enable it with/datapack enable jmanhunt_world_engine. If it's still red, restart again. - Test the world engine by starting a match and checking if the teleportation and cell algorithm works correctly.
On-Fetch-New-Cell Commands¶
Under settings.world-engine.on-fetch-new-cell, you can configure console
commands that run whenever a new cell is allocated for a match. The
placeholders <cellX> and <cellZ> are replaced with the cell's block
coordinates. This is useful for pre-generating the cell area with
chunk-generation plugins such as Chunky before players teleport in.
settings:
world-engine:
on-fetch-new-cell:
- "chunky center <cellX> <cellZ>"
- "chunky radius 500"
- "chunky start"
The commands run when a match ends (after the match goes inactive) and when the autostart countdown begins, giving chunk-generation plugins time to pre-generate the next cell before players teleport in. They only run once per match intermission, so the cell is fetched exactly once between matches.
World Border¶
Under settings.world-engine.world-border, you can enable a world border that
confines players to their assigned cell. This prevents players from wandering
into unused or already-used cells.
The start-border sub-section provides a smaller initial border that expands
to the full cell size when the game begins. This is only active when both
world-border.enabled and start-on-speedrunner-damage.enabled are true.
start-border.radius: Initial border radius in blocks. The actual diameter used ismax(this, tp-spread-radius + 1) * 2, ensuring players never spawn outside the border. Set to-1to usetp-spread-radius + 1only. Default:10start-border.fadeout-time: Time in seconds for the start border to animate expanding to cell size. Set to0or-1to skip the animation and snap to cell size immediately. Default:5
Troubleshooting¶
Q: The datapack stays red and won't enable no matter what I do.
A: Regenerate JManhunt/settings/world-engine by deleting it and restarting
the server. Open an issue on GitHub with the relevant exception in server
logs.
Q: Strongholds are generating in non-vanilla places.
A: This is a deliberate feature, not a bug. The world engine uses a custom stronghold spread algorithm. You cannot switch to the vanilla stronghold spread algorithm because this would make certain cells unbeatable after a certain point.
Q: I want to disable the world engine.
A: Set settings.world-engine.enabled to false in config.yml and disable
the jmanhunt_world_engine datapack with
/datapack disable jmanhunt_world_engine.
Q: Will this work in [specific Minecraft version]?
A: This feature is tested to work on 26.2. If the plugin is marked to support a newer version and you encounter issues, please open an issue on GitHub with the relevant exception in server logs.