BeastTokens - Custom currency

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

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!
Token storing to File should now auto save data async
Players are able to put withdrawn item to new shelf block

Support for latest version

Updated some api libraries
Please update BeastLib for this version to work!
Top Bottom