JExEconomy 3.0.0
Complete Rewrite · Modern Stack · Cleaner Everything
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
▸ TL;DR
Every single Java file was rewritten from scratch. New platform (
JExPlatform), new ORM (
JEHibernate 3.0.2), new command framework (
JExCommand 2.0 YAML trees), new i18n layer, and a brand-new public
jexeconomy-api module for third-party plugins. No Lombok. No preview features. One clean English translation. Gradient-based GUI across all 7 views.
⚠ Breaking change: 2.x databases, configs, and translations are
not forward-compatible out of the box. See
Migration Notes below.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✦ Headline Features
- Brand-new GUI suite — 7 redesigned views (overview, detail, create, edit, delete, leaderboard, field-input) with MiniMessage gradients, terse lore, and anvil-based text input.
- JExCommand 2.0 — 18 legacy @command classes collapsed into 5 YAML trees + 5 handler classes. Typed argument system with a dedicated currency argument type.
- Public API module — jexeconomy-api lets third-party plugins query balances, deposit, withdraw, and manage currencies through Bukkit.getServicesManager() without depending on the plugin JAR.
- One translation file — 18 locale YAMLs collapsed into a single en_US.yml with a unified gradient palette and consistent message vocabulary.
- Default currency seeding — first-time installs get a ready-to-use coins ($) currency automatically.
- Free & Premium editions — shared core module; each edition bundles its own JEHibernate thin JAR.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✦ Stack Swap
- RPlatform 1.x → JExPlatform
- JEHibernate 1.1.0 → JEHibernate 3.0.2 (thin JAR, bundled)
- CentralLogger → JExLogger
- R18nManager 1.x → JExTranslate (MiniMessage end-to-end)
- JExCommand 1.x → JExCommand 2.0 YAML trees
- Hibernate 6.6.4 → Hibernate 7.1.4.Final
- Lombok → plain Java
- --enable-preview → --release 17
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✦ GUI — Full Redesign
Powered by
InventoryFramework with the
AnvilInputFeature plug-in for inline text entry.
- Currency Overview — paginated listing of all currencies.
- Currency Detail — symbol, prefix, suffix, icon + actions for Leaderboard / Edit / Reset.
- Currency Create — 5 anvil-backed fields with validation.
- Currency Edit — in-place modification of any currency property.
- Currency Delete — confirm / cancel with clear warnings.
- Leaderboard — top 25 holders with gold / silver / bronze rank gradients.
- Anvil Field Input — single-field text entry, Material name validation for icons.
Visual palette (MiniMessage gradients)
- Gold — currency names, titles
- Green — confirm / success
- Blue — edit / info
- Red — danger / errors
- Cyan — "▸ Click to X" action prompts
- Purple — leaderboard
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✦ Commands
Player
- /balance [player] [currency] — self · other · all-currencies · top
- /pay <player> <amount> [currency]
- /currencies list · info · create · edit · delete · overview
- /currencylog view · details · player · clear · help
Admin / Console
- /economy give | take | set | reset
- /economy reload
- /economy migrate — stub, arrives in 3.x
- Console aliases: /deposit, /withdraw, /migrate
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✦ Integrations
- Vault — drop-in Vault economy provider via VaultProvider.
- PlaceholderAPI — EconomyExpansion for balance & currency placeholders.
- bStats — per-edition metrics.
- Third-party plugins — depend on jexeconomy-api and resolve services via Bukkit.getServicesManager().
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✦ Diff — 2.0 → 3.0
Removed
- rplatform dependency
- Lombok
- --enable-preview compile flag
- E-prefix enums — EChangeType, ELogType, ELogLevel
- CurrencyEvent base class (each event is now standalone)
- CurrencyAdapter / ICurrencyAdapter / CurrencyResponse adapter layer
- 17 non-English translation files
- 14 legacy view classes (→ 7 redesigned views)
- 18 legacy @command classes (→ 5 YAML trees + 5 handlers)
- Old table names p_user, p_user_currency, p_currency_log
- hibernate-commons-annotations (discontinued in Hibernate 7.x)
- Caffeine shadow relocation (broke JEHibernate bytecode refs)
Renamed
- User → EconomyPlayer · table economy_player
- UserCurrency → Account · table economy_account
- CurrencyLog → TransactionLog · table economy_transaction_log
- UserRepository → PlayerRepository
- UserCurrencyRepository → AccountRepository
- CurrencyLogRepository → TransactionLogRepository
Added
- jexeconomy-api module for third-party integrations
- EconomyService.updateCurrency() — in-place property edits
- EconomyService.seedDefaultCurrencyIfEmpty() — auto-creates coins/$ on first start
- CurrencyArgumentType — typed argument for currency names
- TransactionResult record with success() / failure() factories
- CurrencyFieldInputView — shared anvil input for all 5 currency fields
- paper-plugin.yml commands section with full alias routing
- Per-edition metricsId() abstract for bStats
- Reflections 0.10.2 re-added for bundled thin-JEHibernate entity scanning
Fixed
- Silent currency-create failure — Currency.toSnapshot() NPE on unpersisted entities
- Currency create/edit futures now surface exceptions in chat + server log (no more silent failures)
- Pagination nav keys now respect the unified gradient palette
- Empty prefix/suffix displays a neutral em-dash across every GUI view
- Caffeine relocation removed from shadow JAR (was breaking JEHibernate classloading)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✦ Migration Notes
- Back up first. Snapshot your database and the full plugin folder.
- Schemas change. Entity + table renames require a manual migration script, or a clean install.
- Vault stays seamless. Plugins using Vault keep working — they don't care about internals.
- Automatic 2.x migration is planned for a 3.x patch (/economy migrate — currently a stub).
- Use the new GUI (/currencies) to re-create currencies, or manage them via the /economy commands.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✦ Requirements
- Java 17+ — Java 21 recommended for virtual-thread scheduling
- Paper / Spigot 1.20+
- Optional: Vault, PlaceholderAPI
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Thank you for using JExEconomy.
Report issues on the resource page or via the support channel.