AncapFramework [LanguageAPI, CommandAPI, EventAPI, и 3 ещё]

Для ядра AncapFramework [LanguageAPI, CommandAPI, EventAPI, и 3 ещё] 2023-02-17

Нет прав для скачивания
Фиксы багов.
v1.6
Возвращаемся к практике нормальных релизов, сосредоточенных вокруг какой-то отдельной фичи, а не релизов с обновлением всего и сразу.

  1. ResourceAPI - работа с конфигами 3.0. Позволяет обновлять конфиги без полного пересоздания и ручного переноса значений. В соответствии с записанными в value-transfer-map.yml данными переносит данные из старой версии конфига в новую, а также делает бекапы старого конфига на случай, если что-то пойдёт не так.
  2. Перенос MenuAPI в BukkitPlus
  3. Унифицирован стиль названия комманд операторов в CommandAPI, теперь все операторы называются декларативно, изменён CommandDelegator и Adviser на Delegate и Advice соответственно
  4. Унифицирован стиль именования пакетов, теперь всё во фреймворке находится в пакете ru.ancap.framework.
v1.6.1

Корректная обработка нештатных, но не критичных случаев работы ResourceAPI - отсутствие поля config-version в старом конфиге или отсутствие value-transfer-map.yml.

1.6.2

Fix
1.5:
  1. В AncapFramework добавлен StableScheduler - теперь можно планировать задачи на длительное время вперёд, которые не обнулятся при перезагрузке JVM.

  2. Переработка EventAPI:
    2.1. Добавлен BlockNullifyEvent.
    2.2 Все ивенты теперь используют List<x> вместо x для пассивных сущностей, так как можно повлиять сразу же на много вещей.
    2.3. WorldSelfDestructEvent, BlockClickEvent - поменяны аргументы местами, так, чтобы активная сущность была перед пассивной.
    2.4. ExplodeEvent удалён, использовать вместо него обычный BlockExplodeEvent.
    2.5. PVPEvent получил отделение атакующего от атакуемых, массив заменён на список.
    2.6. Пофикшен старый баг, когда ведьма атаковала игрока зельем и из-за этого вылетал cast exception.
    2.7.Удалены throwSelfDesctuctEvent и подобные в классах листенеров Artifex.
    2.8. Удалены бесполезные конструкторы из классов листенеров Artifex.
    2.9. Везде проставил приоритет ивентов на LOW и игрок отменённых ивентов.
    2.10. Наведён порядок в ивентах - бойлерплейт заменён аннотациями от Lombok, баккитовский бойлерплейт сгруппирован в конце класса в трёх маленьких строках.

  3. AncapCommons выделен в отдельный проект.

  4. ConfigurationAPI - теперь можно создавать конфиги на аннотациях!

  5. Система сообщений переработана и выделена в кое-что большее. Теперь оно работает не на принципе примитивной кучи. операций над строкой, а по принципу многоуровневой сборки конечного сообщения. LAPICommunicator удалён, оставлен единый Communicator, который принимает на вход json и строит по нему компонент, который и отправляет, больше он ничего не делает. Выделено в отдельный модуль.
    5.1. Replacement сделан интерфейсом, реализует его BaseReplacement и Placeholder.
    5.2. Формализирован отказ от Component в работе с фреймворком и инкапсуляция его под нормальными способами работы с текстом.
    5.3. Раньше, по всему фреймворку, сообщения отправлялись как попало. Теперь они все отправляются через CommunicatorAPI.

  6. Обновлён CommandAPI.
    6.1. CommandAPI теперь адекватно работает с аргументами и может вычленять сразу же несколько слов в один аргумент, раньше же была возможность только аргумент длиной в один литерал получить.
    6.2. Вместо голого CommandSender теперь используется CommandSource. Через него можно получить в том числе CommandSender, а также Audience из kyori.
    6.3. ArgumentAPI теперь сигнализирует об опциональности аргументов при вводе команды.
    6.4. IncorrectArgumentsEvent выпилен по причине своей ненадобности.
    6.5. FiniteCommandTarget выпилен по причине своей ненадобности и замены ArgumentAPI.
    6.6. Добавлены новые извлекатели в ArgumentAPI - PlayerExtractor и Extractor (основанный на функции).

  7. Переработка Artifex.
    7.1. Переработка структуры locale у Artifex в связи с повышением числа сообщений.
    7.2. Наконец-то AncapFramework отказался от позорного packetevents! Больше мне не придётся по 15 часов искать баг, который потом окажется регрессией с источником в пакетивентах.
    7.3. Переработана структура пакетов Artifex. Очень красиво получилось.
    7.4. Artifex неприемлемо расжирел, поэтому была проведена работа над уменьшением его веса. В конечном итоге реализован Project Jigsaw - Kyori и AncapDatabaseDrivers теперь опциональны, не надо качать их тем, кому они не нужны.

  8. DatabaseAPI теперь поддерживает ORMLite как надстройку, в связи с этим конфигурация тоже немного меняется.

  9. Семантические улучшения по всему фреймворку. Об обратной совместимости можно из-за этого забыть, но всё равно она предыдущими изменениями была в край сломана.
    9.1. Переработана структура пакетов во всем фреймворке.
    9.2. По всему фреймворку заменены геттеры/сеттеры на методы без префиксов.
    9.3. Везде, где заметил, были убраны уродливые сокращения. Адекватные сокращения оставлены, такие как TPS. Не на петухоне, всё-таки, пишем - у нас среда разработки есть и автокомплиты!

  10. Инкрементальные изменения.
    10.1. Ancap#getServerTPS();
    10.2. AuthorsSupplier.

  11. Переработка POM. Теперь AncapFramework, наконец-то, начал по настоящему использовать систему сборки. До этого момента проект не собирался вне моего окружения, хоть и был на мавене. Также теперь используется Jittpack как репозиторий (в связи с разрешением проблемы сборки вне моего окружения).

1.5.5:

Добавлен на jitpack

1.5.6:

Как оказалось, Paper не включает в себя adventure-platform-bukkit. Из-за этого получилась довольно интересная ситуация - плагин запускался на Spigot, а на Paper нет - потому что на спигот устанавливали Kyori, а на Paper никто никому его ставить не говорил.

Не сильно понятен ход мыслей разработчиков Paper, которые не добавили это в ядро, хоть и заявили о native support - однако, в связи с этим, Artifex должен включать в себя net.kyori полностью. В связи с добавлением этого в Artifex плагин с этими зависимостями упразднён.
  • Мне нравится (+1)
Реакции: Destroy
Назад
Сверху Снизу