【統合版アドオン】part-4│スラッシュ対応、自分だけのコマンドを作ろう!

スポンサーリンク

初めに

どうも餅わらびすとです。この記事では究極の機能、ScriptAPI(gametestとも言う)でのスラッシュ対応カスタムコマンドを作る方法について解説します。

実はカスタムコマンド自体はスラッシュ対応でなくともchatSendイベントを登録することで出来るのですが、これではプレイヤーのチャットからしか実行できません。しかもbetaバージョンにしかありません。
それでは少し不便なので、定版で使え、更にそのアドオンさえ入れれば別アドオンのmcfunctionなどでも実行できる機能を今回は紹介します。

「まずScriptAPIについて知らない」、という方はこちらの、「【統合版アドオン】part-1│究極の機能、ScriptAPIを徹底解説!」で基本的な使い方を解説しているので、見ていない方は見てください。ここでは、リンクの記事の内容を理解していることを前提にしているので、記事を見た後に来るのを推奨します。

この記事が役に立つものになれば嬉しいです。

~今回の説明に使用させて頂いたサイト~
https://jaylydev.github.io/scriptapi-docs/#documentation

必要なクラスのインポート

始める前に前提として、カスタムコマンドを作るのに必要なクラスを@minecraft/serverモジュールからインポートします。

import { system } from "@minecraft/server";

今回使用するのはsystemです。

早速作る

といっても、書くことはこの、「【統合版アドオン】part-2│ScriptAPIで世界のイベントを自在にコントロールする方法」の、system版みたいな感じで書けます。

import { system } from "@minecraft/server";

system.afterEvents.scriptEventReceive.subscribe(ev => {
//処理
});

流れとしては、systemにある、afterEventsプロパティにある、scriptEventReceiveプロパティにある、subscribeメソッドを実行しているというものです。

%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88-2024-03-28-215145.png

上にあるように、前回説明したような感じでevにはScriptEventCommandMessageAfterEventが入ります。

その中には、以下のようにプロパティがいくつかあります。

%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88-2024-03-28-215238.png

この機能でのコマンドは、このような構成になっています。

/scriptevent /*id*/ /*message*/

scripteventは固定で、
idは、名前空間:識別子として設定できます。名前空間と識別子は自由です。
messageは、他にも渡す情報があるときに追加できるものです。

これに沿って、例えば足し算をするscripteventをつくるとすると、

system.afterEvents.scriptEventReceive.subscribe(ev => {
const number = ev.message.split(" ");
if (ev.id === "math:plus") ev.sourceEntity.sendMessage(`${number[0]} + ${number[1]} = ${Number(number[0]) + Number(number[1])}`);
});

という具合で書けます。.split()はStringに標準である、引数の文字列で分けた配列を作るメソッドです。
Number()も、標準にある文字列を数値にする関数です。

このコードで、/scriptevent math:plus 1 2 を実行するとチャットに 1 + 2 = 3という結果が送信されます。

この機能を活用してあなただけの便利コマンドを作りましょう!

最後に

ここまで読んでくださりありがとうございました!役に立ったと思ってもらえたら嬉しいです。

なにか質問があるときはこちらのディスコードから受け付けています。初心者も大歓迎!答えられない時は答えられないですがそこまで高度でなければおそらく。

それでは良いアドオンライフを!

※投稿記事に含まれるファイルやリンクにより発生した被害についてクラフターズコロニーは責任を取りません
投稿通報

コメント

コメント通報