Alchemical Grate

基本信息

属性 值
注册名 alchgrate:alchgrate
TileEntity com.technicianlp.chestgrate.TileChestGrate
硬度 3.0
爆炸抗性 17.0
材质 Material.iron
脚步声 Block.soundTypeMetal
创造标签 thaumcraft.common.Thaumcraft.tabTC
实体方块 否(func_149730_j / isOpaqueCube 均返回 false,但拥有 TileEntity)
比较器输出 是(hasComparatorInputOverride 返回 true)

功能

Alchemical Grate(炼金栅格)是 Thaumcraft 4 的附属方块,放置在 高级炼金炉(Advanced Alchemy Furnace, meta 0)的正上方时,会周期性地将自身 5 格槽位内的物品投入炉中处理。本质上是 Hungry Chest 与 Grate(排水口)的组合:物品既存在于容器内,又可以"漏"到下方的炉子。

主要行为:

  • 每个游戏 tick(updateEntity)检测下方是否为 TileAlchemyFurnaceAdvanced,若否则静默不工作
  • 每 tick 最多向下方炉子输送 1 个物品,输送成功时:
    • 调用 furnace.process(stack) —— 真正由炉子决定是否接收该物品
    • 若返回 true:从对应槽位 decrStackSize(i, 1) 减一
    • 播放 thaumcraft:bubble 音效(音量 0.2,音高 1.0 + rand × 0.4)
  • 槽位过滤:仅接受带 Aspect(魔法要素)的物品 —— isItemValidForSlot 通过 ThaumcraftCraftingManager.getObjectTags + getBonusTags 判断 AspectList 是否非空
  • 比较器:按 Container.calcRedstoneFromInventory 返回红石强度(与箱子/漏斗一致)
  • 破坏时全部物品按伪随机偏移弹出为 EntityItem
  • 不可关闭:失去原 Hungry Chest 关闭功能(参见 Research 描述 lost some capacity and the ability to close)

摆放要求

  • 朝向:无朝向概念
  • 邻接要求:必须正下方为 meta=0 的高级炼金炉(ConfigBlocks.blockAlchemyFurnace 且 metadata == 0)
  • 放置时通过 canPlaceBlockAt 校验 validPosition(world, x, y, z)
  • 邻接变化:onNeighborBlockChange 检测下方若不再满足条件,自毁并掉落自身(dropBlockAsItem + setBlockToAir)
  • 边界:碰撞箱与选中箱均为 (0, 0.8125, 0) → (1, 1, 1)(仅顶部一小片);手持预览时 setBlockBoundsForItemRender 调整为中心对称版本

数值

数值名 值
槽位数 5
单槽上限 64
每 tick 输送量 至多 1 个物品
比较器输出范围 0–15(按占用槽位比例)
Aspect 过滤 必须非空(任何带欧拉、秘法、虚空、火焰等要素的物品)

交互

触发 行为
左键 无特殊行为
右键 打开 Grate GUI(GUI ID 0,5 个输入槽 + 玩家背包 + 快捷栏,使用 hopper.png 背景)
比较器读取 返回 0–15 红石强度(按 Container.calcRedstoneFromInventory)
邻接方块变化(下方法不再合法) 自动破坏 + 掉落自身
手动破坏 5 槽内容按高斯偏移散落为 EntityItem
命名 放置时若 ItemStack 有 display name,写入 TileChestGrate.customName 并以 container.alchgrate 显示

合成配方

注册为 Thaumcraft 的 ShapedArcaneRecipe(在 Main.postInit 中调用 ThaumcraftApi.addArcaneCraftingRecipe):

TGT
VSV
TCT
字符 物品
T 神秘螺丝(screwThaumium,来自 Thaumcraft 物品字典)
G 投掷器(Botania:openCrate,若加载 Botania;否则回退到原版 Blocks.dropper)
V 虚空板(plateVoid,来自 Thaumcraft 物品字典)
S 灵魂碎片(ConfigItems.itemShard meta 6)
C 饥饿箱(ConfigBlocks.blockChestHungry)

所需 Aspects:Aspect.ORDER 50 + Aspect.ENTROPY 50 + Aspect.EARTH 25。

GUI 布局

由 ContainerChestGrate + GuiContainerChestGrate 实现:

  • 5 个 Grate 输入槽:x = 44 + i × 18,y = 20(与漏斗布局一致)
  • 玩家背包 3×9:y = 51 起
  • 玩家快捷栏:y = 109
  • 背景纹理:textures/gui/container/hopper.png(复用漏斗的 GUI 皮肤)
  • 标题文本由 GuiContainerChestGrate.drawGuiContainerForegroundLayer 绘制:8, 6 处显示 Grate 标题(颜色 0x404040),8, ySize-96+2 处显示玩家背包标题

第三方模组集成

  • Thaumcraft 4:必需前置 required-after:Thaumcraft@[4.2.3.5,)。方块使用 Thaumcraft.tabTC 作为创造标签;制造配方走 ThaumcraftApi.addArcaneCraftingRecipe;研究走 ResearchItem(id ALCHGRATE),隐藏(setConcealed),父研究为 ADVALCHEMYFURNACE、HUNGRYCHEST、GRATE,归属分类 ARTIFICE。研究 Aspects:VOID 1 + AURA 1 + MAGIC 1 + ORDER 1 + ENTROPY 1,复杂度 4。
  • Botania:可选。若加载则合成配方中的 G 槽位使用 Botania:openCrate;否则回退到原版 Blocks.dropper。通过 Loader.isModLoaded("Botania") 检测。

相关条目