File size: 16,947 Bytes
d46f4a3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
package net.minecraft.client.renderer;

import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.blaze3d.vertex.VertexConsumer;
import net.minecraft.core.Direction;
import net.minecraft.world.phys.AABB;
import net.minecraft.world.phys.Vec3;
import net.minecraft.world.phys.shapes.VoxelShape;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import org.joml.Matrix4f;
import org.joml.Vector3f;

@OnlyIn(Dist.CLIENT)
public class ShapeRenderer {
    public static void renderShape(
        PoseStack p_362127_, VertexConsumer p_362290_, VoxelShape p_362784_, double p_360742_, double p_360770_, double p_368227_, int p_362030_
    ) {
        PoseStack.Pose posestack$pose = p_362127_.last();
        p_362784_.forAllEdges(
            (p_368095_, p_361366_, p_363660_, p_361928_, p_364145_, p_361311_) -> {
                Vector3f vector3f = new Vector3f((float)(p_361928_ - p_368095_), (float)(p_364145_ - p_361366_), (float)(p_361311_ - p_363660_)).normalize();
                p_362290_.addVertex(posestack$pose, (float)(p_368095_ + p_360742_), (float)(p_361366_ + p_360770_), (float)(p_363660_ + p_368227_))
                    .setColor(p_362030_)
                    .setNormal(posestack$pose, vector3f);
                p_362290_.addVertex(posestack$pose, (float)(p_361928_ + p_360742_), (float)(p_364145_ + p_360770_), (float)(p_361311_ + p_368227_))
                    .setColor(p_362030_)
                    .setNormal(posestack$pose, vector3f);
            }
        );
    }

    public static void renderLineBox(
        PoseStack p_367242_, VertexConsumer p_368944_, AABB p_369230_, float p_364083_, float p_362021_, float p_362124_, float p_367649_
    ) {
        renderLineBox(
            p_367242_,
            p_368944_,
            p_369230_.minX,
            p_369230_.minY,
            p_369230_.minZ,
            p_369230_.maxX,
            p_369230_.maxY,
            p_369230_.maxZ,
            p_364083_,
            p_362021_,
            p_362124_,
            p_367649_,
            p_364083_,
            p_362021_,
            p_362124_
        );
    }

    public static void renderLineBox(
        PoseStack p_366452_,
        VertexConsumer p_365817_,
        double p_362632_,
        double p_362535_,
        double p_368825_,
        double p_363850_,
        double p_361520_,
        double p_367127_,
        float p_363525_,
        float p_365172_,
        float p_361957_,
        float p_362174_
    ) {
        renderLineBox(
            p_366452_,
            p_365817_,
            p_362632_,
            p_362535_,
            p_368825_,
            p_363850_,
            p_361520_,
            p_367127_,
            p_363525_,
            p_365172_,
            p_361957_,
            p_362174_,
            p_363525_,
            p_365172_,
            p_361957_
        );
    }

