Routing System
[!WARNING] 已订正(1.7.10 树) 本条目不属于「多方块」。1.7.10 的路由系统完全由单方块组件构成: 路由探测器、路由道岔、路由轨道套件各自是独立方块,没有
MultiBlockPattern。 原条目列出的条件集合(ANY/EMPTY/CART/FUEL…)与RoutingLogic.java中实际存在的内部类集合不一致,已按源码重写。 证据:RoutingLogic.java:164-440、TrackRouting.java、DetectorRouting.java、TileSwitchRouting.java。
基本信息
| 属性 | 值 |
|---|---|
| 维度归属 | 单方块系统(非多方块) |
| 逻辑核心 | mods.railcraft.common.blocks.signals.RoutingLogic |
| 规则载体 | Routing Table(书写之书) |
| 锁 | Routing Ticket |
| 正则符号 | REGEX_SYMBOL = "\\?"(条件值支持 ? 通配正则) |
组件
| 组件 | 类 | 说明 |
|---|---|---|
| 路由探测器 | DetectorRouting |
读取矿车上的路由表并匹配规则 |
| 路由道岔 | TileSwitchRouting |
按路由结果切换道岔方向 |
| 路由轨道套件 | TrackRouting |
贴在已装备的轨道上,存储路由表 |
条件类型(RoutingLogic 内部类)
| 内部类 | 说明 |
|---|---|
NOT |
取反 |
AND |
逻辑与 |
OR |
逻辑或 |
DestCondition |
目的地匹配 |
OwnerCondition |
车主(所有者)匹配 |
NameCondition |
矿车名匹配 |
TypeCondition |
矿车类型匹配 |
RefuelCondition |
需要补燃料(锅炉车) |
RiddenCondition |
矿车正载客 |
RidingCondition |
矿车载有其他矿车 |
RedstoneCondition |
红石信号状态 |
ColorCondition |
轨道涂装颜色匹配 |
LocoCondition |
本车(机车)条件 |
Condition 为抽象基类,ParsedCondition 为带参数的条件基类(RoutingLogic.java:164-170)。
规则表由 buildLogic(LinkedList<String>) 解析,解析失败抛 RoutingLogicException。
规则格式
规则写在 Routing Table 的书本 NBT 里,逐行为 条件 -> 动作:
DestCondition(StationA) -> GO_NORTH
OwnerCondition(Alice) -> GO_EAST
RefuelCondition() -> HOLD
具体语法由
RoutingLogic.buildLogic()解析,原条目给出的DEST=StationA -> GO_NORTH/DEFAULT -> GO_SOUTH写法未经源码核实,不要照抄。
使用
- 放置路由探测器,或给轨道装备路由套件。
- 放入 Routing Table 并写入规则。
- 用 Routing Ticket 上锁,防止他人改写。
- 矿车抵达时系统按规则切换道岔。
配置
RailcraftConfig 的 ops.only 项可限制只有 OP 能编辑路由表。