はじめに
地上だけではなく以下の場所でも使える事を確認しています。
- 水中
- 洞窟
- ネザー
- エンド
動作環境
- プラットフォーム
- Windows10
- マインクラフト(統合版)
- Windows Edition v1.21.2
- socket-manager
- v1.13.3
- 言語
- PHP v8.2.4(v8.1.0以降)
「いなずまの矢」を取得
socket-manager環境のビヘイビアパック/リソースパックなどのアドオンパックを適用しておけば、以下の方法でユニークアイテムとして「いなずまの矢」が手に入ります。
ショップで購入する場合
以下のショップで購入できます。
コマンドで取得する場合
以下はワールドオーナーやシステム組み込み用としてコマンドで取得する方法です。
あとはsocket-managerでWebsocketサーバーを起動後、マインクラフトからの接続が完了すれば「いなずまの矢」を含めた各種コンテンツが使えるようになります。
socket-managerの導入方法やアドオンパックの所在については以下のページでご紹介していますのでご興味のある方はご覧ください。
アドオンパックの適用方法については以下のページでご紹介しています。
サーバーサイドの実装
今回も「いなずまの弓」を作った時と同様にItemUsed
のサブスクライブイベントを使用しています。
サブスクライブイベントの処理内容については以下の記事をご覧ください。
今回の実装では「いなずまの弓」を作った時と処理フローが少し異なります。
【いなずまの弓の場合】
- (1)ItemUsedイベント(弓を使った時)の発生
- (2)稲妻を落とす座標を計算してsummonコマンドを発行
【いなずまの矢の場合】
- (1)ItemUsedイベント(弓を使った時)の発生
- (2)ItemUsedイベント(矢を放った時)の発生
- (3)放った矢にタグを発行
- (4)放った矢の場所にsummonコマンドを発行
上記の事から大きく分けて二つの大きな違いがあります。
まず一つ目はイベントが2回発行されるという事です。
つまり「弓を使ったイベント」⇒「矢を放ったイベント」の順で2回発行されます。
そして二つ目の違いは放った矢にタグを付与しているところです。
これはJava版でも同じでしたが弓で矢を放つと別のエンティティ(矢)としてスポーンしますので、「いなずまの矢」を放ったプレイヤーの矢(エンティティ)にタグを付与する事で特別な矢である事を認識させます。
そして稲妻を落とす時(summonコマンド発行時)にターゲットセレクタでタグを指定するようにしています。
これをしておかないと通常の矢を放った時でも発動してしまいます。
あと忘れてはいけないのはWebsocketサーバーからはexecuteコマンドを発行できないという事です。
元々このコマンドはエンティティから実行されるように設計されているようなのでWebsocketサーバーはエンティティだと認識されていないからです。
そのため今回はWebsocketサーバーからfunctionコマンドを発行する事で実際のコマンド処理をビヘイビアパックで賄うようにしています。
実装内容の詳細は他のコンテンツも含めて以下のページでご紹介していますのでご興味のある方はご覧ください。
タグの付与方法の説明については以下のページでご紹介しています。
おわりに
先に作っていた「いなずまの弓」とコンボするとこんなイメージ。
これで安全に帯電クリーパーやピグリンも量産し放題でしょう。