SizzLib
SizzLib представляет собой специализированную библиотеку, предназначенную для разработчиков модификаций Minecraft. Её основная цель — упростить создание клиентских команд, функциональных возможностей и механизмов сохранения данных, которые работают исключительно на стороне клиента.
Преимущества использования
Разработчики получают значительные преимущества при работе с SizzLib. Библиотека обеспечивает высокую скорость итераций при создании новых функций, а также предлагает простую систему локального сохранения данных, связанную с конкретным игровым миром. Важной особенностью является то, что эта система функционирует даже при подключении к ванильным серверам.
Система аннотаций
Библиотека использует систему аннотаций Java для обозначения методов и полей как компонентов команд или данных для локального сохранения. Для практического ознакомления с работой ModComponentRegistry рекомендуется изучить классы SizzLibClient и ExamplePersistable.
Управление данными
Класс PersistenceManager предоставляет функции save(...) и load(...), которые позволяют сериализовать и десериализовать объекты в формате JSON с последующим локальным хранением.
Командная система
Аннотация @Command применяется на уровне класса и при регистрации через ModComponentRegistry создает клиентскую команду на основе Brigadier.
Аннотация @CommandOption используется для полей и создает подкоманды, позволяющие пользователям читать или изменять значения полей в зависимости от конфигурации параметров аннотации. Система поддерживает парсинг перечислений с автоматическим созданием подсказок из возможных значений, а также работу с проприетарными типами Minecraft, такими как ItemStack и BlockPos.
Аннотация @CommandAction применяется к методам и создает подкоманды для их выполнения. Поддерживаемые типы параметров в сигнатуре метода передаются при выполнении.
Система тиков
Библиотека предоставляет несколько аннотаций для удобной работы с игровыми циклами:
- @ClientTick выполняет метод в конце каждого игрового тика
- @ScreenTick срабатывает в конце каждого тика экрана, с возможностью передачи объекта Screen в качестве параметра
- @ScreenInit выполняется при инициализации экрана, например, при каждом открытии контейнера
Эти аннотации автоматически подключаются к соответствующим событиям регистрации, значительно упрощая процесс разработки.