夜间自动配置

夜间自动配置

序列化一切!Auto Config的Night Config集成。

基础库

夜间自动配置

一切皆可序列化!夜间自动配置 是 夜间配置 与 自动配置(现内置于布匹配置中)。 的集成。

实现方式

夜间自动配置 引入了一个 NightConfigSerializer 以满足自动配置对序列化器实现的需求。您可以从夜间配置提供的所有可用配置格式中选择,并像使用其他常见序列化器一样使用它,甚至可以与 PartitioningSerializer 配合使用。

添加到您的项目

建议使用 JitPack 将夜间自动配置实现到您的项目中。

Groovy
build.gradle
repositories {
	maven { url "https://jitpack.io" }
}

dependencies {
	modApi "com.github.KessokuTeaTime:Night-Auto-Config:${project.nightautoconfig_version}"
	// 您需要在此处实现布匹配置 API。
}
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}")
	// 您需要在此处实现布匹配置 API。
}
gradle.properties
nightautoconfig_version={latest}

您应该将 {latest} 替换为夜间自动配置最新的 标签名称。

引用为依赖

不要忘记在您的模组元数据中将夜间自动配置引用为依赖。

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

使用方法

序列化器实现位于 band.kessokuteatime.nightautoconfig.config.NightConfigSerializer。

以下是一个简短的示例:

MyConfig.java

// 使用夜间自动配置提供的注解在运行时定义序列化器提供者和反序列化器提供者!
@SerializerProvider(MyClassSerializerProvider.class)
@Config(name = "my_config")
public class MyConfig implements ConfigData {
    // 某些内容...
    
    private transient final Supplier<String> someStringProvider = () -> "default";
    
    // 所有夜间配置注解均可用
    @SerdeDefault(provider = "someStringProvider")
    public String someString = someStringProvider.get();
    
    // 夜间自动配置提供了一些接口以方便实现
    // 例如,`UnifiedSerializerProvider<T, R>` 同时满足 `ValueSerializer<T, R>` 和 `ValueSerializerProvider<T, R>` 的要求
    public static class MyClassSerializerProvider implements UnifiedSerializerProvider<MyClass, String> {
        // ...
    }
    
    // 在类型定义时已为 `MyClass` 指定了自定义序列化器提供者
    public MyClass someInstance = new MyClass();
}

MyMod.java

public class MyMod implements ModInitializer {
    @Override
    public void onInitialize() {
        // 记得在初始化时注册到自动配置中
        AutoConfig.register(NightExampleConfig.class, ConfigType.DEFAULT_COMMENTED::fileWatcherSerializer);
    }
}

如需运行时示例,请查看 此包。

请使用 com.electronwill.nightconfig.core.serde.annotations.SerdeDefault 注解您的字段以确保基本兼容性!否则,可能会随意发生序列化异常。