Changelog
Last updated Sep 18, 2026
Changelog
Version history for SoapsTeleporter.
1.0.6
Reliability and permission/config polish.
Critical / behavior fixes
/st shapepreview undorestores world blocks fromplace(not only preview particle history)- Bidirectional rectangular portals: thin-wall detection matches full block depth; move-scan no longer skips non-custom portals
- Selection marking is outline-only again (no density/interior fill); live portal particles start after create
- Multi-destination portals work without a paired
connectedPortal(routing list alone is enough) /st unlinkclears multi-destination routes and usesst.command.unlink- Economy
payment-timing(before/after) andrefund-on-failureare honored for standard + RTP teleports - Portal world/player creation limits from config are enforced; creators are stored as
ownerUUID - Custom-shape portals are included in frame/radius protection
- RTP safe-location search uses
rtp.retry.max-attempts - FIXED/RANDOM routing strips
name|weight/name|permissionsuffixes before portal lookup - Warmup start no longer treated as a successful teleport (ENTER deferred; EXIT eligibility fixed)
- Removed duplicate ENTER command execution from PlayerListener (TeleportManager owns teleport pipeline commands)
- Failed teleports / cancelled warmups allow in-portal retry
- Global warmup cleared on cleanup and failed post-warmup teleport
- GUI/chat condition tokens enforced:
SNEAK,FLYING,SOLO,SUN,LEVEL,PLAYERS_MIN/MAX,PLAYTIME,WORLD,BIOME,GAMEMODE,ADVANCEMENT - RTP portals run full
ConditionCheckerchecks - Rename updates
linkedDestinationsreferences; connect clears stale destination lists; unlink scrubs peer destination entries - PlaceholderAPI
%soapsteleporter_portals_nearest_distance%fixed - Cross-world block now shows a player message; chat-input cancel returns to the right manage screen
- One-way portals block use from the one-way portal itself (docs-aligned); arrivals into one-way exits still work
- Custom-shape destinations land in interior blocks; move supports custom-shape reselection and safe chunk-index rollback
- GUI/manage delete removes commands/conditions by index (duplicate-safe)
- SetDestinations validates destination portal names exist
- RTP async failure resets teleport retry state (no soft-lock)
- Particle center null-guard; unload-world NPE guard in portal lookup
- Custom shape blocks reload from YAML map entries as well as Location objects
- Post-teleport payment failure (
payment-timing: after) rolls the player back to origin instead of granting a free teleport - Custom-shape entry uses full player AABB against computed interior/opening cells (not feet-only)
- Custom-shape interior prefers best projected mask + 3D enclosed flood-fill (no AND-of-all-masks / whole-AABB fallback)
- Custom→custom landing stays in interior; comprehensive search no longer rejects valid interior destinations
- Same-chunk move throttle skipped when custom-shape portals are present; orientation from frame thickness
- Chunk index includes every custom frame block's chunk
- Exit facing
DEFAULTauto looks out of the destination portal; relative approach angle whenpreserve-orientationis true /st setdirection DEFAULTworks (aliases AUTO/PLAYER/NONE); horizontal portals no longer block direction setting- Floor-pad (laying-down) portals: unified stand-on-pad detection, land on pad, surface particles, no instant bounce-back on arrival
- GUI polish: pitch/volume via setsound, condition delete-by-index, portal PDC clicks, empty states, DEFAULT/floor-pad labels,
/st listopens portal browser, admin Reset, chat-input returns to menu - Backend performance: async batched daily-usage I/O; coalesced portals.yml saves without re-read; live portal view (no per-tick ArrayList copy); protection via chunk index; custom-block view without clones; bounds/particle caches until invalidate; slim CacheManager; lazy DebugLogger on hot paths; single-pass render visibility count
- Creation polish: denser new-portal particles (2× air, min 8) + violet default DUST color; selection density preview; custom frame (purple) vs interior (cyan); clickable wizard actions +
/st add cancel - Custom oval/circle portals: seal diagonal ring gaps so interior detection works both ways; land just outside vertical destinations so return trips aren’t stuck “processed”
- Selection:
/st set p1|p2uses the same marking + ready actions as the wand; min portal size default 2; custom create rejects empty openings; cleaner wand/corner messages
Permissions and config
- Added
st.command.removecondition,st.protection.bypass,st.portal.limit.bypasstoplugin.yml /st debugacceptsst.command.debug/st.debug(not admin-only)- Documented missing adaptive density + permission-format keys; removed dead global RTP cooldown section
- Fallback
createDefaultConfig()aligned with shippedconfig.yml
Cleanup
- Noisy production
DEBUG:logger spam routed throughDebugLogger/ removed - Portal delete cleans linked destination entries that pointed at the removed portal
1.0.5
Messages and help polish release.
Production readiness (2026-06-11)
portals.ymlmerge-save with atomic disk write- Per-player YAML shards for portal cooldowns and stats
- RTP cooldown tracked per portal via
PlayerData - Thread-safe chunk portal index with copy-on-write rebuild
- Same-chunk micro-movements skip portal re-checks
- Warmup cancel on movement; chunk preload settings reload; GUI closed before config reload
- Quit handler evicts player shards and clears GUI/chat input state
- Condition and GUI chat prompts migrated to shared
SoapsChatInput api-version1.21.11; Folia not yet supported (folia-supported: falsedocumented)
Messages and help (1.0.5)
- Added
/st help <command>detail mode with clickable help navigation - Deterministic help pagination and improved tab completion (pages and command names)
- Help metadata for
shapepreview,setrouting,setdestinations, andaddcondition - Migrated player-facing strings for shape preview, routing, destinations, GUI chat input, and manage delete flows into
messages.yml - GUI item labels and lore now read from
gui.ymlwith Java fallbacks - Fixed
setdirectionsuccess message{direction}placeholder - Improved cross-world selection errors with world name placeholders
- Dynamic usage templates consistently include the
/stprefix - Routing and destination commands aligned with dedicated permissions
st.command.wandandst.command.addconditionpermission alignment;WandCommandaccepts legacyst.command.tool
1.0.4
Shape preview reliability and rendering polish.
- Complete outer frame generation; polygon presets draw edge outlines
- Plane-aware 2D vs 3D preview behavior; improved
random_riftcontinuity - Safer rotate, mirror, undo, and place workflow; place commits preview to world
- Batched block placement for performance
- Configurable default frame material:
portals.shape-preview.default-frame-material - Wand hints for shape preview after selecting positions
- Portal creation particle handoff improvements
1.0.3
Shape preview workflow polish.
/st shapepreviewis preview-first again (non-destructive)- Added
/st shapepreview placeand/st shapepreview place <material>to commit frame blocks only - Undo reverts preview state only, not world blocks
- Fixed square/rectangle generating perimeter frames instead of filled interiors
- Improved random rift framing on selection bounds
- Stabilized portal visibility checks for render gating
- Updated shapepreview permission to
st.command.shapepreview
1.0.2
GUI and shape builder reliability.
- Fixed duplicate portal deletion feedback in GUI confirm flow
/st shapepreviewbuilds actual frame structures in-world (OBSIDIAN frame, AIR interior)- Shape switching no longer overlaps wand selection markers
- Improved circle/oval and 3D ellipsoid shell generation
- Rotate, mirror, and undo update world frame placement to match preview
1.0.1
Major architecture and systems update.
- Modular
TeleporterRuntimeservice registry and metrics - Layered render engine with adaptive quality, culling, and sleep states
- Shape preview presets, rotate, mirror, undo, and
/st shapepreview - Condition expression parser with AND, OR, and NOT
- Multi-destination routing: fixed, random, weighted, permission
/st setroutingand/st setdestinations/st debug overlayruntime metrics- Portal render, preview, stabilize, and teleport prepare API events
1.0.0
Initial public release.
- Portal wand creation, connect, and standard two-way teleport
- Per-portal particles, sounds, costs, conditions, and commands
- RTP portals, warmup, cooldown, and protection
- Vault, PlaceholderAPI, WorldGuard, and Lands hooks
- Interactive management and backup tools