Seed tools like Chunkbase read your world seed and show where every village, stronghold and monument spawns. StructureShift moves each structure type 1000 to 1250 blocks away from that spot when new chunks generate, so a cracked seed points players at empty land.
Each structure type gets its own direction and distance, taken from a random secret stored in the world folder. Finding one village does not tell anyone where the strongholds or mansions went. /locate, eyes of ender, explorer maps and dolphins all follow the new positions, so normal play is unchanged.
Permissions#
| Permission | Lets a player | Default |
|---|---|---|
structureshift.admin | Use every /structureshift command. | OP |
Commands#
The base command also works as /sshift.
| Command | What it does | Permission |
|---|---|---|
/structureshift | Shows the command list. | structureshift.admin |
/structureshift info [world] | Lists every shifted structure set in a world with its distance and offset. Uses your current world when you leave it out. | structureshift.admin |
/structureshift reload | Reloads config.yml. | structureshift.admin |
Configuration#
| File | What it holds |
|---|---|
plugins/StructureShift/config.yml | Shift distances, worlds, exclusions and every message. |
plugins/StructureShift/license.yml | Your license key and the update check toggle. |
<world>/structureshift.yml | The random secret for that world. Created on first load. |
| Key | What it does | Default |
|---|---|---|
settings.min-distance | Shortest distance a structure type moves, in blocks. | 1000 |
settings.max-distance | Longest distance a structure type moves, in blocks. | 1250 |
settings.shift-strongholds | Moves strongholds too. Eyes of ender lead to the moved ones. | true |
settings.enabled-worlds | Worlds to shift, by name. '*' means every world. | ['*'] |
settings.excluded-structures | Structure sets to leave where the seed puts them. | [] |
Entries in excluded-structures can be a full key (minecraft:villages), a bare name (villages) or a whole namespace (terralith:*). /structureshift info prints the exact keys used in your world.
Warning
Pick your distances before players explore. The offsets come from the secret plus these two values, so changing them, or deleting structureshift.yml, moves every structure again. Structures can then get cut off where already generated chunks meet new ones.
/structureshift reload applies new settings to worlds loaded after the reload. Worlds that are already loaded keep their current offsets until the next restart.
Install#
- Stop the server and put
StructureShift.jarinplugins/. - Start the server once. It creates
config.ymlandlicense.yml, then stops loading because no key is set. - Put your key in
plugins/StructureShift/license.ymlaslicense-key: 'YOUR-KEY'. - Restart the server. The console prints
Shifted N structure sets in <world>.for every world it handles.
StructureShift loads before the worlds, so default worlds are covered from the first chunk. Worlds created later by a world manager are shifted when they load.
How structures move#
Every structure set that uses the normal spread placement moves: villages, temples, monuments, mansions, outposts, mineshafts, ancient cities, trial chambers, buried treasure, ruined portals, shipwrecks and the rest. The whole placement grid for that type moves by its offset, so structures keep their usual spacing from each other.
A structure only spawns at its new spot when that biome allows it, exactly like vanilla. A desert temple moved into an ocean does not spawn, and a spot that was ocean on the seed map can get a temple.
The Nether and the End are shifted the same way, each with its own secret.
Strongholds#
Strongholds stay on their rings but every ring position moves by the stronghold offset. Turn this off with shift-strongholds: false.
Already generated chunks#
Chunks that exist before you install the plugin keep the structures they already have. Only new chunks get the moved layout, so install it on a new world, or on one where most of the map is still unexplored.
Datapacks#
Structure sets added by datapacks are moved too. It is tested with Terralith, Tectonic and JJThunder To The Max, alone and combined. Rules that keep one structure type away from another, such as Terralith's fortified villages avoiding normal villages, follow the moved positions.
Datapacks have to be in world/datapacks before the world is created, the same as without StructureShift.
Troubleshooting#
A structure is exactly where Chunkbase shows it: the chunk was generated before StructureShift was installed, or the world is not in enabled-worlds. Check with /structureshift info <world>.
The console says the server version is not supported: StructureShift needs Paper or Purpur 1.21 or newer. Spigot is not supported.