Thaumcraft 脚本类

基本信息

属性 值
门控字符串 Thaumcraft
插件类 modtweaker2.mods.thaumcraft.Thaumcraft
注册点 ModTweaker2.java:78
脚本类数 7(+2 个由括号暴露的接口)
@ZenMethod 63
括号前缀 <aspect:NAME>
dump 指令 research、aspectList

功能

Thaumcraft 是 ModTweaker 桥接面最大的插件之一,覆盖配方、要素、研究、传送扭曲与战利品五条线。

Zenscript 类 Java 文件 @ZenMethod
mods.thaumcraft.Research handlers/Research.java 32
mods.thaumcraft.Warp handlers/Warp.java 7
mods.thaumcraft.Aspects handlers/Aspects.java 6
mods.thaumcraft.Loot handlers/Loot.java 6
mods.thaumcraft.Infusion handlers/Infusion.java 5
mods.thaumcraft.Arcane handlers/Arcane.java 3
mods.thaumcraft.Crucible handlers/Crucible.java 2

63 = 61(上表 7 个已注册类)+ 2(IAspectStack 的 @ZenMethod,见 括号类)。

各类要点

Research(32)

最大的单一脚本类,除添加/删除研究外还暴露一整套属性 setter。按用途分组:

组 方法
分类 addTab(2 个重载)、removeTab
研究条目 addResearch(3 个重载)、removeResearch、orphanResearch、moveResearch、hasResearched
页面 addPage、addCraftingPage、addCruciblePage、addArcanePage、addInfusionPage、addEnchantmentPage、clearPages
前置 addPrereq、clearPrereqs、addSibling、clearSiblings
属性 setRound、setSpikey、setStub、setSecondary、setVirtual、setAutoUnlock、setConcealed、setHidden、setAspects、setComplexity
配方页 refreshResearchRecipe

这些 setter 与 modtweaker2/mods/thaumcraft/research/ 下 15 个 IUndoableAction 实现一一对应——research/ 目录里的类均无 @ZenMethod(实测 grep -c '^\s*@ZenMethod' modtweaker2/mods/thaumcraft/research/*.java 合计为 0),它们只是被 Research 门面驱动的动作对象,不是独立的脚本类。同样的门面/动作分层也出现在 Botania 的 Lexicon(22 个方法对应 lexicon/ 下 11 个无 @ZenMethod 的动作类)。

Warp(7)

addToResearch、addToItem、removeFromResearch、removeFromItem、removeAll、removeAllResearch、removeAllItems——直接操作扭曲传送的注册表。该表由 ThaumcraftHelper 的静态块通过反射抓取:ReflectionHelper.getStaticObject(ThaumcraftApi.class, "warpMap")(ThaumcraftHelper.java:27),存入 public static HashMap<Object, Integer> warpList(ThaumcraftHelper.java:24)。抓取失败会被空 catch 静默吞掉,见 反射与日志助手。

Aspects(6)

add、set、remove 操作要素定义;addEntity、setEntity、removeEntity 操作「实体/物品带哪些要素」的映射。

Loot(6)

战利品品级三档各一对增删:addCommonLoot / removeCommonLoot、addUncommonLoot / removeUncommonLoot、addRareLoot / removeRareLoot。

Infusion(5)

addRecipe(2 个重载)、removeRecipe,外加 addEnchantment / removeEnchant。其配方类型是自定义的 modtweaker2/mods/thaumcraft/recipe/MTInfusionRecipe.java(该文件无 @ZenMethod)。

Arcane(3)与 Crucible(2)

Arcane 提供 addShaped / addShapeless / removeRecipe;Crucible 提供 addRecipe / removeRecipe。

要素括号

<aspect:terra> 之类的字面量由 AspectBracketHandler 解析(Thaumcraft.java:16 注册)。查表走 Aspect.getAspect(name.toLowerCase())(AspectBracketHandler.java:30),命中返回数量为 1 的 MCAspectStack。IAspectStack 带 3 个 @ZenGetter(definition / name / displayName)和 1 个 MUL 运算符(IAspectStack.java:15、:18、:21、:24),使 <aspect:terra> * 10 成立。

dump 指令

  • /minetweaker research — 输出全部分类名;带 [CATEGORY] 参数则输出该分类下的研究键(Commands.java:175-180)
  • /minetweaker aspectList — 输出注册到实体与物品上的要素(Commands.java:181-185)

两条都裹在 TweakerPlugin.isLoaded("Thaumcraft")(Commands.java:174)内。

相关条目