Free-form Nether and End portals with durable registration, configurable presentation, and complete in-game administration.
- Arbitrary portal shapes — Ignite bounded vertical Nether portals with irregular, concave, or asymmetric interiors.
- Shaped End portals — Fill horizontal, fully eyed End Portal Frame boundaries of non-vanilla sizes and shapes while retaining vanilla End travel.
- Vanilla-compatible creation — Nether proposals use cancellable
PortalCreateEvent; End activation respects the eye interaction and preflights every interior throughBlockCanBuildEvent. - Managed integrity — Portals persist across restarts, repair replaceable portal cells, and retain their recorded frame materials when the creation whitelist changes.
- Hot-reloadable configuration — Every persisted option is available in the 54-slot in-game editor and can also be edited in
config.tomlwithout a restart. - Localization — Players can keep a personal language or follow the server default. Code-owned English remains available offline; 17 additional locale files download only when selected and remain directly editable afterward. Messages accept classic
&colors, RGB, and MiniMessage. - Administration — Paginated portal listings, safe and permission-gated forced teleportation, and comprehensive local diagnostics with optional mclo.gs upload.
- Cooperative presentation — Separate Nether/End creation messages, channels, titles, boss bars, and sounds hot-reload while respecting VolmLib's shared HUD claims.
- Metrics — Enabled-by-default bStats metrics retain both plugin-local and global opt-outs; optional React Plugin API Pack metrics stay on the server.
- Minecraft 1.20.1 or newer.
- Spigot, Paper, Folia, or a compatible derivative.
- Java 17 bytecode support; use the newer Java runtime required by the server version when applicable.
- Optional: React, when the ShapedPortals Runtime Plugin API Pack is installed for dashboard samplers.
/shapedportals is the root command, with /shapedportal and /sp as aliases.
| Command | Result |
|---|---|
/sp |
Open the localized paginated help menu. |
/sp status |
Show creation, registry, scheduler, and integration state. |
/sp config |
Open the complete in-game configuration and language editor. |
/sp language |
Open the personal language picker in-game or the server picker from console. |
/sp language self <locale|reset> |
Select a personal language or return to the server default. |
/sp language server <locale> |
Change the server default. |
/sp language server edit [locale] |
Open the per-language message editor. |
/volmit plugins |
Open the shared Volmit language and diagnostic tools. |
/volmit plugins languages [locale] |
Change the server default across registered Volmit plugins. |
/volmit plugins debug [plugin] [upload=true|false] |
List shared debug providers or request one report. |
/sp portals [page] |
List managed portals with frame status and teleport shortcuts. |
/sp teleport [UUID/prefix] |
Teleport safely beside a managed portal; authorized operators may confirm an unsafe landing. |
/sp debug |
Open the diagnostic command help menu. |
/sp debug dump [upload=true] |
Save a diagnostic report and optionally upload it to mclo.gs. |
./gradlew build # full gate, shaded jar, and workspace BUILDS copy
./gradlew shadowJar # shaded plugin jar only
./gradlew publishToMavenLocal # verified plugin and sources in local Maven
The build runs on Java 25 and emits Java 17 bytecode. A sibling VolmLib checkout is resolved automatically as a composite build; pass -PuseLocalVolmLib=false to use the configured remote dependency instead.
The versioned plugin is written to build/libs/ShapedPortals-2.0.0-1.20.1-26.2.jar. Successful full builds also refresh C:/VolmitSoftware/BUILDS/ShapedPortals.jar, and the React API Pack is copied to build/distributions/react-api-packs/.
ShapedPortals creates its configuration and English fallback on first start. Other files and folders appear only when their feature has data to store.
plugins/ShapedPortals/
├── config.toml all runtime settings; always
├── languages/
│ ├── language-preferences.properties persistent personal choices, after the first selection
│ ├── en_US.toml editable English fallback; always
│ └── <locale>.toml selected repository or custom locales
├── portals.json persisted managed portals, after the first registry write
└── debug/shapedportals-v<version>-debugdump-yyyy-MM-dd-HH-mm-ss.txt locally saved `/sp debug dump` reports
config.toml and the active server language file hot-reload. A missing repository locale is fetched from the latest main language directory, validated, installed once, and activated by the original selection; the console reports its source URL and final path. Existing files and local edits are never automatically replaced.