1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【マインクラフト(統合版)】Websocketサーバーを使ってブラウザ入力によるコマンド実行を実装してみました

Last updated at Posted at 2024-08-13

はじめに

以下のチャット画面の最下部にコマンド入力フォームを設置して、Webブラウザで入力したコマンドをマインクラフト側で実行できるようにしました。

上の画面はReact版のものですが、jQuery版にも同じように実装しています。

動作環境

プラットフォーム
Windows10
マインクラフト(統合版)
Windows Edition v1.21.2
ブラウザ
Chrome v127.0.6533.120
socket-manager
v1.14.0
言語
PHP v8.2.4(v8.1.0以降)

使い方

折角なのでWebsocketサーバーでのみ使える以下の隠しコマンドを使ってみます。

agent create
プレイヤー専用のエージェントを呼び出します。
agent tp <coordinates>
エージェントを指定した座標へテレポートします。

まずは以下のようにコマンド実行先にあたるマインクラフトユーザーの名前を入力します。

今回の場合「マイクラー」という名前がマインクラフト側から接続しているユーザー名です。

そして以下のようにエージェントの作成コマンドを実行してみます。
エージェントの作成

次にエージェントを移動させてみます。
エージェントの移動

マインクラフトの画面でリアルタイムに連携されている事がわかると思います。

マインクラフトからのレスポンスも反映していますので、例えばsummonコマンドをsammonと打ち間違えていたとしても以下のようにエラーの内容が赤字で表示されるようにしています。
エラー箇所の表示

おわりに

動作確認をするためにはWebsocketサーバーをあらかじめ起動した状態で、Webブラウザとマインクラフトからの接続を完了しておく必要があります。
接続手順や画面の起動方法については以下のページでご紹介しています。

ここで入力されたコマンドはそのままマインクラフト上で実行されますが、実行者がエンティティである事を前提としている一部のコマンド(例えばexecuteコマンド)では使えないものがあるので注意が必要です。

そんなわけでWebsocketサーバー側の実装では全てのコマンドが使えるわけではありませんが、独自の隠しコマンドも存在するため、どのコマンドが利用可能で隠しコマンドがどのように利用できるのかを、この機能を使って調査していく事ができます。

以下の実装を確認する際にも利用しています。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?