Gold Плагин GUI Магазин Экономика EconomyShopGUI Premium [6.5.2]

Исправлено:
  • Ошибка при включении плагина на серверах Folia версии 26.3.
  • Предмет магазина со второй страницы продолжал отображаться при возвращении на первую страницу, если свободный слот на первой странице был занят заполняющим предметом.
  • Ошибка NPE при загрузке данных игрока на серверах, работающих за прокси в offline-режиме.
Изменено:
  • Сообщение о сохранении динамических цен теперь выводится как отладочное и может быть отключено.
Автор: bobobo
В этом обновлении изменён способ работы ESGUI с базами данных MySQL и PostgreSQL (поддержка PostgreSQL добавлена впервые). Эта часть плагина не обновлялась несколько лет, поэтому я не хотел переписывать её с нуля, чтобы не создавать новые проблемы.

Теперь плагин в полной мере использует систему пула соединений драйвера. Это должно повысить производительность на крупных серверных сетях, где несколько серверов одновременно подключаются к одной базе данных и создают высокую нагрузку на неё.

Стресс-тесты проводились на локальной сети Velocity с двумя серверами, каждый из которых продавал около 100 000 предметов в час через AutoSellChests с включёнными DynamicPricing и ограничением запасов. При этом кэш отображения был отключён. Проблем с производительностью не обнаружено.

Добавлено:
  • Добавлена поддержка баз данных PostgreSQL.
  • Добавлена поддержка синхронизации RotatingShops через MySQL/PostgreSQL. Теперь ротацию предметов можно синхронизировать между серверами одной сети.
  • Добавлена поддержка параметра update-interval для товаров магазина. Он позволяет обновлять название и описание предмета через заданные интервалы, например, если они содержат голограммы.
  • Команда /shop search теперь также позволяет искать предметы по названиям зачарований и зелий.
  • Команда /sellall <item> теперь также поддерживает пользовательские ID предметов из совместимых плагинов.
Изменения и исправления:
  • Если скоро должна произойти ротация RotatingShop, магазин теперь перезагружается у игроков, которые просматривают его в данный момент. Это предотвращает покупку предметов из предыдущей ротации.
  • Значительно снижена нагрузка на SQL при одновременной работе с магазинами на крупных и загруженных серверах. Для этого используются снимки данных, даже если кэш отображения отключён.
  • При использовании SQLite пакетные SQL-запросы теперь выполняются в очереди вместо создания отдельной задачи для каждого пакета. Это предотвращает создание сервером чрезмерного количества асинхронных задач.
  • Исправлена ошибка ClassCastException в Minecraft 26.3 при продаже предметов с пользовательскими данными компонентов.
Автор: bobobo
  • Добавлена поддержка установки опции предмета bedrock-texture для элементов навигационной панели, элементов опций и элементов разделов.
  • Оптимизировано создание описаний предметов, когда per-player-languages отключён в config.yml.
  • Исправлена ошибка при запуске, возникавшая при разном количестве конфигураций в папках sections и shops.
  • Исправлена ошибка, из-за которой нажатие на элемент навигационной панели без действия для пагинируемого предмета в JsonShopForms вызывало ошибку и закрывало меню у игроков Bedrock.
Автор: bobobo
  • Исправлена ошибка StackOverflow на серверах Spigot 26.3.
  • Форматы валют в config.yml теперь также могут содержать символы в верхнем или нижнем регистре.
  • Возможно, исправлена ошибка при входе игрока с AuthMe/пиратской версии игры, появившаяся в последней версии.
