
SchemFlow
Lightning‑fast schematic management for Minecraft servers (S3/MinIO-backed).
🌊 SchemFlow
⚡ Cloud-native schematic manager with local support, lightning-fast tab completion, and an on-demand world-provisioning API
Purpose-built for multi-server networks — build servers, creative networks, and minigame hosts alike
📥 Download • 📖 Wiki • 🐛 Issues • 💬 Discord
🚀 Why SchemFlow?
Stop copying .schem files between servers by hand. SchemFlow stores every schematic in S3-compatible object storage (AWS S3, MinIO, Cloudflare R2, Wasabi, DigitalOcean Spaces…) and serves it to any server on demand — with groups, trash & restore, undo/redo, smart cached tab-completion, and now a developer API that lets other plugins provision and tear down worlds on the fly. Fully compatible with native WorldEdit / FastAsyncWorldEdit formats.
⚡ What's New in v0.5.13
- 🔌 Developer API — provision and dispose worlds on demand from your own plugin, fully async, with a completion signal. Purpose-built for per-round minigame maps.
- 🎯 Absolute-Origin Paste — restore a schematic at its exact authored coordinates, so named locations (spawns, corners, regions) stay valid in the freshly created world.
- 🧱 Map Builder Hook — save a
pos1/pos2selection straight to S3 preserving the absolute origin for later one-call provisioning. - 🧹 One-Call World Teardown — unload (no save) and delete an ephemeral world in a single call.
⚡ What's New in v0.5.12
- 🏠 Local Schematic Support — work offline with
local:namesyntax for downloaded schematics - ⚡ Lightning-Fast Tab Completion — smart caching eliminates network delays (90% fewer S3 calls)
- 🛡️ Safe Update Command — dedicated
/schemflow updatewith mandatory--confirm - 🎯 Optimized Performance — cached data for instant completion and duplicate prevention
✨ Feature Showcase
🎮 Hybrid Schematic Management
🔧 Advanced WorldEdit Support
|
🤖 Automation & Developer API
🌐 Cloud Storage Integration
|
🎯 Perfect For
| 🏢 Build Servers | 🎮 Creative Networks | 🏆 Minigame Hosts | 🌍 Survival Servers |
|---|---|---|---|
| Template management | Plot schematic storage | Per-round map loading | Structure backups |
| Build preservation | Player submissions | Arena distribution | Town planning |
| Collaboration tools | Contest archives | Rapid deploy & teardown | Restoration tools |
📋 Requirements
- Minecraft: 1.21 – 1.21.11 (Paper / Purpur)
- Java: 21+
- WorldEdit 7.2.18+ or FastAsyncWorldEdit
- (optional) Skript 2.7+ for automation
⚡ Quick Start
- Drop
SchemFlow-x.y.z-all.jarintoplugins/and start the server once. - Edit
plugins/SchemFlow/config.ymlwith your S3/MinIOendpoint,accessKey,secretKey, andbucket. - Run
/schemflow reload— done.
🎮 Commands
| Command | Description |
|---|---|
/schemflow pos1 · pos2 | Set selection corners |
/schemflow upload <name> [-eab] [-group g] | Export selection → S3 |
/schemflow update <name> --confirm | Safely overwrite an existing schematic |
/schemflow paste [group:]name [-eab] · paste local:name | Paste from S3 or local cache |
/schemflow fetch [group:]name | Download to local cache |
/schemflow list · local | List server / local schematics |
/schemflow delete [group:]name · restore name · trash clear --confirm | Trash & restore |
/schemflow undo · redo | Undo/redo last paste or delete |
/schemflow groups · group create/delete/rename | Group management |
/schemflow provision <world> · cache · reload | World provisioning, cache, hot reload |
Permissions are granular (
schemflow.<command>);schemflow.admingrants everything.
🔌 Developer API
Other plugins can drive SchemFlow on demand — provision a fresh world, paste a map at its exact authored coordinates, and get a completion signal — without a compile-time dependency. Everything hangs off WorldProvisioner and is safe to call from any thread.
| Method | Returns | Purpose |
|---|---|---|
provisionRoundWorld(world, group, schematic, pasteAtOrigin, gamerules) | CompletableFuture<World> | Create a void world, async-fetch from S3, paste, apply gamerules. Completes only once fully pasted. Idempotent. |
disposeWorld(world) | CompletableFuture<Void> | Unload (no save) + delete folder. |
inspect(group, schematic) | SchematicInfo | Dimensions + authored min corner (for fixed-point pasting). |
saveSelectionAsMap(player, group, name) | CompletableFuture<Void> | Save a pos1/pos2 selection to S3 preserving the absolute origin. |
Object plugin = Class.forName("com.c4g7.schemflow.SchemFlowPlugin")
.getMethod("getInstance").invoke(null);
Object prov = plugin.getClass().getMethod("getProvisioner").invoke(plugin);
CompletableFuture<?> future = (CompletableFuture<?>) prov.getClass()
.getMethod("provisionRoundWorld", String.class, String.class, String.class, boolean.class, java.util.Map.class)
.invoke(prov, "round_42", "blockparty", "W-BLOCKPARTY-regular-Island", true, null);
future.whenComplete((world, error) -> {
if (error != null) return; // handle failure
// (org.bukkit.World) world is fully pasted — safe to teleport players in
});
Paste-at-origin restores blocks at their authored coordinates and requires maps saved via
saveSelectionAsMap; schematics from/schemflow uploadpaste relatively. The method signatures are a stable reflection contract.
⚙️ Configuration
endpoint: "minio.example.com:9000" # host:port, or full http(s):// URL
secure: true
accessKey: "YOUR_ACCESS_KEY"
secretKey: "YOUR_SECRET_KEY"
bucket: "schematics"
extension: "schem" # schem (recommended) or schematic
storage:
rootDir: "FlowStack/SchemFlow" # object-key prefix in the bucket
defaultGroup: "default"
downloadDir: "plugins/SchemFlow/schematics"
cacheRefreshSeconds: 30 # 0 disables periodic refresh
🌊 SchemFlow v0.5.13 — On-demand world provisioning for build & game networks
⭐ GitHub • 🚀 Download • 💬 Discord
Open source • MIT-style license • Built for the Minecraft community
