TrainCarts/Signs/Statements [ja]

From BergerHealer Wiki
Revision as of 00:53, 15 July 2026 by Saihou-Heiki (talk | contribs) (Created page with "もしトロッコのオーナーにプレイヤーが指定されていれば、線路の分岐はそのプレイヤーのもとへ向かうように切り替わります。")
Jump to navigation Jump to search
Other languages:

概要

SwitcherサインDetectorサインSkipサインはそれぞれの動作のためにステートメント、つまり条件文を利用します。基本的に三行目と四行目にステートメントを書きますが、場合によっては行数を拡張するため、サインの看板の下にさらに看板を追加することもできます。

ユースケース

列車をワールドの中でさまざまな場所にナビゲーションするとき、経路探索システムが向いています。もしそれぞれのトロッコを何らかの状態で識別したり、条件に応じて動作させるサインを選択したりしたいときには、ステートメントを利用できます。次にいくつかの利用例を掲載します。

空き車両を破壊する

もしトロッコに乗客がいなければ、Destroyサインを起動するようにします。

アイテムの積み込みが終わったら発車する

トロッコにアイテムが積み込まれたとき、Stationサインを起動します。

特定のプレイヤーのもとへ列車を送る

もしトロッコのオーナーにプレイヤーが指定されていれば、線路の分岐はそのプレイヤーのもとへ向かうように切り替わります。

記法

You can put a !-sign in front of the statement to act as a NOT. You can read 'the train' as 'the cart' if [cart] is used on the first line. Statements with the format name@<array> are called array statements and can operate on multiple of a certain property. For example, i@wood operates on the items in the train, and checks if there is wood in there. For multiple items, delimit using a semicolon ( ; ), for example ed@north;south will match trains moving towards north or south only.

Most statements also support operators. Operators are:

  • = equals
  • != not equals
  • >= greater or equal than
  • <= smaller or equal than
  • > greater than
  • < smaller than

To use an operator, append it after the statement. For example, minecarts>=5 will check if there are more than 5 minecarts in the train. trainsize>=5 also counts storage and powered minecarts. You can even use it in arrays. Using i@stone=64 you can check if there are exactly 64 stone in the train. All statements that can be interpreted as an amount have operator support, including counting the amount of mobs in the train: m@cow>5. If no operator is given the default operator >0 is used, or in the case of items, the amount that is specified in front of the item name.

Statement Meaning
passenger The train has a passenger
items The train contains a chest and has items
empty The train has no passenger and no items
fuel The train contains a furnace which has fuel
trainsize The train cart count matches (e.g.: trainsize>=3)
chest_minecart The train has a number of chest minecarts (e.g.: chest_minecart>=1). Also works for hoppers/powered/etc. types.
velocity
speed
The train velocity (movement speed) can be evaluated, or gets if the train is moving
powered The train contains a powered minecart
storage The train contains a storage minecart
minecart The train contains a regular minecart
redstone The sign is powered by redstone
maxspeed Evaluate the maximum speed set
mobenter Checks the mob enter property
playerenter Checks the player enter property
playerexit Checks the player exit property
destination Checks if a destination is set on the train
random Has a 50% chance of turning on
n@<names>
name@<names>
The train name equals one of the names specified
i@<items> The train contains one of the items specified
o@<owner> The train contains this owner
d@<destination> One cart in the train has this destination set
p@<player> The train is occupied by this player
m@<mobnames> The train is occupied by one of these mobs
pi@<items> One of the players has one of the items in his inventory
ph@<items> One of the players has one of the items in his hand
ed@<directions> The minecart is moving into a given direction (switcher: upon entering the sign)
rs@<directions> The sign is powered from one of the directions specified
[email protected] Has a 30% chance of turning on (instead of the default 50%) (1.0 is equivalent to 100%)
anything
t@<tags>
For anything else the plugin checks if the train has it set as a tag

And logic

Since everything is evaluated as an OR, how can you check if the train has two of the same? The easiest method is to invert two statements, toggling a lever which powers an inverted sign. For example:

Signtemplate.png
[cart]
switcher
!o@me
!a
Signtemplate.png
[!cart]
chest in
If not owned by 'me' or not has tag 'a' then not transfer items
If owned by 'me' and has tag 'a' transfer items

If this proves too hard to do (you need to evaluate more than 3 statements), you will have to use a redstone circuit and multiple switcher signs instead.


Tags

For all statements other than in the syntax table above, the name is compared to tags on the train. To find the tags, you can use wildcards to check for multiple tags at once:

 * - has a tag
 !* - has no tags
 *a - has a tag ending with 'a'
 a* - has a tag starting with 'a'
 *a* - has a tag containing 'a'
 *ab*cd* - has a tag containing both 'ab' and 'cd'

For example, the following sign uses tags to switch tracks. If the train contains a tag starting with station it goes left, if it contains a tag containing main it will go right. If it contains both, it will go straight ahead.

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