Skip to content
BlazeZDocs

StructureShift

Moves every generated structure 1000 or more blocks from where the world seed puts it.

Version
1.0.1
Runs on
Paper, Purpur
Minecraft
1.21+
Java
17+
On this page

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#

PermissionLets a playerDefault
structureshift.adminUse every /structureshift command.OP

Commands#

The base command also works as /sshift.

CommandWhat it doesPermission
/structureshiftShows 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 reloadReloads config.yml.structureshift.admin

Configuration#

FileWhat it holds
plugins/StructureShift/config.ymlShift distances, worlds, exclusions and every message.
plugins/StructureShift/license.ymlYour license key and the update check toggle.
<world>/structureshift.ymlThe random secret for that world. Created on first load.
KeyWhat it doesDefault
settings.min-distanceShortest distance a structure type moves, in blocks.1000
settings.max-distanceLongest distance a structure type moves, in blocks.1250
settings.shift-strongholdsMoves strongholds too. Eyes of ender lead to the moved ones.true
settings.enabled-worldsWorlds to shift, by name. '*' means every world.['*']
settings.excluded-structuresStructure 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#

  1. Stop the server and put StructureShift.jar in plugins/.
  2. Start the server once. It creates config.yml and license.yml, then stops loading because no key is set.
  3. Put your key in plugins/StructureShift/license.yml as license-key: 'YOUR-KEY'.
  4. 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.