
MAC(模组列表与配置)
Hytale的模组列表和配置界面。
查看大图
MAC (模组列表与配置)
MAC 为游戏添加了一个包含丰富元数据的模组列表,以及一个配置编辑器,其他插件可以通过简单的注册调用接入。它能够发现模组、显示状态/图标,并将您的插件设置展示为可编辑的字段。
功能
- 模组列表,包含名称、版本、作者、描述、网站、启用/禁用状态、资源包标签
- 分组列表排序 + 过滤器 + 搜索
- 配置编辑器,支持实时重载(布尔值、数字、滑块、枚举、颜色、文件、字符串、数组、对象)
- 可查看未注册的配置(以供编辑)
- 配置部分分隔符(标题/副标题)
- 配置字段的内联提示气泡
- 管理页面,用于访问控制、只读模式和模组白名单
- 每个模组的专属图标,以及 Hytale/Hypixel 和缺失资源的回退图标
- 权限节点:
lyivx.maclyivx.mac.configlyivx.mac.admin
使用方法
- 打开 MAC 界面:
/mac - 直接打开模组配置:
/mac config LYIVX:MAC/mac config LYIVX_OreGenerator
- 打开管理界面:
/mac admin /mac的别名:/modlist、/mods
安装
将 MAC 模组放入您的 mods 文件夹。它包含一个资源包,并会自动加载。
给开发者:为你的插件添加配置
MAC 读取一个在代码中注册的配置模式,并自动生成磁盘上的配置文件。默认值来自构建器链(无需资源配置文件)。
1) 注册配置模式
在插件设置中使用 PluginConfig.register(...):
PluginConfig<MySettings> config = PluginConfig.register(
this.getLogger(),
new PluginIdentifier(this.getManifest()),
MySettings.class,
MySettings::new,
builder -> builder
.add.booleanField("启用功能").defaultsTo(true)
.add.slider("最大数量", 1, 100, 1).defaultsTo(50)
.add.enumField("模式", "安全", "快速", "狂野").defaultsTo("安全")
.add.color("强调色").defaultsTo("#1aa3a3")
.add.file("图标文件", "Common/UI/Custom", "png").defaultsTo("")
.add.stringField("底部注释").defaultsTo("")
);
配置文件写入到:config/<分组>/<名称>_Config.json
UI 中保留模式的顺序。
配置部分分隔符
您可以添加带标题的部分来对字段进行分组:
builder
.add.section("游戏玩法")
.add.booleanField("启用功能").defaultsTo(true)
.add.section("显示")
.add.color("强调色").defaultsTo("#1aa3a3");
配置提示
为最后添加的字段附加提示:
builder
.add.booleanField("启用功能")
.tooltip("开启或关闭该特性。")
.defaultsTo(true);
对象和数组字段
您可以将字段嵌套为对象,并添加带有添加/删除控件的数组:
import net.lyivx.mac.config.ConfigField;builder
.add.objectField("生物设置", mob -> mob
.add.booleanField("启用").defaultsTo(true)
.add.numberField("生成速率").defaultsTo(1.5)
)
.add.arrayField("白名单", ConfigField.stringField("名称"))
.add.arrayField("等级", ConfigField.numberField("等级"));
数组被渲染为带有 + 添加和 - 删除项的子条目。对象将其字段渲染为标题下的嵌套子条目。
设置默认值
您的设置类可以是纯字段,无需初始化器。默认值通过模式构建器中的 .defaultsTo(...) 定义。
图标
MAC 在以下路径查找每个模组的图标:UI/Custom/<分组>_<名称>.png 这与 Better Modlist 的图标路径兼容:https://www.curseforge.com/hytale/mods/better-modlist 因此开发者只需一个图标位置。
回退方案:
- Hytale/Hypixel 分组 ->
Icons/ItemCategories/Hypixel.png - 缺失图标 ->
Icons/ItemCategories/Natural.png
模组列表设置 (MAC 自身的配置)
MAC 配置控制:
- 显示 Hytale
- 仅显示有描述的
- 仅显示配置
- 最大可见条目数
- 标签颜色(版本/启用/禁用/资源)
此文件位于:config/LYIVX/MAC_Config.json
管理设置 (MAC 管理配置)
管理配置控制:
- 启用白名单模式(限制 /mac 的使用)
- 非白名单用户的只读访问权限
- 只读用户的模组允许列表
此文件位于:config/LYIVX/MAC_Admin.json
权限
MAC 命令权限节点:
lyivx.mac.command.maclyivx.mac.command.mac.configlyivx.mac.command.mac.admin
备注
- 配置 UI 仅编辑注册模式中存在的键值。
- 未知键值会在内存中保留,但在检测到时从磁盘上的文件中移除。
重要提示
- 如果您使用 MAC 的配置系统,您的模组依赖于 MAC 已被安装。这意味着其他模组列表/配置浏览器将无法为您的模组工作,除非 MAC 存在。未来的更新旨在支持无需将 MAC 作为硬依赖即可工作的配置。完整示例
import com.hypixel.hytale.common.plugin.PluginIdentifier;
import com.hypixel.hytale.logger.HytaleLogger;
import net.lyivx.mac.config.ConfigBuilder;
import net.lyivx.mac.config.ConfigField;
import net.lyivx.mac.config.PluginConfig;public final class ExampleConfig {
public static class Settings {
public String title;
public boolean enableFeature;
public int maxCount;
public String mode;
public String accentColor;
public String iconFile;
public String footerNote;
public Nested settings;
public java.util.List<String> items;
public java.util.List<Item> objectArray;
}
public static class Nested {
public boolean flag;
public int level;
}
public static class Item {
public String name;
public int count;
}
public static PluginConfig<Settings> register(HytaleLogger logger, PluginIdentifier identifier) {
return PluginConfig.register(
logger,
identifier,
Settings.class,
Settings::new,
builder -> builder
.add.section("基础")
.add.stringField("标题")
.tooltip("字符串字段的示例提示。")
.defaultsTo("示例")
.add.booleanField("启用功能").defaultsTo(true)
.add.numberField("数量").defaultsTo(1.5)
.add.section("显示")
.add.slider("最大数量", 1, 100, 1).defaultsTo(50)
.add.enumField("模式", "安全", "快速", "狂野").defaultsTo("安全")
.add.section("样式")
.add.color("强调色").defaultsTo("#1aa3a3")
.add.file("图标文件", "Common/UI/Custom", "png").defaultsTo("")
.add.stringField("底部注释").defaultsTo("")
.add.section("嵌套")
.add.objectField("设置", nested -> nested
.add.booleanField("标志").defaultsTo(true)
.add.numberField("等级").defaultsTo(3)
)
.add.arrayField("物品", ConfigField.stringField("项目"))
.add.section("数组")
.add.arrayField("对象数组",ConfigField.objectField("项目",
new ConfigBuilder()
.add.stringField("名称").defaultsTo("物品")
.add.numberField("数量").defaultsTo(1)
.build()
)
)
);
}
}
正在加载版本记录…


正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。