What are you searching for?

Night Auto Config

Night Auto Config

Serialize everything! Night Config integration for Auto Config.

download 173.9K Downloads · favorite 14 Followers · Updated 2 months ago
Fabric Library Neoforge Quilt 1.20 1.20.1 1.20.2 1.20.3 1.20.4 +7 more

Versions

inventory_2
Night Auto Config 1.1.0-alpha.4 for NeoForge 1.21+

1.1.0-alpha.4-neoforge.1.21.1 · 2 months ago · 444.18 KB

Neoforge 1.21
inventory_2
Night Auto Config 1.0.6 for Fabric 1.21+

1.0.6-fabric.1.21 · 1 year ago · 443.87 KB

Release download
Fabric Quilt 1.21 1.21.1 1.21.2
inventory_2
Night Auto Config 1.0.6 for Fabric 1.20.x

1.0.6-fabric.1.20 · 1 year ago · 443.86 KB

Release download
Fabric Quilt 1.20 1.20.1 1.20.2
inventory_2
Night Auto Config 1.0.4 for Fabric 1.20.x

1.0.4-fabric1.20 · 1 year ago · 443.86 KB

Release download
Fabric Quilt 1.20 1.20.1 1.20.2
inventory_2
Night Auto Config 1.0.4 for Fabric 1.21+

1.0.4-fabric1.21 · 1 year ago · 443.87 KB

Release download
Fabric Quilt 1.21

About

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

open_in_new View on Modrinth
Categories
Compatibility
Client: Optional Server: Optional
gavel GPL-3.0-only

Conversation

What are your thoughts?

Related projects

Library
Fabric API
Fabric API

by modmuss50

Lightweight and modular API providing common hooks and intercompatibility measures utilized by mods using the Fabric toolchain.

download 128.4M
favorite 27,401
Library
Cloth Config API
Cloth Config API

by shedaniel

Configuration Library for Minecraft Mods

download 94.4M
favorite 13,670
Library Management Utility
YetAnotherConfigLib (YACL)
YetAnotherConfigLib (YACL)

by isxander

A builder-based configuration library for Minecraft!

download 66.1M
favorite 7,607
Library
Architectury API
Architectury API

by shedaniel

An intermediary api aimed to ease developing multiplatform mods.

download 61.0M
favorite 6,652
lock Cookie consent

SkinMC uses cookies to provide functionality and features.