Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/kessokuteatime/night-auto-config
[Minecraft Mod] [Library] Serialize everything! Night Config integration for Auto Config.
https://github.com/kessokuteatime/night-auto-config
config fabricmc minecraft minecraft-fabric serde
Last synced: 3 months ago
JSON representation
[Minecraft Mod] [Library] Serialize everything! Night Config integration for Auto Config.
- Host: GitHub
- URL: https://github.com/kessokuteatime/night-auto-config
- Owner: KessokuTeaTime
- License: gpl-3.0
- Created: 2024-05-01T04:06:41.000Z (8 months ago)
- Default Branch: fabric/1.21
- Last Pushed: 2024-07-25T01:54:51.000Z (6 months ago)
- Last Synced: 2024-10-14T06:22:07.043Z (3 months ago)
- Topics: config, fabricmc, minecraft, minecraft-fabric, serde
- Language: Java
- Homepage: https://modrinth.com/mod/night-auto-config
- Size: 450 KB
- Stars: 3
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
###
[`→` 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`.
### Add to Your Project
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 {
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}
```> [!NOTE]
> You should replace `{latest}` with the latest [`tag name`](https://github.com/KessokuTeaTime/Night-Auto-Config/tags) 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
```json
{
"depends": {
"nightautoconfig": "*"
}
}
```## 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)**