Minecraft Japan Communityを発足しました!

日本向けのMinecraftのコミュニティーサーバーをDiscordにて立ち上げました。
ご参加お待ちしております。

参加はこちらから!

Java版Minecraftでjava.lang.IndexOutOfBoundsExceptionが発生する問題を解決

Minecraftがクラッシュした時の画像Java Edition (Java版)

Java版 Minecraftでシングルプレイまたはサーバーへ接続の際に「java.lang.IndexOutOfBoundsException」が発生することがあります。

またMinecraftの潜在的なバグで様々なシーンで発生することもありますので紹介します。

スポンサーリンク

描画距離に関する問題

環境と経緯

  • Windows 10
  • Java版 Minecraft 1.15.2から1.7.10へダウングレード
    ※ Java版 Minecraft 1.8以降のバージョンから1.7.10以下のバージョンへ変更した場合に発生する現象

原因

Java版 Minecraft 1.8から64bitのJavaがインストールされておりパソコンのメモリサイズが1GB以上の場合、チャンク表示量が最大32チャンクまで使用できるようになりました。

しかし Java版 Minecraft 1.7.10までは最大チャンク表示が12チャンクまでであり、12チャンクより大きな設定がなされているとjava.lang.IndexOutOfBoundsExceptionでゲームがクラッシュします。

対応

Minecraftは起動するので、ワールドを開く前に「Options…」から「Video Settings…」を開き「Render Distance」の設定を12チャンク以下に設定します。

設定可能範囲は2~12チャンクですが、32bitで動作している場合は8チャンクに制限されます。

右上のRender Distanceが12チャンクより大きく設定されている状態

ゲームがクラッシュしないか確認

ゲームを再起動しなくても入れるはずですが、再度クラッシュしてしまった場合は設定を確認後ワールドへ入ってみてください。

なおこれでも治らない場合は原因不明です。

開発者目線の戯言

java.lang.IndexOutOfBoundsExceptionは取り扱うデータが範囲外だった場合に発生します。

今回の場合、12チャンクより大きな設定がされているとExceptionが発生する訳ですが、このエラーを未然に防ぐようにプログラムしておくべきです。
範囲外の設定を読み込んでしまったら自動で修正するとかあるでしょう…。

もし色々な都合で自動修正を実装できないのであれば java.lang.IndexOutOfBoundsException の発生をtry-catchで行いエラー文を設定してthrowして欲しいです。

エラー内容を設定せずthrowするとエラー内容が明確になりません。

細かいところにも手を掛けて欲しいですね。

スポンサーリンク

Minecraft 1.16 ネザーポータル

環境

エラー例

java.lang.IndexOutOfBoundsException: fromIndex < 0: -2368549
	at java.util.BitSet.checkRange(BitSet.java:362)
	at java.util.BitSet.set(BitSet.java:481)
	at cia.a(SourceFile:13)
	at cib.<init>(SourceFile:143)
	at cib.<init>(SourceFile:108)
	at cic.b(SourceFile:43)
	at cic.a(SourceFile:50)
	at chy.b(SourceFile:85)
	at chy$$Lambda$4051/1753702905.get(Unknown Source)
	at chy.a(SourceFile:120)
	at chy$$Lambda$4054/349611958.run(Unknown Source)
	at ams$b.run(SourceFile:54)
	at amq.e(SourceFile:94)
	at amq.a(SourceFile:137)
	at amq.run(SourceFile:105)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)

原因

Minecraftの潜在的なバグです。
破損したワールドを使用しているとネザーポータルにアクセスした際ゲームがクラッシュします。

破損したワールドがどこのタイミングで発生するかは未知数ですのでワールドのバックアップは定期的に取るようにしましょう。

MC-190103 – Crash when using a nether portal: java.lang.IndexOutOfBoundsException: fromIndex < 0: -2368549.

対策

Minecraft 1.16.2 リリース候補1以降にアップデートを行うと修正されています。

コメント

タイトルとURLをコピーしました