Rotation System
- Fixed merchant rotation system.
- Added automatic merchant rotation based on the configured timer.
- Fixed current merchant selection not being properly saved.
- Added selection restoration after server restart.
- Fixed current selection placeholder updates.
- Fixed remaining time placeholder calculations.
Data & Statistics
- Fixed player sale tracking system.
- Replaced Material-based sale storage with unique item IDs.
- Fixed sale limits for custom items.
- Improved data consistency across rotations.
- Fixed player statistics calculations.
GUI & Commands
- Improved GUI click protection.
- Fixed GUI refresh after item sales.
- Fixed various command-related issues.
- Improved command stability and error handling.
Code Quality
- Added missing @NotNull and @Nullable annotations.
- Fixed potential NullPointerException issues.
- Removed unused generated file MerchantGui$1.java.
- Improved overall code stability and maintainability.
New Features :
Selection System
- Added full support for merchant selections defined in config.yml.
- Added weighted selection chances.
- Added display names for merchant selections.
- Added current selection tracking and persistence.
Rank Price Bonuses
- Added configurable rank-based selling bonuses.
- Players can now receive additional profit based on their rank or permission group.
Dynamic Pricing
- Added dynamic market prices.
- Prices can now fluctuate every merchant rotation.
Custom Item Support
Supported Types
type: VANILLA
type: CUSTOM_MODEL_DATA
type: ITEMSADDER
type: MMOITEMS
Vanilla Example
diamond:
type: VANILLA
material: DIAMOND
base-price: 50
max-sell: 500
CustomModelData Example
ruby_custom:
type: CUSTOM_MODEL_DATA
material: DIAMOND
custom-model-data: 1001
base-price: 75
max-sell: 250
ItemsAdder Example
ruby_itemsadder:
type: ITEMSADDER
itemsadder-id: "val_items:ruby"
base-price: 80
max-sell: 250
MMOItems Example
ruby_mmoitems:
type: MMOITEMS
mmoitems-type: MATERIAL
mmoitems-id: RUBY
base-price: 100
max-sell: 200
Placeholders
Added / Fixed
%valmarchand_current_selection%
%valmarchand_time_remaining%
%valmarchand_player_sales_<itemId>%