]> git.lizzy.rs Git - BoundingBoxOutlineReloaded.git/blob - src/main/java/com/irtimaled/bbor/client/renderers/Renderer.java
Fix block entity rendering
[BoundingBoxOutlineReloaded.git] / src / main / java / com / irtimaled / bbor / client / renderers / Renderer.java
1 package com.irtimaled.bbor.client.renderers;
2
3 import com.irtimaled.bbor.client.Camera;
4 import net.minecraft.client.render.BufferBuilder;
5 import net.minecraft.client.render.Tessellator;
6 import net.minecraft.client.render.VertexFormat;
7 import net.minecraft.client.render.VertexFormats;
8 import net.minecraft.client.util.math.MatrixStack;
9
10 import java.awt.*;
11
12 @Deprecated
13 public class Renderer {
14     private final VertexFormat.DrawMode glMode;
15
16     static Renderer startLines() {
17         return new Renderer(VertexFormat.DrawMode.LINES, VertexFormats.POSITION_COLOR);
18     }
19
20     static Renderer startLineLoop() {
21         return new Renderer(VertexFormat.DrawMode.DEBUG_LINE_STRIP, VertexFormats.POSITION_COLOR);
22     }
23
24     public static Renderer startQuads() {
25         return new Renderer(VertexFormat.DrawMode.QUADS, VertexFormats.POSITION_COLOR);
26     }
27
28     public static Renderer startTextured() {
29         return new Renderer(VertexFormat.DrawMode.QUADS, VertexFormats.POSITION_TEXTURE_COLOR);
30     }
31
32     private static final Tessellator tessellator = Tessellator.getInstance();
33     private static final BufferBuilder bufferBuilder = tessellator.getBuffer();
34
35     private int red;
36     private int green;
37     private int blue;
38     private int alpha;
39     private MatrixStack matrixStack;
40
41     private Renderer(VertexFormat.DrawMode glMode, VertexFormat vertexFormat) {
42         bufferBuilder.begin(glMode, vertexFormat);
43         this.glMode = glMode;
44     }
45
46     public Renderer setMatrixStack(MatrixStack stack) {
47         this.matrixStack = stack;
48         matrixStack.push();
49         return this;
50     }
51
52     public Renderer setColor(Color color) {
53         return setColor(color.getRed(), color.getGreen(), color.getBlue())
54                 .setAlpha(color.getAlpha());
55     }
56
57     public Renderer setColor(int red, int green, int blue) {
58         this.red = red;
59         this.green = green;
60         this.blue = blue;
61         return this;
62     }
63
64     public Renderer setAlpha(int alpha) {
65         this.alpha = alpha;
66         return this;
67     }
68
69     Renderer addPoint(OffsetPoint point) {
70         return addPoint(point.getX(), point.getY(), point.getZ());
71     }
72
73     public Renderer addPoints(OffsetPoint[] points) {
74         Renderer renderer = this;
75         for (OffsetPoint point : points) {
76             renderer = renderer.addPoint(point);
77         }
78         return renderer;
79     }
80
81     public Renderer addPoint(double x, double y, double z) {
82         matrixStack.push();
83         pos(x, y, z);
84         color();
85         end();
86         matrixStack.pop();
87         return this;
88     }
89
90     public Renderer addPoint(double x, double y, double z, double u, double v) {
91         pos(x, y, z);
92         tex(u, v);
93         color();
94         end();
95         return this;
96     }
97
98     public void render() {
99         if (glMode == VertexFormat.DrawMode.QUADS) {
100             bufferBuilder.setCameraPosition((float) Camera.getX(), (float) Camera.getY(), (float) Camera.getZ());
101         }
102         tessellator.draw();
103         matrixStack.pop();
104     }
105
106     private void pos(double x, double y, double z) {
107         bufferBuilder.vertex(matrixStack.peek().getModel(), (float) x, (float) y, (float) z);
108     }
109
110     private void tex(double u, double v) {
111         bufferBuilder.texture((float) u, (float) v);
112     }
113
114     private void color() {
115         bufferBuilder.color(red / 255F, green / 255F, blue / 255F, alpha / 255F);
116     }
117
118     private void end() {
119         bufferBuilder.next();
120     }
121 }