Changelog

Last updated Sep 18, 2026

Changelog

Version history for SoapsTeleporter.


1.0.6

Reliability and permission/config polish.

Critical / behavior fixes

  • /st shapepreview undo restores world blocks from place (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 unlink clears multi-destination routes and uses st.command.unlink
  • Economy payment-timing (before/after) and refund-on-failure are 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|permission suffixes 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 ConditionChecker checks
  • Rename updates linkedDestinations references; 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 DEFAULT auto looks out of the destination portal; relative approach angle when preserve-orientation is true
  • /st setdirection DEFAULT works (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 list opens 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|p2 uses 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.bypass to plugin.yml
  • /st debug accepts st.command.debug / st.debug (not admin-only)
  • Documented missing adaptive density + permission-format keys; removed dead global RTP cooldown section
  • Fallback createDefaultConfig() aligned with shipped config.yml

Cleanup

  • Noisy production DEBUG: logger spam routed through DebugLogger / 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.yml merge-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-version 1.21.11; Folia not yet supported (folia-supported: false documented)

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, and addcondition
  • 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.yml with Java fallbacks
  • Fixed setdirection success message {direction} placeholder
  • Improved cross-world selection errors with world name placeholders
  • Dynamic usage templates consistently include the /st prefix
  • Routing and destination commands aligned with dedicated permissions
  • st.command.wand and st.command.addcondition permission alignment; WandCommand accepts legacy st.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_rift continuity
  • 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 shapepreview is preview-first again (non-destructive)
  • Added /st shapepreview place and /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 shapepreview builds 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 TeleporterRuntime service 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 setrouting and /st setdestinations
  • /st debug overlay runtime 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