Repository navigation
v1.2.1-beta | Persistence & Stability
Pre-release
Pre-release
Compatibility: 26.x - Java 25
Version 1.2.1-beta comes with a lot of stability improvements, a persistence overhaul and a whole lot of other bug fixes.
Warning
Registration of any kind must now always happen during STARTUP. Attempting to register entries later could lead to data loss and unexpected behaviour!
Key Features
- Overall Stability Improvements
- Overhaul of Block Persistence
- Increased Storage Efficiency
Full Changelog
Changes
- Completely refactored
CustomBlockLoaderto increase performance and eliminate block saving issues - Redesigned the chunk index to
ChunkIndexStorage - Made remaining data wiping actively load chunks at a rate scaled to server performance
- Switched PDC storage format from
Stringtobyte[]list - Refactored
CustomBlockManagerImplto support the newCustomBlockLoaderrequirements and madeplacedBlocksworld-dependent - Added
WorldChunkKeyandChunkBlockKeyfor world-dependent storage and optimized lookups - Added
ChunkBlockEntryDataTypefor easier binary block data read/write operations on chunks - Added
ResourceRegistry#isRegisteredmethod - Switched inactivity checks to Unix timestamps instead of tick increments and increased the delay to 120 seconds
- Split pre- and post-block break hooks into two separate event listeners (
NORMAL&MONITORpriorities) - Added new
/breakspeedcommand (with permissions) to set or reset break speeds - Display a block save overview and correctly clear remaining data upon plugin disable
- Updated JavaDocs to clarify that event modifications in post-break hooks are forbidden
Bug Fixes
- Fixed overwrite issues when registering entries with duplicate keys in
ResourceRegistry - Fixed unregistered blocks being placeable
- Fixed chunk data not being wiped correctly
- Fixed data loss on plugin disable by adding synchronous chunk index saving
- Fixed charset mismatches and non-thread-safe fields
- Fixed block saving for blocks located in unloaded worlds
- Fixed block data loading/saving breaking on invalid values (now skips invalid entries gracefully)
- Fixed broken activity checks and deduplicated overlapping activity methods
- Fixed break speed attribute calculation order, simplified formulas, and made calculations independent of base speed to avoid nullifying other modifiers/effects
- Fixed break speed modifiers not being removed on plugin disable by switching to transient modifiers
- Fixed Aqua Affinity checks applying underwater debuffs incorrectly
- Fixed
PlayerBreakBlockListenerignoring the cancelled event state - Fixed display name and lore being overwritten when passing
baseMetaor recreatingItemStacks - Fixed a reverse chunk coordinate bit extraction in
ThrottledWipeTask - Fixed the chunk index potentially clearing upon plugin enable at
STARTUP
Refactoring & Cleanup
- Moved
CustomBlockLoadertodev.lunaa.moonbreak.block.storage - Reduced saving overhead for block data and chunk index entries
- Removed
CustomBlockManagerImpl#stripLocation(replaced byWorldChunkKeyandChunkBlockKey) - Removed
PlayerJoinListeneras it is no longer required for break speed modifiers - Improved overall logging quality