
DACL
蠢货配置库是一个用于我的模组的配置库。
DumbassConfigLib 是一个用于我的模组的配置库。如果你是一名模组开发者,你可以轻松地将这个库集成到你的模组中。
Java API
首先,在你的 build.gradle 文件中引入这个库:
repositories {
...
maven {
name = "KaseToatz"
url = "https://maven.kasetoatz.com/"
}
}
dependencies {
modCompileOnly "com.kasetoatz:dumbassconfiglib:${project.dacl_version}"
}
然后,将 dacl_version 添加到你的 gradle.properties 文件中,你可以在 版本页面 查看版本号。
创建选项
首先,创建你的模组入口点,确保它实现了 ModInitializer。然后,你可以将你的选项作为 public static 字段添加到这个类中,以便之后访问它们。你可以像这样创建选项:
public static final BoolOption TEST_BOOL_OPT = new BoolOption(Component.literal("测试布尔选项"), "test_bool_opt", false);
public static final IntOption TEST_INT_OPT = new IntOption(Component.literal("测试整数选项"), "test_int_opt", 1);
public static final FloatOption TEST_FLOAT_OPT = new FloatOption(Component.literal("测试浮点选项"), "test_float_opt", 1.F);
第一个参数是配置界面中显示的文本,第二个参数是选项的唯一标识符,第三个参数是默认值。
然后,将这个类添加到你的 fabric.mod.json 中,以便它在启动时加载:
"entrypoints": {
"main": [
"com.kasetoatz.mymod.MyMod"
]
}
如果你的模组仅限客户端或服务器端,你可以将 main 替换为 client 或 server。
验证器
对于带有输入字段的选项,你可以添加第四个参数,类型为 AbstractValidator,以增加对选项值的限制。要创建一个必须在 1 到 100 之间的整数选项,我们可以这样做:
public static final IntOption CLAMPED_INT_OPT = new IntOption(Component.literal("受限整数选项"), "clamp_int_opt", 50, new RangeValidator<>(1, 100));
你也可以在 RangeValidator 中将上界或下界设为 null,以移除该限制。
构建配置
创建完选项后,就可以开始构建你的配置了。你可以使用 DumbassConfig 的静态 builder 方法,如下所示:
public static final DumbassConfig CONFIG = DumbassConfig.builder(Component.literal("测试界面标题"), "filename.json")
.withOption(TEST_BOOL_OPT)
.withOption(TEST_INT_OPT)
.withOption(TEST_FLOAT_OPT)
.build()
构建配置后,当配置被修改时,相应的 AbstractOption 的值会随之改变,因此你可以随时通过以下方式访问它们:
bool enabled = TEST_BOOL_OPT.getValue();
子选项
你还可以添加子选项,它们实际上是一个包含自身选项的全新界面。要创建子选项,我们可以使用 SubOption 类的 builder 方法。我们将使用 CLAMPED_INT_OPT 作为子选项之一。
public static final SubOption TEST_SUB_OPT = SubOption.builder(Component.literal("子界面标题"), "sub_opt")
.withOption(CLAMPED_INT_OPT)
.build();
现在,我们也可以将这个选项添加到配置构建器中。我们可以任意深度地嵌套这些子选项。
Modmenu 支持
要将我们新创建的配置界面添加到 modmenu,首先必须将其添加为模组的依赖项,你可以阅读 这里 了解如何操作。
现在,我们为模组菜单集成创建一个新类,实现 ModMenuApi 并重写 getModConfigScreenFactory 以返回我们的配置界面。
public class ModMenuIntegration implements ModMenuApi
{
private final DumbassConfigScreen screen = new DumbassConfigScreen(CONFIG);
@Override
public ConfigScreenFactory<?> getModConfigScreenFactory()
{
return screen::get;
}
}
现在,我们可以修改 fabric.mod.json,将我们的新类设置为 modmenu 入口点:
"entrypoints": {
"main": [
"com.kasetoatz.mymod.MyMod"
],
"modmenu": [
"com.kasetoatz.mymod.ModMenuIntegration"
]
}
完整示例
public class MyMod implements ModInitializer
{
public static final BoolOption TEST_BOOL_OPT = new BoolOption(Component.literal("测试布尔选项"), "test_bool_opt", false);
public static final IntOption TEST_INT_OPT = new IntOption(Component.literal("测试整数选项"), "test_int_opt", 1);
public static final FloatOption TEST_FLOAT_OPT = new FloatOption(Component.literal("测试浮点选项"), "test_float_opt", 1.F);
public static final IntOption CLAMPED_INT_OPT = new IntOption(Component.literal("受限整数选项"), "clamp_int_opt", 50, new RangeValidator<>(1, 100));
public static final SubOption TEST_SUB_OPT = SubOption.builder(Component.literal("子界面标题"), "sub_opt")
.withOption(CLAMPED_INT_OPT)
.build();
public static final DumbassConfig CONFIG = DumbassConfig.builder(Component.literal("测试界面标题"), "filename.json")
.withOption(TEST_BOOL_OPT)
.withOption(TEST_INT_OPT)
.withOption(TEST_FLOAT_OPT)
.withOption(TEST_SUB_OPT)
.build()
@Override
public void onInitialize()
{
...
}
}
public class ModMenuIntegration implements ModMenuApi
{
private final DumbassConfigScreen screen = new DumbassConfigScreen(CONFIG);
@Override
public ConfigScreenFactory<?> getModConfigScreenFactory()
{
return screen::get;
}
}
想要找一个好玩的地方玩 Minecraft 并试用我的一些模组吗?快来 El Basurero SMP 服务器一起玩吧!
- IP 地址:
play.ebsmp.com - 推荐版本: 26.1.2(其他版本也可用!)
- 基岩版: 支持
- 额外福利: 可以在游戏中实时测试我的大部分服务端模组!
更多信息请查看 文档!
正在加载版本记录…
正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。