
Night Auto Config
Библиотека-мост между Night Config и Auto Config для Майнкрафт. Позволяет сериализовать конфиги в любом формате Night Config прямо через Auto Config, включая поддержку PartitioningSerializer.
Night Auto Config
Night Auto Config - это интеграция библиотеки Night Config в систему Auto Config (которая теперь встроена в Cloth Config). По сути, это прослойка, которая заставляет две системы дружить друг с другом, чтобы ты мог сериализовать настройки своего мода в любом формате, который предлагает Night Config.
Зачем это нужно
В Майнкрафт каждый мод хранит конфиги по-своему. Auto Config упрощает этот процесс, но ограничен форматами по умолчанию. Night Auto Config снимает эти ограничения: ты можешь взять любой формат Night Config (TOML, JSON5, HOCON и т.д.) и использовать его через привычный Auto Config, даже с PartitioningSerializer, который режет конфиг на несколько файлов.
Как это работает
Внутри Night Auto Config есть NightConfigSerializer - реализация интерфейса сериализатора для Auto Config. Просто подключаешь его - и всё летает.
Подключение к проекту
Лучше всего ставить через JitPack:
Groovy (build.gradle)
repositories {
maven { url "https://jitpack.io" }
}
dependencies {
modApi "com.github.KessokuTeaTime:Night-Auto-Config:${project.nightautoconfig_version}"
// Cloth Config тащи отдельно
}
gradle.properties:
nightautoconfig_version={latest}
Kotlin DSL (build.gradle.kts)
repositories {
maven { url = uri("https://jitpack.io") }
}
dependencies {
modApi("com.github.KessokuTeaTime:Night-Auto-Config:${project.nightautoconfig_version}")
// Cloth Config тоже нужен
}
gradle.properties:
nightautoconfig_version={latest}
{latest}замени на последний тег релиза Night Auto Config.
Пропиши зависимость в метаданных мода
Не забудь указать Night Auto Config как зависимость в Fabric или Quilt:
{
"depends": {
"nightautoconfig": "*"
}
}
Использование
Сам сериализатор лежит в band.kessokuteatime.nightautoconfig.config.NightConfigSerializer.
Пример кода:
MyConfig.java:
// Аннотации Night Auto Config задают провайдеры сериализации и десериализации на лету
@SerializerProvider(MyClassSerializerProvider.class)
@Config(name = "my_config")
public class MyConfig implements ConfigData {
// Все аннотации Night Config тоже работают
@SerdeDefault(provider = "someStringProvider")
public String someString = someStringProvider.get();
private transient final Supplier<String> someStringProvider = () -> "default";
public static class MyClassSerializerProvider implements UnifiedSerializerProvider<MyClass, String> {
// ...
}
public MyClass someInstance = new MyClass();
}
MyMod.java:
public class MyMod implements ModInitializer {
@Override
public void onInitialize() {
AutoConfig.register(NightExampleConfig.class, ConfigType.DEFAULT_COMMENTED::fileWatcherSerializer);
}
}
Важно знать
Чтобы избежать ошибок сериализации, помечай поля аннотацией @SerdeDefault из com.electronwill.nightconfig.core.serde.annotations. Иначе могут вылетать эксепшены.
Если тебе нужны живые примеры - глянь в папку examples внутри библиотеки.
