Skip to content

Commit 5f4f452

Browse files
committed
fix block overlay crash
1 parent 29f02c0 commit 5f4f452

3 files changed

Lines changed: 32 additions & 2 deletions

File tree

src/main/java/com/falsepattern/falsetweaks/config/ModuleConfig.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -156,11 +156,11 @@ public class ModuleConfig {
156156
@Config.RequiresMcRestart
157157
public static boolean SKY_MESH_OPTIMIZATION;
158158

159-
@Config.Comment("Fixes an occasional crash that happens when joining worlds due to a null-safety issue in biome code.\n" +
159+
@Config.Comment("Fixes an occasional crash that happens when trying to render a GUI block overlay (more common with optifine shaders enabled.)\n" +
160160
"FPS impact: Zero")
161161
@Config.DefaultBoolean(true)
162162
@Config.RequiresMcRestart
163-
public static boolean GETBIOME_CRASH_FIX;
163+
public static boolean OVERLAY_CRASH_FIX;
164164

165165
static {
166166
ConfigurationManager.selfInit();
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package com.falsepattern.falsetweaks.mixin.mixins.client.misc;
2+
3+
import org.spongepowered.asm.mixin.Mixin;
4+
import org.spongepowered.asm.mixin.Shadow;
5+
import org.spongepowered.asm.mixin.injection.At;
6+
import org.spongepowered.asm.mixin.injection.Redirect;
7+
8+
import net.minecraft.client.renderer.ItemRenderer;
9+
import net.minecraft.init.Blocks;
10+
import net.minecraft.util.IIcon;
11+
12+
@Mixin(ItemRenderer.class)
13+
public abstract class OverlayCrashFix_ItemRendererMixin {
14+
@Shadow protected abstract void renderInsideOfBlock(float partialTickTime, IIcon blockTextureIndex);
15+
16+
@Redirect(method = "renderOverlays",
17+
at = @At(value = "INVOKE",
18+
target = "Lnet/minecraft/client/renderer/ItemRenderer;renderInsideOfBlock(FLnet/minecraft/util/IIcon;)V"),
19+
require = 0)
20+
private void guardRenderInsideOfBlock(ItemRenderer instance, float partialTickTime, IIcon blockTextureIndex) {
21+
if (blockTextureIndex == null) {
22+
blockTextureIndex = Blocks.stone.getBlockTextureFromSide(2);
23+
if (blockTextureIndex == null) {
24+
return;
25+
}
26+
}
27+
((OverlayCrashFix_ItemRendererMixin)(Object)instance).renderInsideOfBlock(partialTickTime, blockTextureIndex);
28+
}
29+
}

src/main/java/com/falsepattern/falsetweaks/mixin/plugin/standard/Mixin.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -328,6 +328,7 @@ public enum Mixin implements IMixin {
328328

329329
RealmShutUp_GuiMainMenuMixin(Side.CLIENT, condition(() -> ModuleConfig.NO_REALMS_ON_MENU), "misc.RealmShutUp_GuiMainMenuMixin"),
330330
RealmShutUp_RealmsBridgeMixin(Side.CLIENT, condition(() -> ModuleConfig.NO_REALMS_ON_MENU), "misc.RealmShutUp_RealmsBridgeMixin"),
331+
OverlayCrashFix_ItemRendererMixin(Side.CLIENT, condition(() -> ModuleConfig.OVERLAY_CRASH_FIX), "misc.OverlayCrashFix_ItemRendererMixin"),
331332
//endregion Misc Modules
332333

333334
//region Particles

0 commit comments

Comments
 (0)