From e43d814169f67fb6556bd12976049fd579df9c17 Mon Sep 17 00:00:00 2001 From: dfsek Date: Fri, 20 Nov 2020 20:22:37 -0700 Subject: [PATCH] Minor optimizations --- .../java/com/dfsek/terra/async/AsyncStructureFinder.java | 3 +-- .../java/com/dfsek/terra/carving/UserDefinedCarver.java | 2 +- .../java/com/dfsek/terra/command/biome/BiomeCommand.java | 2 +- .../com/dfsek/terra/command/biome/BiomeInfoCommand.java | 2 +- src/main/java/com/dfsek/terra/config/base/ConfigPack.java | 8 -------- .../terra/config/genconfig/biome/BiomeSnowConfig.java | 6 ++++++ src/main/java/com/dfsek/terra/debug/gui/DebugFrame.java | 2 +- .../java/com/dfsek/terra/population/FloraPopulator.java | 6 ++---- .../java/com/dfsek/terra/population/SnowPopulator.java | 4 ++-- .../com/dfsek/terra/population/StructurePopulator.java | 2 +- .../java/com/dfsek/terra/structure/spawn/AirSpawn.java | 4 +--- .../java/com/dfsek/terra/structure/spawn/OceanSpawn.java | 2 +- 12 files changed, 18 insertions(+), 25 deletions(-) diff --git a/src/main/java/com/dfsek/terra/async/AsyncStructureFinder.java b/src/main/java/com/dfsek/terra/async/AsyncStructureFinder.java index 70baefc9b..8a22f1158 100644 --- a/src/main/java/com/dfsek/terra/async/AsyncStructureFinder.java +++ b/src/main/java/com/dfsek/terra/async/AsyncStructureFinder.java @@ -1,6 +1,5 @@ package com.dfsek.terra.async; -import com.dfsek.terra.TerraWorld; import com.dfsek.terra.biome.UserDefinedBiome; import com.dfsek.terra.biome.grid.TerraBiomeGrid; import com.dfsek.terra.config.genconfig.structure.StructureConfig; @@ -34,7 +33,7 @@ public class AsyncStructureFinder extends AsyncFeatureFinder { public boolean isValid(int x, int z, StructureConfig target) { World world = getWorld(); Location spawn = target.getSpawn().getChunkSpawn(x, z, world.getSeed()).toLocation(world); - if(!TerraWorld.getWorld(world).getConfig().getBiome((UserDefinedBiome) getGrid().getBiome(spawn)).getStructures().contains(target)) + if(!((UserDefinedBiome) getGrid().getBiome(spawn)).getConfig().getStructures().contains(target)) return false; Random r2 = new FastRandom(spawn.hashCode()); Structure struc = target.getStructure(r2); diff --git a/src/main/java/com/dfsek/terra/carving/UserDefinedCarver.java b/src/main/java/com/dfsek/terra/carving/UserDefinedCarver.java index 25f147d2c..3ea0e040f 100644 --- a/src/main/java/com/dfsek/terra/carving/UserDefinedCarver.java +++ b/src/main/java/com/dfsek/terra/carving/UserDefinedCarver.java @@ -60,7 +60,7 @@ public class UserDefinedCarver extends Carver { @Override public boolean isChunkCarved(World w, int chunkX, int chunkZ, Random random) { ConfigPack c = TerraWorld.getWorld(w).getConfig(); - return new FastRandom(random.nextLong() + hash).nextInt(100) < c.getBiome((UserDefinedBiome) TerraWorld.getWorld(w).getGrid().getBiome(chunkX << 4, chunkZ << 4, GenerationPhase.POPULATE)).getCarverChance(this); + return new FastRandom(random.nextLong() + hash).nextInt(100) < ((UserDefinedBiome) TerraWorld.getWorld(w).getGrid().getBiome(chunkX << 4, chunkZ << 4, GenerationPhase.POPULATE)).getConfig().getCarverChance(this); } private class UserDefinedWorm extends Worm { diff --git a/src/main/java/com/dfsek/terra/command/biome/BiomeCommand.java b/src/main/java/com/dfsek/terra/command/biome/BiomeCommand.java index fbbd47429..8eb36ae61 100644 --- a/src/main/java/com/dfsek/terra/command/biome/BiomeCommand.java +++ b/src/main/java/com/dfsek/terra/command/biome/BiomeCommand.java @@ -25,7 +25,7 @@ public class BiomeCommand extends WorldCommand { public boolean execute(@NotNull Player sender, @NotNull Command command, @NotNull String label, @NotNull String[] args, World w) { TerraBiomeGrid grid = TerraWorld.getWorld(sender.getWorld()).getGrid(); UserDefinedBiome biome = (UserDefinedBiome) grid.getBiome(sender.getLocation(), GenerationPhase.POPULATE); - LangUtil.send("command.biome.in", sender, TerraWorld.getWorld(w).getConfig().getBiome(biome).getID()); + LangUtil.send("command.biome.in", sender, biome.getID()); return true; } diff --git a/src/main/java/com/dfsek/terra/command/biome/BiomeInfoCommand.java b/src/main/java/com/dfsek/terra/command/biome/BiomeInfoCommand.java index 2a7e3b7d9..26b3f4b80 100644 --- a/src/main/java/com/dfsek/terra/command/biome/BiomeInfoCommand.java +++ b/src/main/java/com/dfsek/terra/command/biome/BiomeInfoCommand.java @@ -40,7 +40,7 @@ public class BiomeInfoCommand extends WorldCommand { sender.sendMessage("Erodible: " + b.isErodible()); - BiomeConfig bio = cfg.getBiome(b); + BiomeConfig bio = b.getConfig(); List structureConfigs = bio.getStructures(); if(structureConfigs.size() == 0) sender.sendMessage("No Structures"); diff --git a/src/main/java/com/dfsek/terra/config/base/ConfigPack.java b/src/main/java/com/dfsek/terra/config/base/ConfigPack.java index 9cd605b2e..618bfebaf 100644 --- a/src/main/java/com/dfsek/terra/config/base/ConfigPack.java +++ b/src/main/java/com/dfsek/terra/config/base/ConfigPack.java @@ -2,7 +2,6 @@ package com.dfsek.terra.config.base; import com.dfsek.terra.Debug; import com.dfsek.terra.Terra; -import com.dfsek.terra.biome.UserDefinedBiome; import com.dfsek.terra.carving.UserDefinedCarver; import com.dfsek.terra.config.ConfigLoader; import com.dfsek.terra.config.exception.ConfigException; @@ -274,13 +273,6 @@ public class ConfigPack extends YamlConfiguration { return dataFolder; } - public BiomeConfig getBiome(UserDefinedBiome b) { - for(BiomeConfig biome : biomes.values()) { - if(biome.getBiome().equals(b)) return biome; - } - throw new IllegalArgumentException("No BiomeConfig for provided biome."); - } - public BiomeConfig getBiome(String id) { return biomes.get(id); } diff --git a/src/main/java/com/dfsek/terra/config/genconfig/biome/BiomeSnowConfig.java b/src/main/java/com/dfsek/terra/config/genconfig/biome/BiomeSnowConfig.java index 447114d96..f4a567ffb 100644 --- a/src/main/java/com/dfsek/terra/config/genconfig/biome/BiomeSnowConfig.java +++ b/src/main/java/com/dfsek/terra/config/genconfig/biome/BiomeSnowConfig.java @@ -13,11 +13,13 @@ import java.util.Map; public class BiomeSnowConfig extends TerraConfigSection { private final int[] snowHeights; private boolean doSnow = false; + private final boolean physics; public BiomeSnowConfig(TerraConfig parent) throws InvalidConfigurationException { super(parent); snowHeights = new int[256]; List> maps = parent.getMapList("snow"); + this.physics = getParent().getBoolean("snow-physics", false); if(maps.size() == 0) return; try { for(Map e : maps) { @@ -41,4 +43,8 @@ public class BiomeSnowConfig extends TerraConfigSection { public boolean doSnow() { return doSnow; } + + public boolean doPhysics() { + return physics; + } } diff --git a/src/main/java/com/dfsek/terra/debug/gui/DebugFrame.java b/src/main/java/com/dfsek/terra/debug/gui/DebugFrame.java index d9436e63a..0ca112209 100644 --- a/src/main/java/com/dfsek/terra/debug/gui/DebugFrame.java +++ b/src/main/java/com/dfsek/terra/debug/gui/DebugFrame.java @@ -41,7 +41,7 @@ public class DebugFrame extends JFrame implements ActionListener { xp = (int) (((double) FastMath.floorMod(p.getLocation().getBlockX(), x) / x) * getWidth()); zp = (int) (((double) FastMath.floorMod(p.getLocation().getBlockZ(), z) / z) * getHeight()); } - String str = TerraWorld.getWorld(p.getWorld()).getConfig().getBiome((UserDefinedBiome) TerraWorld.getWorld(p.getWorld()).getGrid().getBiome(p.getLocation(), GenerationPhase.POPULATE)).getID(); + String str = ((UserDefinedBiome) TerraWorld.getWorld(p.getWorld()).getGrid().getBiome(p.getLocation(), GenerationPhase.POPULATE)).getID(); g.setColor(new Color(255, 255, 255, 128)); g.fillRect(xp + 13, zp - 13, (int) (8 + 8.25 * str.length()), 33); g.setColor(Color.BLACK); diff --git a/src/main/java/com/dfsek/terra/population/FloraPopulator.java b/src/main/java/com/dfsek/terra/population/FloraPopulator.java index 998c9e19f..ecfee13f8 100644 --- a/src/main/java/com/dfsek/terra/population/FloraPopulator.java +++ b/src/main/java/com/dfsek/terra/population/FloraPopulator.java @@ -5,7 +5,6 @@ import com.dfsek.terra.TerraProfiler; import com.dfsek.terra.TerraWorld; import com.dfsek.terra.biome.UserDefinedBiome; import com.dfsek.terra.biome.grid.TerraBiomeGrid; -import com.dfsek.terra.config.base.ConfigPack; import com.dfsek.terra.config.genconfig.biome.BiomeConfig; import com.dfsek.terra.config.genconfig.biome.BiomeFloraConfig; import com.dfsek.terra.event.TreeGenerateEvent; @@ -34,7 +33,7 @@ public class FloraPopulator extends GaeaBlockPopulator { private static boolean doTrees(@NotNull UserDefinedBiome biome, TerraWorld world, @NotNull Random random, @NotNull Chunk chunk, int x, int z) { for(Block block : getValidTreeSpawnsAt(chunk, x, z, new Range(0, 254))) { Tree tree = biome.getDecorator().getTrees().get(random); - Range range = world.getConfig().getBiome(biome).getTreeRange(tree); + Range range = biome.getConfig().getTreeRange(tree); if(!range.isInRange(block.getY())) continue; try { Location l = block.getLocation(); @@ -70,7 +69,6 @@ public class FloraPopulator extends GaeaBlockPopulator { int originX = chunk.getX() << 4; int originZ = chunk.getZ() << 4; TerraBiomeGrid grid = tw.getGrid(); - ConfigPack config = tw.getConfig(); for(int x = 0; x < 16; x++) { for(int z = 0; z < 16; z++) { UserDefinedBiome biome = (UserDefinedBiome) grid.getBiome((chunk.getX() << 4) + x, (chunk.getZ() << 4) + z, GenerationPhase.POPULATE); @@ -84,7 +82,7 @@ public class FloraPopulator extends GaeaBlockPopulator { } if(biome.getDecorator().getFloraChance() <= 0) continue; try { - BiomeConfig c = config.getBiome(biome); + BiomeConfig c = biome.getConfig(); BiomeFloraConfig f = c.getFlora(); for(int i = 0; i < f.getFloraAttempts(); i++) { Flora item; diff --git a/src/main/java/com/dfsek/terra/population/SnowPopulator.java b/src/main/java/com/dfsek/terra/population/SnowPopulator.java index 4abba7978..700a71894 100644 --- a/src/main/java/com/dfsek/terra/population/SnowPopulator.java +++ b/src/main/java/com/dfsek/terra/population/SnowPopulator.java @@ -55,7 +55,7 @@ public class SnowPopulator extends GaeaBlockPopulator { TerraBiomeGrid g = w.getGrid(); for(int x = 0; x < 16; x++) { for(int z = 0; z < 16; z++) { - BiomeConfig biome = w.getConfig().getBiome((UserDefinedBiome) g.getBiome(origX + x, origZ + z, GenerationPhase.PALETTE_APPLY)); + BiomeConfig biome = ((UserDefinedBiome) g.getBiome(origX + x, origZ + z, GenerationPhase.PALETTE_APPLY)).getConfig(); if(!biome.getSnow().doSnow()) continue; int y; Block b = null; @@ -66,7 +66,7 @@ public class SnowPopulator extends GaeaBlockPopulator { if(random.nextInt(100) >= biome.getSnow().getSnowChance(y)) continue; if(blacklistSpawn.contains(b.getType()) || b.isPassable()) continue; - chunk.getBlock(x, ++y, z).setBlockData(DataUtil.SNOW); + chunk.getBlock(x, ++y, z).setBlockData(DataUtil.SNOW, biome.getSnow().doPhysics()); } } } diff --git a/src/main/java/com/dfsek/terra/population/StructurePopulator.java b/src/main/java/com/dfsek/terra/population/StructurePopulator.java index 23ee5336d..92772f2ad 100644 --- a/src/main/java/com/dfsek/terra/population/StructurePopulator.java +++ b/src/main/java/com/dfsek/terra/population/StructurePopulator.java @@ -41,7 +41,7 @@ public class StructurePopulator extends BlockPopulator { structure: for(StructureConfig conf : config.getAllStructures()) { Location spawn = conf.getSpawn().getNearestSpawn(cx + 8, cz + 8, world.getSeed()).toLocation(world); - if(!config.getBiome((UserDefinedBiome) grid.getBiome(spawn)).getStructures().contains(conf)) continue; + if(!((UserDefinedBiome) grid.getBiome(spawn)).getConfig().getStructures().contains(conf)) continue; Random r2 = new FastRandom(spawn.hashCode()); Structure struc = conf.getStructure(r2); Rotation rotation = Rotation.fromDegrees(r2.nextInt(4) * 90); diff --git a/src/main/java/com/dfsek/terra/structure/spawn/AirSpawn.java b/src/main/java/com/dfsek/terra/structure/spawn/AirSpawn.java index 028fc49c5..126b121bc 100644 --- a/src/main/java/com/dfsek/terra/structure/spawn/AirSpawn.java +++ b/src/main/java/com/dfsek/terra/structure/spawn/AirSpawn.java @@ -2,7 +2,6 @@ package com.dfsek.terra.structure.spawn; import com.dfsek.terra.TerraWorld; import com.dfsek.terra.biome.UserDefinedBiome; -import com.dfsek.terra.config.base.ConfigPack; import com.dfsek.terra.config.genconfig.biome.BiomeConfig; import com.dfsek.terra.generation.config.WorldGenerator; import org.bukkit.World; @@ -16,9 +15,8 @@ public class AirSpawn extends Requirement { @Override public boolean matches(int x, int y, int z) { TerraWorld tw = TerraWorld.getWorld(getWorld()); - ConfigPack wc = tw.getConfig(); UserDefinedBiome b = (UserDefinedBiome) tw.getGrid().getBiome(x, z, GenerationPhase.POPULATE); - BiomeConfig c = wc.getBiome(b); + BiomeConfig c = b.getConfig(); if(y <= c.getOcean().getSeaLevel()) return false; int yf = (int) (y - ((WorldGenerator) b.getGenerator()).getElevation(x, z)); return b.getGenerator().getNoise(getNoise(), getWorld(), x, yf, z) <= 0; diff --git a/src/main/java/com/dfsek/terra/structure/spawn/OceanSpawn.java b/src/main/java/com/dfsek/terra/structure/spawn/OceanSpawn.java index 1ba455595..52a39b3b4 100644 --- a/src/main/java/com/dfsek/terra/structure/spawn/OceanSpawn.java +++ b/src/main/java/com/dfsek/terra/structure/spawn/OceanSpawn.java @@ -16,7 +16,7 @@ public class OceanSpawn extends Requirement { public boolean matches(int x, int y, int z) { TerraWorld tw = TerraWorld.getWorld(getWorld()); UserDefinedBiome b = (UserDefinedBiome) tw.getGrid().getBiome(x, z, GenerationPhase.POPULATE); - BiomeConfig c = tw.getConfig().getBiome(b); + BiomeConfig c = b.getConfig(); if(y > c.getOcean().getSeaLevel()) return false; int yf = (int) (y - ((WorldGenerator) b.getGenerator()).getElevation(x, z)); return b.getGenerator().getNoise(getNoise(), getWorld(), x, yf, z) <= 0;