【Minecraft】OptiFineとIC2 Classicの競合

02 August, 2023

Minecraft

t f B! P L


 こちらのシリーズの準備段階で、構成するModをテストしていました。
(よく知られていますが) 致命的な競合なので、その情報を残しておきます。

概要

OptiFineとIC2 Classicを導入した環境でゲームを起動したところ、タイトル画面に遷移する前にクラッシュしました。

環境

  • Minecraft Version: 1.19.2
  • Mod Loader: Minecraft Forge 43.2.21
  • Mods
    • OptiFine HD U I2, H9
    • IC2 Classic: 2.0.6.2
この現象に遭遇した時には他のModもありましたが、後にOptifineとIC2 Classicのみを導入して起動したところ、同様にクラッシュしました。
また、OptiFine HD U I2 に適したForgeのバージョン(43.2.14)にも変更してみましたが、変わりませんでした。

Optifine, IC2 Classic 共に必要とする前提のModが存在しないので、この2つの競合以外にはクラッシュの原因が考えられません。より具体的な原因についてはわかりません。

エラーログ (冒頭の一部のみ)

Description: Initializing game

java.lang.VerifyError: Bad local variable type
Exception Details:
  Location:
    net/minecraft/client/renderer/LevelRenderer.m_109599_(Lcom/mojang/blaze3d/vertex/PoseStack;FJZLnet/minecraft/client/Camera;Lnet/minecraft/client/renderer/GameRenderer;Lnet/minecraft/client/renderer/LightTexture;Lcom/mojang/math/Matrix4f;)V @2706: aload
  Reason:
    Type integer (current frame, locals[25]) is not assignable to reference type
  Current Frame:
    bci: @2706
    flags: { }
    locals: { 'net/minecraft/client/renderer/LevelRenderer', 'com/mojang/blaze3d/vertex/PoseStack', float, long, long_2nd, integer, 'net/minecraft/client/Camera', 'net/minecraft/client/renderer/GameRenderer', 'net/minecraft/client/renderer/LightTexture', 'com/mojang/math/Matrix4f', 'net/minecraft/util/profiling/ProfilerFiller', integer, 'net/minecraft/world/phys/Vec3', double, double_2nd, double, double_2nd, double, double_2nd, 'com/mojang/math/Matrix4f', integer, 'net/minecraft/client/renderer/culling/Frustum', integer, float, integer, integer, integer, 'net/minecraft/client/renderer/MultiBufferSource$BufferSource', integer, integer, 'java/util/Collection', integer, 'net/minecraft/client/renderer/culling/Frustum', 'java/util/Set', 'java/util/Iterator' }
    stack: { }

この先にバイトコード?という16進数の列が続きます。

改善策はない

もちろん、OptiFineのソースコードを変更してエラーを除けば動作するような状況は作れますが、私にはそれができません。
Mod利用者としてできる中での改善策はなさそうです。

また、Optifine 1.19.2 Crash Fixといういかにもな名前のModも併せて使ってみましたが、クラッシュは変わらず起こりました。
そもそも対象とするクラッシュの原因が異なるようなので、当然です。

OptiFineかIC2 Classicのいずれかまたは両方を除くと、この現象は起こらないようです。当然ですが。

おわり

近頃のOptifineには競合が数多く確認されています。レンダリングエラーだったりいろいろ引き起こされるようです。
この先も他のModを導入することを考えて、Optifineを除くことにしました。シリーズにはIC2 Classicは必要ですしね。軽量化は別で図ってみることにします。

この2つを共存させる手立てを知っている人がいたら是非教えてくださるとありがたいです。お願いします。

QooQ