Skip to content

Commit f4c8396

Browse files
committed
Fixed oversight in implementation of IColorOverride, removed it from item models and font renderer.
Split fullbright methods into IFullbright.
1 parent b2fb3b1 commit f4c8396

File tree

6 files changed

+41
-31
lines changed

6 files changed

+41
-31
lines changed

multiblocks/src/main/java/sunsetsatellite/catalyst/multiblocks/RenderMultiblock.java

+5-6
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,7 @@
99
import net.minecraft.core.block.entity.TileEntity;
1010
import net.minecraft.core.world.World;
1111
import org.lwjgl.opengl.GL11;
12-
import sunsetsatellite.catalyst.core.util.BlockInstance;
13-
import sunsetsatellite.catalyst.core.util.Direction;
14-
import sunsetsatellite.catalyst.core.util.IColorOverride;
15-
import sunsetsatellite.catalyst.core.util.Vec3i;
12+
import sunsetsatellite.catalyst.core.util.*;
1613

1714
import java.util.ArrayList;
1815
import java.util.Objects;
@@ -51,8 +48,9 @@ public void doRender(Tessellator tessellator, TileEntity tileEntity, double d, d
5148
GL11.glDisable(GL11.GL_LIGHTING);
5249
GL11.glTranslatef((float)d+(block.pos.x-i)+0.5f, (float)e+(block.pos.y-j)+0.5f, (float)f+(block.pos.z-k)+0.5f);
5350
BlockModel<?> model = BlockModelDispatcher.getInstance().getDispatch(block.block);
54-
((IColorOverride)model).enableFullbright();
51+
((IFullbright)model).enableFullbright();
5552
if(world.getBlockId(block.pos.x,block.pos.y,block.pos.z) != 0){
53+
((IColorOverride)model).enableColorOverride();
5654
((IColorOverride)model).overrideColor(1,0,0,0.90f);
5755
GL11.glScalef(1.1f,1.1f,1.1f);
5856
} else {
@@ -65,7 +63,8 @@ public void doRender(Tessellator tessellator, TileEntity tileEntity, double d, d
6563
GL11.glEnable(GL11.GL_LIGHTING);
6664
GL11.glPopMatrix();
6765
((IColorOverride)model).overrideColor(1,1,1,1f);
68-
((IColorOverride)model).disableFullbright();
66+
((IColorOverride)model).disableColorOverride();
67+
((IFullbright)model).disableFullbright();
6968
}
7069
}
7170
}

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

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

33
import net.minecraft.client.render.LightmapHelper;
4+
import net.minecraft.client.render.block.color.BlockColor;
5+
import net.minecraft.client.render.block.color.BlockColorDispatcher;
46
import net.minecraft.client.render.block.model.BlockModel;
57
import net.minecraft.client.render.block.model.BlockModelStandard;
68
import net.minecraft.client.render.tessellator.Tessellator;
79
import net.minecraft.core.block.Block;
10+
import org.lwjgl.BufferUtils;
811
import org.lwjgl.opengl.GL11;
912
import org.spongepowered.asm.mixin.Debug;
1013
import org.spongepowered.asm.mixin.Mixin;
1114
import org.spongepowered.asm.mixin.Unique;
1215
import org.spongepowered.asm.mixin.injection.At;
1316
import org.spongepowered.asm.mixin.injection.Inject;
1417
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
18+
import sunsetsatellite.catalyst.core.util.IFullbright;
1519
import sunsetsatellite.catalyst.core.util.Vec4f;
1620
import sunsetsatellite.catalyst.core.util.IColorOverride;
1721

22+
import java.nio.FloatBuffer;
23+
1824

