设置管理器库

设置管理器库

基于YACL和Mod Menu的简单易配置的配置库,用于创建简单或复杂的配置菜单

基础库

一个简单的设置管理器库,它实现了 YACL,以便轻松为 Mod Menu 生成配置界面。

如果你想使用这个模组为你自己的模组生成配置菜单,我建议联系我,因为我可能不会随着模组的更新而保持此页面的更新。

注意:此模组本身不执行任何操作。它是供其他模组使用的库。

特性:

  • 简单快速的设置
  • 易于实现
  • 轻松访问设置
  • 内置配置文件生成,用于在客户端重启之间保存设置
  • 内置色度管理器,用于跨文件同步色度功能
  • 支持几乎所有 YACL 字段

设置:

将模组添加为依赖项:

在 build.gradle 中

repositories {
    maven { url = "https://api.modrinth.com/maven" }
    maven {
        name = "Terraformers"
        url = "https://maven.terraformersmc.com/"}
    maven {
        name 'Xander Maven'
        url 'https://maven.isxander.dev/releases'}
}

dependencies {
    modImplementation("maven.modrinth:settingsmanagerlib:${project.modmenu_version}")
    modImplementation("com.terraformersmc:modmenu:${project.modmenu_version}")
    modImplementation "dev.isxander:yet-another-config-lib:${project.yacl_version}"
}

在 gradle.properties 中

settingsmanagerlib_version=最新版本号 (例如 1.0.0+1.21.11)
modmenu_version=最新版本号 (例如 15.0.0)
yacl_version=最新版本号 (例如 3.7.1+1.21.6-fabric)

在 fabric.mod.json 中

"entrypoints": {
"modmenu": [ "com.example.mod.ModMenuAPI" ]
}

然后创建一个新类 ModMenuAPI

public class ModMenuAPI implements ModMenuApi {
	 @Override
	 public ConfigScreenFactory<?> getModConfigScreenFactory() {
			return parentScreen -> ExampleModClient.settings.getConfig(parentScreen);
	 }
}

设置模组:

在 ExampleModClient 中

public static Settings settings;

@Override
public void onInitializeClient() {
	 settings = new Settings().setup("Example Mod", "examplemod");
	 settings.loadFromFile();
}

添加设置:

注意:支持字符串、布尔值、整数、浮点数、颜色和自定义枚举。

标准字符串/整数/浮点数

在 ExampleModClient 中

@Override
public void onInitializeClient() {
	 settings.add(String settingId, String page, String group, String/int/float defaultValue, String settingName, String description)

	 settings.add("guiName", "视觉设置", "覆盖层", "默认 GUI 名称", "GUI 缩放", "当你点击该选项时,此文本将显示为工具提示。");
}
整数/浮点数滑块

在 ExampleModClient 中

@Override
public void onInitializeClient() {
	 settings.addSlider(String settingId, String page, String group, int/float defaultValue, String settingName, String description, int/float min, int/float max, int/float step)

	 settings.add("guiScale", "视觉设置", "覆盖层", 1.0f, "GUI 缩放", "当你点击该选项时,此文本将显示为工具提示。", 0.5f, 5.0f, 0.1f);
}
布尔值

在 ExampleModClient 中

@Override
public void onInitializeClient() {
	 settings.addSlider(String settingId, String page, String group, boolean defaultValue, String settingName, String description, BooleanFormat valueFormat)

	 settings.add("doRenderGui", "视觉设置", "覆盖层", true, "渲染 GUI", "当你点击该选项时,此文本将显示为工具提示。", BooleanFormat.ONOFF);
}

BooleanFormat - 布尔值的显示格式:

  • BooleanFormat.ONOFF - "开" 或 "关"
  • BooleanFormat.TRUEFALSE - "真" 或 "假"
  • BooleanFormat.YESNO - "是" 或 "否"
  • BooleanFormat.TICKBOX - 一个可勾选或取消勾选的复选框
颜色

在 ExampleModClient 中

@Override
public void onInitializeClient() {
	 settings.addColor(String settingId, String page, String group, int defaultValue, String settingName, String description)

	 settings.addColor("guiBackgroundColor", "视觉设置", "覆盖层", net.minecraft.util.Colors.GRAY, "GUI 背景颜色", "当你点击该选项时,此文本将显示为工具提示。");
}
自定义枚举 文档即将推出。如需了解详情,请联系我。

请注意,设置的值会在客户端重启后自动保留,但是,你仍然需要将它们添加到配置菜单中,这可以通过在 onInitializeClient() 中创建配置菜单来完成。

访问值:

获取设置的值:

要获取设置的值,请使用以下方法,其中 typeInstance 是一个与你要获取的设置值类型相同的值。请参考下面的示例进行实现。请注意,settings.get() 的第二个参数无关紧要;只有它的类型需要与返回类型相同。

ExampleModClient.settings.get("settingId", typeInstance);

ExampleModClient.settings.get("doRenderGui", true); //返回布尔值
ExampleModClient.settings.get("guiBackgroundColor", net.minecraft.util.Colors.GRAY); //返回颜色
ExampleModClient.settings.get("guiScale", 1.0f); //返回浮点数
ExampleModClient.settings.get("guiName", "默认 GUI 名称"); //返回字符串
ExampleModClient.settings.get("guiSliderMin", 1); //返回整数

设置值:

默认情况下,设置的值被设置为它的默认值,除非用户更改它。要手动设置设置的值,请使用以下方法。

ExampleModClient.settings.set("settingId", newValue);

ExampleModClient.settings.set("doRenderGui", false); //布尔值示例

页面/分组:

设置按页面和分组进行组织。请参考下图示例。页面是顶部的标签栏,你一次只能打开一个页面。分组是可折叠的设置集合。你可以在每个页面上拥有无限数量的分组和设置。每个设置必须有一个页面,但不要求必须有分组。要创建如下图中所示的没有分组的设置,请将分组设置为 "" 或 "none"。 页面/分组/设置示例

依赖项:

此模组需要其他多个模组才能正常运行。

  • YACL
  • Mod Menu
  • Fabric API