3333import org .spongepowered .asm .mixin .Shadow ;
3434import org .spongepowered .asm .mixin .Unique ;
3535
36+ import java .awt .*;
3637import java .util .List ;
3738
3839@ Mixin (TextRenderer .class )
@@ -61,9 +62,9 @@ public int draw(
6162 int light ,
6263 boolean rightToLeft
6364 ) {
64- if ( LambdaMoji . INSTANCE . isDisabled ()) return this . drawInternal (text , x , y , color , shadow , matrix , vertexConsumers , layerType , backgroundColor , light , rightToLeft );
65+ String parsed = neoLambda$parseEmojisAndRender (text , x , y , color );
6566
66- return this .drawInternal (neoLambda$parseEmojisAndRender ( text , x , y ) , x , y , color , shadow , matrix , vertexConsumers , layerType , backgroundColor , light , rightToLeft );
67+ return this .drawInternal (parsed , x , y , color , shadow , matrix , vertexConsumers , layerType , backgroundColor , light , rightToLeft );
6768 }
6869
6970 /**
@@ -83,22 +84,21 @@ public int draw(
8384 int backgroundColor ,
8485 int light
8586 ) {
86- if (LambdaMoji .INSTANCE .isDisabled ()) return this .drawInternal (text , x , y , color , shadow , matrix , vertexConsumers , layerType , backgroundColor , light );
87-
8887 StringBuilder builder = new StringBuilder ();
8988 text .accept ((index , style , c ) -> {
9089 builder .appendCodePoint (c );
9190 return true ;
9291 });
9392
94- return this .drawInternal (
95- Text .literal (neoLambda$parseEmojisAndRender (builder .toString (), x , y )).asOrderedText (),
96- x , y , color , shadow , matrix , vertexConsumers , layerType , backgroundColor , light
97- );
93+ String parsed = neoLambda$parseEmojisAndRender (builder .toString (), x , y , color );
94+
95+ return this .drawInternal (Text .literal (parsed ).asOrderedText (), x , y , color , shadow , matrix , vertexConsumers , layerType , backgroundColor , light );
9896 }
9997
10098 @ Unique
101- private String neoLambda$parseEmojisAndRender (String raw , float x , float y ) {
99+ private String neoLambda$parseEmojisAndRender (String raw , float x , float y , int color ) {
100+ if (LambdaMoji .INSTANCE .isDisabled ()) return raw ;
101+
102102 List <String > emojis = LambdaEmoji .Twemoji .parse (raw );
103103
104104 for (String emoji : emojis ) {
@@ -111,7 +111,13 @@ public int draw(
111111 int height = Lambda .getMc ().textRenderer .fontHeight ;
112112 int width = Lambda .getMc ().textRenderer .getWidth (raw .substring (0 , index ));
113113
114- LambdaMoji .INSTANCE .push (constructed , new Vec2d (x + width , y + (float ) height / 2 ));
114+ // Dude I'm sick of working with the shitcode that is minecraft's codebase :sob:
115+ Color trueColor = switch (color ) {
116+ case 0x00E0E0E0 , 0 -> new Color (255 , 255 , 255 , 255 );
117+ default -> new Color (255 , 255 , 255 , (color >> 24 & 0xFF ));
118+ };
119+
120+ LambdaMoji .INSTANCE .push (constructed , new Vec2d (x + width , y + (float ) height / 2 ), trueColor );
115121
116122 // Replace the emoji with whitespaces depending on the player's settings
117123 raw = raw .replaceFirst (constructed , neoLambda$getReplacement ());
0 commit comments