Essentia Provider

基本信息

属性 值
注册名 thaumicenergistics:essentia.provider(内部名 ThEStrings.Block_EssentiaProvider,BlockEnum.java:18)
方块类 thaumicenergistics.common.blocks.BlockEssentiaProvider(父类 AbstractBlockProviderBase)
TileEntity thaumicenergistics.common.tiles.TileEssentiaProvider(TileID thaumicenergistics.TileEssentiaProvider)
材质 Material.iron(BlockEssentiaProvider.java:25)
硬度 1.0f(BlockEssentiaProvider.java:28)
爆炸抗性 源码中 setResistance 全仓 0 次调用(grep -rn 'setResistance' src/main/java --include=*.java → 0 命中),无显式数值可引用
脚步声 Block.soundTypeMetal(BlockEssentiaProvider.java:31)
创造标签 thaumicenergistics.ThETab(AbstractBlockProviderBase.java:28)
显示名 Essentia Provider(en_US.lang:thaumicenergistics.block.essentia.provider.name)

功能

Essentia Provider(要素供应器)把 AE2 网络中的物品装填进 ThE 的要素网络,充当 Thaumcraft 要素供给的入口。它是 AE2 侧的「液罐」,与只能往外抽要素的 Infusion Provider 方向相反。

核心行为(TileEssentiaProvider.java,父类 TileProviderBase 继承 AENetworkTile):

  • 继承 appeng.tile.AENetworkTile —— 需要接在 ME 网络上才能工作,同时实现 IColorableTile 与 ICraftingRequester(abstraction/TileProviderBase.java:61-62)
  • 实现 thaumcraft.api.aspects.IEssentiaTransport,供其他要素设备通过 **suction(吸取)**方式抽取要素
  • 实现 ThE 自己的 IEssentiaTransportWithSimulate,额外支持「模拟」注入(不实际扣除的试算),由 addEssentia(Aspect, int, ForgeDirection, Actionable) 处理(TileEssentiaProvider.java:102)
  • 通过 monitor.injectItems(AEEssentiaStack, Actionable, machineSource) 把要素注入 AE2 侧的要素仓库(TileEssentiaProvider.java:109-111)
  • 按面朝向决定抽取方向:setupProvider(metaData) 由 createNewTileEntity(World, int) 传入 meta 决定绑定朝向(BlockEssentiaProvider.java:35-44)
  • 智能查找邻居需求要素:getNeighborWantedAspect(ForgeDirection) 检查 6 个相邻方块,若是 IEssentiaTransport 则读取其 getSuctionType(oppositeSide) 作为本机要生产的要素(TileEssentiaProvider.java:66-83)
  • 供 AE2 请求器发配方:ICraftingRequester
  • 电源变化时通知监视者:onPowerChange(boolean) 遍历 blockWatchers 调用 IEssentiaProviderWatcher.onProviderPowerChange(TileEssentiaProvider.java:82-90)
  • 掉电时清空注入中的要素(onPowerChange 续段)
  • ComputerCraft:ThE 通过 FMLInterModComms 向 ThaumicTinkerer 发送 AddCCBlacklist 并传入 TileEssentiaProvider.class.getName(),把本方块排除出 TT 的 CC 外设支持(IntegrationCore.java:49),避免与 ThE 自身的 CC 模块重复

数值

数值名 值 来源
空闲 AE 耗电 3.0 AE/t getIdlePowerusage() 返回 3.0(TileEssentiaProvider.java:52)
空闲 tick 间隔 15 tick TICK_RATE_IDLE = 15(TileEssentiaProvider.java:32)
紧急 tick 间隔 5 tick TICK_RATE_URGENT = 5(同上),实际注入后 addEssentia 立即切到紧急速率(:118)
硬度 1.0 BlockEssentiaProvider.java:28
爆炸抗性 源码未调用 setResistance(0 命中) —

交互

触发 行为
放置 meta 决定朝向,随后由 setupProvider(metaData) 绑定(BlockEssentiaProvider.java:40)
要素设备相邻 若相邻方块实现 IEssentiaTransport,本方块自动切换为生产对方所 getSuctionType 的要素
外部注入 addEssentia(Aspect, int, ForgeDirection) 返回被拒绝的数量;Actionable.SIMULATE 只试算不注入
电源断开 onPowerChange(false) 通知全部 IEssentiaProviderWatcher 并停止注入
ComputerCraft 被 ThaumicTinkerer 的 AddCCBlacklist 显式排除

合成配方

Essentia Provider 不是普通工作台配方,而是注入配方(Infusion),注册于 FeatureEssentiaProvider.registerCrafting:

ThaumcraftApi.addInfusionCraftingRecipe(
    researchKey, EssentiaProvider, 3,   // 注入等级 3
    essentiaProviderList,               // MECHANISM 64 + MAGIC 32 + ORDER 32 + EXCHANGE 16
    cdi.MEInterface,                    // 中心物品:AE2 ME 接口
    recipeEssentiaProvider);            // 8 格辅料

8 格辅料(FeatureEssentiaProvider.java:60-61):

位置 物品
上排 FilterTube、SalisMundus、CoalescenceCore、WaterShard
下排 FilterTube、SalisMundus、DiffusionCore、WaterShard

研究(FeatureEssentiaProvider.java:76-97):id thaumicenergistics.TEESSPROV,研究要素 MECHANISM 3 + MAGIC 5 + ORDER 3 + SENSES 7,复杂度 COMPLEXITY_LARGE(=3),图标为本方块,含 2 页(说明页 + 配方页),设 setConcealed() 隐藏并 setParentsHidden("INFUSION", "TUBEFILTER")。父 feature 为 FeatureEssentiaIOBuses。

可用性受配置 craft_Essentia_Provider(默认 true)控制(ConfigurationHandler.java:116-120)。

相关条目