末影莲祭坛 API(EnderLocusRegistry)

基本信息

属性 值
包路径 com.fouristhenumber.utilitiesinexcess.api
文件 EnderLocusRegistry.java(注册表)、EnderLocusRecipe.java(单条配方)
访问方式 单例 EnderLocusRegistry.instance()
本模组自带配方数 13 条(RecipeLoader.java:1529-1705)
供第三方 mod 扩展 是——MineTweaker 兼容层已实际使用

功能

EnderLocusRegistry 是末影莲祭坛(ender_locus)方块的独立配方注册表,与工作台配方完全分离。祭坛方块的 TileEntity(TileEntityEnderLocus)在玩家放入物品时调用 EnderLocusRegistry.instance().findRecipe(inv, consume) 匹配并产出结果(TileEntityEnderLocus.java:79, 116)。

它使用 fastutil 的 ObjectArrayList 与 Char2ObjectOpenHashMap(it.unimi.dsi.fastutil),因此 API 的所有集合返回类型都带 fastutil 语义。

公共方法

方法 签名要点 说明
instance() static EnderLocusRegistry 单例访问(私有构造,REGISTRY 静态字段)
addRecipe(ItemStack, String[], Object...) 3×3 模板 + 符号映射 便捷重载,见下
addRecipe(EnderLocusRecipe) 直接加成品配方 用于代码构造的复杂配方
removeRecipes(Predicate<EnderLocusRecipe>) 返回被移除的 List 批量移除(MineTweaker 撤销依赖此方法)
removeRecipe(EnderLocusRecipe) void 移除单条
findRecipe(InventoryCrafting, boolean consume) 返回 ItemStack 或 null 匹配并可选消耗材料
getAllRecipes() 不可变列表 枚举全部配方

模板语法

addRecipe(output, pattern, inputs...) 要求 pattern 是恰好 3 个长度 3 的字符串——否则立即抛 IllegalArgumentException("Ender Locus recipe pattern must be 3 strings each with 3 characters")(EnderLocusRegistry.java 的 verifyPattern)。inputs 按 char, Object 成对传入,步长 2。

支持的材料类型(addRecipe 的 instanceof 链,按此顺序匹配):

传入类型 处理方式
Item new ItemStack(item)
Block new ItemStack(block, 1, OreDictionary.WILDCARD_VALUE)(任意 meta)
ItemStack stack.copy()
DisableableItemStack 取 stack.theStack
ModItems item.newItemStack()
ModBlocks block.newItemStack()
String 视为物品字典名,展开为 OreDictionary.getOres(ore) 的全部堆叠

注意 String 走物品字典:传入 "ingotIron" 会匹配所有注册了该 ore dict 名的物品堆,而非字面字符串。这是与其他模组配方 API 相同的约定。

数值

项目 值
模板尺寸 固定 3×3(verifyPattern 强制)
输入槽位 固定 9 个(inputArray = new Object[9])
本模组自带配方 13
removeRecipes 初始容量 3(new ArrayList<>(3))
消耗行为 findRecipe(inv, true) 时对 9 个槽位各 decrStackSize(i, 1)

交互 — 已知使用方

使用方 位置 用途
TileEntityEnderLocus TileEntityEnderLocus.java:79, 116 祭坛方块的配方匹配与产出
EnderLocusRecipeHandler(NEI) compat/nei/EnderLocusRecipeHandler.java:32, 51, 67, 81 在 NEI 中展示祭坛配方(4 处遍历)
EnderLocusCraftTweakerSupport compat/crafttweaker/EnderLocusCraftTweakerSupport.java:102, 113, 146, 166 MineTweaker 脚本 API:添加与移除祭坛配方,撤销时用 removeRecipes

MineTweaker 支持类在 CommonProxy.preInit 中通过 MineTweakerAPI.registerClass(EnderLocusCraftTweakerSupport.class) 注册(CommonProxy.java:132-134),仅当 Mods.CraftTweaker.isLoaded()(modid MineTweaker3)时。

合成配方

本模组通过 RecipeLoader.loadEnderLocusRecipes() 向该注册表添加 13 条祭坛配方,受 RecipeConfig.enableEnderLocusOreRecipes 等开关控制(默认 true)。这些不是工作台配方,因此不计入 147 条总数中的有序/无序部分——详见配方总览。

相关条目