TrainCarts/控制牌/语句

From BergerHealer Wiki
Jump to navigation Jump to search
This page is a translated version of the page TrainCarts/Signs/Statements and the translation is 100% complete.
Other languages:
English • ‎中文(中国大陆)‎

介绍

转辙器检测器跳过牌都可使用语句条件判断来分别切换轨道、切换拉杆或执行其他类型的操作。语句通常用在控制牌的第三行和第四行。你还可以在控制牌下方继续添加其他控制牌,来扩展更多语句。

使用示例

对于管理世界的列车路线,你一定得试试路线查找。如果你需要根据某些属性对矿车进行分类,并有条件地激活某些控制牌或以某种方式发车,那么你需要使用语句。以下是一些示例。

移除空矿车

如果矿车上没有乘客,则启用摧毁器。

列车存有物品时启动列车

列车存有物品时启用车站。

向特定玩家发车

如果列车的车主是某个指定的玩家,则切换轨道通向该玩家。

语法

你可以在语句前面输入“!”来表示否定。如果控制牌第一行设置为 [cart],则会将列车看作为一辆辆矿车。数组语句格式为 name@<数组>,可以对多个属性进行操作。例如,i@wood 操作列车中的物品,并检测其中是否是木头。对于多个物品,需使用(;)分隔,例如 ed@north;south 仅匹配向北或向南行驶的列车。

大多数语句支持运算符。运算符包括:

  • = 等于
  • != 不等于
  • >= 大于等于
  • <= 小于等于
  • > 大于
  • < 小于

运算符需要输入在语句的后面。比如,minecarts>=5 将检测列车中是否有超过 5 辆矿车。trainsize>=5 还计算运输矿车和动力矿车。你还可以将其组成数组。使用 i@stone=64 可以检测列车中是否正好有 1 组石头。所有可以解析为数量的语句都支持运算符,包括计算列车中的生物数量:m@cow>5。如果没有指定运算符,则使用默认运算符 >0,或者在物品的情况下,使用物品名称前面指定的数量。

语句 释义
passenger 列车上有乘客。
items 列车上有箱子,且装有物品。
empty 列车上没有乘客和物品。
fuel 列车上有个装有燃料的熔炉。
trainsize 列车车厢数量(例如:trainsize>=3)。
chest_minecart 列车中运输矿车的数量(例如:chest_minecart>=1),这也适用于漏斗矿车、动力矿车等类型。
velocity
speed
评估列车的速度(移动速度),或判断列车是否正在移动。
powered 列车包含动力矿车。
storage 列车包含储存类型的矿车。
minecart 列车包含普通矿车。
redstone 控制牌被红石激活时触发。
maxspeed 评估列车的最大速度。
mobenter 评估生物进入属性。
playerenter 评估玩家进入属性。
playerexit 评估玩家离开属性。
destination 评估列车是否设置了目的地。
random 有 50% 几率启用。
n@<名称>
name@<名称>
列车名称等于以下指定名称之一。
i@<物品> 列车载有以下物品之一。
o@<车主> 列车包含以下车主之一。
d@<目的地> 列车设置了以下目的地之一。
p@<玩家> 列车被以下玩家之一占用。
m@<生物名称> 列车被以下生物之一占用。
pi@<物品> 其中一名玩家的背包中有以下物品之一。
ph@<物品> 其中一名玩家的手上有以下物品之一。
ed@<方向> 矿车正在向指定的方向之一移动(转辙器:进入时)。
rs@<方向> 控制牌由以下指定的方向之一激活。
[email protected] 有 30% 的几率启用(而不是默认的 50%;1.0 相当于 100%)。
anything
t@<标签>
对于任何其他事情,插件都会检测列车是否将其设置为标签。

和逻辑

由于一切都以“或”的形式进行评估,那该如何检测列车上是否有两个相同的语句呢?最简单的方法是反转两个语句,切换拉杆来激活反转的控制牌。例如:

Signtemplate.png
[cart]
switcher
!o@me
!a
Signtemplate.png
[!cart]
chest in
如果 'me' 不是车主或没有 'a' 标签,则转移物品。
如果 'me' 是车主,且有 'a' 标签,则转移物品。

如果这较难做到(你需要评估超过 3 个语句),你必须使用红石和多个转辙器。


标签

对于除上述的语法表外的其他所有语句,名称都会与列车上的标签进行比较。要查找标签,你可以使用通配符一次检测多个标签:

 * - 有标签。
 !* - 没有标签。
 *a - 有以 'a' 为结尾的标签。
 a* - 有以 'a' 为开头的标签。
 *a* - 包含 'a' 的标签。
 *ab*cd* - 包含 'ab' 和 'cd' 的标签。

例如,以下控制牌通过标签来切换轨道。如果列车包含以 station 为开头的标签,则向左行驶;如果列车包含以 main 为开头的标签,则向右行驶;如果列车同时包含这两个标签,则直行。

Signtemplate.png
[!train]
switcher
station*
*main*