Compatibility
- Primary build target is Paper 26.2 (Java 25 toolchain).
- Remains compatible with Paper 1.21.x – 26.1.x via runtime API fallbacks (attributes, sounds, biomes, game rules).
- plugin.yml api-version is 1.21 so Paper loads the plugin across 1.21 through 26.2.
- Folia remains folia-supported: true (best-effort on Folia 26.1.x until Folia ships 26.2).
Added
- RegistryUtil / CompatAttributes helpers for cross-version registry and attribute lookups.
- Adventure-backed MessageUtil.send / MessageUtil.component (legacy & configs unchanged).
- Redis local short-TTL cache with async soft-refresh for hot cross-server reads.
- Async coalesced economy balance persistence (in-memory balance stays authoritative).
Changed
- Toolchain: Paperweight 2.0.0-beta.21, Paper API / dev bundle 26.2, Gradle 9.5.1, Java 25.
- FoliaSafeScheduler rewritten Folia/region-first (no callSyncMethod-first path); addons (kits/duels/protect) and world loader use it.
- Chat prompts migrated from AsyncPlayerChatEvent to Paper AsyncChatEvent.
- Leaderboards: bounded block-material set + TTL cache (no Material.values() × offline-player scans); default cache refresh 60s.
- Scoreboard/tabs: service provider lookups cached (~5s); default update interval 40 ticks.
- Virtual spawners: generation batching stops after batchSize per tick; default only-generate-when-player-nearby: true.
- RTP: heightmap-based surface find; teleport scheduled on the player/entity scheduler.
- Full /astralcore module reload still restarts all modules (documented); prefer per-module reloads when available.
Fixed
- Snapshot restore max-health uses version-safe attribute resolution (MAX_HEALTH / GENERIC_MAX_HEALTH).
- Sound / biome / game-rule lookups no longer rely on removed enum valueOf / values APIs alone.
- Spawner generation batchSize correctly yields work across ticks.
Config / messages
- astralcore/tabs/config.yml: rendering.update-interval-ticks default 40.
- astralcore/leaderboards/leaderboards.yml: cache.seconds default 60.
- astralcore/virtualspawners/config.yml: only-generate-when-player-nearby default true.
Build
- Requires JDK 25 to compile. Run Paper 26.1+ on Java 25; Paper 1.21.x can run the jar on Java 21+ but Java 25 is recommended.
- AstralKits MockBukkit unit tests are not required for the release jar (MockBukkit lags 26.2).
Addons
Addon Old New AstralKits 1.0.1 1.1.0 AstralDuels 1.2.0 1.3.0 AstralProtect 1.0.1 1.1.0
Fixed
- Fixed kit claiming so LOADOUT items now keep their original saved slots.
- Fixed spawner loot drops so items drop in front of the spawner (toward the player) instead of scattering at the player's feet.
- Fixed kit icon editing in DonutKits to consume the cursor item without duplication.
Added
- Config alias max-active-orders-per-player with permission-based order limits (donut.orders.limit., donutcore.orders.limit., *.unlimited).
- Config alias max-homes with extended home limit compatibility permissions (donutcore.homes.limit.*, donut.home.unlimited, donutcore.homes.unlimited).
- DonutKits kit editor messages for icon updated / invalid item.
- Permission-based named homes with configurable limits, including donut.home.limit.7 and donut.home.limit.unlimited.
- Paginated /home GUI with clickable home entries, next/previous arrows, team home access, limit display, and Set Home flow.
- Direct home management commands: /sethome <name>, /delhome <name>, and /renamehome <old> <new>.
- Combat module with configurable action-bar timer, blocked escape commands, and admin bypass permission donut.combat.bypass.
- /vanish alias for the existing /hide command.
Changed
- Existing numbered homes are migrated to named homes like home1, home2, and continue to work through /home <name>.
- Homes, spawn-style teleports, and TPA flows now consult shared combat state to prevent inventory GUI bypasses.
- DonutCore hide/vanish is automatically disabled when a player enters PvP combat.
Config / messages
- Added donutcore/combat/config.yml.
- Updated donutcore/homes/homes.yml with limits.entries, GUI text, and home-management messages.
- Added TPA messages.combat-blocked.
Fixed
- Fixed kit claiming so LOADOUT items now keep their original saved slots.
- Fixed spawner loot drops so items drop in front of the spawner (toward the player) instead of scattering at the player's feet.
- Fixed kit icon editing in DonutKits to consume the cursor item without duplication.
Added
- Config alias max-active-orders-per-player with permission-based order limits (donut.orders.limit., donutcore.orders.limit., *.unlimited).
- Config alias max-homes with extended home limit compatibility permissions (donutcore.homes.limit.*, donut.home.unlimited, donutcore.homes.unlimited).
- DonutKits kit editor messages for icon updated / invalid item.
- Permission-based named homes with configurable limits, including donut.home.limit.7 and donut.home.limit.unlimited.
- Paginated /home GUI with clickable home entries, next/previous arrows, team home access, limit display, and Set Home flow.
- Direct home management commands: /sethome <name>, /delhome <name>, and /renamehome <old> <new>.
- Combat module with configurable action-bar timer, blocked escape commands, and admin bypass permission donut.combat.bypass.
- /vanish alias for the existing /hide command.
Fixed
- Fixed kit claiming so LOADOUT items now keep their original saved slots.
- Fixed spawner loot drops so items drop in front of the spawner (toward the player) instead of scattering at the player's feet.
- Fixed kit icon editing in DonutKits to consume the cursor item without duplication.
Added
- Config alias max-active-orders-per-player with permission-based order limits (donut.orders.limit., donutcore.orders.limit., *.unlimited).
- Config alias max-homes with extended home limit permissions (donutcore.homes.limit.*, donut.home.unlimited, donutcore.homes.unlimited).
- DonutKits kit editor messages for icon updated / invalid item.
Fixed
- /settings mob spawn toggle now blocks all creature spawns near you (except CUSTOM plugin spawns) when enabled.
- Clearer mob spawn status text in /settings (Mob Spawns Near You: ON/OFF).
- Settings load race that could revert a toggle on join.
- /orders amount/price chat input now accepts 10k, 10m, 10b, and decimals like 1.5k.
Added
- /orders search button with chat input, clear search, and paginated filtered results.
- Spawner storage DROP LOOT button drops and removes loot from the current page only.
- Spawner storage page navigation (prev/next).
- Worth inventory lore remains enabled (apply-to-player-inventory: true); lore is synced on pickup, item spawn, mining, and all hotbar slots so stacks merge correctly.
- Fixed the homes GUI from accepting shift-clicked items that disappeared when the menu closed
