精华祭坛
基本信息
| 属性 | 值 |
|---|---|
| 方块 | 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)。