Hey everyone,
I'm excited to drop a massive update for
InfiniteVillagerTrades (Optimizator)! This version focuses heavily on backend performance, fixing GUI vulnerabilities, and expanding configuration flexibility.
Here is the full changelog for this update:
️ Bug Fixes & Exploits Patched GUI Security Fix: Completely refactored the internal menu system. Created a dedicated GuiClickListener that completely blocks players from stealing, shift-clicking, hotbar-swapping, or dragging items (like player heads) out of the plugin's interface.
⚙️ Performance & Data Optimization Asynchronous Data Storage: Isolated player statistics and core configuration. Created a separate data.yml to handle whitelists, leaving config.yml clean for settings only.
Zero Server Lag (Anti-TPS Drops): Implemented a new PlayerQuitListener and hooked trade statistics to save asynchronously (saveStatsAsync). This drastically minimizes disk I/O on the main server thread.
Thread Safety: Upgraded all internal storage maps to ConcurrentHashMap to ensure absolute stability and prevent any ConcurrentModificationException errors during high server traffic.
✨ New Features & Customization Wandering Trader Support: Extended the optimization logic to cover AbstractVillager. If enabled via config, Wandering Traders now benefit from the exact same features as regular villagers!
Global Trade Toggle: Added global-infinite-trades in config.yml. You can now choose whether everyone on the server gets infinite trades, or strictly stick to the whitelisted players.
Dynamic Price Modification System: Introduced 3 customizable price levels via the new price-mode setting:
INCREASE: Raises trade prices for economy balance.
NORMAL: Applies a balanced, subtle emerald discount (Default).
CHEAP: Drops all trade costs down to exactly 1 emerald for ultimate flexibility.
Make sure to regenerate your config.yml or add the new keys manually to support the updated features! Any feedback is highly appreciated.
Version 1.6
✔ Added compatibility with the latest Minecraft version
✔ Updated and tested on the latest Paper builds
✔ Improved stability and performance
✔ General optimizations and code improvements
✔ Minor bug fixes
This update improves compatibility with newer Minecraft versions and includes various optimizations.
GUI Menu System ( NEW )
- New `/infinitevillager gui` command opens visual menu
- Players displayed as head items with their skin
- Most recently added players appear first
- Shows online/offline status for each trader
️ Improvements
Price System Overhaul
- Villager prices now DECREASE instead of increase when traded
- Configurable `minPriceMultiplier` prevents prices from going too low
- Demand value reset to 0 for affordable trades
- Better economy balance for allowed players
Command Updates
- 'Added gui' subcommand for visual management
- 'Added clear' command to remove all traders at once
- 'Improved tab' completion
- Better order tracking with LinkedHashMap
Bug Fixes
- Fixed price multiplier restoration on inventory close
- Fixed null checks for player heads
- Fixed permission handling
Full Command List
/infinitevillager add <player> - Add player
/infinitevillager remove <player> - Remove player
/infinitevillager list - List traders
/infinitevillager gui - Open GUI menu NEW
/infinitevillager clear - Clear all
/infinitevillager reload - Reload config
/infinitevillager help - Show help
Compatible with: Minecraft 1.21+ | Paper/Spigot
Compatibility: Minecraft 1.21 and above (Paper/Spigot)
New Features:
Added /infinitevillager clear command to remove all infinite traders at once (requires optimizator.infinitevillager.clear permission, default: op).
Improved tab completion: /infinitevillager add shows only non-infinite online players; /infinitevillager remove shows only infinite online players.
Bug Fixes:
Fixed a security issue where non-infinite players could receive infinite trades if an infinite player interacted with the same villager beforehand. The plugin now properly manages trade limits per villager based on active infinite traders.
Improvements:
Enhanced command help and usage messages.
Better permission handling and error messages.
Configuration:
No changes to config.yml structure. Existing configurations remain compatible.
Installation:
Replace the old jar file with the new one.
Restart the server.
The plugin will automatically update permissions and commands.
This update makes the plugin more robust, secure, and user-friendly for server administrators.
Commands now accept UUIDs for offline players
You can add/remove players even when they're not online
Reload Command
/infinitevillager reload - reloads configuration without server restart
Requires permission: optimizator.infinitevillager.reload
Wandering Trader Support
Functionality now works with wandering traders, not just villagers
Configuration Options
enabled: true/false - enable/disable the feature
maxTrades: -1 - trade limit (-1 = unlimited)
Help Command
/infinitevillager help - shows all available commands in-game
Bug Fixes:
Fixed UUID Support Bug
Resolved issue with undefined variable when processing UUIDs
Improved Error Handling
Better error messages for invalid players
Technical Improvements:
Improved code stability
Better configuration file handling
Optimized performance
How to Update:
Stop the server
Replace the old .jar with the new one
Start the server
Configuration will migrate automatically
Compatibility:
Minecraft: 1.21+
Spigot/Paper: Latest versions
Java: 17+
Important Notes:
All existing settings will be preserved
No additional configuration needed
All permissions remain the same