1
1
package sunsetsatellite .catalyst .core .mixin ;
2
2
3
3
import net .minecraft .client .render .LightmapHelper ;
4
+ import net .minecraft .client .render .block .color .BlockColor ;
5
+ import net .minecraft .client .render .block .color .BlockColorDispatcher ;
4
6
import net .minecraft .client .render .block .model .BlockModel ;
5
7
import net .minecraft .client .render .block .model .BlockModelStandard ;
6
8
import net .minecraft .client .render .tessellator .Tessellator ;
7
9
import net .minecraft .core .block .Block ;
10
+ import org .lwjgl .BufferUtils ;
8
11
import org .lwjgl .opengl .GL11 ;
9
12
import org .spongepowered .asm .mixin .Debug ;
10
13
import org .spongepowered .asm .mixin .Mixin ;
11
14
import org .spongepowered .asm .mixin .Unique ;
12
15
import org .spongepowered .asm .mixin .injection .At ;
13
16
import org .spongepowered .asm .mixin .injection .Inject ;
14
17
import org .spongepowered .asm .mixin .injection .callback .CallbackInfo ;
18
+ import sunsetsatellite .catalyst .core .util .IFullbright ;
15
19
import sunsetsatellite .catalyst .core .util .Vec4f ;
16
20
import sunsetsatellite .catalyst .core .util .IColorOverride ;
17
21
22
+ import java .nio .FloatBuffer ;
23
+
18
24
19
25
@ 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 {
21
27
28
+ private boolean overrideColor = false ;
22
29
@ Unique
23
30
private Vec4f colorOverride = new Vec4f (1 );
24
31
@ Unique
@@ -30,7 +37,9 @@ private BlockModelStandardMixin(Block block) {
30
37
31
38
@ Inject (method = "renderBlockOnInventory" , at = @ At (value = "INVOKE" , target = "Lnet/minecraft/client/render/block/model/BlockModelStandard;setBlockBoundsForItemRender()V" , ordinal = 0 ))
32
39
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 ));
34
43
}
35
44
36
45
@ 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) {
44
53
colorOverride = new Vec4f (r ,g ,b ,alpha );
45
54
}
46
55
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
48
67
public void enableFullbright () {
49
68
fullbright = true ;
50
69
}
0 commit comments