SchemFlow
作者:rebot | 分类:模组
Minecraft 版本: 1.21 1.21.1 1.21.2 1.21.3 1.21.4 1.21.5 1.21.6 1.21.7 1.21.8 1.21.9 1.21.10 1.21.11
平台: paper purpur
标签: management optimization storage
? SchemFlow
[](https://github.com/c4g7-dev/SchemFlow/blob/main/LICENSE)
[](https://github.com/c4g7-dev/SchemFlow/releases)
[](https://openjdk.org/)
[](https://papermc.io/)
**⚡ 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](https://modrinth.com/plugin/schemflow) • [? Wiki](https://github.com/c4g7-dev/SchemFlow/wiki) • [? Issues](https://github.com/c4g7-dev/SchemFlow/issues) • [? Discord](https://discord.gg/eNNbqS4N2H)
? 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 - **Cloud Storage**: S3/MinIO for cross-server sync - **Local Support**: offline access via `local:name` - **Smart Caching**: instant cached tab-completion - **Safe Updates**: dedicated update command with confirmation - **Groups**: organize schematics by `group:name` ### ? Advanced WorldEdit Support - **FastAsyncWorldEdit** fully compatible - **Entity handling** with `-e` - **Air block control** with `-a` - **Biome preservation** with `-b` (default on) - **Large schematic** optimization | ### ? Automation & Developer API - **On-demand world provisioning** API (reflection-friendly, zero compile-time dependency) - **Absolute-origin paste** for valid authored coordinates - **Skript integration** with custom syntax - **Trash & Restore** + **Undo/Redo** - **Group lifecycle** (create / delete / rename) ### ? Cloud Storage Integration - **MinIO** self-hosted - **AWS S3** enterprise-grade - **Compatible providers**: Cloudflare R2, DO Spaces, Wasabi… - **Ephemeral cache** with automatic cleanup |
? Perfect For
? 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
请登录后举报
暂无评论,抢个沙发吧~