精华祭坛

基本信息

属性 值
方块 essence_altar(BlockEssenceAltar),硬度 8.0,抗性 20,发光 0.4
TileEntity TileEntityEssenceAltar,注册名 EssenceAltar(init/BlockList.java:501)
精华种类 4 种(EssenceType 枚举,id 0–3)
动作处理器 3 个(AltarActionHandler / DragonEssenceHandler / FieryEssenceHandler)
数据源 mechanics/essence/(8 个类)

功能

精华祭坛是本模组的核心转化机器。它收集基座(pedestal)与符文物品两类投入,投喂能量后按所选精华种类执行动作。

4 种精华(mechanics/essence/EssenceType.java:16-50)

构造签名 private EssenceType(int id, String essenceName, Class<? extends AltarActionHandler> actionHandlerClass, RuneItem[] itemsNeeded, float[] glyphColors)(:60-61,id 在 :62 才转成 byte)。字段:id、essenceName、essenceNameLowercase、actionHandlerClass、itemsNeeded、glyphColors(:53-58)。

常量 id 名称 动作处理器 符文物品数 glyphColors
INVALID 0 Basic AltarActionHandler 0 {1F, 1F, 1F}(纯白)
DRAGON 1 Dragon DragonEssenceHandler 10 {0.4648F, 0.1914F, 0.5195F}(紫)
FIERY 2 Fiery FieryEssenceHandler 10 {0.5898F, 0.4023F, 0.125F}(橙)
SPECTRAL 3 Spectral AltarActionHandler 8 {0.1875F, 0.1641F, 0.5273F}(蓝)

EssenceType.VALUES = values()(:52)。

各精华的符文物品(itemsNeeded)

精华 物品
DRAGON 末影珍珠、末影之眼、enderman_head、Blocks.end_stone、书、书架、铁栏杆、地图或填充地图(IItemSelector 判定 Items.map / Items.filled_map)、黑曜石、石砖(EssenceType.java:19-33)
FIERY igneous_rock、熔炉、烈焰粉、烈焰棒、岩浆膏、火焰charge、岩浆桶、酿造台、打火石、煤炭块(EssenceType.java:37-41)
SPECTRAL 鱼、鸡肉、红花、绿宝石、恶魂之泪、蜘蛛眼、金锭、鸡蛋(EssenceType.java:45-49)

每个 RuneItem 还带一个音效 key(random.glass / dig.stone / mob.ghast.fireball 等)。DRAGON 的第 3 个符文 enderman_head 带 .setShowcaseItem(new ItemStack(BlockList.enderman_head))(EssenceType.java:21-22),在 GUI 中额外显示展示物品。

数值

基座数量与范围(mechanics/essence/handler/DragonEssenceHandler.java:63-84)

每 20 tick 重算一次基座(updatePedestalTimer = 20,:64-65):

条件 最大基座数 扫描半径
有 EssenceAltarEnhancements.RANGE 强化 12 4
无该强化 8 3

判定式:int maxPedestals = altar.getEnhancements().contains(EssenceAltarEnhancements.RANGE) ? 12 : 8;(:67),int range = maxPedestals == 12 ? 4 : 3;(:68)。扫描范围为 [-range, range]²(:78-79),并对区域内方块 ID 计算哈希避免重复计算(:82、86-89)。

DRAGON 精华的 3 条物品转化配方(DragonEssenceHandler.java:39-49)

输入 输出 精华消耗 cost
Items.brewing_stand enhanced_brewing_stand 20
Items.ender_eye temple_caller 50
ghost_amulet meta 0 ghost_amulet meta 1 8

AltarItemRecipe(ItemStack input, ItemStack output, int cost)(mechanics/essence/handler/dragon/AltarItemRecipe.java:17-23)构造时即在输入物品上建好 NBT 根(ItemUtil.getTagRoot(input, true))。isApplicable 逐项比对物品、伤害值,并在移除 HEE_transform / HEE_enchant / HEE_repair 三个 NBT tag 后要求 NBT 完全为空(AltarItemRecipe.java:28-38)—— 因此带本模组附魔/强化 NBT 的物品不能作为输入。

doTransaction(EntityItem item) 把输出设为该掉落实体的唯一物品,强制 stackSize = 1,并在实体是 EntityItemAltar 时调用 setSparkling()(AltarItemRecipe.java:40-45)。

交互

触发 行为
右键祭坛 打开祭坛 GUI(TileEntityEssenceAltar)
放置基座 祭坛周围 (2r+1)² 格内的方块作为基座被收集;runes 与 repairCounter 每 20 tick 更新
投喂符文 itemsNeeded 中的物品放入相应槽位,播放对应音效
消耗精华 精华从能量槽扣除,AltarItemRecipe.cost 为单位成本
强化 EssenceAltarEnhancements:RANGE(青金石块)/ SPEED(红石块)/ EFFICIENCY(绿宝石块)(mechanics/enhancements/types/EssenceAltarEnhancements.java:15-17)
粒子 C11ParticleAltarOrb(DragonEssenceHandler.java:28)
缓存 mechanics/essence/ItemUseCache.java 加速物品匹配

合成配方

LLL
BNB
OOO
符号 物品
L 皮革(Items.leather)
B 书架(Blocks.bookshelf)
N altar_nexus
O 黑曜石(Blocks.obsidian)

产出 1 个 essence_altar。位置:mechanics/RecipeList.java:36-48。

altar_nexus 自身由 DED(2 钻石夹 1 末影之眼)合成(mechanics/RecipeList.java:23-24)。

相关条目