GlymeraMerchant-6.0.0.jar
What's new
GlymeraMerchant - Changelog
v6.0.0 (2026-08-17)
Fixed
- The plugin loads again on servers and solo worlds without VaultUnlocked. Since v4.0.0 the
supposedly optional VaultUnlocked integration was effectively a hard dependency: the Vault
provider lived inside the main plugin class, so the JVM tried to resolve the VaultUnlocked
classes while loading the plugin itself — before the
Class.forNameguard could ever run. Without VaultUnlocked installed, the plugin failed to load withNoClassDefFoundError: net.milkbowl.vault2.economy.Economy, which is exactly what happened when creating a new solo world (reported by 17Stang on CurseForge, 2026-08-17).
Changed
- All VaultUnlocked-facing code moved into a separate bridge class that is only loaded when
VaultUnlocked is actually present. The integration itself is unchanged: with VaultUnlocked
installed, GlymeraMerchant still registers as the Economy provider (verified via
vault-info).
Notes
- No data or config changes. Balances, merchants and all commands are untouched.
- Verified on Hytale 0.5.9 and 0.5.8, each with and without VaultUnlocked installed.
v5.0.0 (2026-06-04)
Fixed
- Merchant NPCs no longer duplicate. Previously the Hytale engine persisted every spawned
merchant NPC to the world, so on each restart a saved copy was rehydrated and a fresh one
was spawned from
merchants.json— merchants multiplied over time. The old cleanup ran on the first player join with fixed delays and missed any merchant whose chunk had not loaded yet.
Changed
- Merchant NPCs are now spawned non-persistent: the engine never writes them to the chunk,
so no copy can ever be rehydrated on restart. Each merchant is (re)spawned from
merchants.jsonwhen its chunk loads — exactly one per saved merchant, every time. A one-time cleanup on chunk load removes any duplicate merchants left over from older versions. - Removed the old boot-time and first-join respawn/sweep logic (replaced by the per-chunk respawn).
Notes
- This release is purely the duplication fix. The economy core, the VaultUnlocked provider hook,
player trading, all shop/trade GUIs, the money HUD and the
/money/pay/merchant/shopcommands are unchanged. Existing balances andmerchants.jsondata are fully compatible.
v4.0.0 (2026-06-04)
Fix: VaultUnlocked integration restored
- Re-enabled the Economy provider hook. During the Stable-5 migration the entire VaultUnlocked integration (the
GlymeraEconomyProviderclass and itsregister/unregistercalls) had been commented out to get the plugin to compile, so the deployed build silently lost the economy-provider feature. This release restores it. - Verified on Hytale Stable-5 with
VaultUnlocked-Hytale 2.19.1. The provider implements all 48 abstract methods of the Stable-5net.milkbowl.vault2.economy.Economyinterface and compiles cleanly against it. - Confirmed live via the
vault-infoconsole command, which now reportsEconomy: GlymeraMerchant— any VaultUnlocked-compatible plugin uses our gold balances again. - No behavioural change when VaultUnlocked is not installed: the integration stays optional and the plugin runs standalone as before.
v2.0.0 (2026-04-06)
New Feature: VaultUnlocked Integration
- Economy Provider: GlymeraMerchant now registers as an Economy provider with VaultUnlocked. Any plugin that uses VaultUnlocked for economy (balance, deposit, withdraw) will automatically use our gold system.
- Optional dependency: Works with or without VaultUnlocked installed. If VaultUnlocked is present, we register as provider during
setup()so other plugins find us in theirstart(). If not installed, the plugin works exactly as before. - Full Vault2 API: Implements
net.milkbowl.vault2.economy.Economywith all required methods (getBalance, deposit, withdraw, has, format, account management). Single currency, no shared accounts. - Manifest: Added
OptionalDependenciesforTheNewEconomy:VaultUnlockedto ensure correct class loader visibility and load order.
New Feature: Paid Commands
- Command toll system: Server admins can now charge gold for any command from any plugin. If a player runs a paid command, it is blocked and they are asked to confirm with
/confirmwithin a configurable timeout. Gold is deducted on confirmation and the command is then executed normally. - Packet-level interception: Uses
PacketAdapters.registerInbound()to interceptChatMessagepackets before they reach theCommandManager. On/confirm, the packet message is rewritten to the original command and passed through the normal pipeline - no reflection or command wrapping needed. - OP exempt: Operators can be exempted from paying (configurable, default: true)
- Configurable timeout: Admins set how many seconds players have to type
/confirm(default: 15) - Prefix matching: Config key
"gp claim"matches/gp claim,/gp claim myplot, etc. - Balance check upfront: Players are told immediately if they can't afford the command, before being asked to confirm
Config Changes
- New top-level fields:
paidCommandOpExempt(bool),paidCommandTimeout(int) - New section:
paidCommands(object) - keys are command prefixes (without/), values havecost(long) and optionaldescription(string) /merchant reloadnow also reloads paid commands and shows their count- Guide section updated with paid command documentation
v1.0.0 (2026-03-21)
- Initial release - Currency system, HUD, Shop UI, NPC Merchants, Player Trading
All Relations
- All Relations
- Embedded Library
- Optional Dependency
- Required Dependency
- Tool
- Incompatible
- Include
This mod has no related projects

