
Add support for lingering potions across code and docs, bump version to 9.4.3c, and improve potion handling and logging. Key changes:
- Introduce lingering field in PotionInfo (constructor, getter/setter) and include it in serialization/PDC.
- Parse old/new potion config formats (backwards compatible with 4-value PDC) and add config/docs for
lingeringin dev-bukkit, modrinth, spigot.bbcode, and wiki. - Map multiple potion name aliases (e.g. INSTANT_HEAL/HEALTH -> HEALING, INSTANT_DAMAGE/DAMAGE -> HARMING, JUMP_BOOST -> LEAPING, INCREASE_DAMAGE -> STRENGTH) and adapt to 1.20.5+ names.
- Ensure correct item material selection for potions (POTION, SPLASH_POTION, LINGERING_POTION) and include lingering checks when matching/creating potion ItemStacks.
- Register sellable items even if out-of-bounds for GUI display (so 'worth' shops can sell without display slots) and fix ITEMTABLE lookup to use the actual material key; add defensive logging for registration and lookup fallbacks.
- Add extensive debug/logging in Item, Sell, Shop, WorthDisplayManager to aid troubleshooting of potion resolution, matching, registration and finds.
- Bump Maven version to 9.4.3c.
These changes add lingering potion capability, improve backwards compatibility and alias handling, and make item registration/lookup and troubleshooting more robust.
FIXED:
- Some base classes from XSeries were missing during the shading process. Found the ones we needed, and shaded those ONLY.
HOT FIXED:
- Transaction UI not supporting smaller stacks of items, now will intelligently resize automatically.
Bump version to 9.4.3 and introduce permission checks and UI/UX improvements. Changes include:
- pom.xml: version bumped to 9.4.3
- ItemActionHandler: check guishop.shop.
and guishop.shop.* permissions (with OP bypass) and send no-permission message. - Menu & Shop: unify how player-balance display name and lore are selected (prefer 'name' then 'shop-name'; 'lore' then 'shop-lore'), build a proper player head with owning player, set PDC keys for GUI elements and add editor mode hints.
- Shop: add refreshDynamicPrices() to efficiently update dynamic pricing lore/itemstacks without rebuilding the whole GUI, and openAtPage(player, page) helper to open to a specific page.
- Quantity & TransactionGui: remember the page the player opened from (returnPage) and, when returning/backing out, refresh dynamic prices and open the shop at the original page instead of a full reload.
- Fixed PLAYER_BALANCE items not correctly reading the lore or name from configs
Introduce a dynamic pricing subsystem and integrate it across configs, UI and docs. Key changes: create dynamicpricing.yml (auto-created on init) and load its enabled flag from ConfigManager; update TransactionGui to refresh prices after transactions; extend ItemType to treat SHOP/ITEM/COMMAND as purchasable and adjust editor/shop deserialization/auto-conversion logic; add market/admin commands/docs and marketplace persistence notes; auto-blacklist GUIShop inventories from worth display; refactor SkullCreator to use URI and remove authlib usage; simplify NBT extraction fallback in GuishopCommand; add paperweight manifest entry and adjust maven-shade settings to avoid Paper PluginRemapper; remove obsolete .mojang-mapped resource and bump project version to 9.4.2; update documentation and examples to include SHOP_SHORTCUT and other new/clarified item types. Fixed bugs hiding the showing of buy/selling lore, and prices not refreshing with dynamic pricing enabled.
ADDED:
- Sell Chest/Sell Inventory capability via GUIShop API
- Introduce per-item override support for dynamic pricing
- Introduce ItemType.isPurchasable() as to fix cannot buy and sell lores
FIXED:
- Stack trace when players open regular chests on Folia. Made thread safe.
ADDED:
- 'rows' config option for each shop.
Fix command item placeholders and add sudo mode
- Fix {PLAYER_NAME}, {PLAYER_UUID}, {PLAYER_WORLD}, {PLAYER_BALANCE} not being replaced in COMMAND items
- Add sudo: true/false config option to run commands as player instead of console
- Add sudo toggle button in Item Editor GUI
- Add PDCUtil.KEY_SUDO for editor state persistence
- Create Command-Items.md wiki page with full placeholder documentation
- Update spigot.bbcode, modrinth.md, dev-bukkit.html with command item details
- Add build-time placeholder processing for docs (target/processed-docs/)
- Add configurable variables in pom.xml: mc.version.min/max, supported.platforms, etc.
FIXES:
- Item Type "COMMAND" no longer triggering due to new transaction UI
Add Built-in Dynamic Pricing System
Dynamic Pricing:
- Added built-in supply/demand pricing system that works out of the box
- Prices increase when items are bought (supply decreases)
- Prices decrease when items are sold (supply increases)
- Prices gradually normalize back to base values over time
- External plugins can still override via DynamicPriceProvider API
Configuration:
- Created dynamicpricing.yml for all dynamic pricing settings
- Simplified config.yml to just dynamic-pricing: true/false
- Added per-item dynamic: false config key to exempt specific items
Admin Commands:
- /gs market status - View dynamic pricing system status
- /gs market info
- - Check an item's current market status
- /gs market reset
- - Reset an item to base price
- /gs market resetall - Reset all items to base prices
- Added tab completion for all market commands
Help and Tab Completion:
- Added eco and market commands to /gs help output
- Added tab completion for /gs market subcommands
- Added material name suggestions for /gs market info/reset
Documentation:
- Created wiki/Dynamic-Pricing.md with full documentation
- Updated wiki/Commands-and-Permissions.md with market commands
- Updated wiki/API-Documentation.md with Dynamic Pricing API
- Updated spigot.bbcode, modrinth.md, and dev-bukkit.html
Technical:
- Added DynamicPricingManager class with SQLite persistence
- Added shouldUseDynamicPricing() convenience method on Item
- Data stored in plugins/GUIShop/Data/dynamic_pricing.db
- Added dynamicpricing.yml to pom.xml resources
FIXED:
- No longer will register economy commands if internal-economy is disabled
ADDED:
- New shops folder with each shop broken into its own YML. Supports auto converting old shops.yml
- Unified Transaction GUI, replaces old Quantity Menu
- Fully configurable player_balance item type
- Fully configurable pagination and back buttons
- Creating new pages using gs edit
- Tab completion for gs commands
- Better Default configs
- /gs edit transaction command to edit transaction UI
FIXES:
- Better handling of pagination in editor mode
- Not able to configure balance or pagination buttons
- Cursor reset when entering a shop
- Enhanced the global Item Action Handler
- Adding item with a missing target-shop creates the new target shop config
- Enhanced Item Editor UI
FIXED:
- Alt Sell menu not working correctly
- Items not being able to stack on top of each other once purchased
Massive thanks to @JakeWalter for these fixes!
ADDED:
- Folia Support
- GuiShopAPI and StatisticsManager to retrieve sold and bought items, most sold and bought item types
- /togglepay Command - Toggle payment notifications
- Internal Economy option, added economy.yml with various economy settings
- Cursor rules to help jumpstart newer developers
- Support for ASCII/Unicode chars in inventory title of worth lore blacklist
Fixed:
- Alt Sell Menu (thanks to Jake Walter)
- Artifact output folder
- WorthDisplay not removing armor lore
ADDED:
- Brand new GUI Based Editor for menu & shops.
- Worth Lore Blacklist options
- Packet based inventory refreshing
- Creative Mode worth lore support
- GuiShop ItemInfo Command: /gs iteminfo
FIXED:
- Worth lore not working on all armor indices in the packet
- Cursor resetting when going back to previous inventory
- Desynced items spawned by Creative GUI
- Creator mode showing lore lines in regular shop mode
ADDED:
- Worth Item Lore Display Fix
- Armor Slot worth blacklist
- Inventory title worth blacklist
- Item title worth blacklist
- Wiki Pages
- Better Paper Support
FIXED:
- Not intercepting the packet correctly
- Stack splitting not updating prices correctly
- Removed Lang3 from plugin
- Cleaned up build POM
- Reloading Command


