Skip to content

1.5 - next-gen

Compare
Choose a tag to compare
@PukPukov PukPukov released this 13 Feb 06:37
87d3e79

В этом обновлении фреймворк был тотально улучшен по всем направлениям, закрывая те дыры, что мешали использованию фреймворка на проде.

Изменения

  1. Взято за практику документирование всех сделанных с фреймворком измененией. Теперь мне не придётся вспоминать, а что же я изменил в фреймворке в момент создания релиза.

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

  3. Переработка EventAPI:
    2.1. Добавлен BlockNullifyEvent.
    2.2. Все ивенты теперь используют List вместо 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, баккитовский бойлерплейт сгруппирован в конце класса в трёх маленьких строках.

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

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

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

  7. Обновлён 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 (основанный на функции).

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

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

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

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

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