【マインクラフト（統合版）】Websocketサーバーと連携できる「暴風の杖」を作ってみました

# はじめに

以前実装した「風の杖」は、ウインドチャージをそのままカスタムエンティティ化しただけでしたが、今回は破壊力を上げてブロックも壊せるものにしてみました。

https://qiita.com/glasses_seven/items/3135aab823428dcc708e/

前回と同じように重力はかかりますので、発射した方向によって延々と空中を彷徨うような事もありません。

![通常サイズの発射](https://socket-manager.github.io/document/minecraft-contents/img/wind-rod-revised/normal-shoot.gif "通常サイズの発射")

「風の杖」のページでご紹介した補充アイテム要らずの無限撃ちを実装しているので、サバイバルモードでも弾切れの心配はありません。


# 動作環境

<dl>
    <dt>プラットフォーム</dt>
    <dd>Windows10</dd>
    <dt>マインクラフト（統合版）</dt>
    <dd>Bedrock Edition v1.21.60</dd>
    <dt>socket-manager</dt>
    <dd>v1.14.1</dd>
    <dt>言語</dt>
    <dd>PHP v8.2.4（v8.1.0以降）</dd>
</dl>


# サイズ切替

今回はWebsocketサーバーと連携する事で、「スウィープロッド」を実装した時に使っていた「ダッシュ＋スニーク」を実行して、ウインドチャージのサイズ切替を可能にしています。

https://qiita.com/glasses_seven/items/3c86bf82b5e7b09cfc79/

### 切替時のメッセージ

サイズ切替を行うとウィスパーを通して以下のように天の声が流れてきます。

▼通常サイズ⇒特大サイズ
<img src="https://socket-manager.github.io/document/minecraft-contents/img/wind-rod-revised/large-from-normal.png" height="333px" width="500px" />

▼特大サイズ⇒通常サイズ
<img src="https://socket-manager.github.io/document/minecraft-contents/img/wind-rod-revised/normal-from-large.png" height="333px" width="500px" />

### サイズの比較

頭上に召喚してみた時のサイズを比較してみました。

▼通常サイズ
![通常サイズ](https://socket-manager.github.io/document/minecraft-contents/img/wind-rod-revised/size-normal.gif "通常サイズ")

▼特大サイズ
![特大サイズ](https://socket-manager.github.io/document/minecraft-contents/img/wind-rod-revised/size-large.gif "特大サイズ")

特大サイズは通常サイズの１０倍の大きさと威力があります。


# 特大サイズの発射

![特大サイズの発射](https://socket-manager.github.io/document/minecraft-contents/img/wind-rod-revised/large-shoot.gif "特大サイズの発射")

特大サイズの場合は、着弾時に雷鳴を轟かせながら巨大なクレーターを形成し、その威力は「はかいの矢」で威力を集中させた「機雷の弓」を凌駕します。

https://qiita.com/glasses_seven/items/98ea8e43b406f75c41df/

https://qiita.com/glasses_seven/items/294da5d23bd2e894f7d0/

<br />

▼着弾後の惨状
<img src="https://socket-manager.github.io/document/minecraft-contents/img/wind-rod-revised/large-shoot-after.png" height="333px" width="500px" />
黒曜石も簡単に破壊してしまうので、近くに誤射してしまうとひとたまりもありません。
この為、「はかいのつるぎ」の場合と同様に発射後数秒間は無敵状態にしています。

https://qiita.com/glasses_seven/items/88f9e2fea056172d41b7/

<br />

ウインドチャージの爆撃は水中でも有効なので、以下のように水性生物も巻き込んで海底をえぐりながら爆発を起こします。
![水面に向かって発射](https://socket-manager.github.io/document/minecraft-contents/img/wind-rod-revised/large-shoot-water.gif "水面に向かって発射")

爆発に巻き込まれた大量の魚や海藻類は、爆心地を中心として円状に広がる形で水面に浮かんできます。
<img src="https://socket-manager.github.io/document/minecraft-contents/img/wind-rod-revised/junk.png" height="333px" width="500px" />

以下は海底を破壊する様子。
![海底を破壊する様子](https://socket-manager.github.io/document/minecraft-contents/img/wind-rod-revised/large-shoot-underwater.gif "海底を破壊する様子")


# 「暴風の杖」の取得

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

### クラフトする場合

▼必要な素材
![必要な素材](https://socket-manager.github.io/document/minecraft-contents/img/wind-rod-revised/recipe-material.png "必要な素材")

▼レシピパターン
<img src="https://socket-manager.github.io/document/minecraft-contents/img/wind-rod-revised/recipe.png" />　<img src="https://socket-manager.github.io/document/minecraft-contents/img/wind-rod-revised/recipe-left.png" />　<img src="https://socket-manager.github.io/document/minecraft-contents/img/wind-rod-revised/recipe-right.png" />

### ショップで購入する場合

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

https://qiita.com/glasses_seven/items/e77bfb43baf55e35680b/

### コマンドで取得する場合

以下はワールドオーナーやシステム組み込み用としてコマンドで取得する方法です。
<img src="https://socket-manager.github.io/document/minecraft-contents/img/wind-rod-revised/get-command.png" height="354px" width="500px" />
<img src="https://socket-manager.github.io/document/minecraft-contents/img/wind-rod-revised/get-wind-rod-revised.png" height="354px" width="500px" />

---

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

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

https://qiita.com/glasses_seven/items/433ac9d9fcbdb72c6d18/

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

https://qiita.com/glasses_seven/items/7a174722c9030e669eac


# おわりに

「召雷の魔石」実装時と同じようにWebsocketサーバーを介したネットショップとの接続中は発射できないようにしています。

https://qiita.com/glasses_seven/items/e58ec2ceaf2850461965/

<br />
また、「ダッシュ＋スニーク」によるウインドチャージサイズの切替もサーバー側で行っていますが、いずれも「エンティティプロパティ」を使ってスイッチングを行っています。

https://qiita.com/glasses_seven/items/5553772d3fa8edd09cc0/

<br />
今回のアイテムの実装は「発射アイテム」の作り方を基に応用したものです。

https://qiita.com/glasses_seven/items/ed7e18730c9c5de3295c/

<br />
発射体エンティティの作り方については以下のページをご覧ください。

https://qiita.com/glasses_seven/items/6bcd386abd74db01e450/