WorldEditCopier¶
A staff tool that copies very large builds between servers. It saves a region as many small WorldEdit schematics and pastes them back one piece at a time, so the server does not freeze.
What it does¶
- Export cuts a box (or a polygon footprint) into cubes and saves each cube as its own Sponge v3
.schemfile, plus amanifest.jsonthat lists them. One cube is saved per server tick task, with a short delay between them. - Import reads that manifest and pastes the cubes one at a time, with a delay between pastes.
- Block entity data (chests, signs, Pixelmon blocks, furniture models) is kept automatically.
- Jobs can be listed and cancelled while they run. Tab completion covers names, coordinates, delays, flags and job IDs.
Why not //copy and //schem save? WorldEdit holds the whole selection in memory and fills it in
one go on the main thread. That is fine for a house. A 758 x 314 x 821 landmass is 195 million
blocks and would stall the server.
This Bukkit plugin is the supported version. The older NeoForge mod (Mods/World Edit Copier/) is
retired.
How players use it¶
Players do not use this plugin. It is a staff tool.
Staff guide¶
Permissions (all ops by default): wecopier.export, wecopier.import, wecopier.status,
wecopier.cancel. On build, the architect rank holds wecopier.*. A non-op also needs a
wecopier CommandWhitelist entry.
/wecopier export rectangle <name> <x1> <y1> <z1> <x2> <y2> <z2> [fragmentSize] [delayMs] [flags]
/wecopier export polygon <name> <minY> <fragmentSize> <x,z;x,z;...> [delayMs] [flags]
/wecopier import <name> <x> <y> <z> [delayTicks] [flags]
/wecopier status
/wecopier cancel <jobId>
/wecopier tp <world> <x> <y> <z>
Move a build from one server to another¶
- Stand in the right world. Export reads from your current world. Run it from the wrong world and you get a perfect-looking export of the wrong place, with no error.
- Export with biomes on:
/wecopier export rectangle snowy_taiga 1200 -64 -900 1957 250 -80 64 50 -be - Watch progress with
/wecopier status. It prints the job ID,progress=done/total, and the next file. - Copy the whole folder
world/wecopier_exports/snowy_taiga/to the target server. The ops repo scriptscripts/transfer_wecopier_export.shdoes this, prints the source world and min corner, and refuses an export that is all air. - On the target, stand in the destination world and import at the min corner:
/wecopier import snowy_taiga 1200 -64 -900 40 -bc - When it finishes, click the chat message (or run
/wecopier tp ...) to jump to the paste.
Polygon export¶
/wecopier export polygon spawn_isle 40 64 100,100;300,120;250,400;80,350 50 -be
The shape is a column over the footprint, from minY up to the top of the world. Everything outside
the shape becomes structure_void, so it is not pasted.
Flags¶
Export and import read the same flags. Short flags can be grouped, like -be.
| Flag | Effect | Default |
|---|---|---|
-e / --entities, -E / --no-entities |
Copy entities on or off | on |
-b / --biomes, -B / --no-biomes |
Copy biomes on or off | off |
-a / --ignore-air |
On export: turns air into structure_void. On import: skips air when pasting. Not a faithful copy; use for overlays |
off |
-v / --include-void |
Paste structure_void instead of skipping it |
off |
-c / --clear-region |
Import only. Clears blocks and removes non-player entities in each cube's box before pasting | off |
For a faithful copy: -be on export, -bc on import. Biomes are off by default, and a wrong
biome is easy to miss.
When to use -c. Use it when pasting over something that is already there, such as restoring a
build from a backup at the same spot. Without it, WorldEdit keeps an existing block entity when the
new block is the same type, so modded data is not refreshed. Immersive Furniture then shows as
solid black. -c also stops armor stands, item frames and paintings from doubling up. Players
are never removed. It is off by default so layered pastes still add on top of each other.
Sizes and delays¶
| Setting | Default | Range | Advice |
|---|---|---|---|
fragmentSize (cube edge) |
32 | 1 to 128 | 64 is a good default, even on production. 128 stalls for seconds per cube |
export delayMs |
50 | 1 to 5000 | |
import delayTicks |
20 (1 second) | 1 to 1200 | On production use 40 (2 seconds) |
Example: a 195 million block region at size 64 is 780 cubes, about 26 minutes at 40 ticks.
Cancel a job¶
/wecopier status lists job IDs. Then /wecopier cancel 3f2a... with the full ID.
Configuration¶
None. The plugin has no config file. Limits and defaults are set in code.
Data and storage¶
Exports are saved in the main world's folder, not WorldEdit's schematics folder:
world/wecopier_exports/<name>/manifest.json
world/wecopier_exports/<name>/fragment_00000.schem ...
- An export deletes any existing folder with the same name first. Give every region its own name.
- The import needs the manifest, so always copy the whole folder.
- Old export folders are safe to delete when you no longer need them.
Troubleshooting¶
| Symptom | Cause | Fix |
|---|---|---|
| Import pasted air or the wrong place | The export was run from the wrong world | Check dimension in manifest.json before copying. Re-export from the right world |
| Paste lands in the wrong spot | Import coordinates are the min corner, not your position | Use the source min corner (sourceOrigin in the manifest) to put it back where it was |
| Paste went into the wrong world | Import uses your current world (console uses the main world) | Stand in the destination world |
| Furniture shows solid black after re-paste | Old block entity data was kept | Re-import with -c |
| Wrong weather or mob spawns after a move | Biomes were not copied | Re-export with -b and import with -b |
Could not find manifest at ... |
The folder was not copied, or the name is wrong | Copy the whole export folder |
| Some modded blocks are missing | The target server lacks that mod | Check that both servers run the same mods |
Boot log line: WorldEditCopier enabled. If WorldEdit is missing it logs
WorldEdit plugin not found and disables. Each job also logs progress lines tagged
[Export <id>] or [Import <id>].
There is no undo. The plugin's edit sessions have no player attached, so //undo cannot reverse
an import or a -c clear. A server backup is the only rollback. Take one before a large import.
Maintainer notes¶
- Pastes run with WorldEdit's neighbor updates, block updates and validation turned off, so no physics cascades fire.
- The
-cclear runs in its own edit session that is flushed before the paste session starts. Doing both in one session lets WorldEdit merge "set air, then set the same block" into nothing, which keeps stale block entity data. - Claims, WorldGuard regions and CoreProtect history are not in a schematic and do not move.
manifest.dimensionis for information only; import does not use it.tpis not in tab completion or the usage line. It needswecopier.importand is the target of the clickable message after an import.- Full ops write-up with a worked example and traps:
documentation/operations/wecopier-build-to-main.mdin the ops repo.
Building¶
./gradlew clean build
Java 21. Output: build/libs/WorldEditCopier-1.0.0.jar. Compiles against the Spigot API and
WorldEdit 7.3.8 (not shaded). The server must have WorldEdit installed.
Full command, permission and config tables: Reference.