Всем привет! В этом релизе проведён большой рефакторинг системы торговцев: более чистый конфиг, безопасное использование API на 1.21+, встроенные стоки и лимиты, а также новый красивый постраничный GUI. Вот что изменилось:
✨ Основное
- Новый GUI предложений (SmartInvs) с сеткой 6×9, постраничной навигацией и кнопками Назад/Вперёд
- Флаги функций для каждого торговца: можно включать/выключать Offers, Stock и Per-Player Limits для каждого NPC
- Система стоков и перезаполнения с автоматическими таймерами и сохранением данных в runtime-файл
- Лимиты покупок на игрока с таймерами сброса
- Безопасная работа с атрибутами 1.21+ (AttributeModifier.Builder, fallback для старых API)
- Везде поддержка MiniMessage и цветовых кодов (&a, &l и т. д.), опционально PlaceholderAPI
- Переработка билдера предметов: поддержка model data, зачарований, атрибутов, PDC-тегов, unbreakable, lore и т. д.
- Поддержка Vault для экономики (с fallback, если Vault отсутствует)
- Опциональный GUI подтверждения перед покупкой
- Поддержка старого режима "single trade", если не нужен GUI
👤 Как игроки это используют
- Клик по NPC → открывается прокручиваемое меню предложений с превью предметов, ценами, стоками и лимитами
- При включённой опции игроки увидят экран подтверждения перед покупкой
- Сделки могут требовать деньги, опыт, предметы и давать предметы, деньги или запускать команды
- Поддерживаются MiniMessage-теги (<green>, <bold>, <br>) и классические коды (&a, &l), плейсхолдеры PlaceholderAPI раскрываются для конкретного игрока
⚙️ Новая структура конфигов (trader.yml)
- Поддержка настроек для каждого NPC
- Возможность указывать условия, требования, стоки, лимиты и полноценные GUI-предложения
- Сохранение данных о текущем стоке и лимитах в trader_runtime.yml (автоматически пересоздаётся при удалении)
🔧 Совместимость и безопасность
- Minecraft/Spigot 1.21+: используется AttributeModifier.Builder
- Старые версии: fallback на старый конструктор (работает даже если устарел)
- Атрибуты и зачарования через Registry (без устаревших методов)
- Поддержка гибких имён ключей: minecraft:generic.attack_damage, generic.attack_damage, GENERIC_ATTACK_DAMAGE
📋 Чеклист для админов после обновления
- Сделайте бэкап trader.yml и trader_runtime.yml
- Обновите trader.yml под новую структуру (см. примеры)
- Если использовались хардкодные имена NPC/голограммы — убедитесь, что применяются форматированные имена (чтобы <green> не отображалось как текст)
- Убедитесь, что Vault установлен, если используете деньги
- Протестируйте предложение со стоками и лимитами
- По желанию удалите trader_runtime.yml, чтобы начать с чистыми данными
🐞 Исправления и улучшения
- Исправлено отображение тегов <green> как текста — теперь MiniMessage и & коды обрабатываются корректно
- Заменены устаревшие API атрибутов, добавлен fallback для старых серверов
- Более надёжный парсинг EquipmentSlotGroup (ANY, HAND, MAINHAND, OFFHAND, ARMOR, HEAD, CHEST, LEGS, FEET)
- Более чистая обработка ошибок и опциональные debug-логи
🙏 Благодарности
Спасибо всем за обратную связь и репорты — обновление сделано во многом благодаря вашим предложениям. Если найдёте баги — отправляйте trader.yml и шаги воспроизведения, я сразу посмотрю!