【Minecraft】Geyser を使う

Geyser とは簡単にいうと、統合版からJava版のサーバーに接続できるようにするツールです。

 

Geyser には複数種類があり、

Bukkit (Spigot) にそのまま導入できるもの、

BungeeCord に導入できるもの、

独立して起動できるものがあります。

さまざまなプラットフォームに対応していているので比較的簡単に導入ができます。

 

現在対応しているバージョンは最新バージョンである 1.15.2 です。

 

https://github.com/GeyserMC/Geyser/wiki

https://ci.nukkitx.com/job/Geyser/job/master/

 

↑ がリンクになります。

 

【Bukkit/Spigot】PlayerDeathEvent について

あるゲームを開発していて、この問題点に当たったのですが、

PlayerDeathEvent が発生した時点ではプレイヤーは死んでいません。

※正しくは違うのかもしれません。

PlayerDeathEvent が発生した後に死亡が確定しているように思います。

つまり、プレイヤーが死んだことをキーとするものを制作する場合、タイミングをずらして実行させる必要があります。

この問題のもっともわかりやすい例として、

Player#spigot().respawn

があります。

これを

@EventHandler
public void onDeath(PlayerDeathEvent e){
e.getEntity().spigot().respawn();
}

としてもうまくいきません。

正しくは

@EventHandler
public void onDeath(PlayerDeathEvent e){
new BukkitRunnable() {
e.getEntity().spigot().respawn();
}.runTaskLater(Plugin, 5L); // 20 で 1 秒
}

のようにしなければうまくいきません。

 

【Minecraft】マイクラが固まる理由

マインクラフトを遊んでいるときに時々フリーズするようなことはありませんか?

 

1.メモリの問題

まず最初の問題がメモリの問題です。

これは相性などの難しいことではなく、ただ単にメモリが足りない、確保できていないという状態です。

この時、新たにメモリを取得したいのですが、空きがないので、古くなった使わないデータを開放します。

が、この開放する処理が大変重い処理で、これがフリーズの原因になっていることが多いです。

この問題の解決方法は

  • メモリの割り当てを増やす
  • メモリ開放のチューニングを行う

 

メモリの割り当てを行う方法はマインクラフトのランチャーを開き、

起動構成を開きます。

お使いのプロファイルでホバーし「編集」をクリック。

「その他のオプション」をクリックして開きます。

「JVMの引数」から「-Xmx〇G」というのを見つけます。

この〇Gが1Gだったら 現在 1GB のメモリが割り当てられています。

増やすにはただ数字を大きくすれば大丈夫です。

 

メモリ開放のチューニングは上記と同じように「JVMの引数」というところを編集します。

以下コピペで大丈夫です。

-Xmx2G -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:G1NewSizePercent=20 -XX:G1ReservePercent=20 -XX:MaxGCPauseMillis=50 -XX:G1HeapRegionSize=32M -Duser.country=US -Duser.language=en

上の場合メモリは2GBしか割り当てていないので、もっと割り当てたい場合はその都度編集してください。

2.グラフィックの問題

この問題は単純にパソコンの性能が足りません

やりたいことにパソコンが追い付いていない、という状況です。

しかし、メモリの問題のチューニングで紹介したように、チューニング方法によってはこの問題は解決してしまう可能性もあります。(保障はしません。)

しかし、それでも直らない場合にはパソコンの買いなおしなど必要になってくる場合もあります。