- Добавлена поддержка banned-rules для категорий — позволяет исключать конкретные предметы из категории даже если они соответствуют правилам включения (material, tag, lore, custom-model-data и т.д.). Например, нетеритовая мотыга обычно попадает в категорию Tools, но может быть исключена по CustomModelData (например, 300)
- Добавлена система Broadcast — отправляет сообщения всем онлайн-игрокам при продаже или покупке предметов
- Настраивается отдельно для sell/purchase
- Можно исключать продавца/покупателя
- Поддерживает переопределение сообщений по категориям (MiniMessage)
- Плейсхолдеры: %seller%, %buyer%, %items%, %price%, %category%
- По умолчанию выключено (включается в config.yml → broadcast)
- Добавлена система Player options — расширяемые настройки игрока с хранением в базе данных
- Управление через /ah option (GUI) или /ah option <option_name> [value]
- Значения кэшируются в памяти и сохраняются в БД только если отличаются от дефолта
- Сейчас поддерживаются: broadcast_sell, broadcast_purchase (отключение broadcast-сообщений)
- Добавлено GUI /ah option — инвентарь 27 слотов с переключателями опций и отображением текущего состояния (вкл/выкл)
- Добавлены админ-команды для опций:
- /ah admin option set <player> <option> <value> — установка значения
- /ah admin option list <player> — просмотр опций игрока
- /ah admin option reset <player> — сброс на значения по умолчанию
- Добавлен PlaceholderAPI плейсхолдер %zauctionhouse_option_<option_name>% — возвращает true/false для конкретной опции игрока (например %zauctionhouse_option_broadcast_sell%)
- Добавлена кнопка ZAUCTIONHOUSE_COMBINED_ITEMS — объединяет продаваемые, просроченные и купленные предметы в единый интерфейс с пагинацией
- Для каждого типа можно отдельно включать/отключать отображение через include-selling, include-expired и include-purchased
- Действия по клику автоматически адаптируются под тип хранения предмета (отмена продажи, получение просроченного предмета, получение купленного предмета)
- Для каждого типа предметов используется собственная настройка lore из config.yml
- Исправлен дюп предметов в multi-server (Redis) сетапах — удаление лота на одном сервере и получение просроченного предмета могло оставлять «призрачную» запись на другом сервере, позволяя получить предмет повторно после естественного истечения
- Исправлен ItemRemovedListener (Redis addon)
- Удалена нестабильная проверка состояния БД, вызывавшая отклонение сообщений удаления из-за race condition
- Добавлена дополнительная очистка для всех типов хранилищ
- Исправлен ItemStatusListener (Redis addon)
- Синхронизация статусов теперь ищет предметы во всех типах хранилищ (LISTED, EXPIRED, PURCHASED), а не только в LISTED
- Исправлен ExpireService
- Добавлена защита от повторного истечения предметов, уже удалённых/полученных на другом сервере
- Добавлена поддержка Redis Sentinel (Redis addon)
- Поддерживаются high-availability Redis-сетапы с автоматическим поиском master-ноды и failover
- Используйте mode: "sentinel" в config.yml и укажите sentinel-ноды
- Полностью обратно совместимо — существующие standalone-конфиги продолжат работать без изменений
- Исправлен NullPointerException, если не настроена экономика по умолчанию
- Команда /ah sell и все связанные кнопки теперь показывают ошибку вместо краша
- Добавлена проверка при запуске с заметными предупреждениями в консоли, если default economy отсутствует в economies.yml
- Исправлены неверные названия типов экономики в комментариях economies.yml
- COINS_ENGINE и PLAYER_POINTS не соответствовали enum-значениям CurrenciesAPI (COINSENGINE, PLAYERPOINTS)
- Из-за этого данные типы экономики не загружались, если использовались названия из документации
- Добавлено
- Все permissions теперь автоматически регистрируются в Spigot при запуске и reload
- Включены статические permissions (use, sell, admin и т.д.) и динамические permissions из конфигов (лимиты лотов, уровни истечения, bypass/reduction налогов, доступ к экономикам, inventory-команды, bypass кулдаунов)
- Все permissions сгруппированы под wildcard zauctionhouse.*
- Исправлено выпадение предметов на землю при получении просроченных, купленных или продаваемых предметов с полным инвентарём
- Теперь предметы остаются в хранилище, если инвентарь игрока заполнен
- Добавлена настройка player-inventory-must-have-free-space в секциях remove-expired-item и selling-item (включена по умолчанию)
- Добавлены кнопки:
- ZAUCTIONHOUSE_REMOVE_ALL_EXPIRED
- ZAUCTIONHOUSE_REMOVE_ALL_SELLING
- ZAUCTIONHOUSE_REMOVE_ALL_PURCHASED
- Позволяют забрать все предметы сразу из соответствующих разделов
- Предметы выдаются по одному и процесс останавливается при заполнении инвентаря (если включён player-inventory-must-have-free-space)
- Добавлен API ItemContentProvider
- Система для отображения содержимого контейнеров (шалкеры, кастомные контейнеры других плагинов)
- Сторонние плагины могут регистрировать собственные providers через:
AuctionPlugin.getItemContentManager().registerProvider()- Добавлен hook для AxShulkers
- Теперь содержимое шалкеров из AxShulkers отображается в просмотрщике содержимого предметов
- Так как AxShulkers хранит данные вне vanilla NBT, этот hook обязателен для просмотра содержимого
- Исправлено: продавец не получал деньги в multi-server (Redis) сетапах, если покупатель находился на другом сервере
- Плагин пытался начислить деньги локально на сервере покупателя, где аккаунт продавца мог отсутствовать
- Теперь деньги переводятся в статус PENDING и получаются продавцом через /ah claim или автоматически при входе
- Добавлен AuctionClusterBridge.isDistributed()
- Позволяет bridge-реализациям указывать, что используется multi-server окружение, чтобы плагин мог адаптировать поведение (например, откладывать выдачу денег вместо локального начисления)
- Добавлена кнопка ZAUCTIONHOUSE_CLAIM — отображает ожидаемые средства по каждой экономике с динамическими placeholder’ами и позволяет игрокам забирать их прямо из GUI аукциона
- Добавлен настраиваемый loading-item для кнопки получения, который отображается во время загрузки данных о средствах
- Добавлен формат цены PRICE_WITHOUT_DECIMAL — отображает цену без десятичных знаков (например, 10000.50 → 10000)
- Добавлен placeholder %price-price-without-decimal% — отображает цену без десятичных знаков в описании предмета
- Добавлено: команду /ah admin forceopen теперь можно выполнять из консоли
- Добавлена настройка часового пояса — позволяет изменить таймзону для всех placeholder’ов дат (%date%, %formatted-expire-date%, %expires_at%). Поддерживаются все ID Java TimeZone (например, Europe/Paris, America/New_York, UTC). По умолчанию auto (часовой пояс сервера)
- Исправлено: автодополнение команд /ah admin open и /ah admin history больше не загружает всех офлайн-игроков, что предотвращает лаги на серверах с большим количеством игроков
- Исправлен краш updateListedItems на Folia/Canvas — доступ к inventory holder выполнялся в асинхронном потоке вместо основного тика
- Исправлена настройка аргумента имени экономики для команды продажи — если индекс аргумента экономики не был задан, значение по умолчанию игнорировалось, что приводило к null имени экономики
- Добавлена миграция из ZelAuction — перенос данных из плагина ZelAuction в zAuctionHouse V4 с помощью команды /ah admin migrate zelauction confirm
- Добавлена система поиска — игроки могут искать предметы по имени, материалу, описанию или продавцу прямо в GUI аукциона или через команду /ah search <query>
- Добавлена кнопка ZAUCTIONHOUSE_SEARCH — открывает чат для ввода поиска с поддержкой расширенных фильтров
- Добавлена кнопка ZAUCTIONHOUSE_CLEAR_SEARCH — очищает активный фильтр поиска, видна только при активном поиске
- Добавлена команда /ah search <query> — поиск предметов напрямую из чата без открытия GUI
- Добавлены расширенные фильтры поиска с операторами:
- ~ — содержит
- = — точное совпадение
- ~= — содержит, без учёта регистра
- == — точное совпадение, без учёта регистра
- Поддерживаемые поля для поиска: имя, материал, описание, продавец (например, seller = Notch, name ~ Diamond)
- Добавлена команда /ah admin forceopen <player> <inventory> [page] — открыть любой инвентарь игрока на определённой странице. Поддерживаются все имена инвентарей (например, auction, admin-selling-items, history, admin-logs и т.д.) с автозаполнением. Страница по умолчанию — 1
- Добавлена опция конфигурации reset-search-on-open — при включении (по умолчанию: true) фильтр поиска очищается каждый раз при открытии аукциона, аналогично поведению reset-category-on-open
Добавлена кнопка ZAUCTIONHOUSE_SELL_LIMIT — визуально отображает оставшиеся слоты для продажи в виде списка слотов инвентаря, настраивается для каждого типа предметов (auction, bid, rent)
Добавлен плейсхолдер %zauctionhouse_max_items_<type>% — возвращает максимальное количество предметов, которые игрок может выставить для указанного типа (auction, bid, rent)
Оптимизирована обработка плейсхолдеров в описании предметов: теперь они заранее определяются при загрузке конфигурации и обрабатываются только при использовании, что значительно снижает нагрузку на CPU и память при отображении предметов
Исправлено зависание /ah history на "Loading..." при включённом параметре action.purchased-item.give-item: true
Исправлены значения конфигурации по умолчанию
Исправлен префикс таблиц по умолчанию на zauctionhousev4 (исправляет совместимость с zAuctionHouse V3)
Плейсхолдер %zauctionhouse_max_items_<type>%
Возвращает максимальное количество предметов, которые игрок может выставить в зависимости от его прав для указанного типа:
%zauctionhouse_max_items_auction%
%zauctionhouse_max_items_bid%
%zauctionhouse_max_items_rent%
- Добавлено: zauctionhouse_category permissible для zMenu — позволяет условно отображать кнопки в зависимости от выбранной игроком категории (по умолчанию main)
- Добавлена кнопка ZAUCTIONHOUSE_CATEGORY_SWITCHER — объединяет переключение категорий (ЛКМ/ПКМ) с динамическим описанием (lore), показывающим состояние включено/выключено для каждой категории
- Добавлен плейсхолдер %zauctionhouse_category_id% — возвращает ID текущей выбранной категории игрока
- Добавлена кнопка ZAUCTIONHOUSE_HISTORY_INVENTORY — открывает инвентарь истории продаж напрямую из любого интерфейса
- Добавлена опция force-amount-one в config.yml (раздел item-lore) — принудительно отображает количество предмета как 1 в аукционе, при этом реальное количество сохраняется
- Изменено: API AuctionEconomy — методы (get, has, deposit, withdraw) теперь используют UUID вместо OfflinePlayer для лучшей совместимости
- Обновлена зависимость CurrenciesAPI с 1.0.12 до 1.0.13
- Исправлено: fallback имени категории — теперь используется настроенное имя категории "all" вместо захардкоженного "All"
- Исправлено: краш при пустых слотах — кнопки списков (ListedItems, ExpiredItems, PurchasedItems, SellingItems) больше не вызывают ошибку, если emptySlot = -1 и список пуст
- Исправлено: слот загрузки истории — HistoryItemsButton корректно обрабатывает loadingSlot = -1
- Исправлено: LoadingSlotLoader — добавлена проверка некорректных значений слотов с понятным сообщением об ошибке
- Добавлен тайский язык в список поддерживаемых
- Исправлена поддержка Minecraft 1.20.4
- Исправлена команда /zauctionhouse — теперь она больше не является основной командой по умолчанию (можно изменить в config.yml)
- Исправлены ошибки системы сообщений, которые могли появляться без причины
- Добавлена опция reset-category-on-open, позволяющая сбрасывать категории при повторном открытии инвентаря
- Добавлена поддержка экономики EXCELLENTEECONOMY
zAuctionHouse V4 — список измененийЧто нового
zAuctionHouse V4 — это полностью переписанная версия плагина, созданная для современных серверов Minecraft (Paper 1.21+, Java 21).Основные улучшения
ПроизводительностьПоддержка мультисерверов
- Архитектура Async-first — все операции выполняются через CompletableFuture (без блокировок)
- Параллельная сортировка — более быстрая загрузка списков предметов
- Кэширование FastUtil — оптимизированные кэши для игроков и глобальных данных
- Улучшения базы данных — использование Repository-паттерна с Sarah ORM
Интеграция с Discord
- Нативная поддержка кластеров — встроенный интерфейс AuctionClusterBridge
- Распределённые блокировки — предотвращают дублирующие покупки между серверами
- Дополнение Redis — синхронизация в реальном времени
- Богатые webhook-эмбеды — заголовки, описания, поля и изображения
- Автоматическое определение цвета — доминирующий цвет из текстуры предмета
- Уведомления о продаже и покупке — настраиваемые события webhook
Новые функции
Система правил13 интеграций с плагинами
- Гибкие правила с логикой AND/OR
- Поддержка условий: материал, название, лор, теги, model data
Дополнительно
- ItemsAdder
- Oraxen
- Nexo
- MMOItems
- ExecutableItems
- Slimefun
- и другие
- Просмотр содержимого контейнеров — предпросмотр шалкер-боксов и других контейнеров
- Мультиязычность — английский, французский, испанский и итальянский с автоопределением
- Отдельный API — модуль для разработчиков сторонних плагинов
- Админ-мониторинг — логи транзакций, просмотр истории, отслеживание действий
- Миграция из V3 — встроенный инструмент переноса данных
Экономика и налоги
Поддерживаемые экономики
Vault, PlayerPoints, CoinsEngine, Item-based экономика, XP, Levels, zEssentials, EcoBits, RedisEconomy
Типы налоговНовое
- SELL — комиссия при выставлении предмета
- PURCHASE — вычитается из прибыли продавца
- BOTH — применяется и при выставлении, и при продаже
- CAPITALISM — система НДС (покупатель платит дополнительную сумму)
- Налоги для конкретных предметов
- Снижение налогов по уровням (VIP / Premium)
- Права обхода налогов
Команды
Админ-команды
- /ah sell <price> [amount] [economy] — выставить предмет (новое: параметр экономики)
- /ah claim — забрать ожидающие деньги
- /ah selling — список ваших продаж
- /ah expired — просроченные лоты
- /ah purchased — купленные предметы
- /ah history — история операций
- /ah admin migrate <source> confirm — миграция из V3
- /ah admin history — просмотр всех транзакций
Требования
- Paper 1.20+ (совместимость с Folia через FoliaLib)
- Java 21
- zMenu (обязательно)
- PlaceholderAPI (обязательно)
Миграция из V3
Команда:/ah admin migrate v3 confirm
Поддерживается перенос данных из SQL и JSON.
Переносятся все предметы, транзакции и данные игроков.
- Исправлена работа кнопок Claim и Seller Show.
- Исправлена проблема, при которой продажа не срабатывала, если игроки быстро переключали предметы.