1925
@Mixin(value = BlockModelStandard.class,remap = false)
20-
public abstract class BlockModelStandardMixin extends BlockModel<Block> implements IColorOverride {
26+
public abstract class BlockModelStandardMixin extends BlockModel<Block> implements IColorOverride, IFullbright {
2127

28+
private boolean overrideColor = false;
2229
@Unique
2330
private Vec4f colorOverride = new Vec4f(1);
2431
@Unique
@@ -30,7 +37,9 @@ private BlockModelStandardMixin(Block block) {
3037

3138
@Inject(method = "renderBlockOnInventory", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/block/model/BlockModelStandard;setBlockBoundsForItemRender()V", ordinal = 0))
3239
public void renderBlockOnInventory(Tessellator tessellator, int metadata, float brightness, float alpha, CallbackInfo ci) {
33-
GL11.glColor4d(colorOverride.x,colorOverride.y,colorOverride.z,colorOverride.w);
40+
FloatBuffer buffer = BufferUtils.createFloatBuffer(16);
41+
GL11.glGetFloat(GL11.GL_CURRENT_COLOR, buffer);
42+
if(overrideColor) GL11.glColor4d(colorOverride.x * buffer.get(0),colorOverride.y * buffer.get(1),colorOverride.z * buffer.get(2),colorOverride.w * buffer.get(3));
3443
}
3544

3645
@Inject(method = "renderBlockOnInventory", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/tessellator/Tessellator;startDrawingQuads()V", shift = At.Shift.AFTER))
@@ -44,7 +53,17 @@ public void overrideColor(float r, float g, float b, float alpha) {
4453
colorOverride = new Vec4f(r,g,b,alpha);
4554
}
4655

47-
@Override
56+
@Override
57+
public void enableColorOverride() {
58+
overrideColor = true;
59+
}
60+
61+
@Override
62+
public void disableColorOverride() {
63+
overrideColor = false;
64+
}
65+
66+
@Override
4867
public void enableFullbright() {
4968
fullbright = true;
5069
}

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

+2-9
Original file line numberDiff line numberDiff line change
@@ -11,19 +11,17 @@
1111
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
1212
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
1313
import sunsetsatellite.catalyst.core.util.IColorOverride;
14+
import sunsetsatellite.catalyst.core.util.IFullbright;
1415
import sunsetsatellite.catalyst.core.util.Vec4f;
1516

1617
@Mixin(value = FontRenderer.class,remap = false)
17-
public class FontRendererMixin implements IColorOverride {
18+
public class FontRendererMixin implements IFullbright {
1819

19-
@Unique
20-
private Vec4f colorOverride = new Vec4f(1);
2120
@Unique
2221
private boolean fullbright = false;
2322

2423
@Inject(method = "renderStringAtPos",at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/tessellator/Tessellator;startDrawingQuads()V",shift = At.Shift.AFTER))
2524
public void disableLightmap(String text, boolean flag, CallbackInfo ci){
26-
GL11.glColor4d(colorOverride.x,colorOverride.y,colorOverride.z,colorOverride.w);
2725
if(LightmapHelper.isLightmapEnabled() && fullbright) Tessellator.instance.setLightmapCoord(LightmapHelper.getLightmapCoord(15,15));
2826
}
2927

@@ -37,11 +35,6 @@ public void disableLightmap3(char c, boolean italic, CallbackInfoReturnable<Floa
3735
if(LightmapHelper.isLightmapEnabled() && fullbright) LightmapHelper.setLightmapCoord(15,15);
3836
}
3937

40-
@Override
41-
public void overrideColor(float r, float g, float b, float alpha) {
42-
colorOverride = new Vec4f(r,g,b,alpha);
43-
}
44-
4538
@Override
4639
public void enableFullbright() {
4740
fullbright = true;

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

+4-11
Original file line numberDiff line numberDiff line change
@@ -15,32 +15,25 @@
1515
import org.spongepowered.asm.mixin.injection.At;
1616
import org.spongepowered.asm.mixin.injection.Inject;
1717
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
18+
import sunsetsatellite.catalyst.core.util.IFullbright;
1819
import sunsetsatellite.catalyst.core.util.Vec4f;
1920
import sunsetsatellite.catalyst.core.util.IColorOverride;
2021

2122
@Mixin(value = ItemModelStandard.class,remap = false)
22-
public abstract class ItemModelStandardMixin extends ItemModel implements IColorOverride {
23+
public abstract class ItemModelStandardMixin extends ItemModel implements IFullbright {
2324
private ItemModelStandardMixin(Item item) {
2425
super(item);
2526
}
2627

27-
@Unique
28-
private Vec4f colorOverride = new Vec4f(1);
29-
@Unique
28+
@Unique
3029
private boolean fullbright = false;
3130

3231
@Inject(method = "renderTexturedQuad(Lnet/minecraft/client/render/tessellator/Tessellator;IILnet/minecraft/client/render/stitcher/IconCoordinate;ZZ)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/tessellator/Tessellator;startDrawingQuads()V", shift = At.Shift.AFTER))
3332
public void disableLightmap(Tessellator tessellator, int x, int y, IconCoordinate icon, boolean flipX, boolean flipY, CallbackInfo ci) {
34-
GL11.glColor4d(colorOverride.x,colorOverride.y,colorOverride.z,colorOverride.w);
3533
if(LightmapHelper.isLightmapEnabled() && fullbright) tessellator.setLightmapCoord(LightmapHelper.getLightmapCoord(15,15));
3634
}
3735

38-
@Override
39-
public void overrideColor(float r, float g, float b, float alpha) {
40-
colorOverride = new Vec4f(r,g,b,alpha);
41-
}
42-
43-
@Override
36+
@Override
4437
public void enableFullbright() {
4538
fullbright = true;
4639
}

src/main/java/sunsetsatellite/catalyst/core/util/IColorOverride.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,6 @@
22

33
public interface IColorOverride {
44
void overrideColor(float r, float g, float b, float alpha);
5-
void enableFullbright();
6-
void disableFullbright();
5+
void enableColorOverride();
6+
void disableColorOverride();
77
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package sunsetsatellite.catalyst.core.util;
2+
3+
public interface IFullbright {
4+
void enableFullbright();
5+
void disableFullbright();
6+
}

0 commit comments

Comments
 (0)