配置(Configuration)
基本信息
| 属性 | 值 |
|---|---|
| 处理类 | com.gtnewhorizon.structurelib.ConfigurationHandler(单例枚举 INSTANCE) |
| 配置文件 | FML 建议路径下的 structurelib.cfg |
| 配置版本 | ConfigurationVersion,当前仅 V1 |
| 配置 GUI | guiFactory = com.gtnewhorizon.structurelib.GuiFactory |
ConfigurationHandler 是枚举单例,在 preInit 中用 e.getSuggestedConfigurationFile() 初始化,随后读取全部选项并调用 setLanguageKeys 为每个分类和条目设置语言键(形如 structurelib.config.<分类>.<选项>)。
订阅了 ConfigChangedEvent.PostConfigChangedEvent,在游戏内改配置后会重新 loadConfig() 完整重载。
配置项
| 分类 | 键 | 类型 | 默认值 | 范围 |
|---|---|---|---|---|
client.hologram |
maxCoexisting |
int | 1 | 1 – 100 |
client.hologram |
removeColliding |
boolean | true | — |
client.hologram |
hintLifespan |
int | 400 | 1 – 20000 |
client.hologram |
hintTransparency |
int | 192 | 1 – 255 |
common.hologram |
autoPlaceBudget |
int | 25 | 1 – 200 |
common.hologram |
autoPlaceInterval |
int | 300 | 0 – 20000 |
client.hologram
maxCoexisting(最大共存全息数):一次右键产生的所有提示算作一组"全息",该值限制屏幕上同时存在的组数。新全息即将生成时若已超限,会尝试裁剪旧的全息组。removeColliding(移除相交全息):为true时,若新全息与既有全息位置重复,会移除既有的一组。hintLifespan(提示存活时间):单位为游戏 tick。ClientProxy.onClientTick每 tick 末尾用当前玩家 ticksExisted - hintLifespan作为截止时间,清理allGroups中创建时间早于该值的全息组。hintTransparency(提示透明度):全息立方体渲染时的 alpha 值,取值 1–255。数值越大越"实",越小越通透。渲染时还会乘以一组按通道区分的系数(红×0.9、绿×0.95、蓝×1.0)。
common.hologram
这两项是服务端/客户端共用的设置,配置文件注释明确指出服务端设置会覆盖客户端设置。
autoPlaceBudget(单轮自动放置预算):一次自动放置轮次中最多放置的结构元素数量上限,范围 1–200,默认 25。IConstructable的实现者可以为过大的结构自行上调,但源码注释建议不要设成四位数,以免压垮服务端。autoPlaceInterval(自动放置间隔):两次自动放置轮次之间的最小间隔,单位是毫秒(墙上时钟),不是游戏 tick,范围 0–20000,默认 300。ConstructableUtility用System.currentTimeMillis() - 上次使用时刻与该值比较,未达间隔时拒绝执行并提示Please wait %d milliseconds before another autoplace...。该值没有下界保护设为 0 的语义,源码注释指出小于默认值时玩家基本感觉不到间隔。
registries.<注册表名> 分类
除固定分类外,配置加载时还会为每个已注册的 SortedRegistry 动态生成一个 registries.<name> 分类,每个分类包含两个字符串数组选项:
| 键 | 类型 | 默认值 | 含义 |
|---|---|---|---|
ordering |
String[] | 注册表当前的自然顺序 | 显式排序,未列出的条目按自然顺序追加在后面 |
disabled |
String[] | 空 | 列入的条目被禁用 |
加载时会做一次合并清理:从 ordering 中剔除同时出现在 disabled 里的键,并丢弃 ordering 中已不在注册表里的陈旧键,再把剩余的自然顺序条目追加到末尾。
客户端会为这些分类设置自定义配置项类 RegistryOrderEntry,从而在游戏内配置 GUI 中以可拖拽的列表呈现。改动会通过 RegistryOrderSyncMessage 同步到服务端。
本 mod 自带的注册表见 /sl_registry_debug。