From 3da777459e3f30a7d51211caa3657d9e227674eb Mon Sep 17 00:00:00 2001 From: dfsek Date: Mon, 5 Jul 2021 00:43:17 -0700 Subject: [PATCH] compile flora addon --- .../terra/addons/flora/FloraFactory.java | 12 ++---- .../terra/addons/flora/FloraLayerLoader.java | 40 ------------------- .../terra/addons/flora/FloraPopulator.java | 12 +----- .../terra/addons/flora/FloraTemplate.java | 19 ++------- .../terra/addons/flora/flora/FloraLayer.java | 28 ------------- .../terra/addons/flora/flora/TerraFlora.java | 6 +-- .../com/dfsek/terra/api/util/MaterialSet.java | 4 ++ 7 files changed, 17 insertions(+), 104 deletions(-) delete mode 100644 common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/FloraLayerLoader.java delete mode 100644 common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/flora/FloraLayer.java diff --git a/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/FloraFactory.java b/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/FloraFactory.java index def4be7be..80214ed4a 100644 --- a/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/FloraFactory.java +++ b/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/FloraFactory.java @@ -1,21 +1,17 @@ package com.dfsek.terra.addons.flora; +import com.dfsek.terra.addons.flora.flora.TerraFlora; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.config.ConfigFactory; import com.dfsek.terra.api.world.Flora; -import com.dfsek.terra.api.world.palette.NoisePalette; -import com.dfsek.terra.api.world.palette.PaletteImpl; -import com.dfsek.terra.api.world.palette.holder.PaletteLayerHolder; -import com.dfsek.terra.noise.samplers.noise.random.WhiteNoiseSampler; -import com.dfsek.terra.addons.flora.flora.TerraFlora; public class FloraFactory implements ConfigFactory { @Override public TerraFlora build(FloraTemplate config, TerraPlugin main) { - PaletteImpl palette = new NoisePalette(new WhiteNoiseSampler(2403), false); + /*PaletteImpl palette = new NoisePalette(new WhiteNoiseSampler(2403), false); for(PaletteLayerHolder layer : config.getFloraPalette()) { palette.add(layer.getLayer(), layer.getSize(), layer.getSampler()); - } - return new TerraFlora(palette, config.doPhysics(), config.isCeiling(), config.getIrrigable(), config.getSpawnable(), config.getReplaceable(), config.getRotatable(), config.getMaxPlacements(), config.getSearch(), config.isSpawnBlacklist(), config.getIrrigableOffset(), main); + }*/ + return new TerraFlora(null, config.doPhysics(), config.isCeiling(), config.getIrrigable(), config.getSpawnable(), config.getReplaceable(), config.getRotatable(), config.getMaxPlacements(), config.getSearch(), config.isSpawnBlacklist(), config.getIrrigableOffset(), main); } } diff --git a/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/FloraLayerLoader.java b/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/FloraLayerLoader.java deleted file mode 100644 index 768c7675b..000000000 --- a/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/FloraLayerLoader.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.dfsek.terra.addons.flora; - -import com.dfsek.tectonic.exception.ConfigException; -import com.dfsek.tectonic.exception.LoadException; -import com.dfsek.tectonic.loading.ConfigLoader; -import com.dfsek.tectonic.loading.TypeLoader; -import com.dfsek.terra.api.util.ProbabilityCollection; -import com.dfsek.terra.api.util.Range; -import com.dfsek.terra.api.util.seeded.NoiseSeeded; -import com.dfsek.terra.api.world.Flora; -import com.dfsek.terra.config.loaders.Types; -import com.dfsek.terra.noise.samplers.noise.random.WhiteNoiseSampler; -import com.dfsek.terra.addons.flora.flora.FloraLayer; - -import java.lang.reflect.Type; -import java.util.Map; - -@SuppressWarnings("unchecked") -public class FloraLayerLoader implements TypeLoader { - @Override - public FloraLayer load(Type type, Object o, ConfigLoader configLoader) throws LoadException { - Map map = (Map) o; - double density = ((Number) map.get("density")).doubleValue(); - Range range = configLoader.loadClass(Range.class, map.get("y")); - if(range == null) throw new LoadException("Flora range unspecified"); - ProbabilityCollection items = (ProbabilityCollection) configLoader.loadType(Types.FLORA_PROBABILITY_COLLECTION_TYPE, map.get("items")); - - NoiseSeeded sampler; - if(map.containsKey("distribution")) { - try { - sampler = configLoader.loadClass(NoiseSeeded.class, map.get("distribution")); - } catch(ConfigException e) { - throw new LoadException("Unable to load noise", e); - } - return new FloraLayer(density, range, items, sampler.apply(2403L)); - } - - return new FloraLayer(density, range, items, new WhiteNoiseSampler(2403)); - } -} diff --git a/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/FloraPopulator.java b/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/FloraPopulator.java index 31ec4890a..93a9d32ce 100644 --- a/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/FloraPopulator.java +++ b/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/FloraPopulator.java @@ -2,22 +2,12 @@ package com.dfsek.terra.addons.flora; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.profiler.ProfileFrame; -import com.dfsek.terra.api.util.PopulationUtil; -import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.World; -import com.dfsek.terra.api.world.biome.UserDefinedBiome; -import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.generator.TerraBlockPopulator; -import com.dfsek.terra.addons.flora.flora.FloraLayer; import org.jetbrains.annotations.NotNull; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Random; - /** * Populates Flora */ @@ -33,6 +23,7 @@ public class FloraPopulator implements TerraBlockPopulator { public void populate(@NotNull World world, @NotNull Chunk chunk) { TerraWorld tw = main.getWorld(world); try(ProfileFrame ignore = main.getProfiler().profile("flora")) { + /* if(tw.getConfig().disableFlora()) return; if(!tw.isSafe()) return; @@ -60,6 +51,7 @@ public class FloraPopulator implements TerraBlockPopulator { } iter++; } + */ } } } diff --git a/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/FloraTemplate.java b/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/FloraTemplate.java index c55550c51..bb6d11f81 100644 --- a/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/FloraTemplate.java +++ b/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/FloraTemplate.java @@ -3,12 +3,9 @@ package com.dfsek.terra.addons.flora; import com.dfsek.tectonic.annotations.Abstractable; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; -import com.dfsek.terra.api.config.AbstractableTemplate; -import com.dfsek.terra.api.util.collections.MaterialSet; -import com.dfsek.terra.api.world.palette.holder.PaletteLayerHolder; import com.dfsek.terra.addons.flora.flora.TerraFlora; - -import java.util.List; +import com.dfsek.terra.api.config.AbstractableTemplate; +import com.dfsek.terra.api.util.MaterialSet; @SuppressWarnings({"FieldMayBeFinal", "unused"}) public class FloraTemplate implements AbstractableTemplate { @@ -28,7 +25,7 @@ public class FloraTemplate implements AbstractableTemplate { @Value("replaceable") @Abstractable @Default - private MaterialSet replaceable = new MaterialSet(); + private MaterialSet replaceable = MaterialSet.empty(); @Value("irrigable") @Abstractable @@ -38,11 +35,7 @@ public class FloraTemplate implements AbstractableTemplate { @Value("rotatable") @Abstractable @Default - private MaterialSet rotatable = new MaterialSet(); - - @Value("layers") - @Abstractable - private List palette; + private MaterialSet rotatable = MaterialSet.empty(); @Value("physics") @Abstractable @@ -97,10 +90,6 @@ public class FloraTemplate implements AbstractableTemplate { return id; } - public List getFloraPalette() { - return palette; - } - public boolean doPhysics() { return doPhysics; } diff --git a/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/flora/FloraLayer.java b/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/flora/FloraLayer.java deleted file mode 100644 index 69ab3462c..000000000 --- a/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/flora/FloraLayer.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.dfsek.terra.addons.flora.flora; - -import com.dfsek.terra.api.noise.NoiseSampler; -import com.dfsek.terra.api.util.ProbabilityCollection; -import com.dfsek.terra.api.util.Range; -import com.dfsek.terra.api.vector.Vector2; -import com.dfsek.terra.api.world.Chunk; -import com.dfsek.terra.api.world.Flora; -import com.dfsek.terra.world.population.items.PlaceableLayer; - -public class FloraLayer extends PlaceableLayer { - - public FloraLayer(double density, Range level, ProbabilityCollection layer, NoiseSampler noise) { - super(density, level, layer, noise); - } - - public double getDensity() { - return density; - } - - @Override - public void place(Chunk chunk, Vector2 coords) { - int cx = chunk.getX() << 4; - int cz = chunk.getZ() << 4; - Flora item = layer.get(noise, coords.getX() + cx, coords.getZ() + cz); - item.getValidSpawnsAt(chunk, (int) coords.getX(), (int) coords.getZ(), level).forEach(block -> item.plant(block.add(cx, 0, cz), chunk.getWorld())); - } -} diff --git a/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/flora/TerraFlora.java b/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/flora/TerraFlora.java index 17730e452..228e2e869 100644 --- a/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/flora/TerraFlora.java +++ b/common/addons/flora/src/main/java/com/dfsek/terra/addons/flora/flora/TerraFlora.java @@ -4,9 +4,8 @@ import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.block.state.properties.base.Properties; import com.dfsek.terra.api.block.state.properties.enums.Direction; -import com.dfsek.terra.api.util.FastRandom; +import com.dfsek.terra.api.util.MaterialSet; import com.dfsek.terra.api.util.Range; -import com.dfsek.terra.api.util.collections.MaterialSet; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.Flora; @@ -17,6 +16,7 @@ import net.jafama.FastMath; import java.util.ArrayList; import java.util.EnumSet; import java.util.List; +import java.util.Random; public class TerraFlora implements Flora { private final Palette floraPalette; @@ -104,7 +104,7 @@ public class TerraFlora implements Flora { int lvl = (FastMath.abs(i)); BlockState data = floraPalette.get((ceiling ? lvl : size - lvl - 1), location.getX(), location.getY(), location.getZ()).clone(); if(doRotation) { - Direction oneFace = new ArrayList<>(faces).get(new FastRandom(location.getBlockX() ^ location.getBlockZ()).nextInt(faces.size())); // Get random face. + Direction oneFace = new ArrayList<>(faces).get(new Random(location.getBlockX() ^ location.getBlockZ()).nextInt(faces.size())); // Get random face. data.setIfPresent(Properties.DIRECTION, oneFace.opposite()) .setIfPresent(Properties.NORTH, faces.contains(Direction.NORTH)) diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/MaterialSet.java b/common/api/src/main/java/com/dfsek/terra/api/util/MaterialSet.java index 7e3e1438f..cb3217561 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/util/MaterialSet.java +++ b/common/api/src/main/java/com/dfsek/terra/api/util/MaterialSet.java @@ -2,7 +2,11 @@ package com.dfsek.terra.api.util; import com.dfsek.terra.api.block.BlockType; +import java.util.Collections; import java.util.Set; public interface MaterialSet extends Set { + static MaterialSet empty() { + return (MaterialSet) (Object) Collections.emptySet(); + } }