]> git.lizzy.rs Git - BoundingBoxOutlineReloaded.git/blob - src/main/java/com/irtimaled/bbor/client/config/BoundingBoxTypeHelper.java
Allow colors to be configured
[BoundingBoxOutlineReloaded.git] / src / main / java / com / irtimaled / bbor / client / config / BoundingBoxTypeHelper.java
1 package com.irtimaled.bbor.client.config;
2
3 import com.irtimaled.bbor.common.BoundingBoxType;
4
5 import java.awt.*;
6 import java.util.HashMap;
7 import java.util.Map;
8
9 public class BoundingBoxTypeHelper {
10     private static final Map<String, BoundingBoxTypeSettings> structureTypeMap = new HashMap<>();
11
12     private static void registerType(BoundingBoxType type, Setting<Boolean> shouldRender, Setting<HexColor> color) {
13         structureTypeMap.put(type.getName(), new BoundingBoxTypeSettings(shouldRender, color));
14     }
15
16     static {
17         registerType(BoundingBoxType.WorldSpawn, ConfigManager.drawWorldSpawn, ConfigManager.colorWorldSpawn);
18         registerType(BoundingBoxType.SpawnChunks, ConfigManager.drawWorldSpawn, ConfigManager.colorWorldSpawn);
19         registerType(BoundingBoxType.LazySpawnChunks, ConfigManager.drawLazySpawnChunks, ConfigManager.colorLazySpawnChunks);
20         registerType(BoundingBoxType.MobSpawner, ConfigManager.drawMobSpawners, ConfigManager.colorMobSpawners);
21         registerType(BoundingBoxType.SlimeChunks, ConfigManager.drawSlimeChunks, ConfigManager.colorSlimeChunks);
22         registerType(BoundingBoxType.AFKSphere, ConfigManager.drawAFKSpheres, ConfigManager.colorAFKSpheres);
23         registerType(BoundingBoxType.BiomeBorder, ConfigManager.drawBiomeBorders, ConfigManager.colorBiomeBorders);
24         registerType(BoundingBoxType.Beacon, ConfigManager.drawBeacons, ConfigManager.colorBeacons);
25         registerType(BoundingBoxType.Custom, ConfigManager.drawConduits, ConfigManager.colorCustom);
26         registerType(BoundingBoxType.Conduit, ConfigManager.drawConduits, ConfigManager.colorConduits);
27         registerType(BoundingBoxType.SpawnableBlocks, ConfigManager.drawSpawnableBlocks, ConfigManager.colorSpawnableBlocks);
28
29         registerType(BoundingBoxType.JungleTemple, ConfigManager.drawJungleTemples, ConfigManager.colorJungleTemples);
30         registerType(BoundingBoxType.DesertTemple, ConfigManager.drawDesertTemples, ConfigManager.colorDesertTemples);
31         registerType(BoundingBoxType.WitchHut, ConfigManager.drawWitchHuts, ConfigManager.colorWitchHuts);
32         registerType(BoundingBoxType.OceanMonument, ConfigManager.drawOceanMonuments, ConfigManager.colorOceanMonuments);
33         registerType(BoundingBoxType.Shipwreck, ConfigManager.drawShipwrecks, ConfigManager.colorShipwrecks);
34         registerType(BoundingBoxType.OceanRuin, ConfigManager.drawOceanRuins, ConfigManager.colorOceanRuins);
35         registerType(BoundingBoxType.BuriedTreasure, ConfigManager.drawBuriedTreasure, ConfigManager.colorBuriedTreasure);
36         registerType(BoundingBoxType.Stronghold, ConfigManager.drawStrongholds, ConfigManager.colorStrongholds);
37         registerType(BoundingBoxType.MineShaft, ConfigManager.drawMineShafts, ConfigManager.colorMineShafts);
38         registerType(BoundingBoxType.NetherFortress, ConfigManager.drawNetherFortresses, ConfigManager.colorNetherFortresses);
39         registerType(BoundingBoxType.EndCity, ConfigManager.drawEndCities, ConfigManager.colorEndCities);
40         registerType(BoundingBoxType.Mansion, ConfigManager.drawMansions, ConfigManager.colorMansions);
41         registerType(BoundingBoxType.Igloo, ConfigManager.drawIgloos, ConfigManager.colorIgloos);
42         registerType(BoundingBoxType.PillagerOutpost, ConfigManager.drawPillagerOutposts, ConfigManager.colorPillagerOutposts);
43         registerType(BoundingBoxType.Village, ConfigManager.drawVillages, ConfigManager.colorVillages);
44         registerType(BoundingBoxType.VillageSpheres, ConfigManager.drawVillageSpheres, ConfigManager.colorVillages);
45         registerType(BoundingBoxType.NetherFossil, ConfigManager.drawNetherFossils, ConfigManager.colorNetherFossils);
46         registerType(BoundingBoxType.BastionRemnant, ConfigManager.drawBastionRemnants, ConfigManager.colorBastionRemnants);
47         registerType(BoundingBoxType.RuinedPortal, ConfigManager.drawRuinedPortals, ConfigManager.colorRuinedPortals);
48     }
49
50     public static Setting<Boolean> renderSetting(BoundingBoxType type) {
51         return structureTypeMap.get(type.getName()).shouldRender;
52     }
53
54     public static boolean shouldRender(BoundingBoxType type) {
55         BoundingBoxTypeSettings settings = structureTypeMap.get(type.getName());
56         return settings != null ? settings.shouldRender.get() : false;
57     }
58
59     public static Color getColor(BoundingBoxType type) {
60         BoundingBoxTypeSettings settings = structureTypeMap.get(type.getName());
61         return settings != null ? ColorHelper.getColor(settings.color) : Color.WHITE;
62     }
63
64     private static class BoundingBoxTypeSettings {
65         private final Setting<Boolean> shouldRender;
66         private final Setting<HexColor> color;
67
68         public BoundingBoxTypeSettings(Setting<Boolean> shouldRender, Setting<HexColor> color) {
69             this.shouldRender = shouldRender;
70             this.color = color;
71         }
72     }
73 }