Автор: bobobo
  • Добавлена поддержка MC 26.3 и все новые 117 предметов добавлены в базу данных
  • Добавлена поддержка дополнений зачарований
    • Для каждого предмета можно использовать enchanted-variants: true, чтобы добавить зачарованные варианты к базовому предмету. При продаже такого предмета в магазин стоимость каждого зачарования добавляется к цене продажи базового предмета
    • Теперь эта функция включена по умолчанию в магазинах оружия, инструментов и брони, но глобально отключена по умолчанию в config.yml (для её включения необходимо пересоздать отдельные файлы секций этих магазинов)
      • Стоимость зачарований берётся из enchant-costs.yml, где можно настроить стоимость зачарований, добавляемую к базовым предметам
      • Стоимость может быть фиксированной или рассчитываться в процентах от цены базового предмета
      • Уровни зачарований могут использовать множитель от рассчитанной стоимости первого уровня зачарования или фиксированную денежную сумму
    • Ссылка на вики: https://wiki.gpplugins.com/economyshopgui/file-configuration/config.yml#enchanted-variants
  • Теперь варианты повреждённых предметов также можно включать или отключать отдельно для каждого предмета магазина
  • Добавлена опция fixed-stack-size для отдельных предметов, которая позволяет изменять количество предметов на экране покупки/продажи только с заданным шагом
    • В отличие от опции stack-size, которая лишь устанавливает предварительно выбранный размер стопки, при этом игрок всё ещё может выбрать любое количество
  • Добавлена консольная команда для непосредственного открытия экрана транзакции для игрока: /shop <section> <player> <item> <buy/sell>
  • Названия меню, сообщения команд/транзакций и описание предметов теперь также могут отображаться на языке игрока с помощью плейсхолдеров %translation-%
    • Для работы этой функции необходимо отдельно включить параметр use-player-locale в config.yml (по умолчанию отключён)
    • Если сообщение не переведено на язык игрока или файл языка отсутствует, будет использоваться язык по умолчанию из config.yml или английский
    • Ссылка на вики: https://wiki.gpplugins.com/economyshopgui/file-configuration/config.yml#per-player-localization
  • Добавлена поддержка Bedrock Form UI для магазинов (требуются Geyser и Floodgate)
    • Формы Bedrock отображаются только игрокам с Bedrock
    • Добавлена настройка, позволяющая показывать формы Bedrock только на устройствах с сенсорным экраном, таких как iOS или Android
  • Добавлена поддержка JsonShopForms для Bedrock, благодаря которой обычные формы выглядят как сетка
    • Подробнее: GPPlugins - Premium Minecraft Plugins
    • Поддерживаются любые размеры инвентаря (в отличие от стандартных инвентарей Geyser, которые поддерживают только половинный или полный размер)
    • Инвентарь больше не отображается некорректно на устройствах с маленьким экраном
    • Простая поддержка пользовательских текстур GUI (аналогично шрифтам-глифам ItemsAdder/Nexo в заголовках)
    • Простая поддержка пользовательских текстур предметов
    • Предметы поддерживают размеры стопок и индикаторы прочности, в отличие от обычных форм, использующих обычные изображения предметов в качестве иконок
    • Используется сеточное отображение вместо списка, как в обычных формах
    • Поддерживаются 3D-иконки блоков благодаря пользовательскому рендереру иконок (как в обычных сундуках)
    • При открытом магазине над игроком больше не отображается парящий сундук
  • Добавлена возможность отдельно задавать заголовок инвентаря для игроков Bedrock на уровне секции, страницы магазина и каждого меню
    • Например, это позволяет использовать разные UI-оверлеи в зависимости от заголовка для игроков Bedrock по сравнению с интерфейсом для Java-игроков
    • Ссылка на вики: Sections | EconomyShopGUI wiki
  • Добавлена поддержка отдельных текстур Bedrock для каждого предмета магазина
    • Используется для задания текстуры предмета при использовании прокси-серверов
Изменено:

  • CoinsEngine переименован в ExcellentEconomy во внутренних компонентах
    • Провайдеры экономики в конфигурации, несколько цен покупки/продажи предметов и переопределения формата валюты автоматически обновятся с CoinsEngine на ExcellentEconomy при обновлении плагина
  • Обновлены языковые файлы из Crowdin. Спасибо всем участникам, которые помогали с переводами: EconomyShopGUI Project Activity Stream
    • Добавлены файлы перевода на традиционный китайский и китайский (Гонконг)
    • lang-cz.yml переименован в lang-cs.yml (при обновлении будет переименован автоматически)
    • lang-jp.yml переименован в lang-ja.yml (при обновлении будет переименован автоматически)
Исправлено:

  • Предметы, у которых был указан только item_name без пользовательского имени, отображались в сообщении о транзакции с названием материала, даже если в конфигурации была включена настройка use-item-name
  • Исправлена проверка наличия определённых данных компонентов предмета на серверах 1.20.5+
Для разработчиков:

  • Добавлены API-методы для записи транзакций во внешних плагинах в базу данных EconomyShopGUI
  • Добавлены API-методы для открытия экрана транзакции для определённого предмета у конкретного игрока
  • Методы #purchase/sellItem(), добавленные начиная с API v1.11.0-b.1, объявлены устаревшими. Вместо них рекомендуется использовать новые методы с дополнительным параметром transactionType, предназначенным для записи транзакций
Автор: bobobo
  • Исправлено исключение Modifier Manager при отключении плагина.
  • Исправлен экспорт логов через /eshop logs, который не работал, пока кэш транзакций не был загружен вручную с помощью плейсхолдера, например /papi parse --null %esgui_FIRST_most_sold_item_current_MONTH%.
  • Исправлено экранирование слов между <> в плейсхолдерах в описании предметов магазина при использовании Paper Meta.
  • Исправлена работа кэша плейсхолдеров для новых плейсхолдеров предметов.
Автор: bobobo

