数据驱动模块
基本信息
| 属性 | 值 |
|---|---|
| 模块数 | 3(CustomDrops、CustomFuels、CustomToolTips) |
| 共性 | 全部由 config/GTNewHorizons/*.xml 驱动,全部用 JAXB 序列化,全部默认关闭 |
| 序列化 | javax.xml.bind.JAXBContext / Marshaller / Unmarshaller |
| 重载方式 | 各自一条 /xxx reload 指令 |
| 兄弟模块 | 危险物品模块(第 4 个,但走独立路径) |
三个模块对照
| 模块 | 包 | 处理器 | 配置文件 | 指令 | 开关默认值 |
|---|---|---|---|---|---|
| CustomDrops | modcustomdrops(3 文件) |
CustomDropsHandler implements IMobExtraInfoProvider(接口来自 Mobs Info mod,com.kuba6000.mobsinfo.api,CustomDropsHandler.java:35 导入、:48 实现;对应 Gradle 依赖 compileOnlyApi("com.github.GTNewHorizons:Mobs-Info:0.5.21-GTNH:dev"),dependencies.gradle:33) |
config/GTNewHorizons/CustomDrops.xml(CustomDropsHandler.java:57) |
/customdrops |
false |
| CustomFuels | modcustomfuels(3 文件) |
CustomFuelsHandler implements IFuelHandler |
config/GTNewHorizons/CustomFuels.xml(CustomFuelsHandler.java:28) |
/customfuels |
false |
| CustomToolTips | modctt(2 文件) |
CustomToolTipsHandler |
config/GTNewHorizons/CustomToolTips[_<locale>].xml(CustomToolTipsHandler.java:41、:45) |
/customtooltips |
false |
配置路径统一由 String.format("config/%s/<Name>.xml", Refstrings.COLLECTIONID) 拼出,COLLECTIONID = GTNewHorizons(Refstrings.java:11)。
CustomDrops 自定义掉落
CustomDropsHandler 实现 Mobs Info mod 的 IMobExtraInfoProvider(com.kuba6000.mobsinfo.api,导入于 CustomDropsHandler.java:35,实现于 :48),让服务端能向客户端推送生物的额外信息。该接口来自 Gradle 的 compileOnlyApi 依赖 com.github.GTNewHorizons:Mobs-Info:0.5.21-GTNH:dev(dependencies.gradle:33),不是 Forge 自带接口。
| 方法 | 作用 | 位置 |
|---|---|---|
CustomDropsHandler(File pConfigBaseDir) |
构造器。接收配置目录参数但未使用它 —— 路径仍由 COLLECTIONID 硬拼(:56-58) |
:56-58 |
InitSampleConfig() |
写示例配置 | :61 |
SaveCustomDrops() |
覆盖写回 XML | :84-94 |
LoadConfig() |
载入;损坏时降级为「不做任何事」的默认配置并告警 | :100-114 |
ReloadCustomDrops() |
卸载旧配置 + 载入新配置 | :146-154 |
toggleDeathInfoForPlayer(player) |
切换某玩家的死亡信息显示 | 由 /customdrops toggleinfo 调用 |
LoadConfig 的损坏处理值得注意(CustomDropsHandler.java:114):损坏时载入「does-nothing-evil」默认配置并提示玩家自行修复,而不是抛异常中断 —— 属良性降级。
CustomFuels 自定义燃料
CustomFuelsHandler implements IFuelHandler(CustomFuelsHandler.java:19),即本 mod 自己就是 Forge 燃料系统的一个燃料处理器。
| 方法 | 作用 | 位置 |
|---|---|---|
CustomFuelsHandler() |
构造器,拼出 config/GTNewHorizons/CustomFuels.xml |
:27-28 |
registerCustomFuelValue(ItemStack fuel, short value) |
运行时登记燃烧值 | :31 |
InitSampleConfig() |
写示例配置 | :35 |
SaveCustomFuels() |
覆盖写回,失败记 error 日志 |
:40-50(失败分支 :50) |
LoadConfig() |
载入 | :56 |
另有 ScriptCreosoteBucketFuelValue 脚本(scripts/ 包内),是它唯一的配方侧消费者之一 —— 该脚本在 MainRegistry 中被引用 2 次。
CustomToolTips 自定义提示
CustomToolTipsHandler(modctt 包,2 文件)是三者中唯一按语言分文件的:
String localeAwareFileName = String.format("config/%s/CustomToolTips_%s.xml", Refstrings.COLLECTIONID, locale);
if (new File(localeAwareFileName).isFile()) {
_mConfigFileName = localeAwareFileName;
} else {
_mConfigFileName = String.format("config/%s/CustomToolTips.xml", Refstrings.COLLECTIONID);
}
(CustomToolTipsHandler.java:41-45)即:优先找带语言后缀的文件,找不到回退到通用文件。
| 方法 | 作用 | 位置 |
|---|---|---|
createCustomItemToolTip(String, String) |
静态工厂,创建一条自定义提示 | :25 |
setConfigFileLocation() |
按当前 locale 选定配置文件 | :39-45 |
reload() |
重载(方法名是 reload,另两个模块是 ReloadXxx) |
由 /customtooltips reload 调用(CustomToolTipsCommand.java:40) |
启用时 PreLoad 还会额外调 proxy.registerResourceReload() 让客户端重载资源(MainRegistry.java:208)。
数值
| 数值名 | 值 |
|---|---|
| 模块数 | 3 |
| 默认启用数 | 0 |
| 每个模块的配置文件数 | 1(CustomToolTips 可为 2,含语言变体) |
| 序列化方式 | 全部 JAXB |
| 重载指令数 | 3 |
| 方法命名一致性 | 不一致 —— ReloadCustomDrops() / ReloadCustomFuels() / reload() |
交互
| 模块 | 玩家侧效果 |
|---|---|
| CustomDrops | 生物死亡掉落表可由配置改写;/customdrops toggleinfo 开关死亡信息显示 |
| CustomFuels | 任意物品可被赋予燃烧时间;/customfuels reload 重载 |
| CustomToolTips | 物品悬浮提示可由配置改写;/customtooltips reload 重载 |
三者全部默认关闭,须在 config/GTNewHorizons/dreamcraft.cfg 中开启,且改动需重启客户端(CoreModConfig.java:10 带 @Config.RequiresMcRestart)。
相关条目
- CoreModConfig - 3 个开关的定义
- 指令 - 3 条
reload指令 - 危险物品模块 - 同类 XML 驱动,但走独立代码路径