Этот выпуск подготавливает BeastTokens к работе с отдельным дополнением BeastTokens - AxMinions Extension, а также улучшает очистку расширений при перезагрузке и выключении плагина.
Новое необязательное расширение AxMinionsДополнение распространяется отдельно и предназначено для AxMinions 1.0.21 на обычных серверах Paper/Spigot. Folia не поддерживается. Расширение использует AxMinions без изменения его JAR-файла.
- Игроки открывают мастерскую улучшений через существующую кнопку Upgrade в меню своего миньона AxMinions. Интеграция определяет внутреннее действие кнопки AxMinions, поэтому переведённые названия и пользовательский текст кнопки не нарушают её работу.
- В разделе upgrades.<level>.requirements конфигурации миньона AxMinions можно указывать цены, например BeastTokens-tokens: 100 или BeastTokens-gems: 5. Можно одновременно требовать несколько валют BeastTokens и существующую валюту money. Улучшения, оплачиваемые только деньгами, по-прежнему поддерживаются. actions — это требование к прогрессу, оно не расходуется.
- Настраиваемая мастерская на 54 слота отображает текущие и выбранные характеристики, прогресс действий, цены в валютах, баланс и недостающие средства, постраничный список уровней и отдельное окно подтверждения.
- Перед покупкой повторно проверяются стоимость и возможность улучшения. Также предусмотрена защита от повторного выполнения улучшений и фиксация неопределённых результатов оплаты или возврата средств для последующей проверки администратором.
Надёжность расширенийДругие улучшения
- Теперь расширения получают уведомления о завершении работы до того, как BeastTokens перезагрузит или отключит свои кошельки и обработчики событий. Ожидающая загрузка расширений отменяется, а открытые архивы закрываются.
- Дублирующиеся файлы расширений и главные классы пропускаются. При неудачном запуске расширения выполняется очистка.
Обновление
- Добавлено 49 дополнительных встроенных языковых файлов, которые можно выбрать через Options.Language.Settings.File. Переводы выполнены с помощью машинных средств — рекомендуется проверить формулировки перед использованием в своём сообществе.
- Улучшены ответы PlaceholderAPI: теперь они позволяют различать некорректные запросы, отсутствие контекста игрока, загрузку данных, недоступные данные и пустые результаты.
- Улучшена совместимость со старыми версиями серверов: сохранена поддержка эмодзи и Unicode в YAML, а обработка зелий, флагов предметов, иконок, свечения и ремонта в магазинах и меню адаптирована к доступным API сервера.
Остановите сервер, замените BeastTokens на версию 4.3.14, убедитесь, что установлен BeastLib 1.7.0, затем запустите сервер.
Для использования необязательного дополнения также установите AxMinions 1.0.21 и поместите AxMinionsExtension-4.3.14.jar в папку plugins/BeastTokens/Extensions/ перед запуском сервера.
Настройки мастерской находятся в plugins/BeastTokens/Extensions/AxMinionsExtension/config.yml.
Используйте /bta reload для перезагрузки конфигурации дополнения и /axminions reload для перезагрузки цен миньонов.
При изменении JAR-файлов необходимо перезапустить сервер.
BeastTokens 4.3.12
BeastTokens 4.3.12 дополняет систему плейсхолдеров баланса для всех включённых валют и значительно снижает нагрузку при частых событиях получения наград.
Плейсхолдеры PlaceholderAPI
Теперь можно выбрать обычное, сырое или сокращённое значение баланса в топе:Например:
- %beasttokens_<currency_id>top_balance<position>%
- %beasttokens_<currency_id>top_balance_raw<position>%
- %beasttokens_<currency_id>top_balance_formatted<position>%
В языковых файлах, командах и меню BeastTokens также доступны встроенные форматы баланса без PlaceholderAPI, когда BeastTokens располагает контекстом игрока или суммы:
- %beasttokens_gems_top_balance_1%
- %beasttokens_gems_top_balance_raw_1%
- %beasttokens_gems_top_balance_formatted_1%
В сообщениях для игроков можно использовать формы с указанием валюты, например %beasttokens_gems_balance%, %beasttokens_gems_balance_raw% и %beasttokens_gems_balance_formatted%, чтобы выбрать конкретный включённый кошелёк.
- %balance% — настроенный/сгруппированный формат числа
- %balance_raw% — исходное значение без группировки
- %balance_formatted% или %balance_short% — сокращённое значение
Старые варианты написания %balance_formated% и %beasttokens_<currency_id>top_balance_formated<position>% по-прежнему поддерживаются для существующих конфигураций. В примерах теперь используется правильное написание %balance_formatted%.
PlaceholderAPI по-прежнему требуется, если другой плагин, например плагин для скорборда или голограмм, обрабатывает значения %beasttokens_...%, а также когда валюта External получает значение PlaceholderAPI через Settings.PlaceHolderHook. Для встроенных замен %balance%, %balance_raw% и %balance_formatted% в поддерживаемых сообщениях BeastTokens PlaceholderAPI не требуется.
Справка по плейсхолдерам /bta, GitBook, реестр плейсхолдеров, описание на Spigot и BuiltByBit также обновлены.Оптимизация получения наград
Оптимизация распространяется на все типы дропа: Mining, Farming, Fishing, Mobs, MythicMobs, убийства игроков, PyroFishingPro, WildStacker, Scyther и все включённые валюты.Слушатели дропа теперь заранее индексируют настроенные материалы, сущности и источники дропа при загрузке. Каждое событие обрабатывает только подходящие валюты и один раз проверяет общее разрешение на получение дропа.
- Все настроенные значения шансов и множителей количества теперь объединяются в один лёгкий снимок данных игрока, который используется всеми типами дропа и валютами.
- Стандартный интервал кэширования разрешений для бустеров увеличен до 20 тиков вместо полного пересоздания набора эффективных разрешений почти при каждом разрушении блока.
- LuckPerms использует контекстный кэш разрешений и обновляет данные только затронутого игрока при изменении разрешений или контекста.
- Для других провайдеров разрешений используется ограниченный кэш, настроенный через boosters.yml -> Performance.PermissionCacheTicks.
- /bta updateBoosters <player|*>, перезагрузка, вход игроков, замена каталога и изменения жизненного цикла игрока по-прежнему создают новый снимок данных.
- Логика точного определения активных бустеров сохранена: OP, широкие wildcard-разрешения и явно отключённые (false) узлы не активируют неожиданные бустеры.
Обнаружение MythicMobs, возможности WildStacker, ID мобов MythicMobs, а также данные уровня/тира PyroFishing теперь кэшируются вместо повторного поиска или разбора при каждой попытке выдачи награды.Оптимизация отслеживания блоков
Отслеживание блоков при добыче теперь считывает и использует физическую метку блока один раз за разрушение, применяя результат одинаково ко всем валютам и учитывая валюты, отключившие отслеживание.
На Minecraft 1.16.4+ нативный PDC-трекер использует общий разреженный кэш для каждого загруженного чанка. После инициализации кэша чистые пропуски естественных блоков в актуальном формате обрабатываются только из памяти.
Изменения меток сразу записываются в компактные данные чанка, а кэш удаляется при выгрузке чанка или мира.
Существующие метки blocks.<x><y><z>.Natural автоматически переносятся при первом обращении. Старое дерево данных сохраняется, но после миграции больше не используется.
Настройки Options.BlockTracking.Enabled, TrackPiston и Type не требуют новых параметров или изменения версии конфигурации. Старый механизм для версий до 1.16.4 и необязательный хук Type: EXPERIMENTAL остаются без изменений.Дополнительные улучшения
Встроенные сообщения о дропе теперь обрабатывают только те плейсхолдеры валюты, контекста и потраченных средств, которые фактически присутствуют в сообщении.
Обычные сообщения о частых наградах больше не проверяют каждый включённый кошелёк перед отправкой.
Все эти изменения сохраняют существующие API-события дропа, пользовательские награды, лимиты получения, звуки, выпадение предметов на землю, настройки по мирам и мультивалютные награды.
Хранение лимитов получения наград не переносилось в поток событий: на пути выдачи награды данные по-прежнему хранятся в памяти, а их сохранение выполняется асинхронно.
Это обновление улучшает проверку прав на бустеры в BeastTokens при добыче ресурсов, фермерстве, рыбалке и получении других валютных наград.
Что изменилось?Конфигурация
- Более быстрые проверки прав
Информация о правах на бустеры теперь повторно используется для одного и того же игрока и типа дропа в течение каждого серверного тика.- Снижение нагрузки на сервер
Повторные действия при добыче, фермерстве и рыбалке больше не создают одну и ту же информацию о правах несколько раз за один тик.- Мгновенное обновление прав
Изменения прав автоматически обнаруживаются на следующем серверном тике — обычно в течение примерно 50 мс при 20 TPS.- Улучшена производительность при работе с несколькими валютами
Несколько валют, использующих один и тот же тип дропа, теперь могут повторно использовать полученную информацию о бустерах вместо повторного выполнения ресурсоёмких проверок прав.- Безопасная обработка в основном потоке
Проверки прав по-прежнему выполняются синхронно с Bukkit и никогда не переносятся в небезопасный асинхронный поток.- Ручное обновление по-прежнему доступно
Используйте /BeastTokensAdmin UpdateBoosters <player>, если необходимо принудительно обновить информацию о бустерах в рамках текущего тика.
Сбрасывать конфигурацию не требуется. Существующие права и настройки бустеров продолжат работать без изменений.
Обновление
- Остановите сервер.
- Замените предыдущий JAR-файл BeastTokens на версию 4.3.10.
- Запустите сервер снова.
- Добавлена надёжная миграция старых балансов Tokens из файлового/YAML-хранилища в текущий мультивалютный формат.
- Добавлена команда /bta currency migrateLegacy Tokens preview|confirm для предварительного просмотра и подтверждения миграции.
- Явно заданные типы хранилища для отдельных валют теперь сохраняются. Только Default наследует глобальную настройку хранилища.
- Исправлено: редкая проблема с GUI магазина, из-за которой один клик мог обрабатываться дважды или позволять получить предметы, которые не должны были выдаваться.
- Добавлены предупреждения о некорректно размещённых командах выдачи наград магазина.
- Важно: перед обновлением сделайте резервную копию файлов игроков и баз данных. Изменение типа хранилища переключает валюту на другой бэкенд, но не переносит автоматически балансы между несвязанными хранилищами.
Новые возможности
- Полностью переработан интерфейс Beast Marketplace (54 слота): добавлены градиенты MiniMessage, RGB-оформление описаний, информация об игроке, отображение баланса, пагинация и семь новых тематических карточек магазинов.
- Добавлены четыре новых тематических магазина:
- Crystal Forge
- Harvest Haven
- Arcane Archive
- Tidal Treasures
- Обновлены магазины Beast Bazaar, Adventurer's Emporium и Master Merchant Lab:
- анимации;
- несколько страниц;
- ротация товаров;
- ограничения по количеству;
- выполнение команд;
- случайные награды;
- права доступа;
- расширенные механики покупки и продажи.
- В новых установках теперь доступны валюты Tokens, Gems, Shards, а также опциональная валюта Money через Vault.
- Добавлены примеры магазинов с использованием одной, двух или сразу трёх встроенных валют, а также их комбинаций с валютой Vault Money.
- Добавлены автоматические шаблоны отображения цены в описании предметов (SINGLE_LINE и MULTILINE) на глобальном уровне, для отдельных магазинов и отдельных предметов.
- Добавлена фильтрация магазинов по валюте. Например, команды /gems shops, /shards shops и /money shops отображают только магазины, использующие соответствующую валюту.
- Добавлена глобальная панель навигации по магазинам с отображением баланса всех валют, кнопкой возврата в маркет, элементами пагинации и закрытия меню.
Исправления и улучшения
- Исправлено: устранена проблема с интеграцией Vault и EssentialsX Economy, из-за которой магазин мог ошибочно сообщать о невозможности изменить баланс валюты Money.
- Цены в валюте Money теперь отображаются в формате $ без лишнего суффикса Money.
- Сообщения о завершении транзакций теперь используют префикс, заданный в языковых файлах BeastTokens.
- Добавлена возможность задавать собственные сообщения о транзакциях для каждой валюты.
- Исправлено: устранены дублирующиеся и некорректно оформленные автоматически создаваемые строки с ценами.
- Добавлены отдельные языковые шаблоны BuyPriceMultiline и SellPriceMultiline.
- Исправлено: корректно работают покупки и продажи, использующие только случайные команды.
- Награды за добычу ресурсов, рубку брёвен, фермерство, рыбалку, Scyther и WildStacker больше не выдаются, если соответствующее действие было отменено плагином защиты.
- Система наград за добычу ресурсов, фермерство, рыбалку, убийство мобов, MythicMobs и игроков переведена на единую систему обработки валют.
- Удалены 19 устаревших обработчиков и менеджеров системы выдачи наград.
- Если папка с магазинами отсутствует или полностью пуста, автоматически восстанавливаются все семь встроенных магазинов.
- Улучшена защита от некорректных кликов в меню магазинов и повышена надёжность навигации.
Примеры и документация
- Старые магазины Example* переименованы в полноценные игровые названия.
- Все встроенные магазины переработаны и теперь служат примерами расширенной конфигурации с подробными комментариями.
- Обновлена документация GitBook по магазинам, валютам, интеграции с Vault, отображению цен, анимациям, видимости магазинов, навигации и системе валютных наград.
Важно при обновлении
- Существующие пользовательские магазины, меню и папки валют не будут перезаписаны.
- Новые стандартные конфигурации устанавливаются только при новой установке или полном сбросе соответствующих папок.
- Чтобы вручную установить обновлённую встроенную конфигурацию магазина, используйте команду:
/BeastTokensAdmin ShopManager defaults save <shop> --overwrite
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.
/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 (Text):
/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.