Bug Fixes: - Fixed processing of AIR materials in custom items - Added null check for air-type items in BaseNMS.java:372 - Added null check for ItemMeta in BaseNMS.java:373 - Prevents errors when trying to process empty/air item stacks
--- Version 2.8.7 (April 23, 2025)
Bug Fixes: - Fixed NullPointerException in getCustomItem() method - Added null check for ItemStack parameter in BaseNMS.java:372 - Prevents crashes when null items are passed to the method
--- Version 2.8.6 (February 15, 2025)
Features: - Added support for Minecraft 1.21 R2 and R3 versions - Improved NMS version detection for modern Minecraft versions - Now uses regex pattern matching to detect version from Bukkit.getVersion() - Better support for reobfuscated/paper builds
Improvements: - Modernized CustomModelData handling - Now uses native ItemMeta API for Minecraft 1.14+ instead of NBT tags - Falls back to NBT for older versions - Implemented PersistentDataContainer for 1.17+ - Uses NamespacedKey API instead of raw NBT tags for better compatibility - Added key sanitization for PersistentDataContainer keys - Refactored CraftBukkit package detection to be more dynamic - Code cleanup in PremiumAction.java - better variable naming and action handling - Minor code quality improvements in EventsHandler.java and CustomItem.java
Technical Changes: - Changed v1_21_R1 to extend v1_20_R2 instead of v1_20_R1 - Added getNumericMajorMcVersion() static method for version checking - Made setKey() and getKeyValue() methods protected for inheritance
--- Modern Head Profile API in 1.20+ (November 14, 2024)
Improvements: - Implemented modern PlayerProfile API for skull textures in Minecraft 1.20.2+ - Uses CraftPlayerProfile for better compatibility - Properly triggers texture loading with .getSkin() call - Improved skull skin application for newer versions - Added createPlayerProfile() method to both NMS_1_20_R2 and NMS_1_21_R1 - Fixed GameProfile initialization with non-null name requirement
--- Document Fix (October 28, 2024)
Documentation: - Added code comments explaining why GameProfile requires a non-null name in recent Minecraft versions - Improved code readability in BaseNMS.java:234-235
--- Version 2.8.5 (October 28, 2024)
Bug Fixes: - Fixed GameProfile NullPointerException - Changed GameProfile name from null to empty string "" - Required for recent Minecraft versions that don't accept null names - Fixed in BaseNMS.java:235
--- Version 2.8.4 (October 11, 2024)
Features: - Added full support for Minecraft 1.21 - Created new v1_21_R1 NMS module - Extends v1_20_R1 for compatibility - Updated dedicated player list field mapping to "l" - Updated build configuration to include 1.21 module - Added v1_21_R1 to packager dependencies