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 个包)。统计一律按全限定名。

脚本面列表

括号面列表

  • modtweaker.* 括号类 - 3 个 IBracketHandler(<aspect:> / <gas:> / <aura:>)与 5 个 modtweaker.* 脚本类

指令面列表

接口面列表