Night Auto Config

Serialize everything! Night Config integration for Auto Config.

187,43k

Night Auto Config

Night Auto Config

Serialize everything! Night Auto Config is a Night Auto Config integration for %%MD1%%

Implementation

Night Config, introduces a `NightConfigSerializer` to satisfy Night 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 Night Auto Config to implement Night Auto Config into your project.

Groovy

<h6 align="right">build.gradle</h6>

```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. } ```

<h6 align="right">gradle.properties</h6>

``` nightautoconfig_version={latest} ```

Kotlin DSL

<h6 align="right">build.gradle.kts</h6>

```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. } ```

<h6 align="right">gradle.properties</h6>

``` nightautoconfig_version={latest} ```

> You should replace `{latest}` with the latest Night Auto Config. of Night Auto Config.

Reference as Dependency

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

<h6 align="right">fabric.mod.json / quilt.mod.json</h6>

```json { "depends": { "nightautoconfig": "*" } } ```

Usage

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

Here's a brief example:

`MyConfig.java` ```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` ```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.

ADS