第三者による記述のため、情報に誤りがある場合があります。誤りがあった場合はコメントでお知らせ頂けると幸いです。
こちらも参照:https://github.com/Kai-Z-JP/ATSAssistMod/blob/1.7.9/document/ATSAssistMod1.4.0_Manual.pdf
ATSAssistMod、通称「ATSA」は、Kaiz_JP氏によって開発された、RealTrainModの保安装置を簡単に構築できるようになるModです。
基本的な速度制限のほか、TASC(定位置停止支援装置)、ATO(自動列車運転装置)、ATACS(移動閉塞)の構築が可能となっており、他のシステムと組み合わせることで運転補佐から完全自動運転まで実現可能な高い汎用性を持っています。
Cauldron系サーバー(ThermosやMohist等)の場合、
tileentities.yml
内のskip-tileentity-ticks
をfalse
に変更する必要があります。true
の場合、TASC等が作動しない・ズレることがあります。
GitHub:https://github.com/Kai-Z-JP/ATSAssistMod/tree/master
ATSAssistModでは2種類のブロック、1種類のアイテムが追加されます。
バールを持つと、ブロックからビーコンビームが射出されます。場所がわかりやすい!
保安装置ブロック、IFTTTブロックはまとめて「地上子」と呼ばれることもあります。
保安装置ブロック / IFTTTブロックが反応する位置は車両の中心です。
車両の中心直下、3×3×3ブロック以内にあるブロックに反応します。
別に指定がない場合、先頭車両のみに反応します。
線路直下、高さ3ブロック以内に設置してください。
ブロックを右クリックすると次のような画面が開きます
1つのブロックに対して1つの機能を割り当てることができます。
車両の速度を制限します。なお、速度制限は上書きではなく、上乗せされていきます。
速度制限は、かけられている制限の中で一番低い速度が採用されます。
その場、もしくは指定の場所から車両の速度を制限します。
車両にかかった速度制限のうち、一番古いものを解除します。
車両にかかった速度制限を全て解除します。
指定した停車位置に車両を自動で停車させます。(距離が短いとさすがにオーバーランします)
停車位置予告1つだけでは精度は低いですが、停車位置手前などに停車距離補正を置くと精度が高くなります。
また、カーブ駅では停車距離補正を設置することを推奨します。
指定した停車位置に車両を自動で停車させます。
距離の精度が低いため、「停車距離補正」の併用を推奨します。
車両が保安装置ブロックを通過すると、その車両のTASC制御を強制的に終了します。
なお、TASCは停車時に自動で終了するため、停車位置直下への設置は不要です。
折り返し駅などの、同一線路を双方向で使うが、片方だけにTASCを効かせたい時に有効です。
停車位置までの距離を補正します。停車位置手前やカーブ駅に設置することを推奨します。
この機能は、車両にTASC制御が働いている場合にのみしか動きません。
車両が停車している(0km/hである)ことを検知して、両数分の信号強度のレッドストーン信号を連続出力します。
出力されたレッドストーン信号はコンパレーターで取り出すことができます。
指定した目標速度(正確には目標速度-2km/h)まで車両を自動で加速させ、目標速度を維持(目標速度-10km/h以下になった時、目標速度まで加速)させます。
なお、目標速度を下げても自動で減速しないため、減速させる場合、ATCとの併用が必要です。
TASCや列車データ変更と組み合わせることで、いわゆる無人自動運転というものになります。
逆転ハンドルが前でないと動きません。
車両を目標速度まで自動で加速させ、目標速度で維持させます。レッドストーン連動をオンにしない場合、常にATO信号が出されます。
車両のATO制御を終了させます。
車両の目標速度を変更します。
元より低い速度を指定しても車両は減速せずに惰行します。減速させる場合、ATCの併用が必要です。
車両の保安装置を強制変更します。
2段目の目盛りで変更先の保安装置を指定します。なお、保安装置は以下の6種類のうち1つを指定できます。
車両の状態を変更します。
動作させるためにはレッドストーン信号入力が必要です。
変更できるパラメーターは以下の通りです。
線路直下、高さ3ブロック以内に設置してください。
ブロックを右クリックすると次のような画面が出ます
IF
THEN
それぞれ (+) を押すことで項目を追加することができます
1つに対して複数のIF
とTHEN
を割り当てることができます。
連続で実行:指定されたものを、条件を満たしている間、常に実行する。(リピート設定のコマンドブロックのような感じ)
一度だけ実行:指定されたものを、条件を満たした瞬間に一回だけ実行する。
後述するTHEN
が動作する条件を指定します。条件は複数登録することができます。
通常、IF
に登録された条件が全て満たされなければTHEN
が実行されませんが、AnyMatch
にチェックを入れると、IFに設定された条件のうち、1つでも満たせば動くようになります。
IF
で設定できる条件は以下の通りです。
Input:「ON / OFF」
説明…いらないよね?
動作モード:「全車 / 先頭車 / 最後尾 / レール内」
全車 : 編成内いずれかの車両の中央がブロック直上にいるときに満たす
先頭車 : 編成の先頭車の車両の中央がブロック直上にいるときに満たす
最後尾 : 編成の最後尾の車両の中央がブロックの直上にいるときに満たす
レール内: ブロック直上のレール(マーカーの始端から終端まで)のどこかに車両の中央があるときに満たす
Cars : 「>= / < / <= / != / == / >」「整数値」
>= : 編成の両数が
整数値
以上のとき
< : 編成の両数が整数値
未満のとき
<= : 編成の両数が整数値
以下のとき
!= : 編成の両数が整数値
以外のとき
== : 編成の両数が整数値
と同じとき
> : 編成の両数が整数値
をこえるとき
整数値
には負の数も入力できちゃいます。使い道はあるのだろうか…
Speed:「>= / <=」「整数値」
>= : 編成の両数が
整数値
以上のとき
<= : 編成の両数が整数値
以下のとき
速度も整数値
に負の数を入力できます。使い道は(ry
DataType:「Boolean / Double / Int / String / Vec / Hex」
Key : 自身で指定
Value : DataTypeによって異なる
直上の車両のDataMapと照らし合わせて、指定した条件が満たされているかどうかを判別します。
Train Heading:「NORTH / EAST / SOUTH / WEST」
直上の車両が指定した方角に向かって走っているときに条件を満たします。
Pre-Release 1.8.0-rc.1
以降かつVer1.7.10限定の機能です
始点:「X座標」「Y座標」「Z座標」
終点:「X座標」「Y座標」「Z座標」
始点座標から終点座標までの立体空間の中にエンティティがいるときに条件を満たします。
座標は小数点以下切り捨て(x.0に統一)されています。
そのため、「始点:X0
,Y50
,Z0
/ 終点:X0
,Y51
,Z50
」の場合、X0.0
,Y50.0~51.0
,Z0.0~50.0
にいるエンティティを検知することになるので、X軸は、0.0という軸上にエンティティがいないと検知しません。
もし、X方向の幅1ブロックで検知したい場合、始点:X0
,~~ / 終点:X1
(もしくはX-1
)~~ のように「始点に±1」しなければいけないということです。
前述したIF
が満たされたときの動作を設定します。動作は複数設定することができます。なお、THEN
に登録された動作は、原則「一部だけ実行する」ことはできません。IF
が満たされたとき、すべて同時に実行されます。
より柔軟な動作をさせたいならば、JavaScriptを活用するのが良いでしょう。
THEN
で設定できる条件は以下の通りです。
両数出力:「無効/有効」(検知した編成の両数に対応した信号レベルを出力する。1両→レベル1、2両→レベル2)
出力レベル:「整数値」
本来RS信号のレベルは0~15だが、出力レベル
にはこの範囲外の整数も入力できてしまう。
一度のみ再生:「チェックボックス」
音声名:「文字列」
半径:「整数値」
X:「整数値」
Y:「整数値」
Z:「整数値」
音声名
、半径
、X
、Y
、Z
は/playsound
コマンドと同じように入力します。なお、半径には小数をいれられません。
音声は一度だけ流れます。Question No.1!
バグなのか、
一度のみ再生
にチェックを入れることはできません。
一度のみ実行:「チェックボックス」
DisplayName:「文字列」
コマンド:「文字列」
設定されたコマンドを連続で実行します。
一度のみ実行
にチェックを入れると、IF
を満たしたとき、連続で実行せずに1度だけ実行します。
DisplayName
はIFTTTの設定画面上に表示するラベル名を設定します。
コマンド
はコマンドブロックと同じ形式で入力できます。
一度のみ実行:「チェックボックス」
X:「整数値」
Y:「整数値」
Z:「整数値」
id:「整数値」
meta:「整数値」
指定された座標に指定されたブロックを連続で設置します。
一度のみ実行
にチェックを入れると、IF
を満たしたとき、連続で設置せずに1度だけ設置します。
id
は数字IDで入力。例えば、RSブロックなら152
を入れる。
DataType:「Boolean / Double / Int / String / Vec / Hex」
Key : 自身で指定
Value : DataTypeによって異なる
直上の車両のDataMapを変更します。
SignalLevel:「整数値」
指定したレベルのRTM信号を直上の車両に対して発します。
Script Name:「文字列」
Script Text:「文字列」
Script Name
はIFTTTの設定画面上に表示するラベル名を設定します。
Script Text
実行するスクリプトを設定します。
Release 1.7.9
ではJavaScriptを登録できないバグがあります。(Pre-Release 1.8.0-rc.1
より修正済)
〈お役立ちLink〉
放送パーツを組み合わせて流すスクリプトの例
運転席に乗って右クリックすると次のような画面が出ます。
何もないと「運転モード:手動」表示
ATO・TASCが作動していると「運転モード:TASC/ATO」表示
チェックを入れると、ATO、TASCを無効にします。
この機能が有効になっている間、ATO、TASCは赤文字になります。
チェックを入れると、ATO、TASC、ATC(Limit)の表示を運転台HUDから消します。
見えないだけで、ちゃんとATOなどの機能は働きます
A1. ブロックは線路直下3ブロック以内に置いてありますか?ブロックは線路直下3x3x3の範囲に無いと反応しません。また、ブロックは原則車両の中心に反応します。台車には反応しません。
A2. マルチプレイの場合、ラグによって検知できなかった場合もあります。サーバーのconfigをいじること[1]で多少改善させることができます。
A. 出力をコンパレーターで受け取っていますか?それらブロックからのRS信号出力は、コンパレーターでないと受け取ることができません。
A. レバーサー(逆転ハンドル)を一回「中」にして「前」に戻すだけ!
A. 仕様です。
A. 速度制限予告と対になるように制限速度解除は設置していますか?制限速度解除は一番古い制限速度のみを解除するので、速度制限をかけた回数分、速度制限解除を設置する必要があります。また、速度制限一斉解除を設置することで、かかっている速度制限を全て解除することもできます。
A. TASC開始地点をより手前にすると良いでしょう。
A. 「停車位置予告」1つだけでは精度が悪いので、「停車距離補正」を活用しましょう。5m前、10m前、100m前のように複数置くと良いでしょう。
A. レバーサー(逆転ハンドル)は「前」にしていますか? ATOは「前」でないと有効になりません。
A. 保安装置ブロック「出発信号」のレッドストーン連動にチェックを入れましょう。発車するタイミングでRS信号入力をすることでATOを起動させることができます。
A. ATO定速運転では、目標速度に対して-10km/hになったら再加速します。
A. ATOの目標速度変更では、加速はしてくれますが、減速はしません。「速度制限予告」を利用して減速させる必要があります。
A. 進路上のレールすべてをチャンクローダーでロードさせてください。
A. ブロックに対してRS信号を入力してください。
A. 検知範囲はちゃんと設定されていますか?検知範囲の座標は小数点以下切り捨てのため、端のブロックだけ検知してくれない場合は、元の数値に±1するとよいでしょう。
A. 原則できません。ですが、JavaScriptを使えば条件分岐などを設定することができます。
A. Release 1.7.9ではJava Scriptを登録できないバグが起こっています。Pre-Release 1.8.0-rc.1で修正されています。
A. ATSAのGitHub[2]にissueを立てましょう。ここにではなく、ATSAのGitHubにです。
Cauldron系サーバー(ThermosやMohist等)の場合、tileentities.yml
内のskip-tileentity-ticks
をfalse
に変更する ↩︎