diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/structures/loot/Pool.java b/common/implementation/src/main/java/com/dfsek/terra/api/structures/loot/Pool.java index f4a6c8f7e..309b7d554 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/structures/loot/Pool.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/structures/loot/Pool.java @@ -3,6 +3,7 @@ package com.dfsek.terra.api.structures.loot; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.inventory.ItemStack; import com.dfsek.terra.api.util.GlueList; +import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import net.jafama.FastMath; import org.json.simple.JSONArray; @@ -17,7 +18,7 @@ import java.util.Random; public class Pool { private final int max; private final int min; - private final ProbabilityCollectionImpl entries; + private final ProbabilityCollection entries; /** * Instantiates a Pool from a JSON representation. diff --git a/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/holder/PaletteLayerHolder.java b/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/holder/PaletteLayerHolder.java index 38510d148..57946f7c3 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/holder/PaletteLayerHolder.java +++ b/common/implementation/src/main/java/com/dfsek/terra/api/world/palette/holder/PaletteLayerHolder.java @@ -2,22 +2,23 @@ package com.dfsek.terra.api.world.palette.holder; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import org.jetbrains.annotations.NotNull; public class PaletteLayerHolder { - private final ProbabilityCollectionImpl layer; + private final ProbabilityCollection layer; private final NoiseSampler sampler; private final int size; - public PaletteLayerHolder(@NotNull ProbabilityCollectionImpl layer, NoiseSampler sampler, int size) { + public PaletteLayerHolder(@NotNull ProbabilityCollection layer, NoiseSampler sampler, int size) { this.layer = layer; this.sampler = sampler; this.size = size; } @NotNull - public ProbabilityCollectionImpl getLayer() { + public ProbabilityCollection getLayer() { return layer; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/carving/CarverPalette.java b/common/implementation/src/main/java/com/dfsek/terra/carving/CarverPalette.java index 2ad5fc437..d30e3a35f 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/carving/CarverPalette.java +++ b/common/implementation/src/main/java/com/dfsek/terra/carving/CarverPalette.java @@ -2,6 +2,7 @@ package com.dfsek.terra.carving; import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.block.BlockType; +import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.util.collections.MaterialSet; import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import net.jafama.FastMath; @@ -13,8 +14,8 @@ import java.util.TreeMap; public class CarverPalette { private final boolean blacklist; private final MaterialSet replace; - private final TreeMap> map = new TreeMap<>(); - private ProbabilityCollectionImpl[] layers; + private final TreeMap> map = new TreeMap<>(); + private ProbabilityCollection[] layers; private int offset = 0; public CarverPalette(MaterialSet replaceable, boolean blacklist) { @@ -22,12 +23,12 @@ public class CarverPalette { this.replace = replaceable; } - public CarverPalette add(ProbabilityCollectionImpl collection, int y) { + public CarverPalette add(ProbabilityCollection collection, int y) { map.put(y, collection); return this; } - public ProbabilityCollectionImpl get(int y) { + public ProbabilityCollection get(int y) { int index = y + offset; return index >= 0 ? index < layers.length @@ -47,10 +48,10 @@ public class CarverPalette { int min = FastMath.min(map.keySet().stream().min(Integer::compareTo).orElse(0), 0); int max = FastMath.max(map.keySet().stream().max(Integer::compareTo).orElse(255), 255); - layers = new ProbabilityCollectionImpl[map.lastKey() + 1 - min]; + layers = new ProbabilityCollection[map.lastKey() + 1 - min]; for(int y = min; y <= FastMath.max(map.lastKey(), max); y++) { - ProbabilityCollectionImpl d = null; - for(Map.Entry> e : map.entrySet()) { + ProbabilityCollection d = null; + for(Map.Entry> e : map.entrySet()) { if(e.getKey() >= y) { d = e.getValue(); break; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java b/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java index b38c72323..914ad8387 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/GenericLoaders.java @@ -4,19 +4,17 @@ import com.dfsek.tectonic.loading.TypeRegistry; import com.dfsek.terra.api.LoaderRegistrar; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.addon.TerraAddon; -import com.dfsek.terra.api.math.GridSpawn; -import com.dfsek.terra.api.math.range.ConstantRange; -import com.dfsek.terra.noise.samplers.ImageSampler; -import com.dfsek.terra.noise.samplers.noise.CellularSampler; import com.dfsek.terra.api.block.BlockType; +import com.dfsek.terra.api.math.GridSpawn; +import com.dfsek.terra.api.util.ProbabilityCollection; +import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.util.collections.MaterialSet; -import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.api.util.seeded.SourceSeeded; import com.dfsek.terra.api.util.seeded.StageSeeded; +import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.biome.generation.pipeline.BiomeSource; import com.dfsek.terra.api.world.biome.pipeline.stages.ExpanderStage; import com.dfsek.terra.api.world.biome.pipeline.stages.MutatorStage; -import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.biome.provider.ImageBiomeProvider; import com.dfsek.terra.api.world.palette.holder.PaletteHolder; import com.dfsek.terra.api.world.palette.holder.PaletteLayerHolder; @@ -51,6 +49,8 @@ import com.dfsek.terra.config.loaders.palette.CarverPaletteLoader; import com.dfsek.terra.config.loaders.palette.PaletteHolderLoader; import com.dfsek.terra.config.loaders.palette.PaletteLayerLoader; import com.dfsek.terra.config.loaders.palette.slant.SlantHolderLoader; +import com.dfsek.terra.noise.samplers.ImageSampler; +import com.dfsek.terra.noise.samplers.noise.CellularSampler; import com.dfsek.terra.world.population.items.flora.FloraLayer; import com.dfsek.terra.world.population.items.flora.TerraFlora; import com.dfsek.terra.world.population.items.ores.Ore; @@ -69,8 +69,8 @@ public class GenericLoaders implements LoaderRegistrar { @Override public void register(TypeRegistry registry) { - registry.registerLoader(ProbabilityCollectionImpl.class, new ProbabilityCollectionLoader()) - .registerLoader(ConstantRange.class, new RangeLoader()) + registry.registerLoader(ProbabilityCollection.class, new ProbabilityCollectionLoader()) + .registerLoader(Range.class, new RangeLoader()) .registerLoader(GridSpawn.class, new GridSpawnLoader()) .registerLoader(PaletteHolder.class, new PaletteHolderLoader()) .registerLoader(PaletteLayerHolder.class, new PaletteLayerLoader()) diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/builder/BiomeBuilder.java b/common/implementation/src/main/java/com/dfsek/terra/config/builder/BiomeBuilder.java index 2e8accd13..d57eeb473 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/builder/BiomeBuilder.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/builder/BiomeBuilder.java @@ -1,5 +1,6 @@ package com.dfsek.terra.config.builder; +import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.world.biome.Biome; import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.api.util.seeded.SeededBuilder; @@ -7,7 +8,7 @@ import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.config.templates.BiomeTemplate; public interface BiomeBuilder extends SeededBuilder { - ProbabilityCollectionImpl getVanillaBiomes(); + ProbabilityCollection getVanillaBiomes(); BiomeTemplate getTemplate(); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/builder/UserDefinedBiomeBuilder.java b/common/implementation/src/main/java/com/dfsek/terra/config/builder/UserDefinedBiomeBuilder.java index 2f1ebe5f4..d07fb139f 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/builder/UserDefinedBiomeBuilder.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/builder/UserDefinedBiomeBuilder.java @@ -3,6 +3,7 @@ package com.dfsek.terra.config.builder; import com.dfsek.paralithic.eval.parser.Scope; import com.dfsek.paralithic.eval.tokenizer.ParseException; import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.noise.samplers.ExpressionSampler; import com.dfsek.terra.noise.samplers.noise.ConstantSampler; import com.dfsek.terra.api.world.biome.Biome; @@ -63,7 +64,7 @@ public class UserDefinedBiomeBuilder implements BiomeBuilder { } @Override - public ProbabilityCollectionImpl getVanillaBiomes() { + public ProbabilityCollection getVanillaBiomes() { return template.getVanilla(); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/ProbabilityCollectionLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/ProbabilityCollectionLoader.java index b5bd6b5d7..8b2de4ee7 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/ProbabilityCollectionLoader.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/ProbabilityCollectionLoader.java @@ -3,6 +3,7 @@ package com.dfsek.terra.config.loaders; 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.collections.ProbabilityCollectionImpl; import java.lang.reflect.ParameterizedType; @@ -11,10 +12,10 @@ import java.util.List; import java.util.Map; @SuppressWarnings("unchecked") -public class ProbabilityCollectionLoader implements TypeLoader> { +public class ProbabilityCollectionLoader implements TypeLoader> { @Override - public ProbabilityCollectionImpl load(Type type, Object o, ConfigLoader configLoader) throws LoadException { - ProbabilityCollectionImpl collection = new ProbabilityCollectionImpl<>(); + public ProbabilityCollection load(Type type, Object o, ConfigLoader configLoader) throws LoadException { + ProbabilityCollection collection = new ProbabilityCollectionImpl<>(); if(type instanceof ParameterizedType) { ParameterizedType pType = (ParameterizedType) type; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/Types.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/Types.java index d5571376a..eade08c4e 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/Types.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/Types.java @@ -1,6 +1,7 @@ package com.dfsek.terra.config.loaders; import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.world.Tree; import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.api.world.biome.TerraBiome; @@ -28,11 +29,11 @@ public final class Types { TERRA_BIOME_TERRA_BIOME_PROBABILITY_COLLECTION_MAP = getType("terraBiomeProbabilityCollectionMap"); } - private ProbabilityCollectionImpl blockDataProbabilityCollection; - private ProbabilityCollectionImpl floraProbabilityCollection; - private ProbabilityCollectionImpl treeProbabilityCollection; - private ProbabilityCollectionImpl terraBiomeProbabilityCollection; - private Map> terraBiomeProbabilityCollectionMap; + private ProbabilityCollection blockDataProbabilityCollection; + private ProbabilityCollection floraProbabilityCollection; + private ProbabilityCollection treeProbabilityCollection; + private ProbabilityCollection terraBiomeProbabilityCollection; + private Map> terraBiomeProbabilityCollectionMap; private static Type getType(String dummyFieldName) { try { diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/FloraLayerLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/FloraLayerLoader.java index 0a8288953..801097e63 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/FloraLayerLoader.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/FloraLayerLoader.java @@ -5,6 +5,8 @@ import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.tectonic.loading.TypeLoader; import com.dfsek.terra.api.math.range.ConstantRange; +import com.dfsek.terra.api.util.ProbabilityCollection; +import com.dfsek.terra.api.util.Range; import com.dfsek.terra.noise.samplers.noise.random.WhiteNoiseSampler; import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.api.util.seeded.NoiseSeeded; @@ -21,9 +23,9 @@ public class FloraLayerLoader implements TypeLoader { public FloraLayer load(Type type, Object o, ConfigLoader configLoader) throws LoadException { Map map = (Map) o; double density = ((Number) map.get("density")).doubleValue(); - ConstantRange range = configLoader.loadClass(ConstantRange.class, map.get("y")); + Range range = configLoader.loadClass(Range.class, map.get("y")); if(range == null) throw new LoadException("Flora range unspecified"); - ProbabilityCollectionImpl items = (ProbabilityCollectionImpl) configLoader.loadType(Types.FLORA_PROBABILITY_COLLECTION_TYPE, map.get("items")); + ProbabilityCollection items = (ProbabilityCollection) configLoader.loadType(Types.FLORA_PROBABILITY_COLLECTION_TYPE, map.get("items")); NoiseSeeded sampler; if(map.containsKey("distribution")) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/TreeLayerLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/TreeLayerLoader.java index c00777fc2..203ee6b47 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/TreeLayerLoader.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/TreeLayerLoader.java @@ -4,6 +4,8 @@ import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.tectonic.loading.TypeLoader; import com.dfsek.terra.api.math.range.ConstantRange; +import com.dfsek.terra.api.util.ProbabilityCollection; +import com.dfsek.terra.api.util.Range; import com.dfsek.terra.noise.samplers.noise.random.WhiteNoiseSampler; import com.dfsek.terra.api.world.Tree; import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; @@ -20,9 +22,9 @@ public class TreeLayerLoader implements TypeLoader { public TreeLayer load(Type type, Object o, ConfigLoader configLoader) throws LoadException { Map map = (Map) o; double density = ((Number) map.get("density")).doubleValue(); - ConstantRange range = configLoader.loadClass(ConstantRange.class, map.get("y")); + Range range = configLoader.loadClass(Range.class, map.get("y")); if(range == null) throw new LoadException("Tree range unspecified"); - ProbabilityCollectionImpl items = (ProbabilityCollectionImpl) configLoader.loadType(Types.TREE_PROBABILITY_COLLECTION_TYPE, map.get("items")); + ProbabilityCollection items = (ProbabilityCollection) configLoader.loadType(Types.TREE_PROBABILITY_COLLECTION_TYPE, map.get("items")); if(map.containsKey("distribution")) { NoiseSeeded noise = configLoader.loadClass(NoiseSeeded.class, map.get("distribution")); diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/ReplaceListMutatorTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/ReplaceListMutatorTemplate.java index e8123f20a..2a5927c68 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/ReplaceListMutatorTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/config/biome/templates/stage/mutator/ReplaceListMutatorTemplate.java @@ -17,7 +17,7 @@ public class ReplaceListMutatorTemplate extends MutatorStageTemplate { private String defaultFrom; @Value("default-to") - private ProbabilityCollectionImpl defaultTo; + private ProbabilityCollection defaultTo; @Value("to") private Map> replace; diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/palette/CarverPaletteLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/palette/CarverPaletteLoader.java index e2fa6c247..0535300a1 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/palette/CarverPaletteLoader.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/palette/CarverPaletteLoader.java @@ -5,6 +5,7 @@ import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.tectonic.loading.TypeLoader; import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.util.collections.MaterialSet; import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.carving.CarverPalette; @@ -24,7 +25,7 @@ public class CarverPaletteLoader implements TypeLoader { CarverPalette palette = new CarverPalette((MaterialSet) configLoader.loadType(MaterialSet.class, configuration.get("replace")), (Boolean) configuration.get("replace-blacklist")); for(Map map : (List>) configuration.get("layers")) { - ProbabilityCollectionImpl layer = (ProbabilityCollectionImpl) configLoader.loadType(Types.BLOCK_DATA_PROBABILITY_COLLECTION_TYPE, map.get("materials")); + ProbabilityCollection layer = (ProbabilityCollection) configLoader.loadType(Types.BLOCK_DATA_PROBABILITY_COLLECTION_TYPE, map.get("materials")); palette.add(layer, (Integer) map.get("y")); } palette.build(); diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/palette/PaletteHolderLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/palette/PaletteHolderLoader.java index b0aaa5a2c..1cbcac1a7 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/palette/PaletteHolderLoader.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/palette/PaletteHolderLoader.java @@ -20,7 +20,7 @@ public class PaletteHolderLoader implements TypeLoader { PaletteHolderBuilder builder = new PaletteHolderBuilder(); for(Map layer : palette) { for(Map.Entry entry : layer.entrySet()) { - builder.add(entry.getValue(), (Palette) configLoader.loadType(PaletteImpl.class, entry.getKey())); + builder.add(entry.getValue(), (Palette) configLoader.loadType(Palette.class, entry.getKey())); } } return builder.build(); diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/palette/PaletteLayerLoader.java b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/palette/PaletteLayerLoader.java index 716570673..ab1674c06 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/loaders/palette/PaletteLayerLoader.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/loaders/palette/PaletteLayerLoader.java @@ -5,6 +5,7 @@ import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.tectonic.loading.TypeLoader; import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.block.BlockData; +import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.api.util.seeded.NoiseSeeded; import com.dfsek.terra.api.world.palette.holder.PaletteLayerHolder; @@ -18,7 +19,7 @@ public class PaletteLayerLoader implements TypeLoader { @Override public PaletteLayerHolder load(Type type, Object o, ConfigLoader configLoader) throws LoadException { Map map = (Map) o; - ProbabilityCollectionImpl collection = (ProbabilityCollectionImpl) configLoader.loadType(Types.BLOCK_DATA_PROBABILITY_COLLECTION_TYPE, map.get("materials")); + ProbabilityCollection collection = (ProbabilityCollection) configLoader.loadType(Types.BLOCK_DATA_PROBABILITY_COLLECTION_TYPE, map.get("materials")); NoiseSampler sampler = null; if(map.containsKey("noise")) { diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java index 2ce3b99a5..26cb41d66 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/pack/ConfigPackImpl.java @@ -231,7 +231,7 @@ public class ConfigPackImpl implements ConfigPack { }).close().open("structures/loot", ".json").thenEntries(entries -> { for(Map.Entry entry : entries) { try { - getOpenRegistry(LootTableImpl.class).add(entry.getKey(), new LootTableImpl(IOUtils.toString(entry.getValue(), StandardCharsets.UTF_8), main)); + getOpenRegistry(LootTable.class).add(entry.getKey(), new LootTableImpl(IOUtils.toString(entry.getValue(), StandardCharsets.UTF_8), main)); } catch(ParseException | IOException | NullPointerException e) { throw new LoadException("Unable to load loot table \"" + entry.getKey() + "\"", e); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/templates/BiomeTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/templates/BiomeTemplate.java index d6769ce62..9b9b38b86 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/templates/BiomeTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/templates/BiomeTemplate.java @@ -11,6 +11,7 @@ import com.dfsek.tectonic.exception.ValidationException; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.noise.samplers.noise.ConstantSampler; import com.dfsek.terra.api.math.paralithic.BlankFunction; import com.dfsek.terra.api.math.paralithic.defined.UserDefinedFunction; @@ -76,7 +77,7 @@ public class BiomeTemplate extends AbstractableTemplate implements ValidatedConf @Value("vanilla") @Abstractable - private ProbabilityCollectionImpl vanilla; + private ProbabilityCollection vanilla; @Value("biome-noise") @Default @@ -303,7 +304,7 @@ public class BiomeTemplate extends AbstractableTemplate implements ValidatedConf return trees; } - public ProbabilityCollectionImpl getVanilla() { + public ProbabilityCollection getVanilla() { return vanilla; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/templates/StructureTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/templates/StructureTemplate.java index 6b7cd6e65..5f99d6679 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/templates/StructureTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/templates/StructureTemplate.java @@ -7,6 +7,7 @@ import com.dfsek.tectonic.config.ConfigTemplate; import com.dfsek.terra.api.math.GridSpawn; import com.dfsek.terra.api.structure.Structure; import com.dfsek.terra.api.util.GlueList; +import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; @@ -19,7 +20,7 @@ public class StructureTemplate extends AbstractableTemplate implements ConfigTem @Value("scripts") @Abstractable - private ProbabilityCollectionImpl structure; + private ProbabilityCollection structure; @Value("spawn.start") @Abstractable @@ -38,7 +39,7 @@ public class StructureTemplate extends AbstractableTemplate implements ConfigTem return id; } - public ProbabilityCollectionImpl getStructures() { + public ProbabilityCollection getStructures() { return structure; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/config/templates/TreeTemplate.java b/common/implementation/src/main/java/com/dfsek/terra/config/templates/TreeTemplate.java index 5e07626ed..e7af73c3b 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/config/templates/TreeTemplate.java +++ b/common/implementation/src/main/java/com/dfsek/terra/config/templates/TreeTemplate.java @@ -4,6 +4,7 @@ import com.dfsek.tectonic.annotations.Abstractable; import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Value; import com.dfsek.terra.api.structure.Structure; +import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.util.collections.MaterialSet; import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; @@ -11,7 +12,7 @@ import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; public class TreeTemplate extends AbstractableTemplate { @Value("scripts") @Abstractable - private ProbabilityCollectionImpl structure; + private ProbabilityCollection structure; @Value("id") private String id; @@ -25,7 +26,7 @@ public class TreeTemplate extends AbstractableTemplate { @Abstractable private MaterialSet spawnable; - public ProbabilityCollectionImpl getStructures() { + public ProbabilityCollection getStructures() { return structure; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/PlaceableLayer.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/PlaceableLayer.java index ca3287a57..b859ad1b5 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/PlaceableLayer.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/PlaceableLayer.java @@ -1,19 +1,19 @@ package com.dfsek.terra.world.population.items; -import com.dfsek.terra.api.math.range.ConstantRange; 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.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.world.Chunk; -import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; public abstract class PlaceableLayer { protected final double density; - protected final ConstantRange level; - protected final ProbabilityCollectionImpl layer; + protected final Range level; + protected final ProbabilityCollection layer; protected final NoiseSampler noise; - public PlaceableLayer(double density, ConstantRange level, ProbabilityCollectionImpl layer, NoiseSampler noise) { + public PlaceableLayer(double density, Range level, ProbabilityCollection layer, NoiseSampler noise) { this.density = density; this.level = level; this.layer = layer; @@ -32,7 +32,7 @@ public abstract class PlaceableLayer { return level; } - public ProbabilityCollectionImpl getLayer() { + public ProbabilityCollection getLayer() { return layer; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/TerraStructure.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/TerraStructure.java index 0cd519d8b..e3dace7fd 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/TerraStructure.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/TerraStructure.java @@ -2,17 +2,18 @@ package com.dfsek.terra.world.population.items; import com.dfsek.terra.api.math.GridSpawn; import com.dfsek.terra.api.structure.Structure; +import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.config.templates.StructureTemplate; public class TerraStructure { - private final ProbabilityCollectionImpl structure; + private final ProbabilityCollection structure; private final Range spawnStart; private final GridSpawn spawn; private final StructureTemplate template; - public TerraStructure(ProbabilityCollectionImpl structures, Range spawnStart, GridSpawn spawn, StructureTemplate template) { + public TerraStructure(ProbabilityCollection structures, Range spawnStart, GridSpawn spawn, StructureTemplate template) { this.structure = structures; this.spawnStart = spawnStart; this.spawn = spawn; @@ -23,7 +24,7 @@ public class TerraStructure { return template; } - public ProbabilityCollectionImpl getStructure() { + public ProbabilityCollection getStructure() { return structure; } diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/FloraLayer.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/FloraLayer.java index ba4db2cfa..d2e1be079 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/FloraLayer.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/flora/FloraLayer.java @@ -2,6 +2,8 @@ package com.dfsek.terra.world.population.items.flora; import com.dfsek.terra.api.math.range.ConstantRange; 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.util.collections.ProbabilityCollectionImpl; @@ -10,7 +12,7 @@ import com.dfsek.terra.world.population.items.PlaceableLayer; public class FloraLayer extends PlaceableLayer { - public FloraLayer(double density, ConstantRange level, ProbabilityCollectionImpl layer, NoiseSampler noise) { + public FloraLayer(double density, Range level, ProbabilityCollection layer, NoiseSampler noise) { super(density, level, layer, noise); } diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/tree/TerraTree.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/tree/TerraTree.java index 7c0f6648d..5e0cf1904 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/tree/TerraTree.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/tree/TerraTree.java @@ -1,6 +1,7 @@ package com.dfsek.terra.world.population.items.tree; import com.dfsek.terra.api.structure.Structure; +import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.world.Tree; @@ -13,9 +14,9 @@ import java.util.Random; public class TerraTree implements Tree { private final MaterialSet spawnable; private final int yOffset; - private final ProbabilityCollectionImpl structure; + private final ProbabilityCollection structure; - public TerraTree(MaterialSet spawnable, int yOffset, ProbabilityCollectionImpl structure) { + public TerraTree(MaterialSet spawnable, int yOffset, ProbabilityCollection structure) { this.spawnable = spawnable; this.yOffset = yOffset; this.structure = structure; diff --git a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/tree/TreeLayer.java b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/tree/TreeLayer.java index a3409a7be..546a169b2 100644 --- a/common/implementation/src/main/java/com/dfsek/terra/world/population/items/tree/TreeLayer.java +++ b/common/implementation/src/main/java/com/dfsek/terra/world/population/items/tree/TreeLayer.java @@ -2,6 +2,8 @@ package com.dfsek.terra.world.population.items.tree; import com.dfsek.terra.api.math.range.ConstantRange; 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.block.Block; import com.dfsek.terra.api.block.BlockFace; @@ -13,7 +15,7 @@ import com.dfsek.terra.world.population.items.PlaceableLayer; public class TreeLayer extends PlaceableLayer { - public TreeLayer(double density, ConstantRange level, ProbabilityCollectionImpl layer, NoiseSampler noise) { + public TreeLayer(double density, Range level, ProbabilityCollection layer, NoiseSampler noise) { super(density, level, layer, noise); } diff --git a/common/implementation/src/test/java/noise/NoiseTool.java b/common/implementation/src/test/java/noise/NoiseTool.java index 7e4ed53cc..063d044c7 100644 --- a/common/implementation/src/test/java/noise/NoiseTool.java +++ b/common/implementation/src/test/java/noise/NoiseTool.java @@ -3,6 +3,7 @@ package noise; import com.dfsek.tectonic.exception.ConfigException; import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.terra.api.noise.NoiseSampler; +import com.dfsek.terra.api.util.ProbabilityCollection; import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.api.util.seeded.NoiseSeeded; import com.dfsek.terra.config.GenericLoaders; @@ -99,7 +100,7 @@ public class NoiseTool { ConfigLoader loader = new ConfigLoader(); loader.registerLoader(NoiseSeeded.class, new NoiseSamplerBuilderLoader(new NoiseRegistry())) .registerLoader(BufferedImage.class, new BufferedImageLoader(folderLoader)) - .registerLoader(ProbabilityCollectionImpl.class, new ProbabilityCollectionLoader()); + .registerLoader(ProbabilityCollection.class, new ProbabilityCollectionLoader()); new GenericLoaders(null).register(loader); NoiseConfigTemplate template = new NoiseConfigTemplate(); diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/ConfiguredFeatureMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/ConfiguredFeatureMixin.java index 7c89391fe..d69cd9c36 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/ConfiguredFeatureMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/ConfiguredFeatureMixin.java @@ -1,10 +1,11 @@ package com.dfsek.terra.fabric.mixin.implementations; -import com.dfsek.terra.vector.LocationImpl; -import com.dfsek.terra.api.world.Tree; -import com.dfsek.terra.api.util.collections.MaterialSet; -import com.dfsek.terra.fabric.TerraFabricPlugin; +import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.profiler.ProfileFrame; +import com.dfsek.terra.api.util.collections.MaterialSet; +import com.dfsek.terra.api.vector.Location; +import com.dfsek.terra.api.world.Tree; +import com.dfsek.terra.fabric.TerraFabricPlugin; import net.minecraft.util.math.BlockPos; import net.minecraft.util.registry.BuiltinRegistries; import net.minecraft.world.StructureWorldAccess; @@ -17,6 +18,7 @@ import org.spongepowered.asm.mixin.Shadow; import java.util.Locale; import java.util.Random; +import java.util.Set; @Mixin(ConfiguredFeature.class) @Implements(@Interface(iface = Tree.class, prefix = "terra$", remap = Interface.Remap.NONE)) @@ -25,7 +27,7 @@ public abstract class ConfiguredFeatureMixin { public abstract boolean generate(StructureWorldAccess world, ChunkGenerator chunkGenerator, Random random, BlockPos pos); @SuppressWarnings({"ConstantConditions", "try"}) - public boolean terra$plant(LocationImpl l, Random r) { + public boolean terra$plant(Location l, Random r) { String id = BuiltinRegistries.CONFIGURED_FEATURE.getId((ConfiguredFeature) (Object) this).toString(); try(ProfileFrame ignore = TerraFabricPlugin.getInstance().getProfiler().profile("fabric_tree:" + id.toLowerCase(Locale.ROOT))) { StructureWorldAccess fabricWorldAccess = ((StructureWorldAccess) l.getWorld()); @@ -34,7 +36,7 @@ public abstract class ConfiguredFeatureMixin { } } - public MaterialSet terra$getSpawnable() { + public Set terra$getSpawnable() { return MaterialSet.get(TerraFabricPlugin.getInstance().getWorldHandle().createBlockData("minecraft:grass_block"), TerraFabricPlugin.getInstance().getWorldHandle().createBlockData("minecraft:podzol"), TerraFabricPlugin.getInstance().getWorldHandle().createBlockData("minecraft:mycelium")); diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/entity/EntityMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/entity/EntityMixin.java index 34555f4c1..5f60f5d27 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/entity/EntityMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/entity/EntityMixin.java @@ -1,5 +1,6 @@ package com.dfsek.terra.fabric.mixin.implementations.entity; +import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.world.World; import com.dfsek.terra.fabric.util.FabricAdapter; @@ -35,11 +36,11 @@ public abstract class EntityMixin { return this; } - public LocationImpl terra$getLocation() { + public Location terra$getLocation() { return new LocationImpl((World) world, FabricAdapter.adapt(blockPos)); } - public void terra$setLocation(LocationImpl location) { + public void terra$setLocation(Location location) { teleport(location.getX(), location.getY(), location.getZ()); } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java index 88972927c..e7d8987e7 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ChunkRegionMixin.java @@ -1,5 +1,6 @@ package com.dfsek.terra.fabric.mixin.implementations.world; +import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.entity.Entity; @@ -51,7 +52,7 @@ public abstract class ChunkRegionMixin { } @SuppressWarnings("deprecation") - public Entity terra$spawnEntity(LocationImpl location, EntityType entityType) { + public Entity terra$spawnEntity(Location location, EntityType entityType) { net.minecraft.entity.Entity entity = ((net.minecraft.entity.EntityType) entityType).create(((ChunkRegion) (Object) this).toServerWorld()); entity.setPos(location.getX(), location.getY(), location.getZ()); ((ChunkRegion) (Object) this).spawnEntity(entity); diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java index 24acd2eec..fd32600ca 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/implementations/world/ServerWorldMixin.java @@ -1,5 +1,6 @@ package com.dfsek.terra.fabric.mixin.implementations.world; +import com.dfsek.terra.api.vector.Location; import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.entity.Entity; @@ -42,7 +43,7 @@ public abstract class ServerWorldMixin { return new FabricBlock(new BlockPos(x, y, z), ((ServerWorld) (Object) this)); } - public Entity terra$spawnEntity(LocationImpl location, EntityType entityType) { + public Entity terra$spawnEntity(Location location, EntityType entityType) { net.minecraft.entity.Entity entity = ((net.minecraft.entity.EntityType) entityType).create(((ServerWorld) (Object) this)); entity.setPos(location.getX(), location.getY(), location.getZ()); ((ServerWorld) (Object) this).spawnEntity(entity);