Thaumcraft Research Tweaks
[!INFO] modid:
ThaumcraftResearchTweaks| 语言: Kotlin | 1.7.10 / Forge 10.13.4.1614
Thaumcraft Research Tweaks(TRT)是一个纯 Mixin 模组,它整体重写了神秘时代研究台(Research Table)的 GUI——换成一套六边形网格 + 拖放操作的新界面。
它是什么(裁定依据)
| 事实 | 证据 |
|---|---|
| 官方描述 | mcmod.info:“Makes thaumcraft research table ui resizable, adjusts sorting and allows 10x at a time aspect combination” |
| 注册方块 | 0 |
| 注册物品 | 0 |
| 注册实体 | 0 |
| Mixin 数量 | 1(mixins.ThaumcraftResearchTweaks.json 的 mixins 数组只有 "TableBlockMixin") |
| 源码文件 | 97 个 .kt(Kotlin),.java 数量为 0 |
它不改动研究配方、研究点数或研究进程规则本身,改动集中在研究台界面的前端呈现与交互。
三个关键陷阱
1. modid 是 PascalCase,且与资源域不同
| 项 | 值 | 证据 |
|---|---|---|
| modid | ThaumcraftResearchTweaks |
ThaumcraftResearchTweaks.kt:23 const val MOD_ID = "ThaumcraftResearchTweaks";gradle.properties modId = ThaumcraftResearchTweaks |
| 分类名 | thaumcraft-research-tweaks(全小写 kebab) |
data/relation.md:361 |
| 资源域 | thaumcraft |
src/main/resources/assets/thaumcraft/ |
modid ≠ 资源域:贴图与语言文件都在 assets/thaumcraft/ 下,不占用自己的命名空间。这既是刻意的(要覆盖 TC 本体资源)也是陷阱——按 ThaumcraftResearchTweaks: 前缀找资源会一无所获。
2. @Mod 写在 Kotlin 里,依赖 Forgelin
@Mod(
modid = MOD_ID,
name = "Thaumcraft Research Tweaks",
version = MODVER,
modLanguageAdapter = "net.shadowfacts.forgelin.KotlinAdapter",
dependencies = "required-after:forgelin;required-after:spongemixins;required-after:Thaumcraft;")
object ThaumcraftResearchTweaks { ... }
(ThaumcraftResearchTweaks.kt:15-21)
find -name '*.java' 在本仓库返回 0——按 Java 仓库处理会得出「无源码」的错误结论。modLanguageAdapter 指向 Forgelin,这是 Kotlin 模组在 Forge 1.7.10 上运行的前提。
3. MODVER 是构建期生成的常量
version = MODVER(:18)在 97 个 .kt 文件中没有任何声明,也没有任何 import:
$ grep -rn 'MODVER' --include=*.kt src/
src/main/kotlin/.../ThaumcraftResearchTweaks.kt:18: version = MODVER,
它由 Gradle 的 buildconfig 插件生成到同包 elan.tweaks.thaumcraft.research.frontend.integration 下(addon.gradle):
buildConfig {
packageName("elan.tweaks.thaumcraft.research.frontend.integration")
buildConfigField('String', 'MODVER', "\"${project.modVersion}\"")
useKotlinOutput { topLevelConstants = true }
}
源码中读不到任何真实版本号。gradle.properties 中 generateGradleTokenClass =(空)且 gradleTokenVersion = GRADLETOKEN_VERSION,故版本号不来自 token 替换。
依赖
| 依赖 | 声明 | 收录状态 |
|---|---|---|
| Forgelin | required-after:forgelin |
不在收录范围(data/relation.md 无对应行) |
| SpongeMixins | required-after:spongemixins |
不在收录范围 |
| Thaumcraft | required-after:Thaumcraft |
✓ 已完成 |
| UniMixins | usesMixins = true 自动引入 |
已登记未成文,前向引用 unimixins |
内容清单
本模组不注册任何游戏内容,条目按功能组织:
设置
- Config - 2 项配置
- TableBlockMixin - 全模组唯一的 Mixin
- Resource Override - 覆盖 TC 本体的 9 个语言键 + 3 张贴图
界面效果
- Aspect Combination - 拖放、Ctrl ×10 批量、排序
- Research Table GUI - 六边形网格界面架构
源码缺陷
mcmod.info声称的「ui resizable」在源码中无实现:GUI 尺寸由贴图常量推导(ResearchTableLayout.kt:8-12),没有任何 resize / scale 用户配置。详见 Research Table GUI。mcmod.info依赖列表遗漏 SpongeMixins:info的dependencies数组写Forgelin/Thaumcraft/SpongeMixins,但未列出 UniMixins,而usesMixins = true会自动引入它(gradle.properties注释:“UniMixins is automatically set as a required dependency if usesMixins = true”)。GameRegistry被 import 但未使用:ThaumcraftResearchTweaks.kt:7导入cpw.mods.fml.common.registry.GameRegistry,全文件无任何调用——与「本模组不注册方块物品」一致。