アクションの発火時に実行 されるシナリオを書いてみる
アクションの発火時に自動的に実行されるシナリオを書いてみましょう。
概要
このチュートリアルでは, トリガ on_action
の使い方を学びます。
これを完了すると, アクションが発火したときに自動で実行されるシナリオを作成できるようになります。 また, 応用として受動的ななシナリオの作成についても学びます。
基本:アクション発火時に実行されるシナリオを書いてみる
ステップ1. 前提となるシナリオを作成する
まずは, 以下のような簡単なシナリオを作成します。
このシナリオは, チュートリアル:最初のシナリオを書いてみる で作成したシナリオと同じものです。
これについての実践的なチュートリアルは, 以下のドキュメントを参照してください。
scenamatica: "0.0.1"
name: "test-hoge-success"
description: "hoge 機能の正常系テスト"
context:
actors:
- name: Actor1
stage:
env: NETHER
on:
- type: manual_dispatch
scenario:
# Actor1 が /hoge を実行する。
- type: execute
action: command_dispatch
command: "/hoge"
sender: Actor1
# fuga というメッセージが(Actor1 に)表示される。
- type: expect
action: message
content: "fuga"
recipient: Actor1
# Actor1 が死ぬ。
- type: expect
action: player_death
target: Actor1
ステップ2. トリガに on_action
を追加する
トリガ on_action
は, そのプラグインが読み込まれたときに自動で発火するトリガです。
これには, プラグインのリロードも含まれます。
引数にはアクション実行期待 (expect
) タイプ
に対応した対象のアクションを指定します。
例として, プレイヤがメッセージ "Hello, World!"
を受信したときにシナリオを実行するようにします。
以下のようにして, on_action
を追加します。
引数には アクション message
を指定します。
scenamatica: "0.0.1"
name: "test-hoge-success"
description: "hoge 機能の正常系テスト"
context:
actors:
- name: Actor1
stage:
env: NETHER
on:
- type: manual_dispatch
- type: on_action
action: message
with:
message: "Hello, World!"
scenario:
# Actor1 が /hoge を実行する。
- type: execute
action: command_dispatch
command: "/hoge"
sender: Actor1
# fuga というメッセージが(Actor1 に)表示される。
- type: expect
action: message
content: "fuga"
recipient: Actor1
# Actor1 が死ぬ。
- type: expect
action: player_death
target: Actor1
ステップ3. 動作を確認する
実際にシナリオを実行してみましょう。
Minecraft サーバーにログインし, コンソールから以下のコマンドを実行します。
シナリオが実行され正常に終了したことを確認したら, このチュートリアルの基本は完了です。お疲れ様でした。
tellraw @a {"text":"Hello, World!"}
応用:受動的なシナリオを書いてみる
前章ではアクション発火時に自動で実行されるシナリオを書く方法について学びました。
では応用として受動的なシナリオを書いてみましょう。 前章のシナリオでは, プラグインの機能の発火をシナリオの一部として記述しました。 しかし, プラグインの機能が発火した際に自動でシナリオを実行したい場合があるかもしれません。
このチュートリアルでは, トリガ on_action
を使って, プラグインの機能が発火した際に自動でシナリオを実行する方法を学びます。
ステップ1. 基本的なシナリオを作成する
まずは, 以下のような簡単なシナリオを作成します。
このシナリオは, チュートリアル:最初のシナリオを書いてみるで作成したシナリオと同じものです。
これについての実践的なチュートリアルは, 以下のドキュメントを参照してください。
scenamatica: "0.0.1"
name: "test-hoge-success"
description: "hoge 機能の正常系テスト"
context:
actors:
- name: Actor1
stage:
env: NETHER
on:
- type: manual_dispatch
scenario:
# Actor1 が /hoge を実行する。
- type: execute
action: command_dispatch
command: "/hoge"
sender: Actor1
# fuga というメッセージが(Actor1 に)表示される。
- type: expect
action: message
content: "fuga"
recipient: Actor1
# Actor1 が死ぬ。
- type: expect
action: player_death
target: Actor1
ステップ2. プラグインの発火条件を確認する
プラグインの機能の発火でシナリオを開始するために, まずはその発火条件を確認します。
今回の例を見ると, プラグインの機能は /hoge
というコマンドで発火することがわかります。
前節で確認したシナリオを見てみると, 以下の部分が該当します。
#...
scenario:
# Actor1 が /hoge を実行する。
- type: execute
action: command_dispatch
command: "/hoge"
sender: Actor1
#...
ステップ3. トリガにプラグインの機能の発火条件を追加する
トリガ on_action
を使って, プラグインの機能が発火した際に自動でシナリオを実行するようにします。
今回はトリガとして アクション command_dispatch
を使用するため, そのシナリオのコンテキストである Actor1
は使用できません。
そのため, この定義を一般化するために, sender
の指定を削除するか, アクタではない他のプレイヤを指定する必要があります。
今回は後者の方法を採用します。
以下のようにして, トリガに on_action
を追加します。
また, メインシナリオに記述されている, プラグインの機能を発火させるシナリオを削除します。
scenamatica: "0.0.1"
name: "test-hoge-success"
description: "hoge 機能の正常系テスト"
context:
actors:
- name: Actor1
stage:
env: NETHER
on:
- type: manual_dispatch
- type: on_action
action: command_dispatch
with:
command: "/hoge"
scenario:
# fuga というメッセージが表示される。
- type: expect
action: message
content: "fuga"
# プレイヤが死ぬ。
- type: expect
action: player_death
ステップ4. 動作を確認する
実際にシナリオを実行してみましょう。
Minecraft サーバーにログインし, 以下のコマンドを実行します。
# 注:実際にはあなたのプラグインのコマンドを実行してください。
/hoge
シナリオが実行され正常に終了したことを確認したら, このチュートリアルは完了です。お疲れ様でした。
他の応用的なチュートリアルを読むにはこちらを参照してください。
シナリオファイルの完全な構文についてはこちらを参照してください。