BeastTokens - Custom currency

MC Plugin BeastTokens - Custom currency 4.3.15
MultiShop, MySql , MobCoins, Fishing, Supports: TokenEnchantand & MythicMobs

BeastTokens 4.3.15 - GUI Compatibility and AxMinions Hook Improvements

  • Updates the required dependency to BeastLib 1.7.4, which restores the GUI methods needed to fix the Gui.open(Player) error when opening token shops.
  • The optional AxMinions Extension now attempts to connect to any enabled AxMinions version instead of requiring one exact version number. Required API and GUI checks remain active; future API changes may still require an addon update.
  • The old Hook.SupportedVersions setting is ignored. No manual version list is needed.
  • Hook failures now report the installed AxMinions version and actual failure reason in the console. The old default player message is updated automatically when loaded; customised messages are preserved.

Updating: Stop the server and replace both BeastTokens with 4.3.15 and BeastLib with 1.7.4. Keep your existing configuration and start the server again.

If using the separate AxMinions addon, also replace its jar with AxMinionsExtension-4.3.15.jar inside plugins/BeastTokens/Extensions/ before starting. Use a full restart when replacing jars.
BeastTokens 4.3.13 - Minecraft 26.3, Global Drops and Vault Improvements

This release adds global drop controls, optional Vault shop payments, transaction checks, and a checked currency API for trade integrations.

Required BeastLib Update

Install BeastLib 1.7.0 together with BeastTokens 4.3.13. The main Minecraft startup version check now accepts versions through 26.3.

Proxy API Refresh

BeastTokensProxy remains version 4.3.13. The Velocity module now compiles against velocity-api:4.2.1-SNAPSHOT with Java release 25; run the Velocity proxy on Java 25 or newer. Maven compilation now generates the required velocity-plugin.json metadata through the Velocity API annotation processor.

The BungeeCord API snapshot is refreshed from the official Central snapshot repository, retaining net.md-5:bungeecord-api:26.1-R0.1-SNAPSHOT.

Global Drops and Block Tracking

The main config.yml now groups the global controls under Options.Drops:
Code:
Options:
  Drops:
    Enabled: true
    BlockTracking:
      Enabled: true
  • Set Options.Drops.Enabled: false to disable Player, Mobs, Mining, Farming, Fishing, and MythicMobs drops for every currency. Their drop hooks, timed messages, and block/piston trackers are also inactive.
  • Set only Options.Drops.BlockTracking.Enabled: false to disable placed-block and piston tracking while keeping configured mining and farming rewards available.
  • Both options default to true. Per-currency drop settings still decide which types are enabled when global drops are on.
  • Existing balances, earning-limit totals, and saved block markers are retained. Blocks placed while tracking is off are not marked retroactively.
  • /bta BlockInfo remains available with drops disabled. Queued stripped-wood rewards now check the global drop switch before running.

Apply changes to these settings with /bta reload or a server restart.

Optional Vault Shop Payments

Use Buy.Prices.Vault to charge the server's active Vault economy, such as EssentialsX, on its own or alongside BeastTokens currencies. For example, this purchase requires both Tokens and Vault money:
Code:
Buy:
  Prices:
    Tokens: 100
    Vault: 2500
  PriceSelection:
    Mode: ALL
For Vault-only pricing, omit Tokens. Use Sell.Prices.Vault for Vault payouts. The shop hook is controlled by Options.Vault.Enabled, which defaults to true, and requires Vault plus an active economy provider.

An optional native Vault provider is also available under Options.Vault.Economy. It defaults to disabled. Enable it only when BeastTokens should supply the Vault economy, selecting an existing enabled File, MySQL, or SQLite currency through Options.Vault.Economy.Currency. Leave this provider disabled when using EssentialsX or another economy provider.

Existing Money currencies and Prices.Money remain supported. This update does not create a Money wallet automatically or convert existing balances.

Transaction Checks

Vault payment results are checked before items or reward actions are delivered. If a later payment or stock check fails, BeastTokens attempts to reverse earlier successful payments and logs incomplete reversals for staff review.

The optional native Vault provider also validates amounts and confirms balance changes against exact native balances.

Checked Trading API

Developers can use BeastTokensAPI.getTradingCurrencies() for checked debit and credit operations on loaded online File, MySQL, and SQLite wallets. Operations return explicit success, rejection, or unknown results, and old adapters are invalidated after reload or manager replacement. The legacy API remains available.

Updating

  1. Stop the server and replace BeastTokens with version 4.3.13.
  2. Install BeastLib 1.7.0, then start the server.
  3. Review the new global controls in config.yml. Use /bta reload after later config-only edits.

