Added
Fixed
- Guild Name Coloring System:
- New command:
/guild color <code|#hex|&code|<SOLID:hex>>.- Permission node:
guilders.perk.guild.color(required for basic colors).- Restricted color changes to the Guild Owner only.
- New message key
ONLY_OWNER_CAN_COLORadded to all language files.- Gradient Support:
- Added support for gradient guild names via
/guild color <GRADIENT:hex1:hex2>.- Permission node:
guilders.perk.guild.gradient.- Teleportation Warmup:
- Added a "stay still" warmup for guild warps.
- New config:
Guilds.Warp.Warmup(default: 5 seconds).- Teleportation cancels if the player moves.
- Added
WARP_WARMUP_STARTandWARP_WARMUP_CANCELLEDmessages to all languages.- Automatic Language Sync:
- Implemented a system that automatically adds missing translation keys to language files on server start, using
messages_en.ymlas the reference.- Particle Fallback:
- Added a robust fallback system for claim border particles. If a specific particle fails to spawn, it defaults to a safe
DUST(LIME) particle to ensure borders are always visible.
Changed
- Guild Claim Particles:
- Resolved an issue where guild claim particles were not showing due to inconsistent chunk key types (String vs Long).
- Fixed an exception in the async clustering logic that prevented border calculation.
- Hex/Gradient Parsing in GUIs:
- Fixed literal tags (e.g.,
<SOLID:FF0000>) appearing in the Top Guilds and Guild Menu (/g).- Corrected the processing order: placeholders are now replaced before color processing, and GUI-safe legacy codes are used for item metadata.
- Command Name Matching:
- Updated guild name lookups in various commands (
/g warp,/g join, etc.) to be color-agnostic and case-insensitive.
- Config Management:
- Added
Guilds.Warp.CooldownandGuilds.Warp.Warmupto the automatic config initialization.- Language Coverage:
- Synchronized
messages_ro.yml,messages_it.yml, andmessages_tr.ymlto fully match the English reference file.- Code Refactoring:
- Improved
Utils.javawith better null safety for World objects and optimized cluster calculation.
Added
- Enhanced Data Caching: Implemented intelligent caching system with automatic cache cleanup and 5-minute expiration to improve database performance
- Improved Database Loading: Enhanced startup sequence with better logging for profiles, ranks, and claims loading to aid debugging
Fixed
- GUI System Stability: Eliminated potential crashes from third-party library incompatibilities by implementing a custom GUI system
- Database Connection Handling: Improved error handling and logging during database initialization and data loading
- Memory Management: Optimized memory usage with proper cleanup of expired cache entries and concurrent data structures
- Thread Safety: Enhanced concurrency safety throughout the application using
ConcurrentHashMapandCopyOnWriteArrayList
Changed
- Data Service Layer: Refactored [PlayerDataService] with improved caching, async operations, and better error handling
- Plugin Initialization: Streamlined startup sequence with better error recovery and comprehensive logging
- Performance Optimization: Moved database operations to background threads and implemented intelligent caching to reduce main thread blocking
Deprecated
- invui Library: The xyz.xenondevs.invui library is no longer used and has been removed from dependencies
- IridiumColorAPI: Color processing is now handled internally through the custom
ColorUtilsclass
Technical Improvements
- Custom GUI Framework: Built a complete GUI framework from scratch with support for pagination, item adapters, and custom builders
- Advanced Caching: Implemented time-based cache expiration with automatic cleanup to prevent memory leaks
- Better Error Recovery: Enhanced error handling throughout the application with detailed logging and graceful fallbacks
- Modular Architecture: Improved code organization with clear separation between GUI systems, data services, and utilities
Added
Fixed
- Dual Claim System: Introduced a configurable system for personal claims in
config.yml, allowing server owners to enable/disable Virtual (balance-based) and Physical (block-based) claim systems independently.- Configurable Systems: Added
ChunkClaims.Systems.VirtualandChunkClaims.Systems.Physicalsettings.
- Profile Initialization: Robustly fixed issues where personal claim profiles and ranks were not being created or loaded correctly upon first join or data creation.
- Particle System Stability: Fixed
IllegalArgumentExceptionin the claim border particle task by implementing dynamic data type detection and adding safety try-catch blocks. This ensures correct data (likeFloat,DustOptions, orDustTransition) is provided based on the specific server version requirements.- NPE in GUIs: Resolved persistent
NullPointerExceptionwhen opening claim menus by adding defensive null checks for claim profiles and ensuring proper data refresh.- Vault Economy Safety: Added checks to prevent
NoClassDefFoundErrorwhen Vault is not installed on the server.- Join/Rejoin Data Loading: Fixed a critical deadlock on player rejoin where database queries were incorrectly scheduled on the Bukkit main thread.
- GUI & Placeholders:
- Fixed
%personal_unspent_claims%not parsing correctly in the personal claims menu.- Fixed hardcoded "Use claim blocks in your inventory" message; it now correctly displays the virtual unspent claims balance.
- Added missing null checks in
GuildInfoItemandClaimItemto prevent potential crashes when player data or guild data hasn't fully loaded.- Updated
ClaimItemto show correct virtual unspent claims balance in the nearby claims map.- Fixed nearby claims menu not updating automatically after claiming a chunk.
- Config Auto-Update: Missing configuration fields for
ChunkClaims.Systemsare now automatically added to existingconfig.ymlfiles upon startup.
Changed
- Hybrid Claiming Logic: Updated claiming process to prioritize virtual balance when available and fallback to physical blocks if enabled.
- Smart Unclaiming: Players now receive their claims back as virtual balance or physical blocks depending on the active server configuration.
- Dynamic Playtime Rewards: Automatic rewards for playtime now correctly grant virtual balance or physical claim blocks based on settings.
- Context-Aware Placeholders: Updated
%player_unspent_claims_count%to dynamically show either virtual balance or the count of claim blocks in the player's inventory.- GUI Improvements: GUIs now accurately reflect available claims from both virtual and physical sources.
- Performance:
- Moved database operations in
PlayerDataServiceto background threads to ensure server stability and prevent main thread blocking.- Optimized player data existence checks during join flow to be non-blocking.
- Improved profile and rank creation flow to reduce database calls and potential race conditions.
Changelog
Fixed
- Fixed
- Join/Rejoin Data Loading: Fixed a critical deadlock on player rejoin where database queries were incorrectly scheduled on the Bukkit main thread, causing stalls on Paper 1.21.10/1.21.11.
- GUI & Placeholders:
%personal_unspent_claims%not parsing correctly in the personal claims menu.
- Fixed hardcoded "Use claim blocks in your inventory" message; it now correctly displays the virtual unspent claims balance.
- Added missing null checks inGuildInfoItemandClaimItemto prevent potential crashes when player data or guild data hasn't fully loaded.
- UpdatedClaimItemto show correct virtual unspent claims balance in the nearby claims map.
Changed
- Moved database operations in
PlayerDataServiceto background threads to ensure server stability and prevent main thread blocking.- Optimized player data existence checks during join flow to be non-blocking.
Changelog
Bug Fixes
- Fixed: The issue where the message "CLAIMS » +1 chunk claim (+360 minutes playtime reward)" would appear without granting the corresponding 1x chunk claim block.
- Fixed: The problem where players with protection access weren't able to break crops.
- Fixed: ORMLite dependency
Changelog
Added/Changes
- Extended support from 1.21.4 to 1.21.10
- Removed IridiumColorAPI dependency for message format handling, now it has its own messaging system.
- Removed InvUI dependency for inventories, now it has its own GUI system.
- The claim system (only for personal claims) is no longer based on a virtual number of unused claims, but now, using the command
/giveclaimblock, you can give players configurable physical blocks with which they can claim chunks.- Added the ability with claim blocks: when you right-click to place them, for example, if you have 10x chunk claim blocks, it will automatically claim 10 chunks around you. However, if you hold SHIFT while placing, it will only claim a single chunk, and the number of blocks in your inventory will be updated accordingly.
- Fixed many performance issues with the plugin.
- Rewritten the plugin's database system, now using Ormlite for better performance.
- Improved many functionalities to be async.
- The command
/giveplayerclaimwas replaced with/giveclaimblock <player> <amount>.
Bug Fixes
- Fixed the issue with
/g disband claimthat didn’t fully unclaim a chunk, only disappearing after a restart.- Fixed the issue with shovels not being usable in personal claims, even if you were the owner of the claim.
- Fixed the issue with flint and steel that couldn’t be used in some cases.
- Fixed several griefing-related issues with claims, such as using pistons, explosions, minecarts, etc.
- Fixed the issue where pistons and redstone farms wouldn’t work in claims.
- Fixed the issue where fishing wasn’t possible in claims.
- Fixed various types of damage to animals and players in claims.
Changelog
Added
- Squaremap Support
- BuiltByBit Test Server
🛠 Fixed
- Fixed some claims issues
