マイクラ統合版とJava版の完全なクロスプレイを実現する方法

【改造なし】Xbox One、スイッチ、PS4で特集サーバー以外に接続する方法」が、数日前に投稿したにもかかわらず閲覧数が多かったんですよね(笑)
なので、それに近い内容(?)を今回は書いていこうと思います。

今回はタイトル通り、マイクラの統合版とJava版でクロスプレイできるようにしていこうと思います。
別に筆者は勘違いしてるわけではないです(汗
少しバグはありますが、ちゃんとプレイできますよ。
それらのバグも多分そのうち修正されると思います。

もし、どれぐらいの完成度(?)か知りたい方は是非私のサーバーに入ってくださいね!!
というかプレイヤー数少ないので入ってください(汗
https://novablog.work/minecraft-server/
このページに入り方などが書いてます。

では、早速やっていきましょう!

前書き

※筆者のどうでもいい話が書いています。
 暇な方だけ読んでください(笑)

冒頭のリンクの記事でも少し書いたように、BetterTogetherアップデートによってスイッチ、Windows10版、PS4、スマホなどでクロスプレイができるようになりました(統合版)。
ですが、Java版だけは対象外で、クロスプレイとか言っときながらJava版と統合版ではクロスプレイができません。

スイッチ版の発売によって統合版ユーザーが急激に増えたので、いやらしい筆者は統合版ユーザーを狙ってサーバーを建てようと思ったんですが、公式サーバーソフトウェア(DedicatedBedrockServer)はまだ不安定だし、統合版サーバーを立てたら自鯖のオペレーターさんのU氏が入れなくなるからなー…って悩んでました。

で、何とか統合版とJava版のマルチプレイをする方法はないかなーって調べてたわけです。
「そんなのあるわけwwwww」って思ってたんですけど、ありました。
興奮して鼻血出ました(大嘘

私が見つけたのは、DragonProxy、ProtocolSupportPE、Geyserの三つで、全部を試してみました。
どうやらProtocolSupportPEは更新が止まっていました。
DragonProxyとGeyserは、両方とも使えたのですが、Geyserのほうが安定していました。
なので、今回はGeyserを使う方法を紹介します。

JEとBEのクロスプレイを実現するGeyserの仕組みは?

前章で書いた通り、今回はGeyserを使った方法で実現します。
概ねの仕組みはこんな感じです。

公式Webサイトから引用

このようにサーバーとして動くのではなく、統合版のパケットをJava版のパケットに変換するミドルウェア(?)として動きます
統合版のユーザーはJava版のユーザーと同じような扱いをされます。

※Java版のアカウントが無くても、記事で紹介するように設定すれば、サーバーのオンラインモードを有効にしたまま統合版のみ認証なしで接続できます。

サーバーに導入する

今記事では、「統合版ユーザー > Gyeser > Spigot」というような構造にします。
ちなみにBungeeCordを挟む方法もありますが(筆者のサーバーがそうです)、記事が膨大な量になってしまうので割愛します(リクエストが多ければ多分書きます)

Spigotのセットアップについてはネット上に膨大な量の記事があるので割愛します。
セットアップ済みであるとして話を進めます。

https://ci.nukkitx.com/job/GeyserMC/job/Floodgate/job/development/から、floodgate-bukkit.jarをダウンロードします。
このファイルはspigot(bukkit)のプラグインで、これを使うことで統合版ユーザーのみ認証なしでサーバーに接続できます。

https://ci.nukkitx.com/job/GeyserMC/job/Geyser/job/master/から、Geyser-Bukkit.jarをダウンロードします。
このファイルもプラグインで、これがパケット変換する本体となります。

③二つのファイルをspigotのpluginsフォルダにぶち込みます。

④一度サーバーを起動して、起動完了したらサーバーを停止します。
 これで設定ファイルが生成されます。

Geyserの設定

次に設定をしていきましょう。

①pluginsフォルダ内のfloodgate-bukkitフォルダを開いてpublic-key.pemをコピーします。(コピーですよ!)

②コピーしたファイルをpluginsフォルダ内のGeyser-Bukkitフォルダに貼り付けます。

③Geyser-Bukkitフォルダ内のconfig.ymlを編集します。

  1. remoteのauth-typeをfloodgateにします。
    この設定によって統合版ユーザーのみ認証なしでサーバーに入れるようになります。
  2. remoteのportをserver.propertiesのポートと合わせます。
  3. bedrockのportをサーバーを開けたいポートに変更します。
  4. bedrockのmotd1、motd2を統合版のサーバーリストに表示したい文字に変更します。
    “(ダブルクォーテーション)で囲っておくと「:」などの特殊文字も使えるようになります。
  5. ping-passthroughをfalseに変更します。
    これがtrueだとBroken pipeというエラーが出やすくなります。

これで設定が完了しました!

統合版で入ってみる

※MinecraftWindows10Editionを使っていて、サーバーを建てたPCでログインする場合、以下のコマンドをPowerShellで実行する必要があります。

CheckNetIsolation LoopbackExempt -a -n="Microsoft.MinecraftUWP_8wekyb3d8bbwe"

※スイッチ/PS4/Xbox Oneを使っている方は通常特集サーバー以外には入れません。
それらのデバイスでログインする方法はhttps://novablog.work/be-join-any-server/に書いてあります。
尚、筆者はWindows10Editionでしか検証していないので、ほかのデバイスではどのような挙動になるかは分かりません。

もし、統合版で友達などに入ってもらう場合は、configのbedrock→portで設定したポート忘れずに開きましょう。
TCPではなくUDPで開くんですよ!!
ポート開放に関する質問は、この記事では受け付けません。

<NPサーバー>

マインクラフトサーバーを運営しています!

  1. 統合版、Java版どちらでも参加できます!
  2. 経済、サバイバル、PvP(実装中)など、様々な遊び方があります。
  3. 年齢は問いません!

是非ご参加ください!!
https://novablog.work/minecraft-server/

にほんブログ村

ブログランキング・にほんブログ村へ