TC4Tweaks
[!INFO] Git Commit: 见 relation.md | Minecraft 1.7.10 / Forge 10.13.4.1614-1.7.10 | Thaumcraft 4.2.3.5
Thaumcraft 4 的功能增强与修复合集(coremod + 普通 mod)。
简介
TC4Tweak(modid tc4tweak,单数)是 1.7.10 的 Thaumcraft 4 附属,
描述语 Magic with ease。它是双模 jar:
- coremod ——
SortingIndex = 2000,63 条 ASM 变换覆盖 Thaumcraft / Forge / 其它 mod 的 53 个类。 - 普通 mod ——
dependencies = "required-after:Thaumcraft"(唯一硬依赖)。 - 12 个功能模块 —— 配方查找、要素缓存、研究浏览器、灌注改写等。
- 3 条网络消息 —— 全部单向(服务端 → 客户端)。
- NEI 集成 + 3 个数据导出器。
概念总览
| 概念 | 摘要 | 关联条目 |
|---|---|---|
| 变换注册真源 | 63 条 Map<String, TransformerFactory> |
TC4 Transformer |
| 加载插件 | SortingIndex 2000 + 两个互斥检测 | Loading Plugin |
| 配置 | 6 个分组,ConfigurationVersion 分步迁移 |
Configuration Handler |
| 网络 | 自克隆 SimpleNetworkWrapper,未知消息不崩 |
MyNet |
Coremod 列表
- TC4 Transformer — 63 条映射、11 条标注
Side.CLIENT - Loading Plugin —
SortingIndex2000 - Transformer Factory —
isExpandFrames()/isInactive()
核心与代理
- TC4Tweak —
@Mod,jar 签名校验[1.4.27,2) - Common Proxy — 注册 3 条消息 + dispenser 覆写
- Client Proxy — 反射覆写研究 GUI + 资源重载
设置
- Configuration Handler —
general/client/client.browser_scale/general.infusion_recipes/general.infusion_recipes.nbtcarryover/general.saved_link - Configuration Version — 枚举式分步迁移,
LEGACY直接抛异常 - GuiFactory —
IModGuiFactory,后两方法返回null - GuiModConfig — 只显示无
.的顶层分类
模块列表(12 个包)
- Find Recipes — 逆向查配方 + 奥术合成历史
- FindCrucibleRecipe 模块 — 哈希直查坩埚配方
- GenerateItemHash 模块 — 反射读
ThaumcraftApi.groupedObjectTags与GameData.customItemStacks - ObjectTags 模块 — 物品→meta→AspectList 三层映射
- ObjectTagsCache
- ObjectTagsMutation
- Infusion Recipe 模块 — 4 种词典模式 + NBT 结转
- GetResearch 模块
- ResearchBrowser 模块 — 6 文件,
TEXTURE_HEIGHT=230 - VisRelay 模块 — 反射取
VisNetHandler.cache/nearbyNodes - HUDNotification 模块 — TabbyChat 可选集成
- GolemPlantManaBeanFix
- ParticleEngineFix
- EntityCollisionBox
- FlushableCache — 全局启停缓存
网络
- MyNet — 频道名
tc4tweak - Indexed Codec — 未知 discriminator 打 warn 后 return
- Message Send Configuration — disc 0
- Message Send Configuration V2 — disc 1
- TileHole Sync Packet — disc 2
- Networked Configuration — 双端不同初值
NEI 与 API
- NEI 集成 — 3 个
DataDumper+IConfigureNEI - MTCompat — 向 MineTweaker 注册自定义类
- CommonUtils
- ASM Utils — 包私有
final class;含 HodgePodge 分支
依赖范围
| 依赖 | 收录状态 |
|---|---|
Thaumcraft(required-after) |
✅ 已登记(分类 thaumcraft) |
Baubles(1.7.10-1.0.1.10,devOnly) |
✅ 已登记(分类 baubles-expanded) |
MineTweaker3(compileOnly,非运行时依赖) |
✅ 已登记(分类 minetweaker-gregtech-5-addon 之外的 MT 主体见 relation.md) |
| NotEnoughItems(软依赖,NEI 集成) | ✅ 已登记(分类 notenoughitems 未收录 → 见下) |
TabbyChat(Class.forName 可选) |
❌ 不在收录范围 |
| NotEnoughThaumcraftTabs / ThaumicFixer | ❌ 不在收录范围,且被显式排斥 |
notenoughitems在relation.md中无行 —— NEI 主体不在收录范围。
源码缺陷
LoadingPlugin.injectData()—— 硬性排斥 NotEnoughThaumcraftTabs 与 ThaumicFixer,检测到即throw new RuntimeException终止启动。 错误信息在日志中重复 3 次(夹在 9 行#横幅中),属调试遗留。ConfigurationVersion.LEGACY.step()—— 直接抛IllegalStateException。 依赖identify()永不返回LEGACY才安全;若配置缺失版本标记 被识别为LEGACY,迁移第一步即崩。@Mod缺少dependencies——@Mod(dependencies = "required-after:Thaumcraft")已声明 Thaumcraft,但 MineTweaker3(compileOnly)、NotEnoughItems、 TabbyChat 均未声明。TabbyChat 有Class.forName探测,尚安全; MineTweaker 无探测路径,靠 MT 侧调用时机。- 硬编码第三方类名/字段名反射 ——
ThaumcraftApi.groupedObjectTags、GameData.customItemStacks、VisNetHandler.cache/nearbyNodes、ParticleEngine.particles、GuiResearchBrowser.player/selectedCategory、Mouse.readBuffer。 上游改名即NoSuchFieldException,无版本分支。 IndexedCodec静态 import FML 包级常量INBOUNDPACKETTRACKER—— 绕过访问控制依赖 FML 内部结构,FML 变更即编译失败。ConfigurationHandler字段声明无显式初值 —— 22 个 boolean 字段靠 Java 默认false起步,实际值取决于loadConfig读到的配置; 仅browserHeight=230/browserWidth=256/infusionMatrixLimitDrift=12f等 7 个有源码级初值。InfusionOreDictMode命名与严格度非单调 ——Default只用第一个 ore ID,Strict要求集合全等,Relaxed只要求有交集,易被反读。- 调试路径泄漏资源 ——
LoadingPlugin.getDebugOutputDir()里catch (IOException ignored) {}空吞;.asm目录每次启动被FileUtils.deleteDirectory清空。