    public static void renderLineBox(
        PoseStack p_363808_,
        VertexConsumer p_365769_,
        double p_364950_,
        double p_364934_,
        double p_370117_,
        double p_365763_,
        double p_361638_,
        double p_360926_,
        float p_362396_,
        float p_361053_,
        float p_363674_,
        float p_366690_,
        float p_365217_,
        float p_367742_,
        float p_364278_
    ) {
        PoseStack.Pose posestack$pose = p_363808_.last();
        float f = (float)p_364950_;
        float f1 = (float)p_364934_;
        float f2 = (float)p_370117_;
        float f3 = (float)p_365763_;
        float f4 = (float)p_361638_;
        float f5 = (float)p_360926_;
        p_365769_.addVertex(posestack$pose, f, f1, f2).setColor(p_362396_, p_367742_, p_364278_, p_366690_).setNormal(posestack$pose, 1.0F, 0.0F, 0.0F);
        p_365769_.addVertex(posestack$pose, f3, f1, f2).setColor(p_362396_, p_367742_, p_364278_, p_366690_).setNormal(posestack$pose, 1.0F, 0.0F, 0.0F);
        p_365769_.addVertex(posestack$pose, f, f1, f2).setColor(p_365217_, p_361053_, p_364278_, p_366690_).setNormal(posestack$pose, 0.0F, 1.0F, 0.0F);
        p_365769_.addVertex(posestack$pose, f, f4, f2).setColor(p_365217_, p_361053_, p_364278_, p_366690_).setNormal(posestack$pose, 0.0F, 1.0F, 0.0F);
        p_365769_.addVertex(posestack$pose, f, f1, f2).setColor(p_365217_, p_367742_, p_363674_, p_366690_).setNormal(posestack$pose, 0.0F, 0.0F, 1.0F);
        p_365769_.addVertex(posestack$pose, f, f1, f5).setColor(p_365217_, p_367742_, p_363674_, p_366690_).setNormal(posestack$pose, 0.0F, 0.0F, 1.0F);
        p_365769_.addVertex(posestack$pose, f3, f1, f2).setColor(p_362396_, p_361053_, p_363674_, p_366690_).setNormal(posestack$pose, 0.0F, 1.0F, 0.0F);
        p_365769_.addVertex(posestack$pose, f3, f4, f2).setColor(p_362396_, p_361053_, p_363674_, p_366690_).setNormal(posestack$pose, 0.0F, 1.0F, 0.0F);
        p_365769_.addVertex(posestack$pose, f3, f4, f2).setColor(p_362396_, p_361053_, p_363674_, p_366690_).setNormal(posestack$pose, -1.0F, 0.0F, 0.0F);
        p_365769_.addVertex(posestack$pose, f, f4, f2).setColor(p_362396_, p_361053_, p_363674_, p_366690_).setNormal(posestack$pose, -1.0F, 0.0F, 0.0F);
        p_365769_.addVertex(posestack$pose, f, f4, f2).setColor(p_362396_, p_361053_, p_363674_, p_366690_).setNormal(posestack$pose, 0.0F, 0.0F, 1.0F);
        p_365769_.addVertex(posestack$pose, f, f4, f5).setColor(p_362396_, p_361053_, p_363674_, p_366690_).setNormal(posestack$pose, 0.0F, 0.0F, 1.0F);
        p_365769_.addVertex(posestack$pose, f, f4, f5).setColor(p_362396_, p_361053_, p_363674_, p_366690_).setNormal(posestack$pose, 0.0F, -1.0F, 0.0F);
        p_365769_.addVertex(posestack$pose, f, f1, f5).setColor(p_362396_, p_361053_, p_363674_, p_366690_).setNormal(posestack$pose, 0.0F, -1.0F, 0.0F);
        p_365769_.addVertex(posestack$pose, f, f1, f5).setColor(p_362396_, p_361053_, p_363674_, p_366690_).setNormal(posestack$pose, 1.0F, 0.0F, 0.0F);
        p_365769_.addVertex(posestack$pose, f3, f1, f5).setColor(p_362396_, p_361053_, p_363674_, p_366690_).setNormal(posestack$pose, 1.0F, 0.0F, 0.0F);
        p_365769_.addVertex(posestack$pose, f3, f1, f5).setColor(p_362396_, p_361053_, p_363674_, p_366690_).setNormal(posestack$pose, 0.0F, 0.0F, -1.0F);
        p_365769_.addVertex(posestack$pose, f3, f1, f2).setColor(p_362396_, p_361053_, p_363674_, p_366690_).setNormal(posestack$pose, 0.0F, 0.0F, -1.0F);
        p_365769_.addVertex(posestack$pose, f, f4, f5).setColor(p_362396_, p_361053_, p_363674_, p_366690_).setNormal(posestack$pose, 1.0F, 0.0F, 0.0F);
        p_365769_.addVertex(posestack$pose, f3, f4, f5).setColor(p_362396_, p_361053_, p_363674_, p_366690_).setNormal(posestack$pose, 1.0F, 0.0F, 0.0F);
        p_365769_.addVertex(posestack$pose, f3, f1, f5).setColor(p_362396_, p_361053_, p_363674_, p_366690_).setNormal(posestack$pose, 0.0F, 1.0F, 0.0F);
        p_365769_.addVertex(posestack$pose, f3, f4, f5).setColor(p_362396_, p_361053_, p_363674_, p_366690_).setNormal(posestack$pose, 0.0F, 1.0F, 0.0F);
        p_365769_.addVertex(posestack$pose, f3, f4, f2).setColor(p_362396_, p_361053_, p_363674_, p_366690_).setNormal(posestack$pose, 0.0F, 0.0F, 1.0F);
        p_365769_.addVertex(posestack$pose, f3, f4, f5).setColor(p_362396_, p_361053_, p_363674_, p_366690_).setNormal(posestack$pose, 0.0F, 0.0F, 1.0F);
    }

