跳到正文
烈焰甘蔗Wiki

Steve’s Factory Manager

Git commit: d746b59 | 源码:/Users/evlos/a/mirror/Steve-s-Factory-Manager/(175 个 java 文件) modid(@Mod 实测): StevesFactoryManager — StevesFactoryManager.java:19 目标版本:Minecraft 1.7.10(cpw.mods.fml + setBlockName/setHardness(F) 等 1.7 API)

Steve’s Factory Manager(简称 SFM)是一个纯物流编程模组:用一个 Manager 方块承载变量与流程组件, 通过"电缆"方块组成的网络找到周围任意可连接的 TileEntity(容器 / 流体罐 / 红石节点 / 告示牌等),再在 GUI 中编排取放逻辑。

⚠️ 本版本没有多方块机器

175 个 java 文件中不存在 multiblock / BlockController / formation 结构类,也没有任何工作方块。 所有 12 个方块都是单方块。所谓"Cable Cluster"是一个方块内聚合多个组件元素(TileEntityCluster 把 每个 element 的坐标直接设成自身坐标),不是多格结构 —— 见 Cable Cluster。

方块(12 个,全部已覆盖)

核心组件

  • Manager - 工厂管理器,中央编程方块,硬度 2.0

传输电缆

  • Cable - 工厂线缆,硬度 0.4,唯一能导通网络的基础方块
  • Cable Relay - 物品/流体中转站(普通 + 高级)
  • Cable Cluster - 集线器,硬度 2.0,单方块组件聚合

红石组件

工具组件

装饰/功能组件

除 Cable 与高级 Cable Cluster 外,其余 10 个方块都不能导通电缆——多个类头有明确注释 (BlockCableRelay.java:12、BlockCableOutput.java:15、BlockCableBreaker.java:20、BlockCableIntake.java:6、BlockCableSign.java:18)。

物品

本 mod GameRegistry.registerItem 调用数为 0,没有任何独立注册物品。 4 个方块使用了自定义 ItemBlock 子类(随 registerBlock 一起注册,均 setMaxDamage(0)、堆叠 64):

ItemBlock 绑定方块 变体
ItemRelay Cable Relay meta 0 / 8(setMaxDamage(0),ItemRelay.java:14)
ItemCluster Cable Cluster meta 0 / 8,NBT 携带组件列表(ItemCluster.java:23-24)
ItemIntake Cable Intake meta 0 / 8(ItemIntake.java:14)
ItemCamouflage Cable Camouflages meta 0/1/2(ItemCamouflage.java:14)

非物品条目

  • ConnectionBlock - 不是注册物品,是被 IContainerSelection 描述的普通 Java 类,保留在 item/ 仅因历史链接

GUI(2 个)

GuiHandler(GuiHandler.java:10-37)只对实现 ITileEntityInterface 的 TileEntity 响应,且全部走 GUI ID 0:

GUI Container 打开方式
GuiManager ContainerManager 右键 Manager(BlockManager.java:43)
GuiRelay ContainerRelay 右键高级 Cable Relay(BlockCableRelay.java:51)

系统架构

TileEntity 层次(11 个注册,ModBlocks.java:100-185)

  • TileEntityManager - 主控制器(ITileEntityInterface,有 GUI)
  • TileEntityCluster - 组件聚合体(内部持有多个 TileEntityClusterElement)
  • TileEntityClusterElement - 可入簇组件基类
    • TileEntityRelay(IInventory, ISidedInventory, IFluidHandler, ITileEntityInterface, IWrenchable)
    • TileEntityIntake(IInventory)
    • TileEntityCamouflage
    • TileEntityOutput(IRedstoneNode)
    • TileEntityInput(IRedstoneNode, ISystemListener, ITriggerNode)
    • TileEntityBUD(ISystemListener, ITriggerNode)
    • TileEntityBreaker(IInventory, IPacketBlock)
    • TileEntityCreative(IInventory, IFluidHandler)
    • TileEntitySignUpdater

关键常量

常量 值 证据
MAX_CABLE_LENGTH 128 TileEntityManager.java:244
MAX_CONNECTED_INVENTORIES 1023 TileEntityManager.java:246
MAX_COMPONENT_AMOUNT 511 TileEntityManager.java:245
MAX_CHAIN_LENGTH(Relay) 512 TileEntityRelay.java:47
NBT_CURRENT_PROTOCOL_VERSION 12 ModBlocks.java:14

连接类型(ConnectionBlockType)

类型 匹配类
INVENTORY IInventory
TANK IFluidHandler
EMITTER TileEntityOutput
RECEIVER TileEntityInput
NODE IRedstoneNode(group;同时命中 EMITTER/RECEIVER)
BUD TileEntityBUD
CAMOUFLAGE TileEntityCamouflage
SIGN TileEntitySignUpdater

跨 mod 依赖

依赖 方式 用途 证据
IC2 @Optional 软依赖 IWrenchable 扳手旋转/移除 TileEntityRelay.java:28,31,45
StevesAddons Loader.isModLoaded 接管 ConnectionBlockType.isInstance()、tooltip 修正、BlockCableCluster.createNewTileEntity Compat.java:7;ConnectionBlock.java:35,78;BlockCableCluster.java:128
WAILA IMC register 拓扑 tooltip provider StevesFactoryManager.java:59;waila/Provider.java
NEI 运行时检测 GuiAntiNEI 抑制 NEI 覆盖 interfaces/GuiAntiNEI.java
DreamCraft Loader.isModLoaded 装了就跳过全部 vanilla 配方 ModBlocks.java:190,295
浏览全部模组