Thaumic Boots
GTNH 的 Thaumcraft 4 靴子附属模组(作者 Alastor)。纯物品模组:注册 0 个方块、0 个多方块、0 个实体、0 个维度,内容全部是靴子与一枚奥术透镜,外加 14 条封包的网络同步和 6 个键位。
本 mod 最大的特点是注册完全依赖第三方模组是否安装:Config.setupItems() 只无条件注册 4 个物品,其余 13 个靴子全部在 ModHelperManager 驱动的 compat helper 里按 Loader.isModLoaded(...) && Config.xxxActive 双重判断注册。
| 项目 | 值 |
|---|---|
| modid | thaumicboots(VersionInfo.java:7 的 ModID 常量,非 gradle.properties) |
| 源仓库 | https://github.com/GTNewHorizons/ThaumicBoots.git |
| 源 commit | 8444b73(2026-09-01) |
| Minecraft | 1.7.10 / Forge 10.13.4.1614(gradle.properties) |
| 硬依赖 | required-after:Thaumcraft(VersionInfo.java:10) |
| 主类 | thaumicboots.main.ThaumicBoots(@Mod 在 ThaumicBoots.java:18) |
| 网络通道 | thaumicboots(PacketHandler.java:13,VersionInfo.ModID.toLowerCase()) |
| 主源文件数 | 79 |
| 核心 ModLoader | core.ThaumicBootsEarlyMixinLoader(gradle.properties 的 coreModClass) |
物品(17,其中仅 4 个无条件存在)
无条件注册(4)
由 Config.setupItems()(Config.java:75-87)无条件调用。
| 物品 | 注册名 | 说明 |
|---|---|---|
| 奥术透镜 | thaumicboots:ItemArcaniumInterfacer |
唯一工具类物品,13 项配方全部以它作灌注催化剂 |
| 四季靴 | thaumicboots:ItemSeasonBoots |
vis 折扣随真实日历在 3 / 6 间切换 |
| 圣诞精神靴 | thaumicboots:ItemChristmasBoots |
vis 折扣随日历在 2 / 9 间切换 |
| 怠惰之靴 | thaumicboots:ItemSlowBoots |
唯一负移速靴,speedBonus = -0.035F |
仅 Thaumic Exploration 在场时注册(2)
ExplorationsHelper.getItems()(ExplorationsHelper.java:48-52),需 Loader.isModLoaded("ThaumicExploration") && Config.explorationsActive。
| 物品 | 注册名 | 说明 |
|---|---|---|
| 流星彗星靴 | thaumicboots:ItemMeteoricComet |
无 super.setBootsData() 的纯换皮靴 |
| 冰霜流星靴 | thaumicboots:ItemCometMeteor |
四季靴的加强版参数 |
仅 Tainted Magic 在场时注册(2)
嵌套在 ExplorationsHelper.getItems() 内(ExplorationsHelper.java:54-60),需同时满足 Exploration 与 Tainted Magic。
| 物品 | 注册名 | 说明 |
|---|---|---|
| 虚空彗星靴 | thaumicboots:ItemVoidComet |
移速 0.215F * 3 = 0.645F |
| 流星虚空靴 | thaumicboots:ItemVoidMeteor |
跳跃 0.88D(9 格) |
仅 EMT 在场时注册(6)+ 与 Tainted Magic / Exploration 交叉(6)
EMTHelper.getItems()(EMTHelper.java:74-105)需 Loader.isModLoaded("EMT") && Config.emtActive,再按内层条件二次分流。全部继承 ItemElectricBoots,带 EU 储能。
| 物品 | 注册名 | 额外条件 | maxCharge | jumpBonus |
|---|---|---|---|---|
| 电力虚空行者靴 | thaumicboots:ItemElectricVoid |
+ Tainted Magic | 100,000 | 0.4675D |
| 纳米虚空行者靴 | thaumicboots:ItemNanoVoid |
+ Tainted Magic | 1,000,000 | 0.7425D |
| 量子虚空行者靴 | thaumicboots:ItemQuantumVoid |
+ Tainted Magic | 10,000,000 | 1.0175D |
| 电力流星靴 | thaumicboots:ItemElectricMeteor |
+ Thaumic Exploration | 100,000 | 0.5225D |
| 纳米流星靴 | thaumicboots:ItemNanoMeteor |
+ Thaumic Exploration | 1,000,000 | 0.7975D |
| 量子流星靴 | thaumicboots:ItemQuantumMeteor |
+ Thaumic Exploration | 10,000,000 | 1.1D |
| 电力彗星靴 | thaumicboots:ItemElectricComet |
+ Thaumic Exploration | 100,000 | 0.275D |
| 纳米彗星靴 | thaumicboots:ItemNanoComet |
+ Thaumic Exploration | 1,000,000 | 0.6325D |
| 量子彗星靴 | thaumicboots:ItemQuantumComet |
+ Thaumic Exploration | 10,000,000 | 0.9075D |
注意彗星系的三档 tier 与虚空系不同:ItemQuantumComet 继承 ItemElectricBoots.setBootsData() 的 tier = 3(未被覆写),而 ItemQuantumVoid 显式设为 tier = 4。
方块 / 多方块 / 实体 / 维度
全部为零。Config.setupBlocks()(Config.java:73)是空方法体,全仓无 registerBlock 调用:
$ grep -rn "registerBlock\b" src/main/java
(仅 ClientProxy.java:48 的 RenderingRegistry.registerBlockHandler,是渲染器注册)
无 TileEntity、无实体注册、无 WorldProvider、无群系、无世界生成、无成就、无附魔。
研究(11 项,4 无条件 / 7 有条件)
完整网格坐标、页数、父项与精华需求见 研究页。
| 研究 | ID | 网格 (x, y) | 条件 |
|---|---|---|---|
| 奥术制鞋术 | TB_Core_Research |
(0, 0) | 无条件,父项 THAUMIUM |
| 季节魔法 | TB_Seasonal_Boots |
(2, 0) | 无条件,父项 TB_Core_Research |
| 季节魔法稳定化 | TB_Seasonal_Stabilized |
(4, 0) | 无条件,父项 TB_Seasonal_Boots |
| 独特魔法 | TB_Unique_Boots |
(-2, 0) | 无条件,父项 TB_Core_Research |
| 虚空魔法 | TB_Tainted_Core |
(3, 2) | Tainted Magic,父项 VOIDWALKERBOOTS |
| 人工魔法 | TB_EMT_Core |
(-3, 2) | EMT,父项 Electric Boots of the Traveller |
| 人工虚空魔法 | TB_EMT_Tainted_Compat |
(0, 3) | EMT + Tainted Magic,父项三项 |
| 星空魔法 | TB_Explorations_Core |
(0, -3) | Thaumic Exploration,父项 METEORBOOTS + COMETBOOTS |
| 组合星空魔法 | TB_Explorations_Compat |
(0, -2) | Thaumic Exploration,父项两项 |
| 组合虚空星空 | TB_Explorations_Tainted_Compat |
(3, -2) | Exploration + Tainted Magic,父项三项 |
| 人工星空魔法 | TB_Explorations_EMT_Compat |
(-3, -2) | EMT + Exploration,父项三项 |
其中 6 项带 setConcealed()。TB_Explorations_EMT_Compat 有 7 页且第 5–7 页与第 2–4 页完全重复(EMTHelper.java:428-434)。
配方(17 条,无一使用原版工作台)
CraftingManager.setupCrafting()(CraftingManager.java:5-23)整个方法体只有注释,所有配方走 Thaumcraft API:8 条在 ThaumcraftHelper,9 条在 EMTHelper。
| 配方 | 输入 | 输出 |
|---|---|---|
坩埚 thaumaturgicCombinator |
奥术透镜 + 泰铑 | 四季靴 ×4 |
灌注 seasonalBoot |
四季靴 + 烈焰火箭/墨水/书/铁剑/南瓜灯/霜冻法杖/树苗 | 四季靴 |
坩埚 slowBoot |
怠惰之靴 + 旅行靴 | 怠惰之靴 |
坩埚 seasonalToChristmas |
圣诞精神靴 + 四季靴 | 4 圣诞精神靴 |
灌注 voidMeteor |
虚空行者靴 + 陨石靴 | 流星虚空靴 |
灌注 voidComet |
虚空行者靴 + 彗星靴 | 虚空彗星靴 |
灌注 cometMeteor |
彗星靴 + 流星靴 + 碎片(元 2) | 冰霜流星靴 |
灌注 meteorComet |
流星靴 + 彗星靴 + 碎片(元 1) | 流星彗星靴 |
| 灌注 ×9 | 奥术透镜 + 7 材料 | 9 双电力靴 |
EMT 系配方的精华需求统一为 EXCHANGE 75 / MAGIC 50 / CRAFT 50 / SPACE 25 / BOOTS 25。
配置(8 项,其中 2 项无效)
见 配置。modules 类 5 项决定哪些兼容靴存在,boots 类 3 项控制微调步长与惯性抵消。
⚠️ Thaumcraft 与 GTNHLib 两项被读取赋值但全仓无任何读取点,玩家关掉它们不会有任何效果。
网络封包(14 条)
见 网络封包。7 组「请求 + 回执」严格交替,奇数 ID 发往服务端,偶数 ID 为服务端回应。
游戏设定(4)
| 条目 | 内容 |
|---|---|
| 配置 | modules + boots 两类共 8 项,其中 Thaumcraft 与 GTNHLib 两项完全无效 |
| 研究页 | 独立分类 THAUMICBOOTS,11 项研究(4 无条件 / 7 有条件),6 项隐藏 |
| 节日与季节效果 | 按操作系统真实日期切换 vis 折扣、贴图与长跑系数,含 switch 缺 break 缺陷 |
| 网络封包 | 14 条封包,6 个键位对应 7 组「请求 + 回执」 |
键位(6 个)
BootKeys(BootKeys.java:24-57),默认键码全部是 Keyboard.KEY_NONE(未绑定),分类名均为 "Thaumic Boots",玩家须自行在选项中设键才生效。
| 键位 | 键名 | 作用 |
|---|---|---|
| 跳跃开关 | keybinding.jumptoggle |
切换跳跃加成 |
| 移速开关 | keybinding.speedtoggle |
切换移速加成 |
| 全方位开关 | keybinding.omnitoggle |
切换 omni 模式 |
| 惯性抵消开关 | keybinding.inertiatoggle |
切换惯性抵消 |
| 微调键 | keybinding.incrementmodifier |
提升 changeRateModifier |
| 台阶辅助 | keybinding.stepassist |
切换自动上台阶 |
供其他 mod 调用的 API
thaumicboots.api 包下 9 个接口 + 3 个基类。核心是 ThaumicBootsAPI,以及接口 IBoots、ITBootJumpable、ITBootSpeed、ISpecialEffect、IPurifyingGear、IGrief、IComet、ICometMeteorMix、IMeteor。物品基类链为 ItemArmor → ItemBoots →(ItemElectricBoots / ItemVoidBoots),同时实现 Thaumcraft 的 IVisDiscountGear、IRunicArmor、IWarpingGear、IRepairable。
本 mod 没有的内容
以下经源码检索确认完全没有,故不建目录、不建条目:
- 方块与多方块:
Config.setupBlocks()空实现;无registerBlock、无Block子类、无TileEntity、无IInventory、无Multiblock、无控制器类。 - 实体:
grep -rn "extends Entity\b\|registerModEntity" src/main/java无输出。BootsEventHandler只监听EntityLivingBase的事件,不生成实体。 - 附魔 / 药水效果 / 成就:
grep -rniE "Enchantment|Achievement|extends Potion" src/main/java无输出。 - 维度 / 群系 / 世界生成 / 结构:
grep -rn "registerDimension\|extends WorldProvider\|extends BiomeGenBase\|IWorldGenerator" src/main/java无输出。 - Baubles 饰品:包
thaumicboots.item.baubles下 3 个类(ItemPactRing、ItemRing、SilverRing)从不被任何代码引用,也无registerItem。语言文件里的item.ItemPactRing.name是死键。dependencies.gradle显式exclude module: 'Baubles',说明 Baubles 支持已被主动移除。 - 圣诞节护甲:
ItemChristmasArmor同样从不被引用,无注册。 - 原版合成:
CraftingManager无可执行语句。
源码缺陷
mcmod.info指向错误的仓库。src/main/resources/mcmod.info的url是https://github.com/GTNewHorizons/thaumicinsurgence,description是 “The latest addon for thaum 4, currently only adds the infusion interceptor”——这是从 Thaumic Insurgence 复制来的,本仓库是 Thaumic Boots。modid/name/version 字段本身是${...}占位符,会被正确替换,所以缺陷只在url与description。- 语言文件混入他 mod 的键。
en_US.lang含thaumicinsurgence.versioning.*(4 条)、thaumicinsurgence.config.*(4 条)、tc.research_category.THAUMICINSURGENCE、tc.research_name.TI_DeliciousKromer(一条带 “Kromer” 的恶搞文本)。本 mod 无任何代码读取这些前缀。 - 3 个已定义字段无任何读取点。
Config.thaumcraftActive(Config.java:30)与Config.gtnhLibActive(Config.java:40)被配置写入,但TaintedHelper/ExplorationsHelper/EMTHelper的判断都走Loader.isModLoaded(...),从不读这两个布尔值。玩家在配置里关掉Thaumcraft或GTNHLib不会有任何效果。 ItemPurpleVoidwalkerBoots是死代码。位于包thaumicboots.item.boots.unimplemented(包名自陈未实现),全仓无引用、无注册。语言文件仍有item.ItemPurpleVoidwalkerBoots.name= “Altered Boots of the Purple Haze”(死键)。该物品在游戏中不存在。ItemElectricCometBoots与ItemMeteoricCometBoots未调用super.setBootsData()。ItemElectricCometBoots.java:9的setBootsData()覆盖了父类却不调 super,因此longrunningbonus、negateFall、waterEffects、steadyBonus等字段停留在 Java 默认值 0 / false,而非ItemBoots基类设定的0.165F/true。其中negateFall = false是它自己显式设的(唯一有意为之的),但waterEffects与steadyBonus的 false 属于意外继承失败——彗星靴因此没有免摔且不涉水效果。ItemMeteoricCometBoots同理(ItemMeteoricCometBoots.java:11),它只覆写了 3 个字符串字段,其余全部落到ItemBoots的默认值,且自己没设tier(继承基类的 0),jumpBonus也留在基类的 0。Config.onConfigurationChangedEvent比较的是 modName 而非 modID。Config.java:62写event.modID.equalsIgnoreCase(VersionInfo.ModName),即拿"thaumicboots"去和"Thaumic Boots"比,永远为 false,配置重载后不会保存。应为ModID。- 研究页重复。
EMTHelper.java:428-434中explorationsEMT2..4与explorationsEMT5..7指向完全相同的 3 个InfusionRecipe变量,同一个研究项里连出两遍相同配方页。 Config.saveConfigs()从不被调用。全仓无调用点;Config.java:69-71是死方法。配置仅靠Init()末尾的configuration.save()落盘。