EN
Hollow Horizon
Hollow Horizon
35 subscribers

HollowCore: Сериализация

С самого моего знакомства с моддингом меня всегда раздражало писать энкодеры и декодеры для разных объектов, это очень быстро гасило всю мою мотивацию что-то кодить :D
Так что теперь я создал систему, позволяющую всего одной строкой превратить объект в nbt!
Для начала создадим новый класс и добавим ему аннотацию `@Serializable`.
И теперь стандартный сериализатор из ванилы будет выглядеть примерно так:
Довольно много кода, который, на первый взгляд, особо никак не автоматизировать... Но благодаря библиотеки kotlinx.serialization можно в разы упростить этот процесс, ведь эта библиотека поддерживает создание своих собственных форматов, что и было добавлено в HollowCore!
Теперь создадим новый объект, сериализуем его и всё, теперь у нас есть nbt прямо из Minecraft и далее мы можем спокойно это куда-то сохранить или создать пакет для отправки на клиент/сервер, совершенно не заморачиваясь с написанием своих декодеров и энкодеров!
В обратную сторону это тоже работает, при помощи метода NBTFormat::deserialize.
И это всё что может эта система, просто превращать простые структуры в nbt? - Нет, не только простые структуры)
Она также успешно справляется со списками, Map'ами и даже Generic'типами, хоть и с небольшими оговорками и костылями :) 
И наконец, HollowCore позволяет сериализовать даже интерфейсы или абстрактные классы, главное - указать его исходных тип при наследовании. Например у меня таким образом добавляются новые виджеты в систему серверных интерфейсов, и не нужно морочиться с созданием регистрации, пакетов и т.п.!
Ну а на этом у меня в принципе всё, хоть пожалуй и вышло довольно поверхностно, на надеюсь суть я донёс)
Пишите в комментариях, как вам этот формат "Обзора на мой код" и что хотели бы видеть в будущем!
avatar
расскажи про формат регистраций через аннотации, если там есть что-то особенное)
Show more replies
avatar
Hollow Horizon, делегаты фишка котлина?)
avatar
Amiri163, разумеется)

Subscription levels

No subscription levels
Go up