跳到正文
烈焰甘蔗Wiki

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) 求值并按类型执行动作

关联条目

浏览全部模组