]> git.lizzy.rs Git - BoundingBoxOutlineReloaded.git/commitdiff
Adjust structure loading based on 1.13 changes
authorirtimaled <irtimaled@gmail.com>
Wed, 6 Feb 2019 19:25:29 +0000 (11:25 -0800)
committerIrtimaled <irtimaled@gmail.com>
Sun, 24 Feb 2019 08:27:22 +0000 (00:27 -0800)
19 files changed:
gradle.properties
src/main/java/com/irtimaled/bbor/ReflectionHelper.java [deleted file]
src/main/java/com/irtimaled/bbor/client/BoundingBoxOutlineReloaded.java
src/main/java/com/irtimaled/bbor/client/ClientBoundingBoxProvider.java
src/main/java/com/irtimaled/bbor/client/ClientProxy.java
src/main/java/com/irtimaled/bbor/client/ClientRenderer.java
src/main/java/com/irtimaled/bbor/client/NBTFileParser.java
src/main/java/com/irtimaled/bbor/client/renderers/SlimeChunkRenderer.java
src/main/java/com/irtimaled/bbor/client/renderers/VillageRenderer.java
src/main/java/com/irtimaled/bbor/client/renderers/WorldSpawnRenderer.java
src/main/java/com/irtimaled/bbor/common/BoundingBoxCache.java
src/main/java/com/irtimaled/bbor/common/CommonProxy.java
src/main/java/com/irtimaled/bbor/common/DimensionCache.java
src/main/java/com/irtimaled/bbor/common/DimensionProcessor.java
src/main/java/com/irtimaled/bbor/common/IVillageEventHandler.java
src/main/java/com/irtimaled/bbor/common/StructureType.java
src/main/java/com/irtimaled/bbor/common/VillageProcessor.java
src/main/java/com/irtimaled/bbor/common/models/BoundingBoxStructure.java
src/main/java/com/irtimaled/bbor/common/models/BoundingBoxVillage.java

index da0bc04c3a437fdaacf54dd8ba17bc1d3cac4708..21570c4e4daa1e8d3a6e4527c3d4f2e211309885 100644 (file)
@@ -1,3 +1,3 @@
 name = bbor
 buildVersion = 1.0.4
-mcVersion = 1.12.2
+mcVersion = 1.13
diff --git a/src/main/java/com/irtimaled/bbor/ReflectionHelper.java b/src/main/java/com/irtimaled/bbor/ReflectionHelper.java
deleted file mode 100644 (file)
index 2bd0a41..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-package com.irtimaled.bbor;
-
-import java.lang.reflect.Field;
-import java.util.HashMap;
-import java.util.Map;
-
-public class ReflectionHelper {
-    public static <T, R> R getPrivateValue(Class<T> sourceClass, T instance, Class<R> resultClass) {
-        try {
-            Field f = getField(sourceClass, resultClass);
-            if (f != null) {
-                return (R) f.get(instance);
-            }
-        } catch (Exception ignored) {
-        }
-        return null;
-    }
-
-    private static Map<Class, Map<Class, Field>> fieldMap = new HashMap<>();
-
-    private static <T, R> Field getField(Class<T> sourceClass, Class<R> resultClass) {
-        Map<Class, Field> map = fieldMap.computeIfAbsent(sourceClass, k -> new HashMap<>());
-        Field field = map.get(resultClass);
-        if (field == null) {
-            field = getFieldUsingReflection(sourceClass, resultClass);
-            if (field != null) {
-                field.setAccessible(true);
-                map.put(resultClass, field);
-            }
-        }
-        return field;
-    }
-
-    private static <T, R> Field getFieldUsingReflection(Class<T> sourceClass, Class<R> resultClass) {
-        Field[] fields = sourceClass.getDeclaredFields();
-        for (Field field : fields) {
-            if (field.getType().equals(resultClass))
-                return field;
-        }
-        for (Field field : fields) {
-            if (resultClass.isAssignableFrom(field.getType()))
-                return field;
-        }
-        return null;
-    }
-}
index 06a260354c5e214baf0e026d2f8452747517b11e..48e51f022fa9ea6fed207fdec6469cbcdc96948b 100644 (file)
@@ -2,6 +2,7 @@ package com.irtimaled.bbor.client;
 
 import com.irtimaled.bbor.config.ConfigManager;
 import net.minecraft.client.Minecraft;
