
Updated
- Paper API updated to
26.1.2.build.63-stable(latest stable build) - Updated
api-versioninplugin.ymlto26.1.2
- Paper API updated to
[1.1.4] - 2026-05-02
Updated
- Paper API updated to 26.1.2 (build 53, stable) — new Paper version scheme (
26.1.2.build.53-stable) plugin.ymlapi-versionupdated to'26.1.2'(required format for Paper 26.1+)- Java compiler target bumped from 21 → 25 to match Paper 26.1 recommended baseline
- MockBukkit updated from
MockBukkit-v1.20:3.15.1→MockBukkit-v1.21:3.133.2
Improved (resource world regeneration)
- Player eviction uses
teleportAsync()— players are now kicked from the world via Paper's async teleport API before reset, reducing main-thread stall during chunk unloading - Spawn chunk pre-warming after recreation — after a new resource world is generated, a configurable radius of chunks around spawn is pre-loaded with
getChunkAtAsync()so the world is immediately ready for players (performance.spawn-preload-radius, default3) preloadChunksAsync()simplified — removed a redundantCompletableFuturewrapper;getChunkAtAsync()is already non-blocking and handles its own threadingdeleteWorldFolder()rewritten with NIO — now usesFiles.walk(...).sorted(reverseOrder())to guarantee files are deleted before their parent directories, fixing the silent-failure case where non-empty directories were not deleted
- Paper API updated to 26.1.2 (build 53, stable) — new Paper version scheme (
This is a maintenance release focused on versioning and improving maintainability. No functional behavior has changed.
Changes
- Bump project version to 1.1.3.
- Refactor complex methods to reduce cyclomatic complexity.
Issues
-
Complex Method (cyclomatic complexity = 19)
- File: src/main/java/com/bubblecraft/bubblereset/BubbleReset.java:289-319
- Context: Scheduler tick
run()insidestartAutoResetScheduler()
-
Complex Method (cyclomatic complexity = 16)
- File: src/main/java/com/bubblecraft/bubblereset/ResourceWorldMenu.java:239-301
- Context:
onInventoryClick(InventoryClickEvent event)
-
Complex Method (cyclomatic complexity = 16)
- File: src/main/java/com/bubblecraft/bubblereset/ResourceWorldMenu.java:122-185
- Context:
createCustomSkull(String textureBase64)
Actions (Implemented)
-
BubbleReset.java (scheduler
run())- Extracted fixed-time vs interval scheduling into separate private methods.
- Reduced nesting with guard clauses.
- Extracted warning broadcast + reset scheduling helpers.
-
ResourceWorldMenu.java (
onInventoryClick)- Centralized action extraction (PDC first, lore fallback).
- Simplified click handler using helpers + early returns.
-
ResourceWorldMenu.java (
createCustomSkull)- Extracted texture normalization + profile application helpers.
- Isolated base64/url parsing + skin application.
Notes
- Unit tests passed after the refactor.
This is a maintenance release focused on versioning and tracking code quality hotspots. No functional behavior has changed.
Changes
- Bump project version to 1.1.3.
- Document complex methods and proposed refactors to improve maintainability.
Issues
-
Complex Method (cyclomatic complexity = 19)
- File: src/main/java/com/bubblecraft/bubblereset/BubbleReset.java:289-319
- Context: Scheduler tick
run()insidestartAutoResetScheduler()
-
Complex Method (cyclomatic complexity = 16)
- File: src/main/java/com/bubblecraft/bubblereset/ResourceWorldMenu.java:239-301
- Context:
onInventoryClick(InventoryClickEvent event)
-
Complex Method (cyclomatic complexity = 16)
- File: src/main/java/com/bubblecraft/bubblereset/ResourceWorldMenu.java:122-185
- Context:
createCustomSkull(String textureBase64)
Actions
-
BubbleReset.java (scheduler
run())- Extract fixed-time vs interval scheduling into separate private methods.
- Replace nested conditionals with guard clauses (early returns).
- Cache repeated configuration reads into local variables.
- Extract broadcast message and reset scheduling into helper methods to reduce branching.
-
ResourceWorldMenu.java (
onInventoryClick)- Use a switch on slot/button IDs and extract per-action handlers.
- Centralize permission checks and common messaging.
- Prefer early returns to minimize nesting.
-
ResourceWorldMenu.java (
createCustomSkull)- Extract profile/texture creation into a helper.
- Consolidate null/meta validation path.
- Isolate texture application and return immutable
ItemStackcopy if appropriate.
[1.1.2-1] - 2026-01-07
Added
-
New
/rwadmin reloadcommand - Dedicated reload command with enhanced feedback- Displays reload time in milliseconds
- Reports number of reset timers cleared
- Shows cached worlds cleared count
- Confirms config cache rebuild status
-
New
/rwadmin test <feature>command - Comprehensive testing system for diagnosticscache- View world and config cache contents with entry countstimer- Display next reset times for all worlds (shows remaining hours/minutes)performance- Show operation performance metrics (teleport, reset timings)tps- Check current server TPS with color-coded health indicators (green/yellow/red)config- Verify configuration loading for all worlds (displays name, auto-reset status, interval/time_of_day mode)
-
Enhanced tab completion - Added full tab completion support for
/rwadminsubcommands and test features
Improved
- Reload command feedback - More detailed output showing exactly what was cleared and recalculated
- World cache management - Reload now properly clears world cache in addition to config cache and reset timers
- Admin panel access -
/rwadminwith no arguments opens admin panel, or use/rwadmin panelexplicitly - Console compatibility - Reload and test commands now work from console, not just in-game
Fixed
- Continued fix from v1.1.1: Reset timers properly clear on reload, ensuring
time_of_daychanges take effect immediately
Technical
- Refactored command handler to support subcommands (panel, reload, test)
- Added dedicated test methods for each diagnostic feature
- Updated ResourceTabCompleter to handle both
/resourceand/rwadmincommands - Improved error handling and permission checks for admin commands
-
✨ New Features
Time-of-day automated resets
- Added
automated_resets.time_of_day(formatHH:mm) under each dimension. - When set, the auto-reset schedule runs at that local server time instead of using the interval timer.
- Existing interval-based scheduling still works as a fallback when
time_of_dayis blank.
🛠️ Fixes
Custom menu heads (Base64 textures)
- Fixed
/resourcemenu custom head textures showing as Steve. - Head textures are now applied using the Base64
texturesvalue reliably (preferred) with URL/JSON fallback. - Config now documents that
menu.items.<slot>.texturesupports Base64 (recommended) or a textures URL.
- Added
✨ New Features
Datapacks support (custom structures / loot tables)
- New
datapacksconfig section to automatically copy datapacks into freshly created resource worlds. - Optional
/minecraft:reloadafter copying so datapacks apply without a full restart. - Configurable source (
world:<name>orfolder:<path>) and per-dimension apply toggles.
Per-world teleport toggle
- New
teleport_enabledoption per dimension:world.teleport_enablednether.teleport_enabledend.teleport_enabled
- Blocks teleports from both
/resource tp <world>and the/resourceGUI when disabled.
🛠️ Improvements
- Added clear notes in
config.ymlexplaining default/resourceGUI behavior and permissions. - Improved GUI click handling to identify the BubbleReset menu reliably (uses a dedicated inventory holder).
- Added a fallback to read the menu action from item lore when PDC is unavailable.
- New
BubbleReset v1.1.0 - Performance & Compatibility Update
- World caching with ConcurrentHashMap
- Config value pre-caching
- Async chunk pre-loading
- CompletableFuture async operations
- Performance timing tracker
- Statistics logging on shutdown
- Slow operation warnings
- Load time display
- Reload time display
- Support for Minecraft 1.19-1.21
Нет описания изменений
