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