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)。

相关条目