The main config updates to ConfigVersion: 4.5 through the existing backup/default-merge process, preserving configured values. The old main Options.BlockTracking.Enabled setting moves to Options.Drops.BlockTracking.Enabled when the new path has no explicit value; an explicit new value takes precedence. Per-currency Drops/mining.yml tracking paths are unchanged.
BeastTokens 4.3.12 rounds out the balance placeholder reference for every enabled currency and substantially reduces work in high-frequency drop events.

PlaceholderAPI users can now clearly choose the standard, raw, or abbreviated balance-top value:

  • %beasttokens_<currency_id>_top_balance_<position>%
  • %beasttokens_<currency_id>_top_balance_raw_<position>%
  • %beasttokens_<currency_id>_top_balance_formatted_<position>%
For example:

  • %beasttokens_gems_top_balance_1%
  • %beasttokens_gems_top_balance_raw_1%
  • %beasttokens_gems_top_balance_formatted_1%
BeastTokens language, command, and menu messages also support built-in balance formats without PlaceholderAPI whenever BeastTokens supplies the player or amount context:

  • %balance% - configured/grouped number format
  • %balance_raw% - ungrouped raw value
  • %balance_formatted% or %balance_short% - abbreviated short value
Player-facing BeastTokens messages can use currency-qualified forms such as %beasttokens_gems_balance%, %beasttokens_gems_balance_raw%, and %beasttokens_gems_balance_formatted% to select an enabled wallet.

The legacy %balance_formated% and %beasttokens_<currency_id>_top_balance_formated_<position>% spellings remain supported for existing configurations, while bundled examples now use the correctly spelled %balance_formatted% form.

PlaceholderAPI is still required when another plugin, such as a scoreboard or hologram plugin, resolves %beasttokens_...% values, and when an External currency reads a PlaceholderAPI value through Settings.PlaceHolderHook. It is not required for the built-in %balance%, %balance_raw%, and %balance_formatted% replacements in applicable BeastTokens messages.

The in-game /bta placeholders reference, GitBook, placeholder registry, Spigot description, and BuiltByBit description have all been updated for this release.

Drop Performance Across Every Drop Type
The optimization applies to Mining, Farming, Fishing, Mobs, MythicMobs, Player kills, PyroFishingPro, WildStacker, Scyther, and every enabled currency runtime.

  • All configured chance and quantity booster values are resolved into one lightweight snapshot per player, shared by every drop type and currency.
  • The default booster permission-cache window is 20 ticks instead of rebuilding a complete effective-permission set during nearly every block break.
  • LuckPerms uses its context-aware cached exact permission map and invalidates only the affected player when permission data or contexts change.
  • Other permission providers use the bounded fallback configured at boosters.yml -> Performance.PermissionCacheTicks.
  • /bta updateBoosters <player|*>, reloads, joins, catalog replacement, and player lifecycle changes still produce a fresh snapshot.
  • Exact-positive booster behavior is preserved: OP, broad wildcards, and exact nodes set to false do not activate unintended boosters.
Drop listeners now index configured materials, entities, and player-drop runtimes at load time. Each event visits only matching currencies and checks the common base drop permission once. MythicMobs detection, WildStacker capability, Mythic mob ids, and PyroFishing tier/level/world data are cached instead of being rediscovered or reparsed for every reward attempt.

Mining block tracking now reads and consumes the physical block marker once per break, applies the result consistently to every currency, and honors currencies that disable tracking. On Minecraft 1.16.4 and newer, the native PDC tracker keeps a shared sparse cache per loaded chunk; after chunk-cache initialization, clean/current-format natural misses use memory only. Marker changes write through immediately to compact namespaced chunk data, and the cache is evicted on chunk/world unload. Existing blocks.<x>_<y>_<z>.Natural markers migrate automatically on first access while the old tree is preserved and then ignored. Options.BlockTracking.Enabled, TrackPiston, and Type require no new setting or config-version change. The pre-1.16.4 legacy backend and optional Type: EXPERIMENTAL hook are unchanged.

Finally, built-in drop messages resolve only the currency balance, context, and spent placeholders actually present in the message. Plain high-frequency reward messages no longer inspect every enabled wallet before being sent.

These changes keep the existing drop API events, custom rewards, earning limits, sounds, floor drops, per-world configuration, and multi-currency reward behavior intact. Drop earning-limit storage was not moved onto the event thread and remains memory-backed on the reward path with asynchronous persistence.
BeastTokens v4.3.10
Booster Permission Performance Update
​

This update improves how BeastTokens checks player booster permissions while mining, farming, fishing, and earning other currency drops.

