Releases: LunaHD24/MoonBreak
Releases · LunaHD24/MoonBreak
Release list
v1.2.1-beta | Persistence & Stability
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
v1.2.0-beta | 26.x Support
Compatibilty: 26.x - Java 25
Very small release, only adding support for 26.x.
Full Changelog
Changes
- Added support for 26.x
v1.1.0-beta | First Release
Compatiblity: 26.2 - Java 25
This is the first release of the MoonBreak API, following the internal versions v1.0.x and now finally the first public one v1.1.0 with a whole lot of bug fixes and core changes.
Key Features
- Full Vanilla Breaking Simulation
- Custom Blocks
- Custom Tools (Full Pickaxe Support)
- Massive Performance Improvements
Full Changelog
Changes
- Massively improved Performance
- Finished JavaDocs
- Increased saving interval
- Excluded players in creative/spectator from breaking speed calculations
- Encapsuled non-thread-safe methods in CustomBlockLoader#loadChunk and simplified to using in-built methods
- Deduplicated checks for executing the PRE_BLOCK_BREAK hook
- Made CustomTool#repair and CustomTool#damage affected by the tools unbreakable state
- Made IO operations run asynchronously
- Made speed be a mandatory argument for a CustomToolType if the underlying material does not offer a default mining speed value
- Made api and plugin version the same
- Made CustomBlockManager#place (non-virtual) not update the physical block if the material at the location is already correct
- Added CustomTool Event Hook Integration
- Added Builder for event hook integration
- Added a way to virtually place blocks
- Added a way to remove CustomBlocks and more by exposing the CustomBlockManager
- Added a way to get a CustomTool by player
- Added a way to disable vanilla mineables being overwritten, if set
- Added a move method to CustomBlockManager to allow for easier moving of blocks, both physically and virtually
- Added fallback for reading the chunk index file
- Added tool durability load fallback to the default maxDurability
- Added bool ItemProperty factory
- Removed BlockFromToEvent listener to massively increase performance and banned the dragon egg as a custom block material, being the only material requiring it
- Removed unneccesarry chunk loads
- Removed CustomBlock.java in favor of the CustomBlockManager to prevent state desynchronizations and provide a single source of truth
- Now also resetting to initial values upon being excluded from breaking speed calculations
- Now saving all blocks onDisable
- Now cancelling events before logging
Bug Fixes
- Fixed tools having a maxDurability of 0
- Fixed mining level 0 being invalid
- Fixed lore and correctToolFor being unmutable upon using CustomToolType.Builder#copyFrom
- Fixed durability possibly exceeding its bounds
- Fixed error messages for incorrect materials and updated javadocs accordingly
- Fixed POST_BLOCK_BREAK hook not firing if the tool is unbreakable or broke as the result of the block breaking
- Fixed durability not being displayed as the item was set to unbreakable
- Fixed incorrect JavaDocs
- Fixed breaking speeds not being updated upon some state changes and compressed it down into a LastState class
- Fixed tool items meta being reset on data change and added a ItemMeta injection accordingly
- Fixed piston traversal being moved in the wrong order
- Fixed blocks not being removed on unloading a non-save chunk
- Fixed INTERACT_AT_ENTITY event hook firing for both hands
- Fixed overwriteVanillaMineables not being included in CustomToolType.Builder#copyFrom
- Fixed unbreakable property being lost upon recreating the itemstack
- Fixed lastLookedAt and lastHeldItem in BreakingService.LastState not being cloned on setting them
- Changed listener priorities to be correct