    public static void addChainedFilledBoxVertices(
        PoseStack p_364970_,
        VertexConsumer p_368145_,
        double p_361406_,
        double p_360919_,
        double p_368183_,
        double p_369129_,
        double p_366679_,
        double p_368318_,
        float p_365390_,
        float p_360927_,
        float p_369810_,
        float p_368692_
    ) {
        addChainedFilledBoxVertices(
            p_364970_,
            p_368145_,
            (float)p_361406_,
            (float)p_360919_,
            (float)p_368183_,
            (float)p_369129_,
            (float)p_366679_,
            (float)p_368318_,
            p_365390_,
            p_360927_,
            p_369810_,
            p_368692_
        );
    }

    public static void addChainedFilledBoxVertices(
        PoseStack p_363033_,
        VertexConsumer p_368281_,
        float p_363400_,
        float p_368959_,
        float p_368839_,
        float p_363598_,
        float p_369683_,
        float p_364534_,
        float p_369605_,
        float p_364542_,
        float p_367457_,
        float p_362117_
    ) {
        Matrix4f matrix4f = p_363033_.last().pose();
        p_368281_.addVertex(matrix4f, p_363400_, p_368959_, p_368839_).setColor(p_369605_, p_364542_, p_367457_, p_362117_);
        p_368281_.addVertex(matrix4f, p_363400_, p_368959_, p_368839_).setColor(p_369605_, p_364542_, p_367457_, p_362117_);
        p_368281_.addVertex(matrix4f, p_363400_, p_368959_, p_368839_).setColor(p_369605_, p_364542_, p_367457_, p_362117_);
        p_368281_.addVertex(matrix4f, p_363400_, p_368959_, p_364534_).setColor(p_369605_, p_364542_, p_367457_, p_362117_);
        p_368281_.addVertex(matrix4f, p_363400_, p_369683_, p_368839_).setColor(p_369605_, p_364542_, p_367457_, p_362117_);
        p_368281_.addVertex(matrix4f, p_363400_, p_369683_, p_364534_).setColor(p_369605_, p_364542_, p_367457_, p_362117_);
        p_368281_.addVertex(matrix4f, p_363400_, p_369683_, p_364534_).setColor(p_369605_, p_364542_, p_367457_, p_362117_);
        p_368281_.addVertex(matrix4f, p_363400_, p_368959_, p_364534_).setColor(p_369605_, p_364542_, p_367457_, p_362117_);
        p_368281_.addVertex(matrix4f, p_363598_, p_369683_, p_364534_).setColor(p_369605_, p_364542_, p_367457_, p_362117_);
        p_368281_.addVertex(matrix4f, p_363598_, p_368959_, p_364534_).setColor(p_369605_, p_364542_, p_367457_, p_362117_);
        p_368281_.addVertex(matrix4f, p_363598_, p_368959_, p_364534_).setColor(p_369605_, p_364542_, p_367457_, p_362117_);
        p_368281_.addVertex(matrix4f, p_363598_, p_368959_, p_368839_).setColor(p_369605_, p_364542_, p_367457_, p_362117_);
        p_368281_.addVertex(matrix4f, p_363598_, p_369683_, p_364534_).setColor(p_369605_, p_364542_, p_367457_, p_362117_);
        p_368281_.addVertex(matrix4f, p_363598_, p_369683_, p_368839_).setColor(p_369605_, p_364542_, p_367457_, p_362117_);
        p_368281_.addVertex(matrix4f, p_363598_, p_369683_, p_368839_).setColor(p_369605_, p_364542_, p_367457_, p_362117_);
        p_368281_.addVertex(matrix4f, p_363598_, p_368959_, p_368839_).setColor(p_369605_, p_364542_, p_367457_, p_362117_);
        p_368281_.addVertex(matrix4f, p_363400_, p_369683_, p_368839_).setColor(p_369605_, p_364542_, p_367457_, p_362117_);
        p_368281_.addVertex(matrix4f, p_363400_, p_368959_, p_368839_).setColor(p_369605_, p_364542_, p_367457_, p_362117_);
        p_368281_.addVertex(matrix4f, p_363400_, p_368959_, p_368839_).setColor(p_369605_, p_364542_, p_367457_, p_362117_);
        p_368281_.addVertex(matrix4f, p_363598_, p_368959_, p_368839_).setColor(p_369605_, p_364542_, p_367457_, p_362117_);
        p_368281_.addVertex(matrix4f, p_363400_, p_368959_, p_364534_).setColor(p_369605_, p_364542_, p_367457_, p_362117_);
        p_368281_.addVertex(matrix4f, p_363598_, p_368959_, p_364534_).setColor(p_369605_, p_364542_, p_367457_, p_362117_);
        p_368281_.addVertex(matrix4f, p_363598_, p_368959_, p_364534_).setColor(p_369605_, p_364542_, p_367457_, p_362117_);
        p_368281_.addVertex(matrix4f, p_363400_, p_369683_, p_368839_).setColor(p_369605_, p_364542_, p_367457_, p_362117_);
        p_368281_.addVertex(matrix4f, p_363400_, p_369683_, p_368839_).setColor(p_369605_, p_364542_, p_367457_, p_362117_);
        p_368281_.addVertex(matrix4f, p_363400_, p_369683_, p_364534_).setColor(p_369605_, p_364542_, p_367457_, p_362117_);
        p_368281_.addVertex(matrix4f, p_363598_, p_369683_, p_368839_).setColor(p_369605_, p_364542_, p_367457_, p_362117_);
        p_368281_.addVertex(matrix4f, p_363598_, p_369683_, p_364534_).setColor(p_369605_, p_364542_, p_367457_, p_362117_);
        p_368281_.addVertex(matrix4f, p_363598_, p_369683_, p_364534_).setColor(p_369605_, p_364542_, p_367457_, p_362117_);
        p_368281_.addVertex(matrix4f, p_363598_, p_369683_, p_364534_).setColor(p_369605_, p_364542_, p_367457_, p_362117_);
    }

