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-26

はじめに

以下のように階段ブロックの淵をスニーク移動すると階段に座れます。
階段ブロック(サクラ)

座れるブロックは設定ファイルで変更できるようにしています。
現在の設定で座れるブロックは以下の通り。

※特に基準はありませんが、こちら側の任意で現在5ブロックだけ選抜登録しています。

例えば座れるブロックを追加すると以下のようにガラスブロックでも座れます。
階段ブロック(ガラス)

動作環境

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

socket-manager環境の導入手順は以下のページをご覧ください。

サーバー側の実装

今回はスニークイベントが発生した時に送信される"PlayerTravelled"というサブスクライブイベントを使用しています。
受信したイベントデータのtravelMethodというパラメータ値(=7:スニーク)をみて判断しています。

サブスクライブイベントの処理内容については以下のページでご紹介しています。

今回はスニーク移動を検知した際にプレイヤーの真下にあるブロックが座れるブロックなのかどうかを判断するため、以下のフレームワーク上のマインクラフト設定ファイルをご用意しています。

setting/minecraft.php
return [
    
    
    
    /**
     * @var array 座れる階段ブロック(複数指定可能)
     */
    'stairs_ids' =>
    [
        'stone_stairs',     // 丸石
        'oak_stairs',       // オーク
        'cherry_stairs',    // サクラ
        'brick_stairs',     // レンガ
        'quartz_stairs'     // クォーツ
    ]
];

スニーク検知後の処理の流れは以下の通りです。

1)プレイヤー真下のブロックが対象のブロックかを検査
サーバーからtestforblockコマンドを発行して検査
2)プレイヤーが搭乗可能なダミーエンティティを召喚
サーバーからsummonコマンドを発行
3)プレイヤーをダミーエンティティに搭乗させる
サーバーからrideコマンドを発行
testforblockコマンドのレスポンス
{
    "body":
    {
        "matches":true(一致) or false(不一致),
        "position":{"x":<X座標>,"y":<Y座標>,"z":<Z座標>},
        "statusCode":<数字>,
        "statusMessage":<文字列>
    },
    "header":
    {
        "messagePurpose":<文字列>,
        "requestId":<UUID>,
        "version":<数字>
    }
}

上記のmatchesの項目を参照して一致しているかどうかを判断しています。

ダミーエンティティの作り方は以下のページでご紹介しています。

実装内容の詳細は他のコンテンツも含めて以下のページでご紹介していますのでご興味のある方はご覧ください。

おわりに

testforblock発行時のレスポンスの内容は以下ページの機能を使って確認しています。

今回の実装ではダミーエンティティを追加しているためリソースパックを使用しています。
リソースパックの適用方法については以下のページをご覧ください。

今回の実装内容は以下の実装で応用しています。

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?