Releases: ez-plugins/EzRTP
Releases · ez-plugins/EzRTP
Release list
EzRTP 3.0.3
EzRTP 3.0.2-nightly.20260422
What changed
- Ci/automatic nightly release #77 — @ez-plugins
- ci: fix direct push #76 — @ez-plugins
- ci: fix main branch to v3.x #75 — @ez-plugins
- Ci/automatic nightly release #74 — @ez-plugins
- ci: fix markdown changelog format #73 — @ez-plugins
- ci: added automatic nightly releases #72 — @ez-plugins
- chore(deps): bump actions/configure-pages from 5 to 6 #71 — @app/dependabot
- chore(deps): bump DavidAnson/markdownlint-cli2-action from 16 to 23 #70 — @app/dependabot
- chore(deps): bump actions/upload-pages-artifact from 3 to 5 #69 — @app/dependabot
- chore(deps): bump actions/deploy-pages from 4 to 5 #68 — @app/dependabot
- chore(deps): bump actions/checkout from 4 to 6 #67 — @app/dependabot
- docs: fix SCSS syntax error in ezrtp.scss (split comment separators) #66 — @ez-plugins
- docs: fix YAML syntax error in _config.yml (split comment separators) #65 — @ez-plugins
- Docs/GitHub pages #64 — @ez-plugins
- Fix/module adapters #63 — @ez-plugins
Notes
🌙 Automated nightly beta build from
v3.x(April 22, 2026).Built from
7901de6
3.0.1
3.0.0
Added
world: autosupport inrtp.yml— uses the player's current world as the RTP worldworld: autosupport in/forcertpand/rtp forcertpcommandsworld: autosupport in GUI world options (current-world button)EzRtpLoggermessage catalogue for structured console logging
Changed
- Console output: stripped
[EzRTP]prefix and condensed log messages - API jar is now shaded into the Bukkit module
Fixed
- Adapted to Paper 26.1 API changes
- Removed redundant
applyChunkLoadingSettingscalls in teleport service - Compiler fork now uses
java.home-relativejavacpath
Build / CI
- Bumped version to
3.0.0 - Updated Minecraft API dependencies to
26.1.2 - Updated JDK to 25 in all CI workflow steps
- Corrected
api-versioninplugin.ymlfiles (iterated to final value26.1.2)
2.1.0
EzRTP 2.1.0 Changelog
✨ Major Features
New Plugin API Module
- Public API for third-party plugins — New
ezrtp-apiartifact that allows other plugins to trigger random teleports programmatically - Simple helper methods in
EzRtpAPIfor common use cases, with optional callbacks for async operations - Bukkit Services Manager integration for clean dependency injection
- Minimal compile-time footprint — only
ezrtp-apineeds to be in the classpath of dependent plugins
Performance Monitoring & Observability
- Performance metrics collection — Track RTP operation timings, cache efficiency, chunk loads, and biome filter performance
- Slow RTP warnings — Automatically detect and log RTPs that exceed a configurable threshold (default 100ms)
- Percentile tracking — Snapshot P50, P75, P90, P95, P99 response times using a ring-buffer sample
- Periodic JSON export — Export metrics to JSON for integration with monitoring systems or manual analysis
- New
/rtp stats performancesubcommand to view current metrics in-game - Configurable via
plugins/EzRTP/performance.yml
Unsafe Location Monitoring
- Track rejection causes — Understand why locations are unsafe (void, liquid, lava, unsafe blocks, etc.)
- Per-cause statistics — Breakdown of all-time rejection counts by cause
- Optional warning system — Log or warn when unsafe rejection rate exceeds a threshold
- Periodic metrics export — Export rejection statistics to JSON
- New
/rtp unsafe-statssubcommand to view unsafe location statistics in-game - Configurable via
plugins/EzRTP/unsafe-location-monitoring.yml
Improved Chunk Loading
- Paper 1.21+ async API detection — Automatically use
World.getChunkAtAsync()on qualifying servers, bypassing the legacy tick-based throttle queue entirely - Async/non-blocking chunks — When running on Paper/Folia 1.21+, chunk loads no longer compete for tick time
- Backward compatible — Legacy throttle queue is still available for older servers or when explicitly configured
- Smart auto-detection — Defaults to
auto-detectmode, gracefully falls back to legacy queue if needed - Configurable via
chunk-loading.use-paper-async-apiin rtp.yml
Biome Filtering Enhancements
- Master switch for biome system — New
biomes.enabledsetting disables the entire biome infrastructure (search, cache, rare biome tracking) - Master switch for include/exclude filters — New
biome-filtering.enabledseparate from the overall biome system - Automatic filter-aware performance budgets — When include/exclude biome filters are active but no explicit budget is configured, tighter limits are applied automatically (100ms wall-clock, 10 chunk-loads)
- New performance-budget section — Cleaner configuration path for search budgets (
biome-filtering.performance-budget) - Better timeout tracking — Biome filter timeouts are now monitored and reported in performance stats
- Async-mode toggle — Serialize biome searches through a dedicated executor thread instead of the common fork-join pool when
async-mode: false
Rare Biome Hotspot Persistence
- MySQL-backed hotspot storage — Persist discovered rare-biome hotspots across restarts and share them between network nodes
- HikariCP connection pool — Efficient, non-blocking database operations
- Background loading — Hotspots are loaded asynchronously on startup
- Configurable persistence backend — Switch between in-memory only (
none) or MySQL (mysql) - Automatic table creation — Database schema is initialized automatically
🔧 Configuration Changes
New Configuration Files
plugins/EzRTP/performance.yml— Performance monitoring and warning settingsplugins/EzRTP/unsafe-location-monitoring.yml— Unsafe location rejection tracking and warnings
rtp.yml Changes
biomes.enabled(new) — Master switch for the entire biome system (default:true)biome-filtering.enabled(new) — Separate toggle for include/exclude biome filters (default:true)biome-filtering.performance-budget(new, preferred) — Search budget configuration moved here for claritysearch.*(legacy path still works) — Old budget location, now aliases to new pathchunk-loading.use-paper-async-api(new) — Auto-detect or explicitly enable/disable Paper async chunk loading (default:auto-detect)chunk-loading.legacy-throttle(new) — Nested section for old throttle settings, replaces flatenabled/interval-ticks/max-chunks-per-tickheatmap.enabled— Toggle heatmap feature per world (was implicit before)safety.reject-liquid-above-nether(new, default:true) — Reject locations with lava above in the Nethersafety.reject-liquid-above-overworld(new, default:true) — Reject locations with water above in the Overworld
Network Configuration (network.yml)
- Moved to
plugins/EzRTP/network/namespace for better organization
Dependency Updates
- Bukkit/Paper actions — Updated from v4 to v6
- Java compiler — Updated to 3.15.0
- bstats — Updated from 3.0.2 to 3.2.1
- WorldGuard — Updated from 7.0.9 to 7.0.16
- PlaceholderAPI — Updated from 2.11.7 to 2.12.2
- Adventure — Multiple library versions updated to 4.26.1
- HikariCP 7.0.2 — New dependency for MySQL hotspot storage
- JUnit & Mockito — Updated test dependencies
🐛 Bug Fixes & Improvements
GriefPrevention Compatibility
- Fixed reflection fallback to handle multiple
getClaimAt()method signatures across GriefPrevention versions
Import/Package Reorganization
- Configuration classes reorganized into semantic packages:
biome.*,effects.*,network.*,safety.*,teleport.*,gui.*,performance.* - Old import paths still work through backwards-compatible re-exports (zero breaking changes)
Code Quality
- Introduced
ConfigurationDefaultsclass to centralize all default numeric constants - Improved documentation and JavaDoc throughout
- Better error handling and logging in reflection-based code (ChunkyAPI, GriefPrevention, PlaceholderAPI)
Platform Abstraction
- Enhanced PlatformScheduler — New methods
executeGlobal(),executeGlobalDelayed(),executeRegionDelayed()for cleaner code - Folia compatibility — All scheduler calls now route correctly on Folia's regionalized threads
- Centralized capability detection — New
PlatformRuntimeCapabilitiesDetector.isPaper121PlusAsync()for version-aware optimization
API Extensions
RandomTeleportServicenow implements the newcom.skyblockexp.ezrtp.api.TeleportServiceinterface for type-safe service registration
📊 New Statistics & Metrics
Tracked in RtpStatistics
- Timing percentiles — P50, P75, P90, P95, P99 milliseconds
- Min/max operation times — Absolute bounds across the ring buffer
- Slow operation count — Number of RTPs exceeding the slow-threshold
- Chunk loads breakdown — Total, async, and sync counts
- Biome rejection counts — Total rejections and per-RTP max
- Biome filter timeouts — Number of times a search was terminated due to biome rejection limit
bStats Charts (New)
unsafe_location_cause— Top rejection cause (pie chart)
🎮 New Commands
/rtp stats performance
- Shows real-time performance metrics including response times, cache hit rate, chunk loading breakdown, and recommendations
/rtp unsafe-stats
- Shows all-time unsafe location rejection statistics broken down by cause
📝 Configuration Validation
New Warnings
- Missing protection providers — Single consolidated warning when all configured protection plugins are unavailable
- Heatmap disabled check —
/rtp heatmapnow validates thatheatmap.enabled: truebefore proceeding - Chunky reflection fallback — Graceful degradation if Chunky API changes or is unavailable
♻️ Removed/Deprecated
ChunkLoadingSettingslegacy flat-format constructors are deprecated (but still work)- No breaking changes to public APIs — All existing plugin code continues to function
For Server Owners
Update Guide:
- Back up your
plugins/EzRTP/folder - Replace the EzRTP .jar file
- Restart the server (config files will be auto-generated)
- Optionally enable performance or unsafe-location monitoring in the new .yml files
- For Paper 1.21+ users, chunk-loading will automatically switch to async mode (no config needed)
Recommendations:
- Enable performance monitoring if you want insight into RTP responsiveness and cache efficiency
- Enable unsafe-location monitoring if you're debugging biome filter issues or want to understand rejection patterns
- Upgrade to Paper 1.21+ to get true non-blocking chunk loading (no configuration required; auto-detected)
2.0.1
- Fixed cached fallback when avoiding claims fails
- Upgraded version to
2.0.1
Full Changelog: 2.0.0...2.0.1
2.0.0
- Added opt-in
/rtp <worldguardRegionName>- Added configuration override options per WorldGuard region
- Added
/rtp addcenter <name> - Added
/rtp <name>besides/rtp <worldName> - Improved performance, refactored server software fallback logic
- Moved from single
.jarto mainEzRTP.jarwith server modules (ezrtp-spigot.jar,ezrtp-purpur.jar,ezrtp-paper.jar)
- Moved from single
- Split
config.ymlinto multiple, more clear configuration files- Added new
limits.ymlconfiguration - Added new
rtp.ymlconfiguration - Added new
storage.ymlconfiguration
- Added new