0
1

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-09-02

動作環境

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

「不動の杖」の使い方

杖をメインハンドに持った状態で右クリックすると以下のように範囲内の相手を動けないようにします。
牛のモーションがないので少し分かり辛いですが強制的に座らせて足止めしています。
足止め発動

その状態で以下のように「ダッシュ+スニーク」を実行すると術中の相手を浮遊させる事ができます。
浮遊発動

「ダッシュ+スニーク」で発動する範囲発動型の処理は以下ページの「スウィープロッド(範囲攻撃)」で実装したものをそのまま使っています。

そしてある程度の高さになってからもう一度杖を使うと浮遊状態が解除されますので、以下のように落下ダメージで倒す事ができます。
浮遊解除

攻撃力は鉄の剣並みなので、以下のように足止めした状態でも比較的サクっと倒せます。
攻撃

足止め(右クリック)と浮遊発動(ダッシュ+スニーク)の射程距離は共に10ブロックですが、浮遊解除の射程制限はありません。

「不動の杖」の取得

socket-manager環境のビヘイビアパック/リソースパックなどのアドオンパックを適用しておけば、以下の方法で「不動の杖」が手に入ります。

クラフトする場合

▼必要な素材
▼必要な素材

▼レシピパターン
  

構成アイテムの詳細とカスタムレシピの作り方は以下のページでご紹介しています。

ショップで購入する場合

以下のショップで購入できます。

コマンドで取得する場合

以下はワールドオーナーやシステム組み込み用としてコマンドで取得する方法です。


あとはsocket-managerでWebsocketサーバーを起動後、マインクラフトからの接続が完了すれば「不動の杖」を含めた各種コンテンツが使えるようになります。

socket-managerの導入方法やアドオンパックの所在については以下のページでご紹介していますのでご興味のある方はご覧ください。

アドオンパックの適用方法については以下のページでご紹介しています。

サーバー側の実装

右クリック時の足止め

今まで実装したアイテムと同様に今回の実装でも"ItemUsed"というサブスクライブイベントを使用しています。
また、以下の実装で使っていたモブの搭乗が可能なダミーエンティティをコントロールしています。

足止め発動時の処理の流れは以下の通りです。

1)召喚済みのダミーエンティティを消去(デスポーン)
タグをセレクターとしてkillコマンドを発行
2)モブが搭乗可能なダミーエンティティを足元へ召喚
サーバーから10ブロックの範囲指定でsummonコマンドを発行
3)召喚したダミーエンティティへタグを付与
サーバーからtagコマンドを発行

1)のデスポーンの処理には以下の2つの意味があります。

ダミーエンティティの数の制限
範囲指定なしでデスポーンする事によりワールド上で一定以上増えないようにする
浮遊解除
範囲指定なしでデスポーンする事により浮遊中の相手の浮遊状態を解除できる

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

「ダッシュ+スニーク」時の浮遊発動

「スウィープロッド(範囲攻撃)」の実装で使っていた"PlayerTravelled"というサブスクライブイベントを使用しています。
travelMethodの値(7:スニーク、8:ダッシュ)をみてそのイベントがスニークなのかダッシュなのかを判断できるようになっています。

ダミーエンティティには物理法則を適用していないので、上記のイベントを受信した時にdamageコマンドでノックバックを発動させる事により、慣性による浮遊状態が働いています。


サブスクライブイベントの処理内容については以下の記事をご覧ください。

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

おわりに

今回のタグ付けはプレイヤーのマインクラフトアカウント名を使って付与しているので、基本的に他のプレイヤーと被る事はありませんが、同時使用で発動領域が被る時には先勝ち発動となります。
ダミーエンティティをデスポーンする時もユニークタグをセレクターとしているので、他のプレイヤーが使用中にデスポーンさせられる心配もありません。
発動領域が被って先勝ち発動したとしても足止めや浮遊の目的で使用するので大きな問題になる事はないでしょう。

カスタムアイテムの作り方は以下のページでご紹介しています。

0
1
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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?