@@ -120,6 +120,8 @@ public void renderBaked(TextBlockEntity entity, MatrixStack matrices, VertexCons
120120 for (int i = 0 ; i < entity .lines .size (); ++i ) {
121121 Text line = entity .lines .get (i );
122122 double width = textRenderer .getWidth (line );
123+ if (width == 0 ) continue ;
124+
123125 double dX = switch (entity .textAlignment ) {
124126 case LEFT -> -maxLength / 2D ;
125127 case CENTER -> (maxLength - width ) / 2D - maxLength / 2D ;
@@ -131,18 +133,35 @@ public void renderBaked(TextBlockEntity entity, MatrixStack matrices, VertexCons
131133 matrices .push ();
132134 matrices .translate (dX , 0 , 0 );
133135
134- boolean lineEmpty = line .getContent ().equals (PlainTextContent .EMPTY );
135- TextRenderer .Drawer drawer = (TextRenderer .Drawer ) textRenderer .prepare (line .asOrderedText (), 0 , i * 12 , entity .color , entity .shadow , lineEmpty ? 0 : entity .backgroundColor );
136+ TextRenderer .Drawer drawer = (TextRenderer .Drawer ) textRenderer .prepare (line .asOrderedText (), 0 , i * 12 , entity .color , entity .shadow , entity .backgroundColor );
136137
137138 // TODO: use the light param and add a toggle to make it glow (use LightmapTextureManager.MAX_LIGHT_COORDINATE)
138- drawer .draw (TextRenderer .GlyphDrawer .drawing (vertexConsumers , matrices .peek ().getPositionMatrix (), TextLayerType .NORMAL , LightmapTextureManager .MAX_LIGHT_COORDINATE ));
139+ TextRenderer .GlyphDrawer glyphDrawer = getGlyphDrawer (matrices , vertexConsumers , LightmapTextureManager .MAX_LIGHT_COORDINATE );
140+
141+ drawer .draw (glyphDrawer );
139142
140143 matrices .pop ();
141144 }
142145
143146 matrices .pop ();
144147 }
145148
149+ private static TextRenderer .@ NotNull GlyphDrawer getGlyphDrawer (MatrixStack matrices , VertexConsumerProvider vertexConsumers , int light ) {
150+ return new TextRenderer .GlyphDrawer () {
151+ public void drawGlyph (BakedGlyph .DrawnGlyph glyph ) {
152+ BakedGlyph bakedGlyph = glyph .glyph ();
153+ VertexConsumer vertexConsumer = vertexConsumers .getBuffer (bakedGlyph .getLayer (TextLayerType .NORMAL ));
154+ bakedGlyph .draw (glyph , matrices .peek ().getPositionMatrix (), vertexConsumer , light , false );
155+ }
156+
157+ public void drawRectangle (BakedGlyph bakedGlyph , BakedGlyph .Rectangle rect ) {
158+ rect = new BakedGlyph .Rectangle (rect .minX () - 4 , rect .minY () - 2 , rect .maxX () + 4 , rect .maxY () + 2 , rect .zIndex (), rect .color (), rect .shadowColor (), rect .shadowOffset ());
159+ VertexConsumer vertexConsumer = vertexConsumers .getBuffer (bakedGlyph .getLayer (TextLayerType .NORMAL ));
160+ bakedGlyph .drawRectangle (rect , matrices .peek ().getPositionMatrix (), vertexConsumer , light , false );
161+ }
162+ };
163+ }
164+
146165 @ SuppressWarnings ("SameParameterValue" )
147166 private void drawFillRect (MatrixStack matrices , VertexConsumerProvider vcp , int x1 , int y1 , int x2 , int y2 , int color ) {
148167 float red = (float ) (color >> 16 & 255 ) / 255.0F ;
0 commit comments