Optifine導入時にマルチブロックが原因でクラッシュする問題への対処

アバター
RiSE
ID: 68G4IPQ66V
記事: 4
登録日時: 2019年10月11日(金) 23:05
連絡する:

Optifine導入時にマルチブロックが原因でクラッシュする問題への対処

投稿記事 by RiSE » 2020年3月02日(月) 12:24

Optifineを導入している環境下で、ForgeMultipartなどを利用したマルチブロックがワールド内に存在するとき、最適化がされていないModを使用していると、高確率でクラッシュする可能性があります。

・原因
ビデオ設定の中のChunk LoadingSmoothになっているから。

・なぜクラッシュするのか推測
実行環境:Windows 10, Minecraft 1.7.10, Forge#1558,
Mod:ImmersiveEngineering, Mekanism, CodeChickenCore, AppliedEnergistics2など他100個~
私の環境で落ちた時のクラッシュレポートを一部抜粋します。

コード: 全て選択

Description: Rendering Block Entity

java.lang.IllegalStateException: Already tesselating!
	at net.minecraft.client.renderer.Tessellator.func_78371_b(Tessellator.java:394)
	at codechicken.lib.render.CCRenderState.startDrawing(CCRenderState.java:418)
	at codechicken.lib.render.CCRenderState.startDrawing(CCRenderState.java:414)
	at mekanism.client.render.RenderPartTransmitter.renderContents(RenderPartTransmitter.java:255)

コード: 全て選択

-- Block Entity Details --
Details:
	Name: savedMultipart // TileMultipart_cmp$$0
	Block type: ID #724 (tile.multipart // codechicken.multipart.BlockMultipart)
	Block data value: 0 / 0x0 / 0b0000
	Block location: World: (1268,68,-808), Chunk: (at 4,4,8 in 79,-51; contains blocks 1264,0,-816 to 1279,255,-801), Region: (2,-2; contains chunks 64,-64 to 95,-33, blocks 1024,0,-1024 to 1535,255,-513)
	Actual block type: ID #724 (tile.multipart // codechicken.multipart.BlockMultipart)
	Actual block data value: 0 / 0x0 / 0b0000
Stacktrace:
	at net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher.func_147549_a(SourceFile:100)
	at net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher.func_147544_a(SourceFile:92)
	at net.minecraft.client.renderer.RenderGlobal.func_147589_a(RenderGlobal.java:807)
	at net.minecraft.client.renderer.EntityRenderer.func_78471_a(EntityRenderer.java:1712)
この時、私はImmersiveEngineeringの水車を設置していました。
おそらくですが、Smoothに設定時、本来1回ずつ読み込むTessellatorを何回も同時に読み込むためと思われます。本来Minecraftのブロックは1ブロックですが、マルチブロックの場合複数のブロックを設置して相互にやり取りするため、ここでOptifineが何度もTessellatorを呼び出してしまい、IllegalStateExceptionがスローされると考えられます。

・対処方法
ビデオ設定の中のChunk LoadingDefaultにする。
マルチブロックを利用しているModを導入しているときはこうしておいたほうがいいかと。

参考: https://github.com/SleepyTrousers/EnderIO/issues/3097
1
1 画像


MinecraftでModdingしてたりします。最近はKotlinに手を出してる時とかも。
1発ネタのくだらんModを作るのが好きです。