Skip to content

v1.2.1-beta | Persistence & Stability

Pre-release
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