]> git.lizzy.rs Git - BoundingBoxOutlineReloaded.git/blob - src/main/java/com/irtimaled/bbor/common/BoundingBoxType.java
05cca0af01c7999e356dc47e4a2d6ec11acf0d1d
[BoundingBoxOutlineReloaded.git] / src / main / java / com / irtimaled / bbor / common / BoundingBoxType.java
1 package com.irtimaled.bbor.common;
2
3 import java.util.HashMap;
4 import java.util.Map;
5
6 public class BoundingBoxType {
7     private static final Map<Integer, BoundingBoxType> structureTypeMap = new HashMap<>();
8
9     public static final BoundingBoxType WorldSpawn = register("World_Spawn");
10     public static final BoundingBoxType SpawnChunks = register("Spawn_Chunks");
11     public static final BoundingBoxType LazySpawnChunks = register("Lazy_Chunks");
12     public static final BoundingBoxType MobSpawner = register("Mob_Spawner");
13     public static final BoundingBoxType SlimeChunks = register("Slime_Chunks");
14     public static final BoundingBoxType AFKSphere = register("AFK Sphere");
15     public static final BoundingBoxType BiomeBorder = register("Biome Border");
16     public static final BoundingBoxType Custom = register("Custom");
17     public static final BoundingBoxType Beacon = register("Beacon");
18     public static final BoundingBoxType Conduit = register("Conduit");
19     public static final BoundingBoxType SpawnableBlocks = register("Spawnable Blocks");
20     public static final BoundingBoxType FlowerForest = register("Flower Forest");
21     public static final BoundingBoxType BedrockCeiling = register("Bedrock Ceiling");
22
23     public static final BoundingBoxType JungleTemple = register("Jungle_Pyramid");
24     public static final BoundingBoxType DesertTemple = register("Desert_Pyramid");
25     public static final BoundingBoxType WitchHut = register("Swamp_Hut");
26     public static final BoundingBoxType OceanMonument = register("Monument");
27     public static final BoundingBoxType Shipwreck = register("Shipwreck");
28     public static final BoundingBoxType OceanRuin = register("Ocean_Ruin");
29     public static final BoundingBoxType BuriedTreasure = register("Buried_Treasure");
30     public static final BoundingBoxType Stronghold = register("Stronghold");
31     public static final BoundingBoxType MineShaft = register("Mineshaft");
32     public static final BoundingBoxType NetherFortress = register("Fortress");
33     public static final BoundingBoxType EndCity = register("EndCity");
34     public static final BoundingBoxType Mansion = register("Mansion");
35     public static final BoundingBoxType Igloo = register("Igloo");
36     public static final BoundingBoxType PillagerOutpost = register("Pillager_Outpost");
37     public static final BoundingBoxType Village = register("Village");
38     public static final BoundingBoxType NetherFossil = register("Nether_Fossil");
39     public static final BoundingBoxType BastionRemnant = register("Bastion_Remnant");
40     public static final BoundingBoxType RuinedPortal = register("Ruined_Portal");
41
42     private static BoundingBoxType register(String name) {
43         return structureTypeMap.computeIfAbsent(name.hashCode(), k -> new BoundingBoxType(name));
44     }
45
46     public static void registerTypes() {
47         structureTypeMap.values().forEach(StructureProcessor::registerSupportedStructure);
48     }
49
50     public static BoundingBoxType getByNameHash(Integer nameHash) {
51         return structureTypeMap.get(nameHash);
52     }
53
54     private final String name;
55
56     private BoundingBoxType(String name) {
57         this.name = name;
58     }
59
60     public String getName() {
61         return name;
62     }
63
64     @Override
65     public int hashCode() {
66         return name.hashCode();
67     }
68
69     @Override
70     public boolean equals(Object obj) {
71         if (this == obj) return true;
72         if (obj == null || getClass() != obj.getClass()) return false;
73         BoundingBoxType other = (BoundingBoxType) obj;
74         return this.name.equals(other.name);
75     }
76 }