ModTweaker
[!INFO] Git Commit:
24793fc| Updated: 2026-10-02
ModTweaker(Mod Tweaker 2)是 MineTweaker 3 的 GTNH 附属桥接层:它自身不注册任何方块、物品、实体或 TileEntity,而是把 19 个第三方模组的私有注册表(配方表、研究、要素、战利品、物质……)包装成 Zenscript 类,让整合包脚本能读写它们。mcmod.info 的自述是 “ModTweaker is an addon for MineTweaker 3”(mcmod.info:5)。
规模上它没有任何游戏内内容:src/main/resources/ 下只有 2 个文件(mcmod.info 与 META-INF/modtweaker2_at.cfg),没有 assets/ 目录,没有语言文件、没有材质、没有模型。因此不存在方块/物品/配方条目,全部内容都在脚本面、指令面与括号面上。
标识字符串
以下 6 个标识互不相同,写脚本或排查加载问题时需逐一对照:
| 角色 | 值 | 来源 |
|---|---|---|
| modid | modtweaker2 |
ModProps.java:6;gradle.properties:10 modId = modtweaker2 |
| FML 容器 modid(coremod) | 无 | gradle.properties:131 coreModClass = 为空 |
| 资源 domain | 无 | src/main/resources/ 仅 2 文件,无 assets/ |
| 分类名(relation.md) | modtweaker |
relation.md |
| 目录名 | ModTweaker |
源码仓目录 |
| jar 名 | ModTweaker2 |
gradle.properties:199 customArchiveBaseName |
| 显示名 | Mod Tweaker 2 |
ModProps.java:5;gradle.properties:6 modName |
注意 jar 名比目录名多一个 2(ModTweaker2 vs ModTweaker),而显示名又是第三种写法(Mod Tweaker 2,带空格)。仓库目录名与 modid 也不一致。
版本
MC 1.7.10 / Forge 10.13.4.1614。版本门控走形式 ①(RetroFuturaGradle 的显式版本字段)——gradle.properties:24 minecraftVersion = 1.7.10,同文件 :27 forgeVersion = 10.13.4.1614。settings.gradle 的 pluginManagement 使用 com.gtnewhorizons.gtnhsettingsconvention,build.gradle 用 com.gtnewhorizons.gtnhconvention,确认构建系统是 RetroFuturaGradle,故形式 ① 有效。
本条目引用提交 24793fc83232e088558a297d494f44178eadda9b(2026-07-27),已用 git cat-file -t 验证为有效 commit 对象。未采用 git describe:该命令输出 0.14.0,是版本号而非 MC 版本,无法证明 1.7.10;按项目规约版本判定只认能指向 MC 版本的显式字段。
源码是真实构建的 Java 源码(237 个 .java,无 Scala/Kotlin),不是反编译 jar——不适用「反编译源码」两种例外中的任何一种。
依赖
硬依赖
@Mod 注解写的是 dependencies = ModProps.dependencies(ModTweaker2.java:46),其值为(ModProps.java:8):
required-after:MineTweaker3;after:Forestry@[4.1.0,);
| 依赖 | 强度 | 说明 |
|---|---|---|
MineTweaker3 |
硬(required-after) |
全部脚本类经 MineTweakerAPI 注册,缺失则本模组无意义。构建侧对应 dependencies.gradle 首行的 api("com.github.GTNewHorizons:CraftTweaker:3.4.2:dev") |
Forestry@[4.1.0,) |
软(after) |
唯一被 @Mod 点名的可选依赖 |
软依赖(19 个桥接目标)
以下 19 个模组全部通过 Loader.isModLoaded 运行时门控,没有一个写进 @Mod(dependencies)(TweakerPlugin.java:12)。门控字符串是源码里传给 isModLoaded 的字面量,逐字取自 ModTweaker2.java:66-84:
appliedenergistics2-core、Botania、shadowfox_botany、exnihilo、extendedWorkbench、factorization、Mariculture、Mekanism、Metallurgy、PneumaticCraft、Railcraft、TConstruct、Thaumcraft、ThermalExpansion、Forestry、chisel、aura、ExtraUtilities、IC2
构建侧对应 dependencies.gradle 的 18 条 compileOnly。extendedWorkbench 是唯一的例外——它没有 compileOnly,API 由 src/compileHelper/ 下 5 个自带的桩源码提供。
上述 19 个门控字符串未逐一对照各目标模组自身仓库的
@Mod(modid = ...)核实;跨仓核对不在本次范围内。
参考依赖
Mantle:0.5.1(dependencies.gradle)是唯一的 compileOnly 中没有对应桥接插件的条目,仅作 API 兼容引入。
注册面
@Mod 类只有 1 个:modtweaker2.ModTweaker2(ModTweaker2.java:46-47)。生命周期事件只有 4 个 @EventHandler(preInit / init / postInit / serverStart)。
全部内容在 init(ModTweaker2.java:63-104)里挂载,计只统计存活项:
| 项目 | 数量 | 说明 |
|---|---|---|
| 桥接插件 | 19 | TweakerPlugin.register,ModTweaker2.java:66-84 |
| 已注册 Zenscript 类 | 94 | MineTweakerAPI.registerClass,全部有对应 .java |
@ZenMethod(存活) |
369 | 行首注解;注释内字样不计 |
| 括号处理器 | 3 | registerBracketHandler |
/minetweaker 子指令 |
24 | Commands.java,其中 22 条带插件门控 |
| 方块 / 物品 / 实体 / TileEntity | 0 | 无 assets/,无注册调用 |
| 配置项 | 0 | 无 Configuration / getConfig 调用 |
| 访问转换器 | 1 | modtweaker2_at.cfg,把 EntityList.field_75622_f 开放为 public |
| coremod / Mixin | 0 | coreModClass 与 usesMixins 均为空(gradle.properties:131、:110) |
@ZenClass 共 97 个,其中 94 走 registerClass;余下 3 个(IAspectStack、IAuraDefinition、IAuraStack)由括号处理器暴露。另有一个 IAspectDefinition.java(5 行)既无 @ZenClass 也无 @ZenMethod,只是 Java 返回类型,不是脚本类。
脚本类与 Zenscript 名常不一致:12 处 Java 类名与脚本名不同(如 Grind.java → mods.appeng.Grinder、RollingMachine.java → mods.railcraft.Rolling、TiCTweaks.java → mods.tconstruct.Tweaks),7 个简单类名跨包重名(Crucible 出现在 4 个包)。统计一律按全限定名。
脚本面列表
- Thaumcraft 脚本类 - 7 类 / 63 方法,研究面最大,含
<aspect:>括号 - Mekanism 脚本类 - 20 类 / 40 方法,类数最多,含
<gas:>括号 - Botania 脚本类 - 8 类 / 42 方法,dump 指令最多(6 条)
- TConstruct 脚本类 - 6 类 / 36 方法,含工具属性与弓/箭属性
- Forestry 脚本类 - 7 类 / 31 方法,
@Mod点名的可选依赖 - Mariculture 脚本类 - 5 类 / 31 方法,按物品形态拆方法名
- IC2 脚本类 - 11 类 / 22 方法,脚本包名为
mods.ic2classic - Thermal Expansion 脚本类 - 7 类 / 27 方法,每类都带
refreshRecipes - Ex Nihilo 脚本类 - 4 类 / 16 方法,含奖励与热源 API
- Railcraft 脚本类 - 4 类 / 15 方法,含
addShaped/addShapeless - Botanical Addons 脚本类 - 2 类 / 8 方法,门控
shadowfox_botany - PneumaticCraft 脚本类 - 2 类 / 8 方法,按机器子类拆方法名
- Applied Energistics 2 脚本类 - 2 类 / 7 方法,门控
appliedenergistics2-core - Factorization 脚本类 - 3 类 / 6 方法,静态块按字符串类名反射
- Aura Cascade 脚本类 - 1 类 / 4 方法,含
<aura:>括号 - Metallurgy 脚本类 - 2 类 / 4 方法
- Chisel 脚本类 - 1 类 / 4 方法,失败即返回不提交
- Extended Workbench 脚本类 - 1 类 / 3 方法,API 由本仓库自带桩提供
- Extra Utilities 脚本类 - 1 类 / 2 方法,全仓最小脚本面
括号面列表
- modtweaker.* 括号类 - 3 个
IBracketHandler(<aspect:>/<gas:>/<aura:>)与 5 个modtweaker.*脚本类
指令面列表
- /minetweaker 指令列表 - 24 条 dump 指令,其中 22 条按插件门控
- 物品 tooltip 叠加 - 客户端唯一的可见功能,把配方键名显示在物品 tooltip 上
接口面列表
- 插件加载器 TweakerPlugin - 19 个桥接插件的
Loader.isModLoaded门控与scripts目录接管 - 可撤销动作基类 - 10 个
Base*抽象类,369 个脚本方法最终都经MineTweakerAPI.apply提交 - 反射与日志助手 - 6 个 helper 类、6 处静默失败的
static {}初始化块