    public static void renderFace(
        PoseStack p_361398_,
        VertexConsumer p_368208_,
        Direction p_364940_,
        float p_361821_,
        float p_366736_,
        float p_364720_,
        float p_369092_,
        float p_365269_,
        float p_361985_,
        float p_366223_,
        float p_362144_,
        float p_364969_,
        float p_369822_
    ) {
        Matrix4f matrix4f = p_361398_.last().pose();
        switch (p_364940_) {
            case DOWN:
                p_368208_.addVertex(matrix4f, p_361821_, p_366736_, p_364720_).setColor(p_366223_, p_362144_, p_364969_, p_369822_);
                p_368208_.addVertex(matrix4f, p_369092_, p_366736_, p_364720_).setColor(p_366223_, p_362144_, p_364969_, p_369822_);
                p_368208_.addVertex(matrix4f, p_369092_, p_366736_, p_361985_).setColor(p_366223_, p_362144_, p_364969_, p_369822_);
                p_368208_.addVertex(matrix4f, p_361821_, p_366736_, p_361985_).setColor(p_366223_, p_362144_, p_364969_, p_369822_);
                break;
            case UP:
                p_368208_.addVertex(matrix4f, p_361821_, p_365269_, p_364720_).setColor(p_366223_, p_362144_, p_364969_, p_369822_);
                p_368208_.addVertex(matrix4f, p_361821_, p_365269_, p_361985_).setColor(p_366223_, p_362144_, p_364969_, p_369822_);
                p_368208_.addVertex(matrix4f, p_369092_, p_365269_, p_361985_).setColor(p_366223_, p_362144_, p_364969_, p_369822_);
                p_368208_.addVertex(matrix4f, p_369092_, p_365269_, p_364720_).setColor(p_366223_, p_362144_, p_364969_, p_369822_);
                break;
            case NORTH:
                p_368208_.addVertex(matrix4f, p_361821_, p_366736_, p_364720_).setColor(p_366223_, p_362144_, p_364969_, p_369822_);
                p_368208_.addVertex(matrix4f, p_361821_, p_365269_, p_364720_).setColor(p_366223_, p_362144_, p_364969_, p_369822_);
                p_368208_.addVertex(matrix4f, p_369092_, p_365269_, p_364720_).setColor(p_366223_, p_362144_, p_364969_, p_369822_);
                p_368208_.addVertex(matrix4f, p_369092_, p_366736_, p_364720_).setColor(p_366223_, p_362144_, p_364969_, p_369822_);
                break;
            case SOUTH:
                p_368208_.addVertex(matrix4f, p_361821_, p_366736_, p_361985_).setColor(p_366223_, p_362144_, p_364969_, p_369822_);
                p_368208_.addVertex(matrix4f, p_369092_, p_366736_, p_361985_).setColor(p_366223_, p_362144_, p_364969_, p_369822_);
                p_368208_.addVertex(matrix4f, p_369092_, p_365269_, p_361985_).setColor(p_366223_, p_362144_, p_364969_, p_369822_);
                p_368208_.addVertex(matrix4f, p_361821_, p_365269_, p_361985_).setColor(p_366223_, p_362144_, p_364969_, p_369822_);
                break;
            case WEST:
                p_368208_.addVertex(matrix4f, p_361821_, p_366736_, p_364720_).setColor(p_366223_, p_362144_, p_364969_, p_369822_);
                p_368208_.addVertex(matrix4f, p_361821_, p_366736_, p_361985_).setColor(p_366223_, p_362144_, p_364969_, p_369822_);
                p_368208_.addVertex(matrix4f, p_361821_, p_365269_, p_361985_).setColor(p_366223_, p_362144_, p_364969_, p_369822_);
                p_368208_.addVertex(matrix4f, p_361821_, p_365269_, p_364720_).setColor(p_366223_, p_362144_, p_364969_, p_369822_);
                break;
            case EAST:
                p_368208_.addVertex(matrix4f, p_369092_, p_366736_, p_364720_).setColor(p_366223_, p_362144_, p_364969_, p_369822_);
                p_368208_.addVertex(matrix4f, p_369092_, p_365269_, p_364720_).setColor(p_366223_, p_362144_, p_364969_, p_369822_);
                p_368208_.addVertex(matrix4f, p_369092_, p_365269_, p_361985_).setColor(p_366223_, p_362144_, p_364969_, p_369822_);
                p_368208_.addVertex(matrix4f, p_369092_, p_366736_, p_361985_).setColor(p_366223_, p_362144_, p_364969_, p_369822_);
        }
    }

    public static void renderVector(PoseStack p_366769_, VertexConsumer p_362011_, Vector3f p_367001_, Vec3 p_367730_, int p_363783_) {
        PoseStack.Pose posestack$pose = p_366769_.last();
        p_362011_.addVertex(posestack$pose, p_367001_)
            .setColor(p_363783_)
            .setNormal(posestack$pose, (float)p_367730_.x, (float)p_367730_.y, (float)p_367730_.z);
        p_362011_.addVertex(
                posestack$pose,
                (float)((double)p_367001_.x() + p_367730_.x),
                (float)((double)p_367001_.y() + p_367730_.y),
                (float)((double)p_367001_.z() + p_367730_.z)
            )
            .setColor(p_363783_)
            .setNormal(posestack$pose, (float)p_367730_.x, (float)p_367730_.y, (float)p_367730_.z);
    }
}