What Changed?
  • Faster permission checks
    Booster permission information is now shared for the same player and drop type during each server tick.
  • Reduced server workload
    Repeated mining, farming, and fishing actions no longer rebuild the same permission information multiple times during one tick.
  • Live permission updates
    Permission changes are detected automatically by the next server tick—normally within approximately 50 milliseconds at 20 TPS.
  • Improved multi-currency performance
    Multiple currencies using the same drop type can reuse the resolved booster information instead of repeating expensive permission scans.
  • Safe main-thread processing
    Permission checks remain synchronized with Bukkit and are never moved to an unsafe asynchronous thread.
  • Immediate manual refresh remains available
    Use /BeastTokensAdmin UpdateBoosters <player> if you need to force an immediate same-tick refresh.

Configuration
No configuration reset is required. Existing booster permissions and booster configurations continue to work.

Updating
  1. Stop your server.
  2. Replace the previous BeastTokens JAR with version 4.3.10.
  3. Start the server again.
A smoother and more efficient booster system for busy servers!​
BeastTokens 4.3.6 — Major Multi-Currency Update

This is one of the largest BeastTokens updates so far, focused on the new multi-currency system, shop improvements, administration tools, storage, ProxySync, and reliability.

New Multi-Currency System
  • BeastTokens now supports multiple independent currencies—not only Tokens plus one additional currency.
  • Create currencies such as Tokens, Gems, Shards, EventPoints, or any custom economy.
  • Every currency has separate settings, balance storage, drops, commands, aliases, messages, notes, limits, leaderboards, permissions, and default shops.
  • Each currency receives its own command, such as /Tokens, /Gems, or /Shards.
  • Currency command words such as balance, pay, shop, withdraw, top, and topspent can be renamed per currency.
  • Added per-currency balance and total-spent leaderboards.
  • Added per-currency permissions while keeping legacy global permissions compatible.
  • Added currency administration commands for creating, copying, listing, inspecting, validating, enabling, disabling, and reloading currencies.
Code:
/bta currency create <currency_id>
/bta currency copy <source_id> <new_id>
/bta currency list
/bta currency info <currency_id>
/bta currency validate [currency_id]
/bta currency enable <currency_id>
/bta currency disable <currency_id>
Storage & Migration
  • Added SQLite balance and spent-statistics storage.
  • Different currencies can now use different storage providers.
  • Currencies can inherit the global storage selection with Settings.Type: Default.
  • Improved MySQL connection pooling and per-currency table handling.
  • Balance calculations now use BigDecimal-safe internal math.
  • Added automatic migration from the legacy single-currency Tokens File/MySQL structure.
  • Added safe MySQL migration journaling, verification, rollback, and conflict detection.
  • Added a manual migration command with preview, confirm, and merge-missing modes.
  • ConvertData is now currency-aware and supports dry-run safety backups.
  • TokenManager and ElementalGems balance/shop imports can target a selected currency.
Code:
/bta currency migrateLegacy <currency_id> [<balance_table|-> <stats_table|->] [preview|confirm|merge-missing]
Shop System Update
  • Added multi-currency shop prices.
  • Shop items can require several currencies at once using ALL mode.
  • FIRST_AFFORDABLE mode lets players use the first configured price they can afford.
  • Shops, individual items, buying, and selling can use different currency overrides.
  • Added currency-aware price, balance, required-price, and missing-price lore.
  • Added per-currency default shops and configurable shop-list filtering.
  • Added a configurable main shop selector GUI.
  • Added per-page rotating item pools.
  • Rotating shops now support CYCLE and TIMESTAMP schedules.
  • Rotating and stock state supports File, MySQL, and SQLite.
  • Added shared MySQL player/server stock limits with automatic restocking.
  • Buying can restore sell stock, and selling can restore buy stock.
  • Added new EmptySlot filler patterns, including BORDER, SIDES, TOP_BOTTOM, RECTANGLE, and CHECKERBOARD.
  • Added configurable shop-opening animations such as CENTER_OUT, SPIRAL, SNAKE, RAIN, RANDOM_POP, and slide effects.
  • Added stronger transaction menu click guards to prevent duplicate purchases, sales, confirmations, messages, and sounds.
