SchemFlow
Lightning‑fast schematic management for Minecraft servers (S3/MinIO-backed).
Quick challenge
How far can you run before the mobs catch you?
Minecraft check
Confirm your run
Complete the quick check to get your code.
SchemFlow
🌊 SchemFlow
Cloud‑native schematic manager for Paper/Purpur 1.21+. Purpose‑built for multi‑server networks and automated build pipelines: push once to S3/MinIO, every node can fetch/paste instantly. 100% backed by S3‑compatible object storage (AWS S3, MinIO, Cloudflare R2, Wasabi, etc.) — no shared disk, no rsync, no manual copying. Includes group isolation, safe trash + restore, undo/redo for deletes, and optional world provisioning with minimal runtime overhead.
What is it?
SchemFlow centralizes schematics in S3/MinIO and gives you fast in‑game commands to upload, distribute, and paste builds across any number of servers—without copying files manually.
Why use SchemFlow?
- One push → all servers see it - Safer deletes (trash + restore) - Group isolation + rename + delete lifecycle - Undo/redo integration for paste/delete - Low overhead (transient cache only) - Optional world provisioning for hubs/spawns
Requirements
- Minecraft: 1.21+ - Java: 21+ - Server: Paper or Purpur
Dependencies
Required (choose ONE): - WorldEdit 7.2.18+ OR - FastAsyncWorldEdit (FAWE) (matching your server version)
Optional Extension: - Skript 2.7+ (adds simple automation scripting of SchemFlow commands; not required for core features)
---
Object Storage Advantages
Why S3 instead of the local `schematics/` folder? - Single authoritative store across multiple servers (build → staging → prod) with zero manual sync - Perfect for network hubs, build clusters, ephemeral containers, CI-driven content deployment - Horizontal scaling: any node with credentials can read/write immediately (no warmup copy step) - Works with any S3‑compatible backend: AWS S3, MinIO, Cloudflare R2, Wasabi, Backblaze B2 (S3 API), DigitalOcean Spaces, etc. - No FTP / rsync / NFS mount complexity; just object keys over HTTPS - Low CPU / memory overhead (short‑lived temp export + ephemeral paste cache only) - Trash namespace prevents accidental permanent deletion - Clean path layout: `SF_<group>/name.schm` (data) + `.trash/` (soft deleted) - Leverage provider durability, lifecycle, replication & CDN (if fronted) for distribution
---
Features
- S3/MinIO storage (configurable `rootDir`, `defaultGroup`). - Group path pattern: `SF_<group>/<name>.schm` + flat trash: `.trash/<name>.schm`. - Address schematics by simple `name` or `group:name`. - Core ops: upload, fetch, paste, delete (soft), restore, list, cache refresh. - Trash safety layer + irreversible clear with `--confirm`. - Group lifecycle: create / delete (preview + confirm) / rename. - WorldEdit integration flags: `-e` entities, `-a` ignore air, `-b` biomes (default on). - Undo/redo for SchemFlow deletes + fallback to WorldEdit history for pastes. - Independent selection commands (`pos1`, `pos2`). - World provisioning (`provision <world>`). - Ephemeral paste cache (auto purged) keeps disk clean.
Ephemeral Paste Cache
Operational pastes use `plugins/SchemFlow/work/cache/`. Contents are transient and cleared on enable, reload, or disable. Only `/SchemFlow fetch` writes persistent files to the configured download directory.
---
Installation
1. Download `SchemFlow-<version>-all.jar`. 2. Place into `plugins/`. 3. Install WorldEdit OR FAWE (not both). Skript optional. 4. Start the server once to generate `plugins/SchemFlow/config.yml`. 5. Configure S3/MinIO credentials + bucket. Restart.
Minimal Config Snippet
```yaml endpoint: "play.minio.local:9000" # or https://s3.example.com secure: true accessKey: "ACCESS_KEY" secretKey: "SECRET_KEY" bucket: "schematics" extension: "schm" cacheRefreshSeconds: 60
storage: rootDir: "FlowStack/SchemFlow" defaultGroup: "default" ```
---
Quick Start
- Select region: `/SchemFlow pos1`, move, `/SchemFlow pos2`. - Upload: `/SchemFlow upload lobby_spawn -e -group lobby`. - Paste: `/SchemFlow paste lobby:spawn -a` (ignore air) or `/SchemFlow paste spawn` (default group). - List all grouped schematics: `/SchemFlow list`. - Delete (soft): `/SchemFlow delete lobby:spawn` → restore later. - Restore: `/SchemFlow restore spawn -group lobby`. - Permanently clear trash: `/SchemFlow trash clear --confirm`. - Rename a group: `/SchemFlow group rename oldName newName`. - Provision a world: `/SchemFlow provision buildworld`. - Refresh cache: `/SchemFlow cache`.
---
Commands
``` /SchemFlow help /SchemFlow list /SchemFlow fetch [group:]name [destDir] | /SchemFlow fetch /absolute/path(.schm) [destDir] /SchemFlow pos1 | /SchemFlow pos2 /SchemFlow upload <id> [-e] [-a] [-b] [-group <name>] /SchemFlow paste [group:]name [-e] [-a] [-b] /SchemFlow delete [group:]name /SchemFlow restore <name> [-group <dest>] /SchemFlow trash # list trash /SchemFlow trash clear --confirm /SchemFlow undo | /SchemFlow redo /SchemFlow cache | /SchemFlow reload /SchemFlow groups /SchemFlow group create <name> /SchemFlow group delete <name> [--confirm] /SchemFlow group rename <old> <new> /SchemFlow provision <world> ```
Flags
- `-e` include entities (upload/paste) - `-a` ignore air blocks (paste) - `-b` include biomes (paste; enabled by default if omitted) - `-group <name>` target a non-default group
---
Permissions
| Node | Purpose | Default | |------|---------|---------| | `schemflow.admin` | All commands | op | | `schemflow.help` | View help | true | | `schemflow.list` | List schematics | true | | `schemflow.fetch` | Download schematic | true | | `schemflow.pos1` | Set pos1 | true | | `schemflow.pos2` | Set pos2 | true | | `schemflow.upload` | Upload schematic | op | | `schemflow.paste` | Paste schematic | op | | `schemflow.delete` | Soft delete schematic | op | | `schemflow.restore` | Restore from trash | op | | `schemflow.trash.clear` | Clear trash permanently | op | | `schemflow.cache` | Refresh cache | op | | `schemflow.reload` | Reload config | op | | `schemflow.provision` | Provision world | op | | `schemflow.groups` | List groups | op | | `schemflow.group.create` | Create group | op | | `schemflow.group.delete` | Delete group | op | | `schemflow.group.rename` | Rename group | op |
---
Links
- GitHub: https://github.com/c4g7-dev/SchemFlow - Releases: https://github.com/c4g7-dev/SchemFlow/releases - Wiki: https://github.com/c4g7-dev/SchemFlow/wiki - Issues: https://github.com/c4g7-dev/SchemFlow/issues - Discord: https://discord.gg/eNNbqS4N2H
License
Apache-2.0 — see LICENSE and NOTICE.
---
Notes
- WorldEdit or FAWE must be present (but not both). - Trash + restore protect against accidental loss; use `--confirm` for irreversible operations. - Biome copying is on unless `-b` is excluded and flags parsing disables it. - Ephemeral cache avoids clutter; prefer `/SchemFlow fetch` for persistent exports.