]> git.lizzy.rs Git - BoundingBoxOutlineReloaded.git/blob - src/main/java/com/irtimaled/bbor/client/renderers/BiomeBorderRenderer.java
Update to 1.17.1 (#124)
[BoundingBoxOutlineReloaded.git] / src / main / java / com / irtimaled / bbor / client / renderers / BiomeBorderRenderer.java
1 package com.irtimaled.bbor.client.renderers;
2
3 import com.irtimaled.bbor.client.config.BoundingBoxTypeHelper;
4 import com.irtimaled.bbor.client.config.ConfigManager;
5 import com.irtimaled.bbor.client.models.BoundingBoxBiomeBorder;
6 import com.irtimaled.bbor.common.models.Coords;
7 import net.minecraft.client.util.math.MatrixStack;
8
9 import java.awt.*;
10
11 public class BiomeBorderRenderer extends AbstractRenderer<BoundingBoxBiomeBorder> {
12     @Override
13     public void render(MatrixStack matrixStack, BoundingBoxBiomeBorder boundingBox) {
14         Coords coords = boundingBox.getCoords();
15         OffsetPoint northWest = new OffsetPoint(coords).offset(0, 0.001F, 0);
16         OffsetPoint northEast = northWest.offset(1, 0, 0);
17         OffsetPoint southWest = northWest.offset(0, 0, 1);
18
19         Color color = BoundingBoxTypeHelper.getColor(boundingBox.getType());
20         if (boundingBox.renderNorth()) {
21             render(matrixStack, northWest, northEast, color);
22         }
23         if (boundingBox.renderWest()) {
24             render(matrixStack, northWest, southWest, color);
25         }
26         if (ConfigManager.renderOnlyCurrentBiome.get()) {
27             OffsetPoint southEast = southWest.offset(1, 0, 0);
28             if (boundingBox.renderSouth()) {
29                 render(matrixStack, southWest, southEast, color);
30             }
31             if (boundingBox.renderEast()) {
32                 render(matrixStack, northEast, southEast, color);
33             }
34         }
35     }
36
37     private void render(MatrixStack matrixStack, OffsetPoint topCorner1, OffsetPoint topCorner2, Color color) {
38         double xOffset = 0d;
39         double zOffset = 0d;
40         if (topCorner1.getX() == topCorner2.getX()) {
41             xOffset = getOffset(topCorner1.getX());
42         } else {
43             zOffset = getOffset(topCorner1.getZ());
44         }
45
46         topCorner1 = topCorner1.offset(xOffset, 0, zOffset);
47         topCorner2 = topCorner2.offset(xOffset, 0, zOffset);
48
49         renderLine(matrixStack, topCorner1, topCorner2, color);
50         OffsetPoint bottomCorner2 = topCorner2.offset(0, 1, 0);
51         renderCuboid(matrixStack, new OffsetBox(topCorner1, bottomCorner2), color, true);
52         OffsetPoint bottomCorner1 = topCorner1.offset(0, 1, 0);
53         renderLine(matrixStack, bottomCorner1, bottomCorner2, color);
54     }
55
56     private double getOffset(double value) {
57         return value > 0 ? -0.001F : 0.001F;
58     }
59 }