Скачать Night Auto Config — Minecraft Моды — ModStock

Night Auto Config

Активный

Установок

0

Последнее обновление

11 месяцев назад

Версии

1.20 — 1.21.4
Клиент
Fabric
Quilt
Библиотеки

Night Auto Config

Serialize everything! Night Auto Config is a Night Config integration for Auto Config (now embedded in Cloth Config).

Implementation

Night Auto Config introduces a NightConfigSerializer to satisfy Auto Config's requirement of a serializer's implementation. You can choose from all the available config formats of Night Config, and use the serializer just as other common serializers, even along with a PartitioningSerializer.

Add to Your Project

It is recommended to use JitPack to implement Night Auto Config into your project.

Groovy
build.gradle
```groovy repositories { maven { url "https://jitpack.io" } } dependencies { modApi "com.github.KessokuTeaTime:Night-Auto-Config:${project.nightautoconfig_version}" // You'll need to implement Cloth Config API here. } ```
gradle.properties
``` nightautoconfig_version={latest} ```
Kotlin DSL
build.gradle.kts
```kotlin repositories { maven { url = uri("https://jitpack.io") } } dependencies { modApi("com.github.KessokuTeaTime:Night-Auto-Config:${project.nightautoconfig_version}") // You'll need to implement Cloth Config API here. } ```
gradle.properties
``` nightautoconfig_version={latest} ```

You should replace {latest} with the latest tag name of Night Auto Config.

Reference as Dependency

Don't forget to reference Night Auto Config as dependency in your mod's metadata.

fabric.mod.json / quilt.mod.json
{
    "depends": {
        "nightautoconfig": "*"
    }
}

Usage

The serializer implementation is at band.kessokuteatime.nightautoconfig.config.NightConfigSerializer.

Here's a brief example:

MyConfig.java

// Use annotations provided by Night Auto Config to define serializer providers and deserializer providers at runtime!
@SerializerProvider(MyClassSerializerProvider.class)
@Config(name = "my_config")
public class MyConfig implements ConfigData {
    // Something...

    private transient final Supplier<String> someStringProvider = () -> "default";

    // All Night Config annotations are available
    @SerdeDefault(provider = "someStringProvider")
    public String someString = someStringProvider.get();

    // Night Auto Config provides some interfaces for convenience implementations
    // For example, `UnifiedSerializerProvider<T, R>` satisfies both `ValueSerializer<T, R>` and `ValueSerializerProvider<T, R>`
    public static class MyClassSerializerProvider implements UnifiedSerializerProvider<MyClass, String> {
        // ...
    }

    // A custom serializer provider for `MyClass` is already specified at type definition
    public MyClass someInstance = new MyClass();
}

MyMod.java

public class MyMod implements ModInitializer {
    @Override
    public void onInitialize() {
        // Don't remember to register into Auto Config at initialize
        AutoConfig.register(NightExampleConfig.class, ConfigType.DEFAULT_COMMENTED::fileWatcherSerializer);
    }
}

For runtime examples, checkout this package.

Please annotate your fields with com.electronwill.nightconfig.core.serde.annotations.SerdeDefault for basic compatibilities! Otherwise, serialization exceptions may happen casually.

Участники проекта
KrLite

KrLite

Разработчик