Web & In-Game Editors
  • Greatly expanded the authenticated BeastTokens web editor.
  • Added visual Minecraft-style inventory editing with drag-and-drop item placement.
  • Create, rename, duplicate, move, swap, and delete shop items and pages.
  • Added visual editors for rotating pools, rotating slots, fillers, Buy Menu, Sell Menu, and Shop Menu.
  • Added structured editors for shop settings, plugin settings, currencies, prices, commands, stock, animations, and sounds.
  • Added a Create New Shop form with economy selection and validation.
  • Added Minecraft texture, custom player-head, MiniMessage, RGB, gradient, and resource-pack model previews.
  • Added an Economy Manager with searchable balances, player heads, balance editing, and transaction history.
  • Added Health Check, Backups, Audit Explorer, Diagnostics, Cache Tools, Shop Preview, Bulk Tools, and Setup tools.
  • Improved the in-game shop editor with page management, item previews, line-list editing, exact cursor placement, and duplicate-click protection.
Drops & Native Notes
  • Drops are now configured separately for every currency.
  • Each currency can independently reward mobs, mining, farming, fishing, players, and MythicMobs.
  • Added configurable reward sounds for direct rewards and floor-drop notes.
  • Added currency-aware drop earning limits with GLOBAL and PER_TYPE modes.
  • Added permission profiles, interval resets, scheduled resets, and File/MySQL/SQLite tracking.
  • Added currency-aware earning-limit placeholders and admin tracking commands.
  • Native notes now store their currency ID and redeem into the correct balance.
  • Added note item flags, enchants, CustomModelData, holograms, sounds, amount-based designs, and named visual overrides.
  • Improved BeastWithdraw integration so every BeastTokens currency can use separate withdraw handling.
Proxy & Network Improvements
  • Updated BungeeCord and Velocity ProxySync to handle currency-aware balance updates.
  • Added proxy balance lookup, add, remove, and set commands with optional currency selection.
  • Added MySQL stock and rotating-shop synchronization between servers.
  • Added network shop-file synchronization through the web editor.
  • Added Proxy Web Interface support for viewing connected Spigot editors.
  • Added a proxy Economy panel for viewing and managing MySQL currency balances.
  • Improved reconnect handling, startup order, currency registration, and missing-table handling.
API, Placeholders & Administration
  • Added currency-first PlaceholderAPI placeholders such as %beasttokens_tokens_balance% and %beasttokens_gems_balance%.
  • Added /bta placeholders [category] [page] to browse placeholder examples.
  • The API can now retrieve a specific manager with BeastTokensAPI.getTokensManager("Gems").
  • Events now expose the currency ID and transaction reason.
  • Shop transaction events now include a unique transaction ID.
  • Added transaction rate limiting, duplicate protection, and asynchronous JSONL audit logs.
  • Added runtime diagnostics, startup validation, safe ZIP backups, restore inspection, and structured debug categories.
  • Global messages now load from Lang/<locale>.yml and can be overridden per currency.
Examples & Fixes
  • Rebuilt Example.yml into a polished two-page, 54-slot Beast Bazaar with MiniMessage styling, rotating offers, stock, animations, custom potions, and navigation.
  • Expanded Example_Advanced.yml and Example_Ultimate.yml with current shop features.
  • Moved the internal example installation marker out of the Shops folder and into plugins/BeastTokens/.state.
  • Improved PLAYER_HEAD textures for Base64 values, player names, %player%, offline-mode servers, reward items, and web previews.
  • Fixed duplicate shop actions, duplicate messages/sounds, transaction item leaks, empty slots, timer padding, menu refreshes, shutdown handling, and multiple storage lifecycle issues.
  • Removed the obsolete Deposit GUI and MVdWPlaceholderAPI integration.
Important Before Updating
  • Back up the complete BeastTokens folder and database.
  • On MySQL networks, stop all backends and allow one updated server to complete migration first.
  • Do not run old and new BeastTokens versions against the same database simultaneously.
  • Run migrateLegacy in preview mode before confirming a manual migration.
  • Update old placeholders to the new currency-first format.
  • Global economy settings now belong in Currencies/<CurrencyId>/setting.yml.
  • Drops now belong in Currencies/<CurrencyId>/Drops.
  • Global messages now use Lang/<locale>.yml.
  • Shop GUI slots are one-based: use 1 through Shop.Size and never slot 0.
Added support for 26.1.x
Only removed debug message I forgot in rotating shop
Added support for ItemModel in buy and sell menu
Added support for CustomData buy and sell menu
Example how to use it in shop files
upload_2026-2-26_20-10-44.png
Added support for ItemModel
Added support for CustomData
Example how to use it in shop files
upload_2026-2-26_2-9-2.png
Added on request option:
- import gems from ElementalGems /bta importdata ElementalGems
- import shops/auto convert from ElementalGems /bta importshops ElementalGems

Fixed reported bug by user on player leave event with storing tokens to FlatFile storage!
Top Bottom