Добавлено​

  • Добавлена глобальная задержка между кликамив GUI.
    • Настраивается в конфигурации.
    • Значение по умолчанию — 125 мс.
  • Добавлена поддержка требований по предметам заданий для BetonQuest и BeautyQuests.
  • Добавлена поддержка SilkSpawners_v2 API v3.
  • Добавлена прямая поддержка экономики VaultUnlocked в качестве провайдера мультивалютной системы.
  • Категории магазинов теперь можно автоматически скрывать из главного меню, если у игрока нет необходимых прав, с помощью настройки hide-if-no-perms в конфигурации раздела магазина.
  • Добавлены плейсхолдеры для отдельных товаров магазина, отображающие количество покупок и продаж за определённый период времени.
  • Добавлены персональные плейсхолдеры, отображающие количество покупок и продаж конкретного товара данным игроком за выбранный период.
  • Добавлена возможность продавать предметы независимо от их прочности.
    • Цена продажи автоматически рассчитывается с учётом процента оставшейся прочности.
    • Множитель стоимости настраивается в config.yml.
    • Функцию можно включать и отключать отдельно для каждого раздела магазина.
    • При обновлении плагина функция по умолчанию отключена, чтобы не изменить поведение уже существующих магазинов. При новой установке она включается автоматически.

Изменено​

  • Плейсхолдеры статистики покупок и продаж с периодами WEEK и MONTH теперь используют последние 7 и 30 дней, а не текущую календарную неделю или месяц.
  • Исправлены ситуации, при которых плейсхолдеры со временем WEEK или MONTH могли не отображать данные.
  • Если это возможно, меню магазинов теперь обновляются динамически, без полного переоткрытия GUI, что устраняет мерцание при переключении страниц.
    • Это работает для магазинов без уникальных заголовков или плейсхолдеров для отдельных страниц.
  • Теперь игроки могут свободно перемещать предметы в своём инвентаре, пока открыт интерфейс магазина.

Исправлено​

  • Исправлена проблема, из-за которой плейсхолдеры вида %esgui_buy_price_<section>.<itemIndex>% не работали в описании предметов на серверах 1.20.4 и ниже, поскольку CraftBukkitвоспринимал их как URL.
    • Теперь вместо . можно использовать символ >, чтобы избежать подобных проблем и в других плагинах.
  • Исправлена ошибка NPE, возникавшая при нажатии ПКМ по товару с ограниченной продажей.
  • Исправлен эксплойт в новой стандартной конфигурации, связанный с бирками (Name Tags).
  • Исправлена ошибка NPE, возникавшая, если игрок заходил на сервер до завершения отложенной загрузки плагина при инициализации модификаторов команд.
  • Исправлена работа плейсхолдера %material-name% в удобочитаемом формате для предметных валют при выборе другой валюты через переопределение формата.
  • Исправлена продажа спавнеров из RoseStacker.
  • Исправлена ошибка NPE, возникавшая при возврате назад из редактора GUI после изменения цены товара с использованием динамического ценообразования.
Автор: bobobo
  • Исправлена ошибка, из-за которой продажа предметов через SELL_ALL в GUI магазина игнорировала установленный лимит продажи (появилась в предыдущем обновлении).
Автор: bobobo
  • Исправлена ошибка, из-за которой кнопка «Назад» на второй, третьей, четвёртой и последующих страницах подразделов всегда возвращала в главное меню.
  • Исправлена загрузка поддержки MiniMessage на серверах Spigot и Leaf.
  • Обновлён хук SpawnerLegacy.
  • Исправлено округление цен при динамическом ценообразовании с большим максимальным запасом товара.
  • Исправлена ошибка, из-за которой удаление модификаторов секции у игрока применялось только к первому предмету в разделе до выполнения команды /sreload.
Автор: bobobo
  • Добавлена поддержка Minecraft 26.2.
  • Добавлена поддержка Adventure lib 5.1.
  • Добавлено действие SET amount для предметов в окне транзакций.
  • Добавлена поддержка спавнеров для встроенного провайдера спавнеров Purpur.
  • Добавлена опция конфигурации для ручного отключения Vault prefix/suffix (например, при использовании чат-плагина, который уже их обрабатывает).
  • Опция DiscordSRV-channel теперь может принимать ID канала (полезно при использовании эмодзи в названии канала).
Исправления:
  • Исправлена проблема, из-за которой клик по onlyForGeyserPlayers fill-элементу срабатывал у Java-игроков, даже если предмет не отображался.
  • Проведена очистка и улучшение кода.
Для разработчиков:
  • Добавлены API-методы #sellItem и #purchaseItem для покупки/продажи предметов через единый вызов с автоматической проверкой и обновлением свойств/лимитов.
Автор: bobobo
ВерхНиз