Cable Breaker(方块交互器)
基本信息
| 属性 | 值 |
|---|---|
| modid | StevesFactoryManager |
| FML 注册键 | StevesFactoryManager:BlockCableBreakerName(CABLE_BREAKER_NAME_TAG,ModBlocks.java:51,154) |
| 未本地化名 | sfm.BlockCableBreaker(BlockCableBreaker.java:27) |
| 显示名 | 方块交互器 / Block Gate |
| TileEntity | TileEntityBreaker(BlockCableBreaker.java:33) |
| 方块类 | BlockCableBreaker extends BlockContainer(BlockCableBreaker.java:21) |
| 硬度 | 1.2(setHardness(1.2F),BlockCableBreaker.java:28) |
| 爆炸抗性 | 10.0 — 源码未设置,Block 默认值 |
| 接口 | IInventory, IPacketBlock(TileEntityBreaker.java:33) |
| metadata | 6 面朝向(determineOrientation) |
功能
Breaker 破坏它正前方那一格的方块,并把掉落物朝 placeDirection 的反面丢出,同时通过 IInventory 让 Manager 读取。
方向分工(两个独立量,别混):
| 量 | 来源 | 作用 |
|---|---|---|
getBlockMetadata() % 6 |
放置时 determineOrientation |
破坏面——决定破坏哪一格(TileEntityBreaker.java:46-54) |
placeDirection |
右键点击的面 | 投放面——VALID_DIRECTIONS[placeDirection].getOpposite()(TileEntityBreaker.java:72-74) |
破坏用 FakePlayer 模拟(名 [SFM_PLAYER],UUID 由名字派生,TileEntityBreaker.java:35-37),先 useItemRightClick(给工具机会),若结果与原物品相同再 activateBlockOrUseItem 真正挖(TileEntityBreaker.java:99-115)。
不导通电缆:类头注释明确 “This is indeed not a subclass to the cable, you can’t relay signals through this block”(BlockCableBreaker.java:20)。
摆放要求
- 可在任何位置放置
- 破坏面 = 放置时玩家面向;不可旋转(源码无旋转方法),只能改投放面
交互
| 触发 | 行为 |
|---|---|
| 右键某一面 | 把 placeDirection 设为该面(投放朝其反面) |
| 潜行 + 右键 | 同上,但取该面的对面:ForgeDirection.VALID_DIRECTIONS[side].getOpposite().ordinal()(BlockCableBreaker.java:94-96) |
isBlocked() 为真时右键 |
忽略(上一次破坏未完成) |
合成配方
无序:工厂线缆 + 铁镐 + 发射器(ModBlocks.java:250-254)
审计订正
- 语义写反(严重):原文把"右键/潜行+右键"描述成「改变破坏方向」→ 错误。右键改的是
placeDirection(投放方向),破坏面由 metadata 固定、源码无法通过交互改变。已按placeDirection/getBlockMetadata()拆开写清,证据 TileEntityBreaker.java:46-54,72-74 与 BlockCableBreaker.java:93-105。 - 遗漏限制:原文完全没提
isBlocked()保护——上一次破坏尚未完成时右键被忽略(BlockCableBreaker.java:101-105)。已补。 - "改变破坏方向(反向)"表述不准:潜行时是取被点面对面作为投放面,不是"反向切换已有值"。已订正。
- modid / 注册名错:原文
stevesfactorymanager:blockCableBreaker→StevesFactoryManager;传入实参CABLE_BREAKER_NAME_TAG = "BlockCableBreakerName"(ModBlocks.java:51,154)。 - 补正:原文未写"不可旋转"、未写合成配方、未写"不导通电缆"(BlockCableBreaker.java:20)。原文"使用 FakePlayer(模拟玩家)来破坏方块"✓ 正确。
- 原文"硬度 1.2 / 爆炸抗性 10.0"数值正确,爆炸抗性已标注为
Block默认值。
相关条目
- Cable Intake - 物品拾取
- Cable Cluster - 组件聚合方块