New Features
Enchanted / Custom Item Variants
Adding an enchanted or custom item when the base material already exists in the shop now auto-creates a custom variant instead of overwriting the original
Custom variants appear in the same category as the base material (e.g., an enchanted diamond sword appears in Tools alongside the plain one)
Variants use stored_item delivery — buyers receive an exact clone with all enchantments, lore, and custom data preserved
Category Override for Items
/shopadmin add item <price> [category] now accepts an optional category argument
Tab completion suggests all available categories when typing the command
Allows placing items in any category regardless of auto-detection
ValhallaMMO Integration
Added native support for ValhallaMMO custom items
Custom items are auto-detected and routed through the server-shop system with valhallammo delivery
Improvements
Dynamic Pricing on Custom Variants
Custom variants now display dynamic buy and sell prices based on the base material's stock curve (instead of a static fixed price)
Stock levels are shown on custom variants using the base material's stock pool
Low stock and out-of-stock warnings display correctly
Admin GUI
Custom variants now appear in the Admin Shop Browse GUI within their assigned category
Right-clicking a custom variant opens the Special Item Editor for editing or deletion
Pagination correctly accounts for mixed regular + special items
Inventory Selling (Dialog GUI Mode)
Right-click and Shift+Right-click selling from player inventory now works when Dialog GUI mode is enabled
Sell price lore is displayed on inventory items while the shop is open
Nexo GUI Textures
Fixed race condition where Nexo glyphs weren't initialized before DynamicShop loaded
Added lazy-cached warmup pattern to NexoWrapper with graceful fallback
1-tick startup delay ensures Nexo glyph singletons are registered first
Bug Fixes
Fixed enchanted item override — Adding an enchanted diamond sword no longer replaces the plain diamond sword template
Fixed messages.yml corruption — Replaced YamlConfiguration.save() with safe file-append to prevent MiniMessage <glyph> and <shift> tags from being mangled by SnakeYAML re-serialization
Fixed isServerShopItem() returning false for items with category overrides — now checks itemIdentifier instead of category == SERVER_SHOP
Fixed custom variant display name — Shows the item's actual display name (from stored enchanted item) instead of the raw ID like diamond_sword_custom_95084
Fixed stock not showing on custom variants due to overly restrictive category and itemConfigs checks
Developer information
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle.
maven { name = "Modrinth"; url = "https://api.modrinth.com/maven" }