YAML Config

YAML Config

基于YAML格式的带图形界面的配置库。

基础库

Bisect Hosting 推广横幅

Ko-fi 推广横幅


YAML Config:一个 Minecraft 配置模组

概述

YAML Config 是一个功能强大的 Minecraft 配置模组,允许模组开发者使用 YAML 文件格式创建和管理配置设置。它提供了用户友好的 GUI、广泛的数据类型支持,以及用于客户端-服务器同步的强大网络功能。

特性

  • YAML 文件格式: YAML Config 采用以可读性和易用性著称的 YAML 文件格式。

  • GUI 界面: 精心设计的 GUI 让玩家能够轻松浏览和编辑他们的配置设置。

  • 广泛的数据类型支持: 该模组支持多种数据类型,包括:

    • 原始类型: boolean、int、float、double、String、ResourceLocation、Registry
    • 集合: List、Map
    • 日期和时间: LocalDateTime
  • 服务器-客户端同步: 服务器上对配置所做的更改会自动同步到客户端,确保游戏体验的一致性。

  • 整合包支持: 该模组旨在与现有整合包无缝协作,提供一个灵活且可扩展的配置系统。

  • 验证与错误处理: 该模组包含强大的验证和错误处理功能,确保配置满足预期要求。

安装与使用

安装

  1. 下载模组: 从模组的官方网站、CurseForge 或 Modrinth 下载最新版的 YAML Config。
  2. 放置模组文件: 将下载的 JAR 文件移动到你的 Minecraft 目录下的“mods”文件夹中。
  3. 启动 Minecraft: 开始游戏并加入一个世界。

使用

  1. 打开配置界面: 在键盘上按“F12”打开配置界面。

  2. 导航至配置: 配置界面会显示可用配置的列表。选择你想要修改配置的模组。

  3. 编辑配置条目: 配置界面显示可用的设置。每个条目包括:

    • 标题: 设置的名称。
    • 输入字段: 用于编辑值的字段。
    • 重置按钮: 用于将值重置为默认值的按钮。
  4. 保存更改: 点击“保存更改”按钮以保存你的修改。该模组会自动将更改保存到配置文件中,并在适用的情况下与服务器上的其他玩家同步。

开发

创建配置

1. 定义一个配置类:

  • 在你的模组代码库中创建一个新的 Java 类,代表你的模组的配置。
public class MyModConfig {

    public static IConfig config;

    public static IConfigEntry<Boolean> debug;

    public static void init() {
        ConfigBuilder builder = new ConfigBuilder(MyMod.MOD_ID, "mymod-config", ConfigExtension.YAML, ConfigType.CLIENT);
    }
}

2. 定义配置条目:

  • 使用 ConfigBuilder 类为你的配置定义设置。
  • 使用 define* 方法为每个条目选择合适的数据类型。
// 定义布尔条目的示例:
debug = builder.defineBoolean("debug", false); 

// 定义带范围的整数条目示例:
intEntry = builder.defineInteger("intEntry", 10, 0, 100); // 最小 0,最大 100

// 定义带模式的字符串条目示例:
stringEntry = builder.defineString("stringEntry", "test", "test\\d+"); 

// 定义注册表条目的示例:
registryEntry = builder.defineRegistry("registryEntry", Blocks.GRASS_BLOCK, BuiltInRegistries.BLOCK);

// 定义列表的示例:
stringListEntry = builder.defineStringList("stringListEntry", List.of("test1", "test2", "test3"), 3, 10); // 最小 3,最大 10

// 定义映射的示例:
integerMapEntry = builder.defineIntegerMap("integerMapEntry", Map.of("test1", 1, "test2", 2, "test3", 3), 3, 10); // 最小 3,最大 10

3. 构建配置:

  • 在 ConfigBuilder 上调用 build() 方法来创建你的配置。
  • 将配置存储在一个静态字段中,以便在你的模组代码中轻松访问。
public MyModConfig() {
    ConfigBuilder builder = new ConfigBuilder("mymod", "mymod-config", ConfigExtension.YAML, ConfigType.CLIENT);
    // ... 定义配置条目 
    config = builder.build(); 
}

4. 在你的代码中访问配置值:

  • 使用 get() 方法检索配置条目的当前值。
  • 使用 set() 方法修改配置条目的值。
// 示例:
boolean debugEnabled = MyModConfig.debug.get(); // 检索“debug”设置的当前值

if (debugEnabled) {
    // 执行与调试相关的操作 
}

MyModConfig.intEntry.set(25); // 将“intEntry”的值设置为 25

配置类型

  • ConfigType.CLIENT: 客户端配置特定于已安装该模组的客户端。它们不会与服务器上的其他玩家共享。
  • ConfigType.SERVER: 服务器端配置特定于专用服务器。它们不会在单人世界中使用,也不会同步给服务器上的玩家。
  • ConfigType.COMMON: 通用配置在客户端和服务器之间共享。它们可以通过直接编辑配置文件并重启服务器,或使用游戏内 GUI 编辑值并保存更改来在服务器上进行修改。

使用自定义数据类型

  • 使用 IConfigEntryType 接口向 YAML Config 模组注册自定义数据类型。
  • 实现一个自定义序列化器,用于处理你的自定义数据类型的序列化和反序列化。

整合包配置

  • 如果你正在创建整合包,你可以使用 YAML Config 来定义整合包的配置设置。
  • 将整合包的配置文件放在整合包目录下的“config”文件夹中。

示例

// 示例:基本的客户端配置

public class MyModConfig {

    public static IConfig config;

    public static IConfigEntry<Boolean> debug;
    public static IConfigEntry<Integer> testInt;

    public static void init() {
        ConfigBuilder builder = new ConfigBuilder("mymod", "mymod-config", ConfigExtension.YAML, ConfigType.CLIENT);

        debug = builder.defineBoolean("debug", false) // 默认为 false。
                .withComments("模组是否启用调试模式。");

        testInt = builder.defineInteger("testInt", 10, 0, 100); // 默认为 10,最小 0,最大 100。

        config = builder.build();
    }
}