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-07-22

はじめに

以下のように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

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?