Skip to content

Commit f6dbb96

Browse files
chore: Improve background skip and render
1 parent 8c59531 commit f6dbb96

File tree

1 file changed

+22
-3
lines changed

1 file changed

+22
-3
lines changed

src/main/java/dev/hephaestus/glowcase/client/render/block/entity/TextBlockEntityRenderer.java

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)