棱镜配置

棱镜配置

一个轻量级的 Java 配置库,让你能够优雅、灵活地编写配置。理论上独立于任何加载器。

基础库

Icon

java8 gradle Release

一个轻量级的 Java 配置库,让你能够优雅而灵活地编写配置。

快速开始

对于用户而言,Prism Config 可以原生地作为 Fabric 模组安装,因为它包含了一个 fabric.mod.json,但它主要用于 JiJ,而且该模组本身实际上只是一个普通的 Java 库,因此理论上它可以在任何加载器、任何 Minecraft 版本上运行。不过,对特定模组(如 Mod Menu)的支持已在计划中。

对于开发者而言,要将 Prism Config 添加到你的项目中,你需要在 build.gradle(.kts) 中添加以下内容:

Groovy DSL:

repositories {
    // ...
    maven {
        name = "Nova Committee - Release"
        url = "https://maven.nova-committee.cn/releases/"
    }
    maven {
        name = "Nova Committee - Snapshot"
        url = "https://maven.nova-committee.cn/snapshots/"
    }
}

dependencies {
    // ...
    implementation "io.github.prismwork:prismconfig:0.2.0:all"
    // 或者,如果你的项目中已包含所需库(Gson、Jankson……),可以使用 slim jar
    // implementation "io.github.prismwork:prismconfig:0.2.0"
}

Kotlin DSL:

repositories {
    // ...
    maven {
        name = "Nova Committee - Release"
        url = uri("https://maven.nova-committee.cn/releases/")
    }
    maven {
        name = "Nova Committee - Snapshot"
        url = uri("https://maven.nova-committee.cn/snapshots/")
    }
}

dependencies {
    // ...
    implementation("io.github.prismwork:prismconfig:0.2.0:all")
    // 或者,如果你的项目中已包含所需库(Gson、Jankson……),可以使用 slim jar
    // implementation("io.github.prismwork:prismconfig:0.2.0")
}

Prism Config 默认提供对 JSON(Gson)、JSON5(Jankson)和 TOML 0.4.0(toml4j)的序列化器和反序列化器。

要将字符串解析为配置对象,你可以这样做:

String content;
MyConfig config = PrismConfig.getInstance().serialize(
        MyConfig.class,
        content,
        DefaultSerializers.getInstance().json5(MyConfig.class) // 我们假设你的配置是用 JSON5 编写的
);

要将配置对象解析为字符串,你可以这样做:

MyConfig content;
String config = PrismConfig.getInstance().deserialize(
        MyConfig.class,
        content,
        DefaultDeserializers.getInstance().json5(MyConfig.class) // 我们假设你的配置是用 JSON5 编写的
);

你也可以将其写入文件:

MyConfig content;
File configFile;
PrismConfig.getInstance().deserializeAndWrite(
        MyConfig.class,
        content,
        DefaultDeserializers.getInstance().json5(MyConfig.class), // 我们假设你的配置是用 JSON5 编写的
        configFile
);

要编写你自己的序列化器/反序列化器,你可以使用以下代码(我们以序列化为例):

String content;
PrismConfig.getInstance().serialize(
        MyConfig.class,
        content,
        (string) -> {
            // 在此处进行你自己的解析
        }
);

使用的库

  • Jankson,作者 falkreon,MIT 许可证。
  • Gson,作者 Google,Apache-2.0 许可证。
  • toml4j,作者 Moandji Ezana,MIT 许可证。