Skip to content

v4.0.0

Choose a tag to compare

@github-actions github-actions released this 04 Sep 16:38
· 120 commits to main since this release

4.0.0 (2025-09-04)

  • feat!: remove unused getEntity methods with consumer (9c499ab)
  • refactor(api)!: overhaul ProfitCalculatorRegistry and calculator selection (f01d446)

Bug Fixes

  • api: add UP and DOWN block faces to cached faces set (59a2fcd)
  • Change upgrades return type to UnmodifiableObjectMap (95c996e)
  • correct booster total initialization and time calculation (046aa74)
  • update container validation to use storage-specific checks (c44f453)
  • upgrade: Fix upgrades not working due to UnmodifiableObjectMap call (e3e67dd)

Code Refactoring

  • api: restructure economy and storage APIs, remove custom events, and improve container handling (eece0c2)

Features

  • 4.0.0 API for VoidChest 6.0.0 (e46541a)
  • Add "none" as animation type (df52158)
  • Add block coordinate methods and refactor void chest lookup (6aecac6)
  • add ITimedTask#isRunning and update isCancelled javadoc (3cd3e30)
  • add silent booster methods and refactor event handling (86444b8)
  • api: add async constructor to PlayerEvent (ab11bb8)
  • api: add constructor overloads to ObservableObjectMap (dd2bc73)
  • api: add custom name support and void chest type config (0c560b2)
  • api: Add disabled worlds management to IVoidChest (f33b527)
  • api: add FilterMode.fromString method with synonym support (eb967e6)
  • api: add null checks in Utils.placeHolder method to prevent NPEs (0b2fa68)
  • booster: replace old booster system with new provider-based system (c28a87f)
  • enhance cache concurrency and null safety in VoidChestCacheController (00497aa)
  • EntityManager: add create methods with consumer parameter (8484896)
  • implement create method in InvalidEntityManager (ca63fcf)
  • maps: refactor constructors and add conversion methods (4150b76)
  • Remove tests (b999df7)
  • Replace nullable returns with Optional in storage APIs (35b2236)
  • update Minecraft version ranges and add new versions (91ceeae)
  • update to Minecraft 1.21.7 and switch to Paper API (849b255)
  • utilities: add VoidChunk class and refactor SerializableLocation (f2280b1)

Performance Improvements

  • cache hash code and optimize equals in location/chunk (fc8b2b7)

BREAKING CHANGES

  • Existing ProfitCalculator implementations must now
    include getWeight() and getPlugin() methods. Registry API methods have
    significantly changed - plugins using the registry require updates.
  • Removed getEntity methods with consumer parameter
    from EntityManager interface and InvalidEntityManager class. Any
    existing implementations must remove references to these methods.
  • api: This commit involves widespread refactors, file deletions, class migrations, and internal API restructuring. Be sure to review the full diff and adapt plugin implementations accordingly before upgrading.
  • Economy system refactored:

    • All player-related economy classes moved to com.georgev22.voidchest.api.economy.player
      • Includes AEconomy, IEconomyManager, EconomyMode, and InvalidEconomy
    • Profit calculation logic moved to com.georgev22.voidchest.api.economy.profit.ProfitCalculator
    • All imports and references updated accordingly
  • Removed the entire custom event system:

    • Deleted:
      • Core classes: Event, HandlerList, EventManager, EventPriority
      • Interfaces: Cancellable, EventListener, EventExecutor
      • Annotations and wrappers: EventHandler, ListenerWrapper
      • ASM-based event executor generator
      • All inventory-related custom events: VoidInventoryOpenEvent, Slot, VoidInventorySlotChangeEvent, etc.
    • All events refactored to extend VoidChestBaseEvent, which now inherits from Bukkit’s Event
    • PlayerEvent updated to be Bukkit-cancellable and moved to api.events
  • Introduced DataContainerWrapper system:

    • New version-compatible abstraction over Bukkit's PersistentDataContainer
    • Supports modern, legacy, and NBT-based containers
    • Includes helper factories and wrappers to safely read/write data across versions
  • Introduced ContainerWrapper:

    • Cross-version abstraction over Bukkit container blocks and inventories
    • Used in serialization and inventory manipulation logic
    • Improved compatibility with older Minecraft server versions
  • API changes to VoidChestAPI:

    • Removed fields: SellHandler, SellTaskHandler, VoidInventoryUtils, EventManager
    • Added: ITimedTaskManager for task control
    • Introduced isFolia detection logic (static flag and accessor methods)
  • Serialization and upgrades:

    • Added UpgradeLevel and UpgradeSerializer for structured upgrade level control
    • Used for item upgrades and enhancement tracking
  • Code modernization and cleanup:

    • Removed obsolete packages and improved file organization
    • Improved BoundingBox#clone implementation to eliminate CloneNotSupportedException
    • Marked internal APIs with @ApiStatus.Internal where applicable