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)。
相关条目
- Diffusion Core - 注入配方辅料
- Coalescence Core - 注入配方辅料
- ThE 研究体系 - 本方块所属的研究节点
- ThE 配置项 -
Essentia Provider开关