ElegantNetworking - максимально изящная пакетная система

ElegantNetworking - максимально изящная пакетная система 3.14 / 3.14

Нет прав для скачивания
  • Списки пакетов сортируются во время компиляции, таким образом при неизменном множестве пакетов айдишники будут неизменными. Удобно когда нужно обновить мод только на клиенте или только на сервере и пакеты не меняются.
  • Длинные имена каналов больше не крашат клиент
А еще либы последней версии залиты на курс
  • Улучшены сообщения об ошибках
    • При попытке отправить незарегистрированный пакет ошибка также указывает на подключение процессора аннотаций
    • При использовании имени канала длинней 20 символов берутся первые 20 символов и выводится предупреждение
  • Проверка стороны отправки теперь совместима с двунаправленными пакетами(реализующими оба интерфейса)
  • Добавлена опция конфигурации backgroundPacketSystem, определяющая, будет ли использоваться пакетная система Forge или CodeChickenLib.
    • Значение по дефолту ForgeImpl, поэтому если вы используете CodeChickenLib и хотите продолжать использовать - поменяйте значение на CCLImpl
  • Добавлена поддержка вложенных классов
  • Генерация id пакетов во время компиляции теперь учитывает лексикографический порядок имен пакетов
    • Теперь айдишники пакетов не меняются от билда к билду, если набор пакетом не меняется
  • Добавлена поддержка сериализации регистрируемых объектов, раньше поддерживались только Item и Block
  • Более стабильная авто-регистрации за счет использования ServiceLoader
    • А заодно и совмеcтстимость с FG4+
  • Из билда для 1.7.10 удален examplemod
  • Исправлена проверка стороны отправки в 1.14+
  • Добавлены примеры использования: GitHub - ElegantNetworking/Examples: Examples projects with EN
Моды, скомпилированные для ранних версий фреймворка, не будут работать на 3.10+ версии! Если вы автор такого мода - пересоберите его и опубликуйте даже если не вносите в свой код изменений.
  • Like
Реакции: jopi
  • Добавлена проверка нулябельности compound tag-а
  • Айдишники блоков-предметов теперь сериализуются в виде Int, а не Short
Версия 3.x для 1.7.10 таки вышла!
Большое спасибо @anatawa12 за прекрасный форк FG1.2 и @GlassSpirit за помощь в настройке воркспейса с этим форком!
  • Стактрейс неожиданного исключения процессора аннотаций теперь выводится корректно
  • Процессор аннотаций теперь знает настоящие имена некоторых специально поддерживаемых коллекций. Например, com.google.common.collect.ImmutableList, раньше из-за relocate shadow plugin было некорректно
  • Добавлена поддержка BlockPos аналогично с ItemStack, ResourceLocation и прочими
  • Имена проблемных классов теперь печатаются перед ошибкой компиляции
Это связано с тем, что Gradle в некоторых случаях сам не указывает, в каком месте ошибка.​
Можно отключить, добавив опцию процессора аннотаций:​
Gradle (Groovy):
compileJava {
    options.compilerArgs += [
        '-Aelegantnetworking.disablePrintElementName'
    ]
}
  • Теперь возможно наличие двух и больше полей с одинаковым generic-типом
Java:
@ElegantPacket
public class SomePacket implements ClientToServerPacker{
    List<Some> fieldOne;
    List<Some> fieldTwo;
   
    ...
}

Спасибо @GoogleTan за обкат новой версии!
  • Like
Реакции: GoogleTan
Изменения
  • Существенно улучшена автосериализация
    • Из коробки поддерживаются часто используемые реализации коллекций
    • Кастомные реализации тоже поддерживаются, однако пока не очень
    • Бинарная совместимость сломана(см. раздел о миграции)
    • Сообщения о ошибках компиляции теперь подробнее и понятнее
    • Инкрементальная компиляция! Повторные сборки ваших проектов теперь быстрее!
  • Улучшены сообщения об ошибках в рантайме
  • Автосериализацию можно применять не только для пакетов!
Пометьте свой класс @ElegantSerializable и наследуйте от IByteBufSerializable.​
Посмотрите методы класса ElegantNetworking.​
  • Прочие исправления
    • Ошибка регистрации пакетов одного мода не сломает пакеты других модов в сборке
    • Регистрация пакетов в собранном моде

Как мигрировать на 3 версию
Апи никак не поменялось.
Обновите версии зависимостей и перекомпилируйте проект.
compile "io.gitlab.hohserg.elegant.networking:elegant-networking-1.12:3.2"
compileOnly "io.gitlab.hohserg.elegant.networking:annotation-processor:3.2"
Моды, скомпилированные для ранних версий фреймворка, не будут работать на 3 версии! Если вы автор такого мода - пересоберите его и опубликуйте даже если не вносите в свой код изменений.
  • Like
Реакции: GoogleTan
Теперь процессор аннотаций учитывает поля и методы из супер-классов
Мод-либа теперь доступна на курсе: curseforge.com/elegant-networking
Теперь проще распространять паблик-моды с элегантными пакетами

Появился логотип! Спасибо @Liahim за него)
Сверху