Skip to content

Releases: LunaHD24/MoonBreak

v1.2.1-beta | Persistence & Stability

Pre-release

Choose a tag to compare

@LunaHD24 LunaHD24 released this 09 Sep 17:04
ff28666

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 CustomBlockLoader to 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 String to byte[] list
  • Refactored CustomBlockManagerImpl to support the new CustomBlockLoader requirements and made placedBlocks world-dependent
  • Added WorldChunkKey and ChunkBlockKey for world-dependent storage and optimized lookups
  • Added ChunkBlockEntryDataType for easier binary block data read/write operations on chunks
  • Added ResourceRegistry#isRegistered method
  • 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 & MONITOR priorities)
  • Added new /breakspeed command (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 PlayerBreakBlockListener ignoring the cancelled event state
  • Fixed display name and lore being overwritten when passing baseMeta or recreating ItemStacks
  • Fixed a reverse chunk coordinate bit extraction in ThrottledWipeTask
  • Fixed the chunk index potentially clearing upon plugin enable at STARTUP

Refactoring & Cleanup

  • Moved CustomBlockLoader to dev.lunaa.moonbreak.block.storage
  • Reduced saving overhead for block data and chunk index entries
  • Removed CustomBlockManagerImpl#stripLocation (replaced by WorldChunkKey and ChunkBlockKey)
  • Removed PlayerJoinListener as it is no longer required for break speed modifiers
  • Improved overall logging quality

v1.2.0-beta | 26.x Support

Pre-release

Choose a tag to compare

@LunaHD24 LunaHD24 released this 30 Aug 13:12
601118b

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

Pre-release

Choose a tag to compare

@LunaHD24 LunaHD24 released this 28 Aug 11:26
2a846da

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