Copy cuboid regions to files. Paste them back exactly where you mean to — anchored to your position.
Copy Paster is a Fabric client + server mod for survival and creative builders who want a fast, visual way to duplicate structures without leaving the game. Select a box with keybinds, name it in chat, then paste it later — position follows where you stand at copy time and paste time, so offsets stay intuitive.
[/]copy — two corners, live wireframe preview, name in chat- Paste options — absolute coords, rotation, mirror, skip air, overwrite confirm
- Paste ghost preview — cyan box when blocks would be overwritten (respects rotation/mirror)
- Undo —
/pasteundorestores the last paste (in-memory until restart) - Ukrainian (
uk_ua) — full UI strings alongside English - Configurable limits — server
copypaster-server.yml; client highlight + preview cap viacopypaster.ymlor Mod Menu - Web UI (optional) — browser 3D viewer/editor with texture-accurate block preview, palette remap, voxel paint
Maintainer docs:
CLAUDE.md· Release notes:CHANGELOG.md
| Where | What |
|---|---|
| Dedicated server | copy_paster-<version>.jar in mods/ + Fabric API |
| Each player who copies | Same JAR in client mods/ + bind [ / ] under Options → Controls → Miscellaneous |
Server-only mode: /paste, /copylist, /copyinfo, /copydelete, /copyweb, and the web UI still work. World copy requires the client mod and keybinds.
Optional: Mod Menu + Cloth Config for in-game client settings.
Optional: LuckPerms — grant copypaster.* nodes to non-ops; vanilla operators are always allowed (copy + commands).
- Stand at the anchor point you want for this copy.
- Bind and press
[on corner 1, then]on corner 2 (wireframe follows your crosshair for the end corner). - Type a structure name in chat (
a–z,0–9,_,-, max 64 chars). Typecancelto abort (timeout from server config, default 60 s).
- Stand in the same relative spot you used when copying (or use
at— see below). /paste <name>— if the ghost warns about overwrites, run the suggested… confirmcommand.- Save the undo ID from chat for
/pasteundo <id>.
Examples:
/paste house
/paste house at 100 64 -20
/paste house rotate 90 mirror left_right noair confirm
| Command | Description |
|---|---|
/paste <name> |
Paste at player-relative anchor |
/paste <name> at <x> <y> <z> |
Paste with min corner at world coordinates |
/paste <name> rotate <90|180|270> |
Rotate before placing |
/paste <name> mirror <left_right|front_back> |
Mirror before placing |
/paste <name> noair |
Skip air blocks in the structure (do not clear destination air) |
/paste <name> … confirm |
Paste after overwrite warning (modifiers can be combined) |
/pasteundo <id> |
Restore blocks from one paste |
/copylist |
List saved structures |
/copyinfo <name> |
Size, dimension, offset, metadata |
/copydelete <name> |
Remove .nbt + .json |
/copyweb |
Print web UI URL (when enabled) |
Access: vanilla operator always has full access. With LuckPerms installed, non-ops need the nodes below:
| Node | Allows |
|---|---|
copypaster.copy |
[ / ] region copy (C2S) |
copypaster.paste |
/paste |
copypaster.pasteundo |
/pasteundo |
copypaster.copylist |
/copylist |
copypaster.copyinfo |
/copyinfo |
copypaster.copydelete |
/copydelete |
copypaster.copyweb |
/copyweb |
Optional browser interface for saved structures. Disabled by default.
| Feature | Description |
|---|---|
| 3D viewer | Orbit + WASD pan, layer slider, isometric toggle |
| Colors / Textures | Map-color cubes or Minecraft 1.21.4 textures (cutout, glass, entity blocks) |
| Palette remap | Replace one block type with another across the structure |
| Voxel paint | Click blocks to repaint or erase |
| Download | Export edited .nbt |
- On the server, edit
config/copypaster-server.yml:limits.maxVolume/limits.sessionTimeoutSeconds(optional)web.enabled: trueweb.port: 8792(default)web.bind: 127.0.0.1(or0.0.0.0for LAN/VPN)web.publicHost: 192.168.50.100(optional URL hint in logs)- Copy
web.authTokenfor the browser login screen
- Restart the server. Run
/copywebin-game for the URL. - Open the URL, paste the token, select a structure, edit, Save — then
/pastein-game as usual.
Build embedded assets: ./gradlew buildWeb (included in ./gradlew jar). After a server update, hard-refresh the browser (Ctrl+Shift+R).
| Input | Action |
|---|---|
[ |
Set corner 1 (look at a solid block) |
] |
Set corner 2 and send region to server |
| Chat name | Save structure after corners are set |
cancel in chat |
Abort naming session |
Keybinds are unbound by default — assign under Options → Controls → Miscellaneous → Copy Paster.
| Input | Action |
|---|---|
| Drag | Orbit camera |
| Scroll | Zoom |
| W / A / S / D | Pan (click viewer first) |
| Q / E | Down / up |
| Max volume | limits.maxVolume in server config (default 32 768); client preview cap in config/copypaster.yml |
| Copy session timeout | limits.sessionTimeoutSeconds in server config (default 60) |
| Files | Server copypaster/structures/ — <name>.nbt + <name>.json |
| Undo | In memory only; cleared on server restart |
| Highlight colour | Client config/copypaster.yml |
./gradlew clean jar
# → build/libs/copy_paster-<version>.jarRequires Java 25. See CLAUDE.md for deploy runbook (Fabric on gserver).
Planned work — not implemented yet.
- Paste with physics — no air below pasted blocks (support blocks stay filled)
- Persistent undo — survive server restarts
- Copy locator metadata — store capture origin and last paste in
.json; expose in/copyinfoand the web UI
- Sign text, item frames, and paintings in 3D
- More modded blocks — texture and display handling beyond vanilla + current fallbacks
- Banner pattern composing — full pattern NBT on banner geometry (not base dye only)
- Performance mode for huge structures — LOD or cull distant voxels
See repository license file if present; otherwise treat as private CrazyHouse tooling until a license is added.
