diff --git a/README.md b/README.md index 705b999..d8f2b95 100644 --- a/README.md +++ b/README.md @@ -1,114 +1,3 @@ ###

[`→` JitPack](https://jitpack.io/#KessokuTeaTime/Night-Auto-Config) [`→` CurseForge](https://www.curseforge.com/minecraft/mc-mods/night-auto-config) [`→` Modrinth](https://modrinth.com/mod/night-auto-config)

-# Night Auto Config - -Serialize everything! **Night Auto Config** is a **[Night Config](https://github.com/TheElectronWill/Night-Config)** integration for **[Auto Config (now embedded in Cloth Config).](https://modrinth.com/mod/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`. - -It is recommended to use **[JitPack](https://jitpack.io/#KessokuTeaTime/Night-Auto-Config)** to implement **Night Auto Config** into your project. - -
- -Groovy - -
build.gradle
- -```groovy -repositories { - maven { url "https://jitpack.io" } -} - -dependencies { - modImplementation include("com.github.KessokuTeaTime:Night-Auto-Config:$project.nightautoconfig_version") -} -``` - -
gradle.properties
- -``` -nightautoconfig_version={latest} -``` - -
- -
- -Kotlin DSL - -
build.gradle.kts
- -```kotlin -repositories { - maven { url = uri("https://jitpack.io") } -} - -dependencies { - modImplementation("com.github.KessokuTeaTime:Night-Auto-Config:$project.nightautoconfig_version") - include("com.github.KessokuTeaTime:Night-Auto-Config:$project.nightautoconfig_version") -} -``` - -
gradle.properties
- -``` -nightautoconfig_version={latest} -``` - -
- -> [!NOTE] -> You should replace `{latest}` with the latest [`tag name`](https://github.com/KessokuTeaTime/Night-Auto-Config/tags) of **Night Auto Config.** - -## Usage - -The serializer implementation is at [`band.kessokuteatime.nightautoconfig.config.NightConfigSerializer`](src/main/java/band/kessokuteatime/nightautoconfig/config/NightConfigSerializer.java). - -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 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` satisfies both `ValueSerializer` and `ValueSerializerProvider` - public static class MyClassSerializerProvider implements UnifiedSerializerProvider { - // ... - } - - // 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.](/src/main/java/band/kessokuteatime/nightautoconfig/example/config) - -> [!IMPORTANT] -> Please annotate your fields with [`com.electronwill.nightconfig.core.serde.annotations.SerdeDefault`](https://github.com/TheElectronWill/night-config/blob/master/core/src/main/java/com/electronwill/nightconfig/core/serde/annotations/SerdeDefault.java) for basic compatibilities! Otherwise, serialization exceptions may happen casually. - -## License - -This repository is licensed under the **[GNU General Public License v3.](LICENSE)** +### Night Auto Config for Fabric `1.20.x`