SchemImporter

Import a schematic from a download URL into the FAWE/WORLDEDIT schematics folder

10

Quick challenge

How far can you run before the mobs catch you?

SchemImporter

SCHEM IMPORTER

Is a Minecraft plugin for PaperMC that allows importing schematics from download URLs into the FAWE schematics folder.

Features: - Import schematics from HTTP/HTTPS URLs - URL rewriting for schematic sharing sites (IntellectualSites, schem.sn, BuiltByBit, ...) - Host whitelist with bypass permission - File size limits and download timeouts - Overwrite protection with bypass permission - Custom filename support - Async downloads to prevent server lag - Logging to console on successful imports - Config reload command - All messages are editable - Supports .schem, .schematic, and .nbt extensions

Permissions: - `schemimporter.import`: Allows using /import to download schematics - `schemimporter.import.other`: Allows importing schematics on behalf of other players (reserved for future features) - `schemimporter.bypass.whitelist`: Allows downloading from any host, bypassing the whitelist - `schemimporter.bypass.overwrite`: Allows overwriting existing schematic files - `schemimporter.reload`: Allows reloading the SchemImporter config via /import reload

Config:

Spoiler

```yaml

─────────────────────────────────────────────────────────────────────────────

SchemImporter — config.yml

Plugin by DippyCoder

─────────────────────────────────────────────────────────────────────────────

── Schematic Directory ───────────────────────────────────────────────────────

Path where downloaded schematics will be saved.

Relative paths are resolved from the server root.

Default points to the standard FAWE schematics folder.

#

Examples:

plugins/FastAsyncWorldEdit/schematics ← FAWE (default)

plugins/WorldEdit/schematics ← vanilla WorldEdit

schematics ← server root /schematics folder

# schematic-directory: "plugins/FastAsyncWorldEdit/schematics"

── URL Whitelist ─────────────────────────────────────────────────────────────

Controls which hosts players are allowed to download schematics from.

Set enabled: false to allow any host (not recommended on public servers).

Players with the schemimporter.bypass.whitelist permission ignore this list.

#

Matching rules:

- "example.com" matches example.com and any subdomain (sub.example.com)

- Comparison is case-insensitive

# whitelist: enabled: true hosts:

── FAWE / WorldEdit schematic sharing sites ───────────────────────────

- "schem.intellectualsites.com"

── Generic trusted file hosts ─────────────────────────────────────────

- "cdn.discordapp.com" - "media.discordapp.net" - "github.com" - "raw.githubusercontent.com" - "objects.githubusercontent.com" - "drive.google.com" - "dropbox.com" - "dl.dropboxusercontent.com" - "paste.gg" - "transfer.sh"

── Add your own server/CDN here ───────────────────────────────────────

- "yourserver.net"

- "cdn.yoursite.com"

── Download Limits ───────────────────────────────────────────────────────────

limits:

Maximum allowed file size in bytes.

The download will be aborted if the file exceeds this size.

Default: 52428800 = 50 MB

max-file-size-bytes: 52428800

Connection and read timeout in seconds for each download attempt.

Increase if you are downloading from slow hosts.

download-timeout-seconds: 15

Whether to allow overwriting an existing schematic with the same filename.

If false, players need the schemimporter.bypass.overwrite permission to overwrite.

allow-overwrite: false

── Permissions (node names only — adjust in plugin.yml for defaults) ─────────

These keys define which permission nodes the plugin checks at runtime.

Change these if you want to use a custom permission string without recompiling.

# permissions: import: "schemimporter.import" bypass-whitelist: "schemimporter.bypass.whitelist" bypass-overwrite: "schemimporter.bypass.overwrite" reload: "schemimporter.reload"

── Messages ──────────────────────────────────────────────────────────────────

All user-facing messages. Supports '&' color codes and the following

placeholders where indicated.

# messages:

Prefix prepended to every plugin message.

prefix: "&8[&5SchemImporter&8] &r"

Shown when the command is used incorrectly.

usage: "&cUsage: &f/import <url> &7| &f/import reload"

Shown when the player lacks the required permission.

no-permission: "&cYou do not have permission to do that."

Shown when a non-player (e.g. console) tries to run a player-only action.

(Currently unused — console is supported — kept for future features.)

player-only: "&cThis command can only be used by players."

Shown immediately after the download is initiated.

Placeholder: {url}

download-start: "&7Downloading schematic from &f{url}&7..."

Shown when the download completes and the file is saved.

Placeholder: {filename}

download-success: "&aSuccessfully imported &f{filename} &ainto the schematics folder!"

Shown when the download fails for any reason.

Placeholder: {reason}

download-failed: "&cDownload failed: &f{reason}"

Shown when the provided URL is malformed or uses an unsupported protocol.

Placeholder: {url}

invalid-url: "&cInvalid URL: &f{url}&c. Make sure it starts with https:// or http://"

Shown when the host of the URL is not on the whitelist.

Placeholder: {host}

host-blocked: "&cThe host &f{host} &cis not whitelisted. Ask an admin to add it."

Shown when the downloaded file exceeds the configured size limit.

Placeholder: {max_mb} — the limit in megabytes

file-too-large: "&cDownload aborted: file exceeds the maximum allowed size of &f{max_mb} MB&c."

Shown when a schematic with the same name already exists and overwrite is disabled.

Placeholder: {filename}

file-exists: "&cA schematic named &f{filename} &calready exists. Delete it first or rename the file."

Shown when the configured schematic directory does not exist and cannot be created.

schem-dir-missing: "&cThe schematics directory does not exist and could not be created. Check your config and server file permissions."

Shown when the download times out.

timeout: "&cDownload timed out. The host may be slow or unreachable."

Shown when the config is reloaded via /import reload.

reloaded: "&aConfiguration reloaded successfully."

Shown when the URL does not end with a recognised schematic extension.

invalid-extension: "&cThe URL does not point to a valid schematic file (.schem / .schematic / .nbt)." ```

ADS