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]) |
相关条目
- 可撤销动作基类 -
lexicon/下 11 个动作对象的实现来源 - 指令列表 - 6 条 dump 指令的注册位置
- Thaumcraft 脚本类 - 同为门面 + 动作分层的对照