Detector(检测器单元)
基本信息
| 属性 | 值 |
|---|---|
| 注册名 | StevesCarts:BlockDetector |
| 枚举常量 | DETECTOR_UNIT(ModBlocks.java:36) |
| TileEntity | TileEntityDetector(注册名 detector) |
| 物品形态 | ItemBlockDetector(ModBlocks.java:36) |
| 材质 | Material.circuits |
| 硬度 | 2.0 |
| 爆炸抗性 | 源码从未调用 setResistance → 无自定义值 |
| GUI ID | 6 |
| metadata | 0-4 = 5 种类型,bit 3(值 8)= 激活状态标志 |
⚠️ 审计订正
- 原文注册名
StevesCarts:Detector错。注册字符串实参为"BlockDetector"(ModBlocks.java:36、ModBlocks.java:81),正确为StevesCarts:BlockDetector。- 原文「信号强度 15(满强度)」错。本方块不发出原版红石信号:
BlockDetector与BlockContainerBase均无isProvidingPower/getWeakPower/getIndirectPowerLevel覆写。它影响的是矿车。- 原文「激活需要红石信号输入(可选)」「可以连接到比较器输出信号强度」错,源码中无红石进出。
- 原文「爆炸抗性 10.0」错,
setResistance仅对STORAGE调用(ModBlocks.java:99)。- 原文遗漏 5 种 metadata 类型与 bit-8 状态位,已补上。
是否多方块
不是多方块结构。单方块 + TileEntity。
5 种类型(Helpers/DetectorType.java:15-17)
| meta | 源码常量 | 可与矿车交互 | 行为 |
|---|---|---|---|
| 0 | NORMAL |
是 | 通用检测器管理器 |
| 1 | UNIT |
否 | 检测单元(供其它检测器合成用) |
| 2 | STOP |
是 | 检测到即 cart.releaseCart() 停车 |
| 3 | JUNCTION |
是 | 切换正上方 Advanced Detector Rail 的状态(DetectorType.java:49-52) |
| 4 | REDSTONE |
否 | 在 GUI 里配置红石输出侧(DetectorType.java:66-79,6 个侧 + 顶/底) |
功能
内部是一棵逻辑树,用 GUI 里的运算节点对矿车求值:
public void handleCart(MinecartModular cart) {
boolean truthValue = evaluate(cart, 0);
int meta = worldObj.getBlockMetadata(xCoord, yCoord, zCoord);
boolean isOn = (meta & 8) != 0;
if (truthValue != isOn) { ... 置/清 bit 3 ... }
if (truthValue) { activeTimer = 20; }
}
来源:TileEntityDetector.java:274-296
- 交互入口是上方 Advanced Detector Rail 的
onMinecartPass→detector.handleCart(cart)(BlockRailAdvDetector.java:57-75) - 只有
canInteractWithCart()为真的类型才会被轨道调用 - 激活后
activeTimer = 20(20 tick 窗口) - 状态写入 metadata 的 bit 3,不写 NBT
交互
| 触发 | 行为 |
|---|---|
| 右键(未潜行) | 打开 GUI(ID 6,BlockDetector.java:78)编辑逻辑树 |
| 潜行右键 | 忽略(BlockDetector.java:69-71) |
| 矿车经过(需 Advanced Detector Rail) | 求值并按类型执行动作 |
关联条目
- Cart Assembler - 矿车组装台
- Cargo Manager - 货物管理器
- Liquid Manager - 液体管理器
- Distributor - 分流器