はじめに
以下のように2回目のジャンプボタンで二段ジャンプが発動します。
一度ジャンプして着地するかしないかのタイミングで以下のように画面右端にガイドが表示されます(赤枠の部分)。
そのタイミングでもう一度ジャンプボタンを押すと発動します。
動作環境
- プラットフォーム
- Windows10
- マインクラフト(統合版)
- Windows Edition v1.21.2
- socket-manager
- v1.13.3
- 言語
- PHP v8.2.4(v8.1.0以降)
動作確認手順
socket-managerでWebsocketサーバーを起動後、マインクラフトからの接続が完了すれば二段ジャンプを含めた各種コンテンツが使えるようになります。
socket-managerの導入方法やビヘイビアパックの所在については以下のページでご紹介していますのでご興味のある方はご覧ください。
今回は特別なアイテムは使用していませんが通信量を減らすためfunctionコマンドを使用していますのでビヘイビアパックを適用しておく必要があります。
ビヘイビアパックの適用方法については以下のページでご紹介しています。
サーバーサイドの実装
今回はジャンプイベントが発生した時に送信される"PlayerTravelled"というサブスクライブイベントを使用しています。
"PlayerTransform"の上位版のようでtravelMethod
というパラメータ値をみてそのイベントがジャンプイベントなのかそれ以外なのかを判断できるようになっています。
サブスクライブイベントの処理内容については以下の記事をご覧ください。
注意しないといけないのが、この"PlayerTravelled"イベントはジャンプイベントが発生した時に1回だけ発行されるわけではありません。
最初にジャンプイベントが発生したタイミングから着地するまでの間はプレイヤーの移動距離に応じて複数回イベントが発生しています。
このような性質があるため二段ジャンプを連発し過ぎたり、ジャンプブースト(effectコマンドの設定値)を高く設定し過ぎたりするとラグが発生する事があるので注意が必要です。
実装内容の詳細は他のコンテンツも含めて以下のページでご紹介していますのでご興味のある方はご覧ください。
おわりに
今回はジャンプブーストのeffect
コマンドをパーティクルなしで実行していますが、画面右端のガイド表示は残ってしまいました。
しかし2回目のジャンプタイミングを合わせるのにコツがいるので、むしろ表示してくれて有り難い存在になってくれたということで結果オーライです。
たまにラグが発生した時に遅延してガイド表示されることがありますが、その時はボーナスタイムだと思って楽しんでくださいw