Mekanism 脚本类
基本信息
| 属性 | 值 |
|---|---|
| 门控字符串 | Mekanism |
| 插件类 | modtweaker2.mods.mekanism.Mekanism |
| 注册点 | ModTweaker2.java:73 |
| 脚本类数 | 20(本条目中类数最多的插件) |
@ZenMethod |
40 |
| 括号前缀 | <gas:NAME> |
| dump 指令 | mekanism、gases |
功能
Mekanism 插件注册 20 个脚本类,其中 2 个是 modtweaker.gas.* 接口,其余 18 个按机器与化学品两条线组织。
化学品线(6 类)
这 6 个类的 Java 文件名前缀都是 Chemical*,但 Zenscript 名在 mods.mekanism.chemical 子包下:
| Zenscript 类 | Java 文件 | @ZenMethod |
|---|---|---|
mods.mekanism.chemical.Crystallizer |
handlers/ChemicalCrystallizer.java |
2 |
mods.mekanism.chemical.Dissolution |
handlers/ChemicalDissolution.java |
2 |
mods.mekanism.chemical.Infuser |
handlers/ChemicalInfuser.java |
2 |
mods.mekanism.chemical.Injection |
handlers/ChemicalInjection.java |
2 |
mods.mekanism.chemical.Oxidizer |
handlers/ChemicalOxidizer.java |
2 |
mods.mekanism.chemical.Washer |
handlers/ChemicalWasher.java |
2 |
每个类恰好是一对 addRecipe / removeRecipe。Java 类名与 Zenscript 名不对应是本模组的普遍现象(同类还有 EnergizedSmelter → mods.mekanism.Smelter、TiCTweaks → mods.tconstruct.Tweaks、RollingMachine → mods.railcraft.Rolling),写脚本时不能靠 Java 类名推断脚本名。
机器线(12 类)
| Zenscript 类 | Java 文件 | @ZenMethod |
|---|---|---|
mods.mekanism.Combiner |
handlers/Combiner.java |
3 |
mods.mekanism.Compressor |
handlers/Compressor.java |
3 |
mods.mekanism.Purification |
handlers/Purification.java |
3 |
mods.mekanism.Crusher |
handlers/Crusher.java |
2 |
mods.mekanism.Smelter |
handlers/EnergizedSmelter.java |
2 |
mods.mekanism.Enrichment |
handlers/Enrichment.java |
2 |
mods.mekanism.Infuser |
handlers/Infuser.java |
2 |
mods.mekanism.Reaction |
handlers/Reaction.java |
2 |
mods.mekanism.Sawmill |
handlers/Sawmill.java |
2 |
mods.mekanism.Separator |
handlers/Separator.java |
2 |
mods.mekanism.ThermalEvaporation |
handlers/ThermalEvaporation.java |
2 |
mods.mekanism.SolarNeutronActivator |
handlers/SolarNeutronActivator.java |
2 |
Combiner / Compressor / Purification 的 3 个方法里含 2 个 addRecipe 重载(气态/液态两套),其余 9 个机器类都是单一 addRecipe / removeRecipe。
气体接口(2 类)
| Zenscript 类 | Java 文件 | @ZenMethod |
@ZenGetter |
|---|---|---|---|
modtweaker.gas.IGasDefinition |
gas/IGasDefinition.java |
0 | 2 |
modtweaker.gas.IGasStack |
gas/IGasStack.java |
1 | 4 |
IGasStack 的 1 个 @ZenMethod 是 withAmount,4 个 @ZenGetter 是 definition / name / displayName / amount,外加 1 个 MUL 运算符(IGasStack.java:13、:16、:19、:22、:25)。具体实现是 MCGasStack(gas/MCGasStack.java,含 toString() 于 :53)。
这两类是 97 个 @ZenClass 中少数走 registerClass 正常路径的接口(Mekanism.java:31-32),与 Thaumcraft / Aura Cascade 靠括号处理器暴露的同类接口形成对照,见 括号类。
气体括号
<gas:hydrogen> 由 GasBracketHandler 解析(Mekanism.java:30 注册)。查表走 GasRegistry.getGas(name)(GasBracketHandler.java:24),命中返回数量为 1 的 MCGasStack;不转小写(与 <aspect:> 的 toLowerCase() 不同)。
配方的应用与回滚
addRecipe / removeRecipe 走 modtweaker2/mods/mekanism/util/ 下两个动作类 AddMekanismRecipe.java 与 RemoveMekanismRecipe.java(二者均无 @ZenMethod,不是独立脚本类),最终汇入 可撤销动作基类 的 BaseListAddition / BaseListRemoval。
dump 指令
/minetweaker mekanism [HANDLER]— 全部配方(Commands.java:141-145)/minetweaker gases— 全部气体名(Commands.java:136-140)
两条都裹在 TweakerPlugin.isLoaded("Mekanism")(Commands.java:135)内。LogHelper 在把 GasStack 转成脚本文本时同样用 isLoaded("Mekanism") 守卫(LogHelper.java:80)。