+import net.minecraft.client.settings.KeyBinding;
 import net.minecraft.network.NetworkManager;
 import net.minecraft.world.World;
 import net.minecraft.world.chunk.Chunk;
@@ -12,7 +13,7 @@ public class BoundingBoxOutlineReloaded {
     private static ClientProxy proxy;
 
     public static void init() {
-        ConfigManager.loadConfig(new File(Minecraft.getMinecraft().mcDataDir, "config"));
+        ConfigManager.loadConfig(new File(Minecraft.getInstance().gameDir, "config"));
         proxy = new ClientProxy();
         proxy.init();
     }
@@ -26,9 +27,17 @@ public class BoundingBoxOutlineReloaded {
     }
 
     public static void keyPressed() {
-        proxy.keyPressed();
+        if (ActiveHotKey.isPressed()) {
+            proxy.toggleActive();
+        } else if (OuterBoxOnlyHotKey.isPressed()) {
+            proxy.toggleOuterBoxOnly();
+        }
     }
 
+    public static final String KeyCategory = "Bounding Box Outline Reloaded";
+    public static KeyBinding ActiveHotKey =  new KeyBinding("Toggle On/Off", 0x42, KeyCategory);
+    public static KeyBinding OuterBoxOnlyHotKey= new KeyBinding("Toggle Display Outer Box Only", 0x4f, KeyCategory);
+
     public static void render(float partialTicks) {
         proxy.tick();
         proxy.render(partialTicks);
index bb3783c0ec821406c61b9ef06b4625d0ccb297bb..4695db517d08003d16056b1849535edf15a39fee 100644 (file)
@@ -10,7 +10,7 @@ import net.minecraft.client.Minecraft;
 import net.minecraft.util.math.BlockPos;
 import net.minecraft.util.math.ChunkPos;
 import net.minecraft.util.math.MathHelper;
-import net.minecraft.world.DimensionType;
+import net.minecraft.world.dimension.DimensionType;
 
 import java.awt.*;
 import java.util.HashSet;
@@ -27,7 +27,7 @@ class ClientBoundingBoxProvider {
     }
 
     private boolean isWithinRenderDistance(BlockPos minBlockPos, BlockPos maxBlockPos) {
-        int renderDistanceBlocks = Minecraft.getMinecraft().gameSettings.renderDistanceChunks * CHUNK_SIZE;
+        int renderDistanceBlocks = Minecraft.getInstance().gameSettings.renderDistanceChunks * CHUNK_SIZE;
         int minX = MathHelper.floor(PlayerData.getX() - renderDistanceBlocks);
         int maxX = MathHelper.floor(PlayerData.getX() + renderDistanceBlocks);
         int minZ = MathHelper.floor(PlayerData.getZ() - renderDistanceBlocks);
@@ -84,7 +84,7 @@ class ClientBoundingBoxProvider {
     }
 
     private Set<BoundingBoxSlimeChunk> getSlimeChunks() {
-        int renderDistanceChunks = Minecraft.getMinecraft().gameSettings.renderDistanceChunks;
+        int renderDistanceChunks = Minecraft.getInstance().gameSettings.renderDistanceChunks;
         int playerChunkX = MathHelper.floor(PlayerData.getX() / CHUNK_SIZE);
         int playerChunkZ = MathHelper.floor(PlayerData.getZ() / CHUNK_SIZE);
         Set<BoundingBoxSlimeChunk> slimeChunks = new HashSet<>();
index 22eb4ff23abc81d428e53ba89370d3c2f9deeff3..6b26bc68d06e9150c1427a9725bc4005af566ee1 100644 (file)
@@ -5,12 +5,9 @@ import com.irtimaled.bbor.common.VillageColorCache;
 import com.irtimaled.bbor.common.VillageProcessor;
 import com.irtimaled.bbor.config.ConfigManager;
 import net.minecraft.client.Minecraft;
-import net.minecraft.client.settings.KeyBinding;
 import net.minecraft.entity.player.EntityPlayer;
 import net.minecraft.network.NetworkManager;
-import net.minecraft.world.DimensionType;
-import org.apache.commons.lang3.ArrayUtils;
-import org.lwjgl.input.Keyboard;
+import net.minecraft.world.dimension.DimensionType;
 
 import java.net.InetSocketAddress;
 import java.net.SocketAddress;
@@ -18,34 +15,28 @@ import java.net.SocketAddress;
 public class ClientProxy extends CommonProxy {
     private boolean active;
     private boolean outerBoxOnly;
-    private KeyBinding activeHotKey;
-    private KeyBinding outerBoxOnlyHotKey;
     private ClientRenderer renderer;
     private int remoteUserCount = 0;
 
-    public void keyPressed() {
-        if (activeHotKey.isPressed()) {
-            active = !active;
-            if (active)
-                PlayerData.setActiveY();
-        } else if (outerBoxOnlyHotKey.isPressed()) {
-            outerBoxOnly = !outerBoxOnly;
-        }
+    public void toggleActive() {
+        active = !active;
+        if (active)
+            PlayerData.setActiveY();
+    }
+
+    public void toggleOuterBoxOnly() {
+        outerBoxOnly = !outerBoxOnly;
     }
 
     @Override
     public void init() {
-        String category = "Bounding Box Outline Reloaded";
-        activeHotKey = new KeyBinding("Toggle On/Off", Keyboard.KEY_B, category);
-        outerBoxOnlyHotKey = new KeyBinding("Toggle Display Outer Box Only", Keyboard.KEY_O, category);
-        Minecraft.getMinecraft().gameSettings.keyBindings = ArrayUtils.addAll(Minecraft.getMinecraft().gameSettings.keyBindings, activeHotKey, outerBoxOnlyHotKey);
         ClientDimensionCache clientDimensionCache = new ClientDimensionCache();
         renderer = new ClientRenderer(clientDimensionCache);
         dimensionCache = clientDimensionCache;
     }
 
     public void render(float partialTicks) {
-        EntityPlayer entityPlayer = Minecraft.getMinecraft().player;
+        EntityPlayer entityPlayer = Minecraft.getInstance().player;
         PlayerData.setPlayerPosition(partialTicks, entityPlayer);
 
         if (this.active) {
index ba230499fe9c7f4f9eecf7ac16d5f18c63ed91cf..aae1bd52f2c489b8826546476d421ef291938e86 100644 (file)
@@ -3,7 +3,7 @@ package com.irtimaled.bbor.client;
 import com.irtimaled.bbor.client.renderers.*;
 import com.irtimaled.bbor.common.models.*;
 import com.irtimaled.bbor.config.ConfigManager;
-import net.minecraft.world.DimensionType;
+import net.minecraft.world.dimension.DimensionType;
 import org.lwjgl.opengl.GL11;
 
 import java.util.HashMap;
index f647d9c1c4d59ebbcf88545cb687aa2175adbe0a..719fb18940ed66601f82f526f43c0cfc9aeb5915 100644 (file)
@@ -12,7 +12,7 @@ import net.minecraft.nbt.CompressedStreamTools;
 import net.minecraft.nbt.NBTTagCompound;
 import net.minecraft.nbt.NBTTagList;
 import net.minecraft.util.math.BlockPos;
-import net.minecraft.world.DimensionType;
+import net.minecraft.world.dimension.DimensionType;
 
 import java.awt.*;
 import java.io.File;
@@ -180,8 +180,8 @@ class NBTFileParser {
 
     private static NBTTagCompound[] getChildCompoundTags(NBTTagCompound parent, String key) {
         NBTTagList tagList = parent.getTagList(key, 10);
-        NBTTagCompound[] result = new NBTTagCompound[tagList.tagCount()];
-        for (int index = 0; index < tagList.tagCount(); index++) {
+        NBTTagCompound[] result = new NBTTagCompound[tagList.size()];
+        for (int index = 0; index < tagList.size(); index++) {
             result[index] = tagList.getCompoundTagAt(index);
         }
         return result;
index 1ba3765792fc0cff7453bb0a25b7deaf4ce63cf3..173007ac1291d8f6b5bde26edb93060238e75a37 100644 (file)
@@ -1,7 +1,7 @@
 package com.irtimaled.bbor.client.renderers;
 
-import com.irtimaled.bbor.common.models.BoundingBoxSlimeChunk;
 import com.irtimaled.bbor.client.PlayerData;
+import com.irtimaled.bbor.common.models.BoundingBoxSlimeChunk;
 import com.irtimaled.bbor.config.ConfigManager;
 import net.minecraft.util.math.AxisAlignedBB;
 
index d5bee1f410cc2b6f3f6d045b44129367a0dc3370..88392e004186455fd270b0499febfec52c1216d5 100644 (file)
@@ -1,7 +1,7 @@
 package com.irtimaled.bbor.client.renderers;
 
-import com.irtimaled.bbor.common.models.BoundingBoxVillage;
 import com.irtimaled.bbor.client.PlayerData;
+import com.irtimaled.bbor.common.models.BoundingBoxVillage;
 import com.irtimaled.bbor.config.ConfigManager;
 import net.minecraft.client.renderer.BufferBuilder;
 import net.minecraft.client.renderer.Tessellator;
index 98ac02d96e3962ac2bb9ea0b5a8646ad1dd9e442..96e07acce2a1aaa37fc31677bed627cacf1bdb20 100644 (file)
@@ -1,7 +1,7 @@
 package com.irtimaled.bbor.client.renderers;
 
-import com.irtimaled.bbor.common.models.BoundingBoxWorldSpawn;
 import com.irtimaled.bbor.client.PlayerData;
+import com.irtimaled.bbor.common.models.BoundingBoxWorldSpawn;
 import com.irtimaled.bbor.config.ConfigManager;
 import net.minecraft.util.math.AxisAlignedBB;
 
index 03026f1689acc682a2568c7b2304b0084315ba3d..fc13839cb10849b37b2a4fd2ae91d1ca33e2255b 100644 (file)
@@ -14,9 +14,6 @@ public class BoundingBoxCache {
         return cache;
     }
 
-    public synchronized void refresh() {
-    }
-
     public void close() {
         cache.clear();
     }
index 68e338b60fbf55885fe433bfcc757547d25e4650..0021d4323f90f31290124535e727c878b80d5d4a 100644 (file)
@@ -1,14 +1,12 @@
 package com.irtimaled.bbor.common;
 
 import com.irtimaled.bbor.Logger;
-import com.irtimaled.bbor.ReflectionHelper;
 import com.irtimaled.bbor.config.ConfigManager;
-import net.minecraft.world.DimensionType;
 import net.minecraft.world.World;
 import net.minecraft.world.chunk.Chunk;
 import net.minecraft.world.chunk.IChunkProvider;
+import net.minecraft.world.dimension.DimensionType;
 import net.minecraft.world.gen.ChunkProviderServer;
-import net.minecraft.world.gen.IChunkGenerator;
 
 import java.util.HashSet;
 import java.util.Set;
@@ -22,11 +20,10 @@ public class CommonProxy {
     public void worldLoaded(World world) {
         IChunkProvider chunkProvider = world.getChunkProvider();
         if (chunkProvider instanceof ChunkProviderServer) {
-            IChunkGenerator chunkGenerator = ReflectionHelper.getPrivateValue(ChunkProviderServer.class, (ChunkProviderServer) chunkProvider, IChunkGenerator.class);
             dimensionCache.setWorldData(world.getSeed(), world.getWorldInfo().getSpawnX(), world.getWorldInfo().getSpawnZ());
-            DimensionType dimensionType = world.provider.getDimensionType();
-            Logger.info("create world dimension: %s, %s (chunkprovider: %s) (seed: %d)", dimensionType, world.getClass().toString(), chunkGenerator.getClass().toString(), world.getSeed());
-            DimensionProcessor boundingBoxCache = new DimensionProcessor(dimensionType, chunkGenerator);
+            DimensionType dimensionType = world.dimension.getType();
+            Logger.info("create world dimension: %s, %s (seed: %d)", dimensionType, world.getClass().toString(), world.getSeed());
+            DimensionProcessor boundingBoxCache = new DimensionProcessor(dimensionType);
             dimensionCache.put(dimensionType, boundingBoxCache);
             if (ConfigManager.drawVillages.getBoolean()) {
                 villageProcessors.add(new VillageProcessor(world, dimensionType, eventHandler, boundingBoxCache));
@@ -35,8 +32,11 @@ public class CommonProxy {
     }
 
     public void chunkLoaded(Chunk chunk) {
-        DimensionType dimensionType = chunk.getWorld().provider.getDimensionType();
-        dimensionCache.refresh(dimensionType);
+        DimensionType dimensionType = chunk.getWorld().dimension.getType();
+        BoundingBoxCache cache = dimensionCache.get(dimensionType);
+        if(cache instanceof DimensionProcessor) {
+            ((DimensionProcessor)cache).processChunk(chunk);
+        }
     }
 
     public void tick() {
index a6c8f24dedca89c532bc4caea4de91ad34d8f273..5ba759731c07b6dd14acc42e3932ebdbd7ea7785 100644 (file)
@@ -1,7 +1,7 @@
 package com.irtimaled.bbor.common;
 
 import com.irtimaled.bbor.common.models.WorldData;
-import net.minecraft.world.DimensionType;
+import net.minecraft.world.dimension.DimensionType;
 
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
@@ -10,10 +10,8 @@ public class DimensionCache {
     private final Map<DimensionType, BoundingBoxCache> map = new ConcurrentHashMap<>();
     private WorldData worldData;
 
-    void refresh(DimensionType dimensionType) {
-        if (map.containsKey(dimensionType)) {
-            map.get(dimensionType).refresh();
-        }
+    public BoundingBoxCache get(DimensionType dimensionType) {
+        return map.get(dimensionType);
     }
 
     public void put(DimensionType dimensionType, BoundingBoxCache boundingBoxCache) {
index 7ea59c411d4e9dde23faac7025d0e701e6148252..899fb2b78cca3fd038318aa57e9f1e57ef9db177 100644 (file)
 package com.irtimaled.bbor.common;
 
 import com.irtimaled.bbor.Logger;
-import com.irtimaled.bbor.ReflectionHelper;
 import com.irtimaled.bbor.common.models.BoundingBox;
 import com.irtimaled.bbor.common.models.BoundingBoxStructure;
 import com.irtimaled.bbor.config.ConfigManager;
-import net.minecraft.util.math.ChunkPos;
-import net.minecraft.world.DimensionType;
-import net.minecraft.world.gen.ChunkGeneratorEnd;
-import net.minecraft.world.gen.ChunkGeneratorHell;
-import net.minecraft.world.gen.ChunkGeneratorOverworld;
-import net.minecraft.world.gen.IChunkGenerator;
-import net.minecraft.world.gen.structure.*;
+import com.irtimaled.bbor.config.Setting;
+import net.minecraft.util.math.MutableBoundingBox;
+import net.minecraft.world.chunk.Chunk;
+import net.minecraft.world.dimension.DimensionType;
+import net.minecraft.world.gen.feature.structure.StructurePiece;
+import net.minecraft.world.gen.feature.structure.StructureStart;
 
 import java.awt.*;
-import java.util.*;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
 
 public class DimensionProcessor extends BoundingBoxCache {
-    DimensionProcessor(DimensionType dimensionType, IChunkGenerator chunkGenerator) {
+    DimensionProcessor(DimensionType dimensionType) {
         this.dimensionType = dimensionType;
-        this.chunkGenerator = chunkGenerator;
     }
 
     private DimensionType dimensionType;
-    private IChunkGenerator chunkGenerator;
 
     private boolean closed = false;
 
     @Override
     public void close() {
         closed = true;
-        chunkGenerator = null;
         super.close();
     }
 
-    private static <T extends IChunkGenerator, R extends MapGenStructure> Collection<StructureStart> getStructures(T chunkGenerator, Class<R> generatorClass) {
-        Class<T> chunkGeneratorClass = (Class<T>) chunkGenerator.getClass();
-        R structureGenerator = ReflectionHelper.getPrivateValue(chunkGeneratorClass, chunkGenerator, generatorClass);
-        if (structureGenerator != null) {
-            Map<ChunkPos, StructureStart> structureMap = ReflectionHelper.getPrivateValue(MapGenStructure.class, structureGenerator, Map.class);
-            return structureMap.values();
-        }
-        return Collections.emptyList();
-    }
-
-    private Map<StructureType, Collection<StructureStart>> getStructures() {
-        Map<StructureType, Collection<StructureStart>> structureMap = new HashMap<>();
-        if (chunkGenerator instanceof ChunkGeneratorOverworld) {
-            if (ConfigManager.drawDesertTemples.getBoolean()) {
-                structureMap.put(StructureType.DesertTemple, getStructuresWithComponent(getStructures(chunkGenerator, MapGenScatteredFeature.class), ComponentScatteredFeaturePieces.DesertPyramid.class));
-            }
-
-            if (ConfigManager.drawJungleTemples.getBoolean()) {
-                structureMap.put(StructureType.JungleTemple, getStructuresWithComponent(getStructures(chunkGenerator, MapGenScatteredFeature.class), ComponentScatteredFeaturePieces.JunglePyramid.class));
-            }
-
-            if (ConfigManager.drawWitchHuts.getBoolean()) {
-                structureMap.put(StructureType.WitchHut, getStructuresWithComponent(getStructures(chunkGenerator, MapGenScatteredFeature.class), ComponentScatteredFeaturePieces.SwampHut.class));
-            }
-
-            if (ConfigManager.drawOceanMonuments.getBoolean()) {
-                structureMap.put(StructureType.OceanMonument, getStructures(chunkGenerator, StructureOceanMonument.class));
-            }
+    private void addStructures(Setting drawStructure, StructureType structureType, Map<String, StructureStart> structureMap) {
+        if (!drawStructure.getBoolean()) return;
 
-            if (ConfigManager.drawStrongholds.getBoolean()) {
-                structureMap.put(StructureType.Stronghold, getStructures(chunkGenerator, MapGenStronghold.class));
-            }
+        StructureStart structureStart = structureMap.get(structureType.getName());
+        if (structureStart == null) return;
+        Color color = structureType.getColor();
+        MutableBoundingBox bb = structureStart.getBoundingBox();
+        if (bb == null)
+            return;
 
-            if (ConfigManager.drawMansions.getBoolean()) {
-                structureMap.put(StructureType.Mansion, getStructures(chunkGenerator, WoodlandMansion.class));
-            }
+        BoundingBox boundingBox = BoundingBoxStructure.from(bb, color);
+        if (isCached(boundingBox)) return;
 
-            if (ConfigManager.drawMineShafts.getBoolean()) {
-                structureMap.put(StructureType.MineShaft, getStructures(chunkGenerator, MapGenMineshaft.class));
-            }
-        } else if (chunkGenerator instanceof ChunkGeneratorHell) {
-            if (ConfigManager.drawNetherFortresses.getBoolean()) {
-                structureMap.put(StructureType.NetherFortress, getStructures(chunkGenerator, MapGenNetherBridge.class));
-            }
-        } else if (chunkGenerator instanceof ChunkGeneratorEnd) {
-            if (ConfigManager.drawEndCities.getBoolean()) {
-                structureMap.put(StructureType.EndCity, getStructures(chunkGenerator, MapGenEndCity.class));
-            }
+        Set<BoundingBox> structureBoundingBoxes = new HashSet<>();
+        for (StructurePiece structureComponent : structureStart.getComponents()) {
+            structureBoundingBoxes.add(BoundingBoxStructure.from(structureComponent.getBoundingBox(), color));
         }
-
-        return structureMap;
+        addBoundingBoxes(boundingBox, structureBoundingBoxes);
+        Logger.info("[%s] new dimensionCache entries: %d", dimensionType, structureBoundingBoxes.size());
     }
 
-    private Collection<StructureStart> getStructuresWithComponent(Collection<StructureStart> structures, Class structureComponent) {
-        Collection<StructureStart> validStructures = new HashSet<>();
-        for (StructureStart structure : structures) {
-            if (structure.getComponents().get(0).getClass().equals(structureComponent)) {
-                validStructures.add(structure);
-            }
-        }
-        return validStructures;
-    }
-
-    @Override
-    public synchronized void refresh() {
+    public synchronized void processChunk(Chunk chunk) {
         if (closed) return;
 
-        Map<StructureType, Collection<StructureStart>> structureMap = getStructures();
-        for (StructureType structureType : structureMap.keySet()) {
-            Color color = structureType.getColor();
-            for (StructureStart structureStart : structureMap.get(structureType)) {
-                if (structureStart.getBoundingBox() != null) {
-                    BoundingBox boundingBox = BoundingBoxStructure.from(structureStart.getBoundingBox(), color);
-                    if (!isCached(boundingBox)) {
-                        Set<BoundingBox> structureBoundingBoxes = new HashSet<>();
-                        for (StructureComponent structureComponent : structureStart.getComponents()) {
-                            structureBoundingBoxes.add(BoundingBoxStructure.from(structureComponent.getBoundingBox(), color));
-                        }
-                        addBoundingBoxes(boundingBox, structureBoundingBoxes);
-                        Logger.info("[%s] new dimensionCache entries: %d", dimensionType, structureBoundingBoxes.size());
-                    }
-                }
-            }
+        Map<String, StructureStart> structureMap = chunk.getStructureStarts();
+        if (structureMap.size() > 0) {
+            addStructures(ConfigManager.drawDesertTemples, StructureType.DesertTemple, structureMap);
+            addStructures(ConfigManager.drawJungleTemples, StructureType.JungleTemple, structureMap);
+            addStructures(ConfigManager.drawWitchHuts, StructureType.WitchHut, structureMap);
+            addStructures(ConfigManager.drawOceanMonuments, StructureType.OceanMonument, structureMap);
+            addStructures(ConfigManager.drawStrongholds, StructureType.Stronghold, structureMap);
+            addStructures(ConfigManager.drawMansions, StructureType.Mansion, structureMap);
+            addStructures(ConfigManager.drawMineShafts, StructureType.MineShaft, structureMap);
+            addStructures(ConfigManager.drawShipwrecks, StructureType.Shipwreck, structureMap);
+            addStructures(ConfigManager.drawOceanRuins, StructureType.OceanRuin, structureMap);
+            addStructures(ConfigManager.drawBuriedTreasure, StructureType.BuriedTreasure, structureMap);
+            addStructures(ConfigManager.drawIgloos, StructureType.Igloo, structureMap);
+            addStructures(ConfigManager.drawNetherFortresses, StructureType.NetherFortress, structureMap);
+            addStructures(ConfigManager.drawEndCities, StructureType.EndCity, structureMap);
+            addStructures(ConfigManager.drawPillagerOutposts, StructureType.PillagerOutpost, structureMap);
         }
     }
 }
index b8df1c8e841383e49f0a618b9be2a2d09380a828..d28efffc8c72c3bf23f92564422c7a06887d1fc1 100644 (file)
@@ -1,7 +1,7 @@
 package com.irtimaled.bbor.common;
 
 import com.irtimaled.bbor.common.models.BoundingBox;
-import net.minecraft.world.DimensionType;
+import net.minecraft.world.dimension.DimensionType;
 
 public interface IVillageEventHandler {
     void villageRemoved(DimensionType dimensionType, BoundingBox bb);
index 9f7e87a6e4ef8443a2a1c2c8f32874445518da5e..32b49e7a5366be984f9a4d389462fce591c77bd3 100644 (file)
@@ -3,53 +3,34 @@ package com.irtimaled.bbor.common;
 import java.awt.*;
 
 public class StructureType {
-    private static final int JUNGLE_TEMPLE = 1;
-    private static final int DESERT_TEMPLE = 2;
-    private static final int WITCH_HUT = 3;
-    private static final int OCEAN_MONUMENT = 4;
-    private static final int STRONGHOLD = 5;
-    private static final int MINE_SHAFT = 6;
-    private static final int NETHER_FORTRESS = 7;
-    private static final int END_CITY = 8;
-    private static final int MANSION = 9;
+    public final static StructureType JungleTemple = new StructureType(Color.GREEN, "Jungle_Pyramid");
+    public final static StructureType DesertTemple = new StructureType(Color.ORANGE, "Desert_Pyramid");
+    public final static StructureType WitchHut = new StructureType(Color.BLUE, "Swamp_Hut");
+    public final static StructureType OceanMonument = new StructureType(Color.CYAN, "Monument");
+    public final static StructureType Shipwreck = new StructureType(Color.CYAN, "Shipwreck");
+    public final static StructureType OceanRuin = new StructureType(Color.CYAN, "Ocean_Ruin");
+    public final static StructureType BuriedTreasure = new StructureType(Color.CYAN, "Buried_Treasure");
+    public final static StructureType Stronghold = new StructureType(Color.YELLOW, "Stronghold");
+    public final static StructureType MineShaft = new StructureType(Color.LIGHT_GRAY, "Mineshaft");
+    public final static StructureType NetherFortress = new StructureType(Color.RED, "Fortress");
+    public final static StructureType EndCity = new StructureType(Color.MAGENTA, "EndCity");
+    public final static StructureType Mansion = new StructureType(new Color(139, 69, 19), "Mansion");
+    public final static StructureType Igloo = new StructureType(Color.WHITE, "Igloo");
+    public final static StructureType PillagerOutpost = new StructureType(Color.GRAY, "Pillager_Outpost");
 
-    public final static StructureType JungleTemple = new StructureType(JUNGLE_TEMPLE);
-    public final static StructureType DesertTemple = new StructureType(DESERT_TEMPLE);
-    public final static StructureType WitchHut = new StructureType(WITCH_HUT);
-    public final static StructureType OceanMonument = new StructureType(OCEAN_MONUMENT);
-    public final static StructureType Stronghold = new StructureType(STRONGHOLD);
-    public final static StructureType MineShaft = new StructureType(MINE_SHAFT);
-    public final static StructureType NetherFortress = new StructureType(NETHER_FORTRESS);
-    public final static StructureType EndCity = new StructureType(END_CITY);
-    public final static StructureType Mansion = new StructureType(MANSION);
+    private final Color color;
+    private String name;
 
-    private final int type;
-
-    private StructureType(int type) {
-        this.type = type;
+    private StructureType(Color color, String name) {
+        this.color = color;
+        this.name = name;
     }
 
     public Color getColor() {
-        switch (type) {
-            case DESERT_TEMPLE:
-                return Color.ORANGE;
-            case JUNGLE_TEMPLE:
-                return Color.GREEN;
-            case WITCH_HUT:
-                return Color.BLUE;
-            case MINE_SHAFT:
-                return Color.LIGHT_GRAY;
-            case NETHER_FORTRESS:
-                return Color.RED;
-            case OCEAN_MONUMENT:
-                return Color.CYAN;
-            case STRONGHOLD:
-                return Color.YELLOW;
-            case END_CITY:
-                return Color.MAGENTA;
-            case MANSION:
-                return new Color(139, 69, 19);
-        }
-        return Color.WHITE;
+        return color;
+    }
+
+    public String getName() {
+        return name;
     }
 }
index ce4cd7f01747bdb834a9365711ab623813511f10..2bdbe6ea2dd49020d4728301a614b843a571d54d 100644 (file)
@@ -3,8 +3,8 @@ package com.irtimaled.bbor.common;
 import com.irtimaled.bbor.common.models.BoundingBoxVillage;
 import net.minecraft.village.Village;
 import net.minecraft.village.VillageCollection;
-import net.minecraft.world.DimensionType;
 import net.minecraft.world.World;
+import net.minecraft.world.dimension.DimensionType;
 
 import java.util.HashMap;
 import java.util.List;
index 97f2602f98cd99049e4c6d1cad152bfb16df4d6e..50c53a052cdfbd22149ba5ffecd1119fb6a98f82 100644 (file)
@@ -1,7 +1,7 @@
 package com.irtimaled.bbor.common.models;
 
 import net.minecraft.util.math.BlockPos;
-import net.minecraft.world.gen.structure.StructureBoundingBox;
+import net.minecraft.util.math.MutableBoundingBox;
 
 import java.awt.*;
 
@@ -10,7 +10,7 @@ public class BoundingBoxStructure extends BoundingBox {
         super(minBlockPos, maxBlockPos, color);
     }
 
-    public static BoundingBoxStructure from(StructureBoundingBox bb, Color color) {
+    public static BoundingBoxStructure from(MutableBoundingBox bb, Color color) {
         BlockPos minBlockPos = new BlockPos(bb.minX, bb.minY, bb.minZ);
         BlockPos maxBlockPos = new BlockPos(bb.maxX, bb.maxY, bb.maxZ);
         return new BoundingBoxStructure(minBlockPos, maxBlockPos, color);
index 427aa45d3b7c0d777057a89c23964610eb8623f6..44bfcfbc7d0756e8a9249378d07d4131a8f720d3 100644 (file)
@@ -6,8 +6,9 @@ import net.minecraft.village.Village;
 import net.minecraft.village.VillageDoorInfo;
 
 import java.awt.*;
-import java.util.*;
+import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
 
 public class BoundingBoxVillage extends BoundingBox {
     private final BlockPos center;