Плагин GUI Автошахта LastMines - Универсальный плагин для работы с автошахтами [0.5]

Глобальное обновление

Folia
  • Поддержка Folia. Диапозон поддерживаемых версий: 1.21 - 26.3.
  • Сброс шахты идёт по чанкам: каждая часть выполняется в потоке региона своего чанка (за шаг до 10 000 блоков или 10 мс).
  • Все задачи идут через планировщик библиотеки LLib: таймеры - глобальный, база данные - асинхронно, действия - в потоке игрока, телепорт - teleportAsync.
  • Голограммы создаются и обновляются в потоке региона своей точки.

Статистика добычи
  • Счёт добытых блоков: всего и по материалам. Приращения копятся в памяти и пишутся в базу пачкой (по умолчанию раз в 5 с, асинхронно). При ошибке возвращаются в очередь, при выключении плагина — последняя синхронная запись.
  • Команды: /lm stats [игрок] [материал], /lm top [материал] [страница]. Права: lastmines.stats, lastmines.stats.others, lastmines.top (stats и top доступны без lastmines.admin).
  • Плейсхолдеры: %lm_top_<N>_name%, %lm_top_<N>_value% (и с материалом), %lm_blocks_total%, %lm_blocks_<материал>%, %lm_rank%, %lm_rank_<материал>%. Те же значения как %lastmines_top_…% / %lastmines_stats_…%. Читают только память, базу не трогают. Пустое место в топе: - и 0.

База данных
  • Плагин получил поддержку баз данных, для её быстрой работы и меж-серверности.
  • Файл sql.yml: Memory, H2, SQLite, MySQL, MariaDB, PostgreSQL (пул HikariCP, драйверы подгружаются сами). Версия схемы хранится в базе, добавлены индексы для топа. В общей базе нескольких серверов данные суммируются.
Синтаксис файла:
Код:
driver: H2
table_prefix: 'lastmines'

h2:
  name: 'LastMines' # <name>.db

sqlite:
  name: 'LastMines' # <name>.db

mysql:
  host: 'localhost' # IP:PORT - если не указан PORT то будет по умолчанию 3306
  name: 'lastmines'
  user: 'Last'
  pass: 'LastStudio'

mariadb:
  host: 'localhost' # IP:PORT - если не указан PORT то будет по умолчанию 3306
  name: 'lastmines'
  user: 'Last'
  pass: 'LastStudio'

postgresql:
  host: 'localhost' # IP:PORT - если не указан PORT то будет по умолчанию 5432
  name: 'lastmines'
  user: 'Last'
  pass: 'LastStudio'

# Статистика добычи / Mining statistics
stats:
  enable: true
  flush_interval: 5s    # как часто отправлять накопленное в бд
  top_refresh: 45s      # как часто обновлять кэш топа
  top_size: 100         # сколько позиций топа держать в кэше

Действия
  • Все типы действий берутся из LLib: message, title, actionbar, sound, console, player, vault, playerpoints, give, particle и другие.
  • Строка разбирается один раз при загрузке конфига; ошибка в одной строке не мешает остальным.
  • Новая запись [тип] [когда] [кому] [chance:N] значение:
- когда:[update], [update:N], а также новые [break] и [break:МАТЕРИАЛ] (при добыче блока)
- кому:[all], [mine], [radius:N], новое [self] (игроку, сломавшему блок; для [break] — по умолчанию)
- шанс:[chance:N]
  • Подстановки: %player%, %breaker%, %material%, %mine% и PlaceholderAPI.
  • [console], [broadcast] и *_all выполняются один раз от консоли (раньше - по разу на игрока, а без игроков не выполнялись).
  • Право lastmines.edit.commands для добавления [console] и [player] через меню. Сделано для безопасности.

Режимы и команда копирования
  • ALL_BLOCKS рабочий режим: Не будет хватать нужных блоков - автошахта сразу же перезаполняется и работает без таймера.
  • Сброс по проценту (reset_percent: N): осталось ≤ N% блоков - шахта сразу перезаполняется. Работает в любом режиме.
  • /lm copy <шахта> <новая> (право lastmines.copy): копирует все настройки автошахты и делает её копию, кроме области, точки телепорта, голограммы и статистики. Копия создаётся остановленной и без области.
  • Шахта может существовать без области (positions отсутствует) - такая шахта не сбрасывается.

Исправления

  • Версия сервера вида 26.2.build.7-beta не распознавалась (предупреждение и пропуск проверки версии).
  • Проверка обновлений говорила «вышла новая версия», даже если у вас версия новее; ошибка проверки молча терялась.
  • Сообщение «Шахта с ID %mine% уже существует» показывало %mine% вместо названия (/lm create).
  • Поддержка 26.3 версии майнкрафта
  • Теперь автошахтам можно менять их фигуру размещения. Доступны 4 вида фигур: cuboid (Куб, обычный как и был в плагине), polygon (Многоугольник), cillinder (Цилиндр) и ellipsoid (Эллипсоид). Все эти функции уже есть в вики
  • Из-за того что старые positions.one и positions.two теперь не рабочие в плагине, они буду переноситься автоматически при полном перезагрузке плагина
  • Исправлено переключение шахты между режимами «блоки» и «редкости» больше не стирает остальные редкости - данные сохраняются и восстанавливаются при обратном переключении
  • Новая команда /lastmines defaultmine (алиасы dm, dmine, dfmine, dfm) - восстанавливает стандартные шахты (blocks, rarity) и перезагружает плагин
  • /lastmines reload больше не пересоздаёт стандартные шахты, если они были удалены вручную
  • Исправлен GUI-меню при некорректном/выходящем за границы номере слота в конфиге меню
  • Исправлена проверка вводимого в чат шанса блока - отклоняются некорректные значения (NaN/Infinity)
  • Исправлена утечка в GUI: данные об открытой игроком шахте теперь очищаются при выходе с сервера
  • Исправлены редкие гонки потоков при вводе значений в чат (могли приводить к сбоям меню)
  • Исправлено отображение лора в меню списка онлайн-игроков шахты - раньше не отображалось вовсе
  • Плагин полностью был переписан под собственную библиотеку LLib, теперь BLibV2 больше не нужен кроме BMenu так как он написан на нём полностью
  • Оптимизация и производительность плагина
  • Исправление всех известных багов в плагине
  • Теперь BMenu ТОЧНО не обязателен (надеюсь)
  • Удаление ненужного плейсхолдера %lastmines_rarities_<mine_id>%
  • Теперь плагин поддерживает версии 1.21 - 26.2, ниже поддержки больше не будет!
  • Исправление всех багов в плагине
  • BMenu теперь не обязателен. Работает лишь для управления шахт через меню/GUI
  • Теперь в меню можно полностью сделать под себя почти всё что угодно, что позволяет плагин на меню и сам плагин на шахты
  • Оптимизация плагина
  • Добавлена мультиязычность для плагина. Доступно пока что английский (en) и русский (ru) язык
  • Добавление минимального зачарования чтобы ломать блоки в автошахте
  • При полной перезагрузке плагина сервер смотрит вашу версию и пишет личный .json файл со всеми доступными блоками для меню. Можно добавить свои, но не добавляйте предметы из-за этого могут быть баги
  • Добавлено приостановка шахты через меню
  • WorldEdit/FAWE рекомендуется для работы с плагином из-за подкоманду create

Также был полностью переделан вики сайт для плагина по ссылке
ВерхНиз