Skip to content

Commit 54e5bc0

Browse files
committed
Mixin to disable lightmap on font renderer when needed.
1 parent 9e4b1aa commit 54e5bc0

File tree

3 files changed

+58
-0
lines changed

3 files changed

+58
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
package sunsetsatellite.catalyst.core.mixin;
2+
3+
import net.minecraft.client.render.FontRenderer;
4+
import net.minecraft.client.render.LightmapHelper;
5+
import net.minecraft.client.render.tessellator.Tessellator;
6+
import org.lwjgl.opengl.GL11;
7+
import org.spongepowered.asm.mixin.Mixin;
8+
import org.spongepowered.asm.mixin.Unique;
9+
import org.spongepowered.asm.mixin.injection.At;
10+
import org.spongepowered.asm.mixin.injection.Inject;
11+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
12+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
13+
import sunsetsatellite.catalyst.core.util.IColorOverride;
14+
import sunsetsatellite.catalyst.core.util.Vec4f;
15+
16+
@Mixin(value = FontRenderer.class,remap = false)
17+
public class FontRendererMixin implements IColorOverride {
18+
19+
@Unique
20+
private Vec4f colorOverride = new Vec4f(1);
21+
@Unique
22+
private boolean fullbright = false;
23+
24+
@Inject(method = "renderStringAtPos",at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/tessellator/Tessellator;startDrawingQuads()V",shift = At.Shift.AFTER))
25+
public void disableLightmap(String text, boolean flag, CallbackInfo ci){
26+
GL11.glColor4d(colorOverride.x,colorOverride.y,colorOverride.z,colorOverride.w);
27+
if(LightmapHelper.isLightmapEnabled() && fullbright) Tessellator.instance.setLightmapCoord(LightmapHelper.getLightmapCoord(15,15));
28+
}
29+
30+
@Inject(method = "renderDefaultChar",at = @At(value = "INVOKE", target = "Lorg/lwjgl/opengl/GL11;glBegin(I)V",shift = At.Shift.BEFORE))
31+
public void disableLightmap2(char c, boolean italic, CallbackInfoReturnable<Float> cir){
32+
if(LightmapHelper.isLightmapEnabled() && fullbright) LightmapHelper.setLightmapCoord(15,15);
33+
}
34+
35+
@Inject(method = "renderUnicodeChar",at = @At(value = "INVOKE", target = "Lorg/lwjgl/opengl/GL11;glBegin(I)V",shift = At.Shift.BEFORE))
36+
public void disableLightmap3(char c, boolean italic, CallbackInfoReturnable<Float> cir){
37+
if(LightmapHelper.isLightmapEnabled() && fullbright) LightmapHelper.setLightmapCoord(15,15);
38+
}
39+
40+
@Override
41+
public void overrideColor(float r, float g, float b, float alpha) {
42+
colorOverride = new Vec4f(r,g,b,alpha);
43+
}
44+
45+
@Override
46+
public void enableFullbright() {
47+
fullbright = true;
48+
}
49+
50+
@Override
51+
public void disableFullbright() {
52+
fullbright = false;
53+
}
54+
}

src/main/java/sunsetsatellite/catalyst/core/mixin/ItemModelStandardMixin.java

+3
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
11
package sunsetsatellite.catalyst.core.mixin;
22

3+
import net.minecraft.client.render.FontRenderer;
34
import net.minecraft.client.render.LightmapHelper;
5+
import net.minecraft.client.render.RenderEngine;
46
import net.minecraft.client.render.item.model.ItemModel;
57
import net.minecraft.client.render.item.model.ItemModelStandard;
68
import net.minecraft.client.render.stitcher.IconCoordinate;
79
import net.minecraft.client.render.tessellator.Tessellator;
810
import net.minecraft.core.item.Item;
11+
import net.minecraft.core.item.ItemStack;
912
import org.lwjgl.opengl.GL11;
1013
import org.spongepowered.asm.mixin.Mixin;
1114
import org.spongepowered.asm.mixin.Unique;

src/main/resources/catalyst.mixins.json

+1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
"EntityPlayerMixin",
99
"EntityPlayerMPMixin",
1010
"EntityPlayerSPMixin",
11+
"FontRendererMixin",
1112
"GuiTooltipMixin",
1213
"ItemModelStandardMixin",
1314
"NetClientHandlerMixin"

0 commit comments

Comments
 (0)