From 56a0d5d15b8c37416a4f0de13ee028a2ed1b65e5 Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 13 Jan 2021 20:03:01 -0700 Subject: [PATCH] Revert "use getUngeneratedBlock for trees" This reverts commit ca8cc8bc --- .../com/dfsek/terra/api/GenericLoaders.java | 4 ++-- .../dfsek/terra/api/math/vector/Vector2.java | 4 ---- .../structures/script/StructureScript.java | 2 +- .../builders/CheckBlockFunctionBuilder.java | 9 +------- .../script/functions/CheckBlockFunction.java | 13 ++--------- .../loaders/config/FloraLayerLoader.java | 11 ++-------- .../loaders/config/TreeLayerLoader.java | 11 ++-------- .../population/items/PlaceableLayer.java | 9 ++++---- .../population/items/flora/FloraLayer.java | 5 ++--- .../population/items/tree/TreeLayer.java | 22 ++++++++----------- 10 files changed, 26 insertions(+), 64 deletions(-) diff --git a/common/src/main/java/com/dfsek/terra/api/GenericLoaders.java b/common/src/main/java/com/dfsek/terra/api/GenericLoaders.java index bb495ae71..8ad9c2fd7 100644 --- a/common/src/main/java/com/dfsek/terra/api/GenericLoaders.java +++ b/common/src/main/java/com/dfsek/terra/api/GenericLoaders.java @@ -45,11 +45,11 @@ public class GenericLoaders implements LoaderRegistrar { .registerLoader(GridSpawn.class, new GridSpawnLoader()) .registerLoader(PaletteHolder.class, new PaletteHolderLoader()) .registerLoader(PaletteLayer.class, new PaletteLayerLoader()) - .registerLoader(FloraLayer.class, new FloraLayerLoader(main)) + .registerLoader(FloraLayer.class, new FloraLayerLoader()) .registerLoader(Ore.Type.class, (t, o, l) -> Ore.Type.valueOf(o.toString())) .registerLoader(OreConfig.class, new OreConfigLoader()) .registerLoader(NoiseBuilder.class, new NoiseBuilderLoader()) - .registerLoader(TreeLayer.class, new TreeLayerLoader(main)) + .registerLoader(TreeLayer.class, new TreeLayerLoader()) .registerLoader(MaterialSet.class, new MaterialSetLoader()) .registerLoader(OreHolder.class, new OreHolderLoader()) .registerLoader(TerraFlora.Search.class, (t, o, l) -> TerraFlora.Search.valueOf(o.toString())) diff --git a/common/src/main/java/com/dfsek/terra/api/math/vector/Vector2.java b/common/src/main/java/com/dfsek/terra/api/math/vector/Vector2.java index 94f27dd5c..aacf31660 100644 --- a/common/src/main/java/com/dfsek/terra/api/math/vector/Vector2.java +++ b/common/src/main/java/com/dfsek/terra/api/math/vector/Vector2.java @@ -186,10 +186,6 @@ public class Vector2 implements Cloneable { return FastMath.floorToInt(z); } - public Vector3 toVector3(double y) { - return new Vector3(x, y, z); - } - @Override public String toString() { return "(" + x + ", " + z + ")"; diff --git a/common/src/main/java/com/dfsek/terra/api/structures/script/StructureScript.java b/common/src/main/java/com/dfsek/terra/api/structures/script/StructureScript.java index fbcb64674..70826823a 100644 --- a/common/src/main/java/com/dfsek/terra/api/structures/script/StructureScript.java +++ b/common/src/main/java/com/dfsek/terra/api/structures/script/StructureScript.java @@ -68,7 +68,7 @@ public class StructureScript { .registerFunction("loot", new LootFunctionBuilder(main, lootRegistry)) .registerFunction("entity", new EntityFunctionBuilder(main)) .registerFunction("getBiome", new BiomeFunctionBuilder(main)) - .registerFunction("getBlock", new CheckBlockFunctionBuilder(main)) + .registerFunction("getBlock", new CheckBlockFunctionBuilder()) .registerFunction("state", new StateFunctionBuilder(main)) .registerFunction("originX", new ZeroArgFunctionBuilder(arguments -> arguments.getBuffer().getOrigin().getX(), Returnable.ReturnType.NUMBER)) .registerFunction("originY", new ZeroArgFunctionBuilder(arguments -> arguments.getBuffer().getOrigin().getY(), Returnable.ReturnType.NUMBER)) diff --git a/common/src/main/java/com/dfsek/terra/api/structures/script/builders/CheckBlockFunctionBuilder.java b/common/src/main/java/com/dfsek/terra/api/structures/script/builders/CheckBlockFunctionBuilder.java index 1e6218abb..98eeb2665 100644 --- a/common/src/main/java/com/dfsek/terra/api/structures/script/builders/CheckBlockFunctionBuilder.java +++ b/common/src/main/java/com/dfsek/terra/api/structures/script/builders/CheckBlockFunctionBuilder.java @@ -1,6 +1,5 @@ package com.dfsek.terra.api.structures.script.builders; -import com.dfsek.terra.api.platform.TerraPlugin; import com.dfsek.terra.api.structures.parser.lang.Returnable; import com.dfsek.terra.api.structures.parser.lang.functions.FunctionBuilder; import com.dfsek.terra.api.structures.script.functions.CheckBlockFunction; @@ -9,16 +8,10 @@ import com.dfsek.terra.api.structures.tokenizer.Position; import java.util.List; public class CheckBlockFunctionBuilder implements FunctionBuilder { - private final TerraPlugin main; - - public CheckBlockFunctionBuilder(TerraPlugin main) { - this.main = main; - } - @SuppressWarnings("unchecked") @Override public CheckBlockFunction build(List> argumentList, Position position) { - return new CheckBlockFunction((Returnable) argumentList.get(0), (Returnable) argumentList.get(1), (Returnable) argumentList.get(2), position, main); + return new CheckBlockFunction((Returnable) argumentList.get(0), (Returnable) argumentList.get(1), (Returnable) argumentList.get(2), position); } @Override diff --git a/common/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckBlockFunction.java b/common/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckBlockFunction.java index 224358602..8582af9ba 100644 --- a/common/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckBlockFunction.java +++ b/common/src/main/java/com/dfsek/terra/api/structures/script/functions/CheckBlockFunction.java @@ -1,10 +1,7 @@ package com.dfsek.terra.api.structures.script.functions; -import com.dfsek.terra.TerraWorld; import com.dfsek.terra.api.math.vector.Vector2; import com.dfsek.terra.api.math.vector.Vector3; -import com.dfsek.terra.api.platform.TerraPlugin; -import com.dfsek.terra.api.platform.block.BlockData; import com.dfsek.terra.api.structures.parser.lang.ImplementationArguments; import com.dfsek.terra.api.structures.parser.lang.Returnable; import com.dfsek.terra.api.structures.parser.lang.functions.Function; @@ -16,14 +13,12 @@ import net.jafama.FastMath; public class CheckBlockFunction implements Function { private final Returnable x, y, z; private final Position position; - private final TerraPlugin main; - public CheckBlockFunction(Returnable x, Returnable y, Returnable z, Position position, TerraPlugin main) { + public CheckBlockFunction(Returnable x, Returnable y, Returnable z, Position position) { this.x = x; this.y = y; this.z = z; this.position = position; - this.main = main; } @@ -35,11 +30,7 @@ public class CheckBlockFunction implements Function { RotationUtil.rotateVector(xz, arguments.getRotation()); - TerraWorld world = main.getWorld(arguments.getBuffer().getOrigin().getWorld()); - - BlockData blockData = world.getUngeneratedBlock(arguments.getBuffer().getOrigin().clone().add(new Vector3(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments).doubleValue(), FastMath.roundToInt(xz.getZ())))); - - String data = blockData.getAsString(); + String data = arguments.getBuffer().getOrigin().clone().add(new Vector3(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments).doubleValue(), FastMath.roundToInt(xz.getZ()))).getBlock().getBlockData().getAsString(); if(data.contains("[")) return data.substring(0, data.indexOf('[')); // Strip properties else return data; } diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/config/FloraLayerLoader.java b/common/src/main/java/com/dfsek/terra/config/loaders/config/FloraLayerLoader.java index 2c48f6b81..6939a9777 100644 --- a/common/src/main/java/com/dfsek/terra/config/loaders/config/FloraLayerLoader.java +++ b/common/src/main/java/com/dfsek/terra/config/loaders/config/FloraLayerLoader.java @@ -7,7 +7,6 @@ import com.dfsek.tectonic.loading.TypeLoader; import com.dfsek.terra.api.math.ProbabilityCollection; import com.dfsek.terra.api.math.Range; import com.dfsek.terra.api.math.noise.samplers.FastNoiseLite; -import com.dfsek.terra.api.platform.TerraPlugin; import com.dfsek.terra.api.world.flora.Flora; import com.dfsek.terra.config.loaders.Types; import com.dfsek.terra.generation.config.NoiseBuilder; @@ -18,12 +17,6 @@ import java.util.Map; @SuppressWarnings("unchecked") public class FloraLayerLoader implements TypeLoader { - private final TerraPlugin main; - - public FloraLayerLoader(TerraPlugin main) { - this.main = main; - } - @Override public FloraLayer load(Type type, Object o, ConfigLoader configLoader) throws LoadException { Map map = (Map) o; @@ -39,12 +32,12 @@ public class FloraLayerLoader implements TypeLoader { } catch(ConfigException e) { throw new LoadException("Unable to load noise", e); } - return new FloraLayer(density, range, items, sampler.build(2403), main); + return new FloraLayer(density, range, items, sampler.build(2403)); } sampler = new NoiseBuilder(); sampler.setType(FastNoiseLite.NoiseType.WhiteNoise); sampler.setDimensions(3); - return new FloraLayer(density, range, items, sampler.build(2403), main); + return new FloraLayer(density, range, items, sampler.build(2403)); } } diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/config/TreeLayerLoader.java b/common/src/main/java/com/dfsek/terra/config/loaders/config/TreeLayerLoader.java index 40b350a1f..39237229d 100644 --- a/common/src/main/java/com/dfsek/terra/config/loaders/config/TreeLayerLoader.java +++ b/common/src/main/java/com/dfsek/terra/config/loaders/config/TreeLayerLoader.java @@ -8,7 +8,6 @@ import com.dfsek.tectonic.loading.TypeLoader; import com.dfsek.terra.api.math.ProbabilityCollection; import com.dfsek.terra.api.math.Range; import com.dfsek.terra.api.math.noise.samplers.FastNoiseLite; -import com.dfsek.terra.api.platform.TerraPlugin; import com.dfsek.terra.api.world.tree.Tree; import com.dfsek.terra.config.loaders.Types; import com.dfsek.terra.generation.config.NoiseBuilder; @@ -19,12 +18,6 @@ import java.util.Map; @SuppressWarnings("unchecked") public class TreeLayerLoader implements TypeLoader { - private final TerraPlugin main; - - public TreeLayerLoader(TerraPlugin main) { - this.main = main; - } - @Override public TreeLayer load(Type type, Object o, ConfigLoader configLoader) throws LoadException { Map map = (Map) o; @@ -40,12 +33,12 @@ public class TreeLayerLoader implements TypeLoader { } catch(ConfigException e) { throw new LoadException("Unable to load noise", e); } - return new TreeLayer(density, range, items, sampler.build(2403), main); + return new TreeLayer(density, range, items, sampler.build(2403)); } sampler.setType(FastNoiseLite.NoiseType.WhiteNoise); sampler.setDimensions(3); - return new TreeLayer(density, range, items, sampler.build(2403), main); + return new TreeLayer(density, range, items, sampler.build(2403)); } } diff --git a/common/src/main/java/com/dfsek/terra/population/items/PlaceableLayer.java b/common/src/main/java/com/dfsek/terra/population/items/PlaceableLayer.java index c29aa0970..479610d2e 100644 --- a/common/src/main/java/com/dfsek/terra/population/items/PlaceableLayer.java +++ b/common/src/main/java/com/dfsek/terra/population/items/PlaceableLayer.java @@ -4,24 +4,25 @@ import com.dfsek.terra.api.math.ProbabilityCollection; import com.dfsek.terra.api.math.Range; import com.dfsek.terra.api.math.noise.samplers.NoiseSampler; import com.dfsek.terra.api.math.vector.Vector2; -import com.dfsek.terra.api.platform.TerraPlugin; import com.dfsek.terra.api.platform.world.Chunk; public abstract class PlaceableLayer { protected final double density; protected final Range level; protected final ProbabilityCollection layer; - protected final TerraPlugin main; protected final NoiseSampler noise; - public PlaceableLayer(double density, Range level, ProbabilityCollection layer, NoiseSampler noise, TerraPlugin main) { + public PlaceableLayer(double density, Range level, ProbabilityCollection layer, NoiseSampler noise) { this.density = density; this.level = level; this.layer = layer; - this.main = main; this.noise = noise; } + public NoiseSampler getNoise() { + return noise; + } + public double getDensity() { return density; } diff --git a/common/src/main/java/com/dfsek/terra/population/items/flora/FloraLayer.java b/common/src/main/java/com/dfsek/terra/population/items/flora/FloraLayer.java index 7628f7f48..48e39c35f 100644 --- a/common/src/main/java/com/dfsek/terra/population/items/flora/FloraLayer.java +++ b/common/src/main/java/com/dfsek/terra/population/items/flora/FloraLayer.java @@ -4,15 +4,14 @@ import com.dfsek.terra.api.math.ProbabilityCollection; import com.dfsek.terra.api.math.Range; import com.dfsek.terra.api.math.noise.samplers.NoiseSampler; import com.dfsek.terra.api.math.vector.Vector2; -import com.dfsek.terra.api.platform.TerraPlugin; import com.dfsek.terra.api.platform.world.Chunk; import com.dfsek.terra.api.world.flora.Flora; import com.dfsek.terra.population.items.PlaceableLayer; public class FloraLayer extends PlaceableLayer { - public FloraLayer(double density, Range level, ProbabilityCollection layer, NoiseSampler noise, TerraPlugin main) { - super(density, level, layer, noise, main); + public FloraLayer(double density, Range level, ProbabilityCollection layer, NoiseSampler noise) { + super(density, level, layer, noise); } public double getDensity() { diff --git a/common/src/main/java/com/dfsek/terra/population/items/tree/TreeLayer.java b/common/src/main/java/com/dfsek/terra/population/items/tree/TreeLayer.java index d13226301..88276dc96 100644 --- a/common/src/main/java/com/dfsek/terra/population/items/tree/TreeLayer.java +++ b/common/src/main/java/com/dfsek/terra/population/items/tree/TreeLayer.java @@ -1,12 +1,11 @@ package com.dfsek.terra.population.items.tree; -import com.dfsek.terra.TerraWorld; import com.dfsek.terra.api.math.ProbabilityCollection; import com.dfsek.terra.api.math.Range; import com.dfsek.terra.api.math.noise.samplers.NoiseSampler; import com.dfsek.terra.api.math.vector.Vector2; -import com.dfsek.terra.api.platform.TerraPlugin; -import com.dfsek.terra.api.platform.block.BlockData; +import com.dfsek.terra.api.platform.block.Block; +import com.dfsek.terra.api.platform.block.BlockFace; import com.dfsek.terra.api.platform.world.Chunk; import com.dfsek.terra.api.world.tree.Tree; import com.dfsek.terra.population.items.PlaceableLayer; @@ -14,21 +13,18 @@ import com.dfsek.terra.util.PopulationUtil; public class TreeLayer extends PlaceableLayer { - public TreeLayer(double density, Range level, ProbabilityCollection layer, NoiseSampler noise, TerraPlugin main) { - super(density, level, layer, noise, main); + public TreeLayer(double density, Range level, ProbabilityCollection layer, NoiseSampler noise) { + super(density, level, layer, noise); } @Override public void place(Chunk chunk, Vector2 coords) { Tree item = layer.get(noise, coords.getX(), coords.getZ()); - TerraWorld terraWorld = main.getWorld(chunk.getWorld()); - int cx = chunk.getX() << 4; - int cz = chunk.getZ() << 4; - BlockData current; - for(int y : level) { - current = terraWorld.getUngeneratedBlock(coords.getBlockX() + cx, y, coords.getBlockZ() + cz); - if(item.getSpawnable().contains(current.getMaterial())) { - item.plant(coords.toVector3(y).add(cx, 1, cz).toLocation(chunk.getWorld()), PopulationUtil.getRandom(chunk)); + Block current = chunk.getBlock((int) coords.getX(), level.getMax(), (int) coords.getZ()); + for(int ignored : level) { + current = current.getRelative(BlockFace.DOWN); + if(item.getSpawnable().contains(current.getType())) { + item.plant(current.getLocation().add(0, 1, 0), PopulationUtil.getRandom(chunk)); } } }