TrainCarts/Signs/Statements [ja]

From BergerHealer Wiki
Revision as of 03:23, 23 July 2026 by Saihou-Heiki (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
Other languages:

概要

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

ユースケース

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

空き車両を破壊する

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

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

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

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

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

記法

ビックリマークをステートメントの頭に入れると、NOT――つまり否定――として動作します。もし一行目に[cart]を利用する場合は、動作・判定の対象が列車の代わりに個別のトロッコになります。name@<array>形式のステートメントは配列ステートメントと呼ばれ、特定のプロパティの複数の要素を判定することができます。たとえば、i@woodは列車の中のアイテムを覗いて、そこに木材が含まれているかどうかを調べます。複数のアイテムを利用したいときには、セミコロンで区切ることが可能です。たとえばed@north;southと書くと、北もしくは南に向かう列車のみを対象にします。

多くのステートメントは演算子を利用します。演算子は次のとおりです。

  • =:イコール(〜と等しい)
  • !=:ノットイコール(〜ではない)
  • >=:〜以上
  • <=:〜以下
  • >:より大きい
  • <:より小さい

演算子を使う際は、ステートメントの末尾に付け加えて使用します。たとえばminecarts>=5とすると、列車の中に通常のトロッコが五個以上含まれているか、という意味になります。trainsize>=5とすると、チェストつきやかまどつきのトロッコも含めて数えます。ほか、演算子は配列ステートメントにおいても利用でき、i@stone=64とすると、列車の中にちょうど一スタックの石が含まれているかをチェックします。トロッコに乗っているモブをチェックするm@cow>5など、数量を利用するすべてのステートメントは演算子が利用できます。もし演算子が書かれていない場合は、デフォルトで>0――ゼロより大きい――がついているものとしてみなされます。ただしアイテムの場合は、アイテム名の頭につけられた数量が使われます。

ステートメント 意味
passenger 列車に乗客がいるか。
items 列車がチェストを含み、中にアイテムがあるか。
empty 列車には乗客もアイテムもない。
fuel 列車には燃料の入ったかまどがあるか。
trainsize 列車に含まれるトロッコの数。たとえばtrainsize>=3などです。
chest_minecart 列車に含まれるチェスト付きトロッコの数。たとえばchest_minecart>=1など。同じように、hopperやpoweredなどのトロッコのタイプでも動作します。
velocity
speed
列車の移動速度の数値や、移動しているかどうか。
powered 列車にかまどつきトロッコがあるか。
storage 列車にチェスト付きトロッコがあるか。
minecart 列車に普通のトロッコがあるか。
redstone このサインに信号が供給されているか。
maxspeed 最大速度。
mobenter mobenterのプロパティ。
playerenter playerenterのプロパティ。
playerexit playerexitのプロパティ。
destination 列車に目的地が設定されているかどうか。
random 50%の確率。
n@<names>
name@<names>
列車名が指定された複数の名前のどれかにマッチする。
i@<items> 列車が指定された複数のアイテムのどれかを格納している。
o@<owner> 列車に所有者が乗っている。
d@<destination> 列車のトロッコのひとつがその目的地を設定している。
p@<player> 列車がそのプレイヤーに乗られている。
m@<mobnames> 列車がそれらのモブのどれかに乗られている。
pi@<items> プレイヤーの一人が、インベントリにそのアイテムのひとつを持っている。
ph@<items> プレイヤーが手にそのアイテムのひとつを持っている。
ed@<directions> 列車がその方向に動いている。Switcherサインの場合、列車がサインを起動した際の向きを参照します。
rs@<directions> サインの看板がその方向からレッドストーン信号を受けている。
[email protected] 30%の起動確率。デフォルトは0.5(50%)。1.0は100%を表します。
anything
t@<tags>
それ以外のことについては、列車にタグがあるかどうかをプラグインが確認します。

AND演算

通常はすべてOR演算で評価されますが、両方の条件を満たしているか調べたい場合は、二つのステートメントを反転させ、反転したサインに信号を出力すると実装できます。

Signtemplate.png
[cart]
switcher
!o@me
!a
Signtemplate.png
[!cart]
chest in
もしmeに所有されていない、またはタグaを持っていない場合、アイテムを輸送しない
もしmeに所有されており、かつタグaを持っている場合はアイテムを輸送します。

もし三つ以上のステートメントを評価したい場合など、この方法では難しいのであれば、複数のSwitcherとレッドストーン回路を組み合わせて用いて実装する必要があります。


タグ

上記の記法にかかれていないステートメントは、すべて列車のタグと比較して評価が行われます。タグを検索する際は、ワイルドカードを利用することができます。

 * - タグを所有している。
 !* - タグを所有していない。
 *a - タグ名の最後がaで終わるタグを持っている。
 a* - タグ名の最初がaで始まるタグを持っている。
 *a* - タグ名のどこかにaが含まれるタグを持っている。
 *ab*cd* - タグ名のどこかにabとcdが含まれるタグを持っている。

たとえば、次のサインは線路を切り替える時にタグを利用します。もしstationから始まるタグを所有しているなら左へ、mainを含むタグを持っていれば右へ切り替わります。もしどちらも持っていれば、まっすぐ進みます。

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