Botania 脚本类

基本信息

属性 值
门控字符串 Botania
插件类 modtweaker2.mods.botania.Botania
注册点 ModTweaker2.java:67
脚本类数 8
@ZenMethod 42
dump 指令 6 条(botania、botaniaBrews、botaniaOrechid、lexiconCategories、lexiconPages、lexiconKnowledgeTypes)

功能

Botania 插件注册 8 个脚本类,覆盖 7 类机器配方 + 辞典。它是 dump 指令最多的插件(6 条)。

Zenscript 类 Java 文件 @ZenMethod
mods.botania.Lexicon handlers/Lexicon.java 22
mods.botania.Apothecary handlers/Apothecary.java 4
mods.botania.ManaInfusion handlers/ManaInfusion.java 4
mods.botania.Orechid handlers/Orechid.java 4
mods.botania.Brew handlers/Brew.java 2
mods.botania.ElvenTrade handlers/ElvenTrade.java 2
mods.botania.PureDaisy handlers/PureDaisy.java 2
mods.botania.RuneAltar handlers/RuneAltar.java 2

配方类(7 个)

除 ManaInfusion 外全部是 addRecipe / removeRecipe 一对:

  • Apothecary(4) — 2 个 addRecipe 重载 + 2 个 removeRecipe 重载
  • ManaInfusion(4) — 三个不同名的添加方法 + 一个 removeRecipe:addInfusion、addAlchemy、addConjuration。这对应魔力注入的三条独立配方表
  • Orechid(4) — addOre(2 个重载)+ removeOre(2 个重载),操作兰花的矿物产出权重
  • Brew / ElvenTrade / PureDaisy / RuneAltar(各 2) — 各一对 addRecipe / removeRecipe

Lexicon(22)

辞典是本插件里最大的类,但它是门面:22 个 @ZenMethod 全部转发给 modtweaker2/mods/botania/lexicon/ 下的 11 个动作类(AddCategory、AddEntry、AddPage、AddRecipeMapping、RemoveCategory、RemoveEntry、RemovePage、RemoveRecipeMapping、SetCategoryIcon、SetCategoryPriority、SetEntryKnowledgeType)。这 11 个类均无 @ZenMethod(实测 grep -c '^\s*@ZenMethod' modtweaker2/mods/botania/lexicon/*.java 合计为 0),只作为 IUndoableAction 实现存在。同一分层模式见 Thaumcraft 的 Research。

按职责分组:

组 方法
分类 addCategory、removeCategory、setCategoryPriority、setCategoryIcon
条目 addEntry、removeEntry、setEntryKnowledgeType
页面 addTextPage、addImagePage、addCraftingPage、addBrewPage、addElvenPage、addEntityPage、addInfusionPage、addAlchemyPage、addConjurationPage、addPetalPage、addRunePage、removePage
配方映射 addRecipeMapping、removeRecipeMapping

辅助静态方法

插件类 Botania 另有两个 public static 工具(Botania.java:29-35):

方法 作用
isSubtile(ItemStack) 判断是否为 ItemBlockSpecialFlower(特殊花)
subtileMatches(ItemStack, ItemStack) 比较两件物品的花卉类型是否相同

它们不是 @ZenMethod,而是给 StackHelper 用的。StackHelper 在两处用 TweakerPlugin.isLoaded("Botania") 守卫后调用它们(StackHelper.java:25、:75),保证 Botania 缺席时不会对缺失类做 instanceof。

dump 指令

6 条全部裹在 TweakerPlugin.isLoaded("Botania")(Commands.java:69)内,注册于 Commands.java:70-96:

指令 行 输出
lexiconCategories :70-73 辞典分类
lexiconPages :74-78 辞典页面(可带 [ENTRY])
botaniaBrews :79-82 魔酿键名
lexiconKnowledgeTypes :83-87 知识类型键名
botaniaOrechid :88-92 兰花权重键名
botania :93-96 全部配方(可带 [HANDLER])

相关条目