more refactors, create platform module

This commit is contained in:
dfsek
2021-06-23 10:39:37 -07:00
parent 506f59f8af
commit 24b8fc859c
42 changed files with 178 additions and 109 deletions
@@ -163,7 +163,7 @@ public class Location implements Cloneable {
return hash; return hash;
} }
public Vector3Impl toVector() { public Vector3 toVector() {
return vector.clone(); return vector.clone();
} }
@@ -38,7 +38,7 @@ public interface Vector2 extends Cloneable {
* @param other Vector to add * @param other Vector to add
* @return Mutated vector, for chaining. * @return Mutated vector, for chaining.
*/ */
Vector2 add(Vector2Impl other); Vector2 add(Vector2 other);
/** /**
* Subtract a vector from this vector, * Subtract a vector from this vector,
@@ -46,7 +46,7 @@ public interface Vector2 extends Cloneable {
* @param other Vector to subtract * @param other Vector to subtract
* @return Mutated vector, for chaining. * @return Mutated vector, for chaining.
*/ */
Vector2 subtract(Vector2Impl other); Vector2 subtract(Vector2 other);
/** /**
* Normalize this vector to length 1 * Normalize this vector to length 1
@@ -83,7 +83,7 @@ public interface Vector2 extends Cloneable {
* @param other Another vector * @param other Another vector
* @return Distance between vectors * @return Distance between vectors
*/ */
double distance(Vector2Impl other); double distance(Vector2 other);
/** /**
* Get the squared distance between 2 vectors. * Get the squared distance between 2 vectors.
@@ -91,7 +91,7 @@ public interface Vector2 extends Cloneable {
* @param other Another vector * @param other Another vector
* @return Squared distance * @return Squared distance
*/ */
double distanceSquared(Vector2Impl other); double distanceSquared(Vector2 other);
Vector2 add(double x, double z); Vector2 add(double x, double z);
@@ -95,7 +95,7 @@ public interface Vector3 extends Cloneable {
* @param o The other vector * @param o The other vector
* @return the distance * @return the distance
*/ */
double distance(@NotNull Vector3Impl o); double distance(@NotNull Vector3 o);
/** /**
* Get the squared distance between this vector and another. * Get the squared distance between this vector and another.
@@ -103,7 +103,7 @@ public interface Vector3 extends Cloneable {
* @param o The other vector * @param o The other vector
* @return the distance * @return the distance
*/ */
double distanceSquared(@NotNull Vector3Impl o); double distanceSquared(@NotNull Vector3 o);
/** /**
* Rotates the vector around a given arbitrary axis in 3 dimensional space. * Rotates the vector around a given arbitrary axis in 3 dimensional space.
@@ -117,7 +117,7 @@ public interface Vector3 extends Cloneable {
* *
* @param axis the axis to rotate the vector around. If the passed vector is * @param axis the axis to rotate the vector around. If the passed vector is
* not of length 1, it gets copied and normalized before using it for the * not of length 1, it gets copied and normalized before using it for the
* rotation. Please use {@link Vector3Impl#normalize()} on the instance before * rotation. Please use {@link Vector3#normalize()} on the instance before
* passing it to this method * passing it to this method
* @param angle the angle to rotate the vector around the axis * @param angle the angle to rotate the vector around the axis
* @return the same vector * @return the same vector
@@ -144,7 +144,7 @@ public interface Vector3 extends Cloneable {
* @throws IllegalArgumentException if the provided axis vector instance is * @throws IllegalArgumentException if the provided axis vector instance is
* null * null
*/ */
@NotNull Vector3 rotateAroundNonUnitAxis(@NotNull Vector3Impl axis, double angle) throws IllegalArgumentException; @NotNull Vector3 rotateAroundNonUnitAxis(@NotNull Vector3 axis, double angle) throws IllegalArgumentException;
/** /**
* Calculates the dot product of this vector with another. The dot product * Calculates the dot product of this vector with another. The dot product
@@ -153,7 +153,7 @@ public interface Vector3 extends Cloneable {
* @param other The other vector * @param other The other vector
* @return dot product * @return dot product
*/ */
double dot(@NotNull Vector3Impl other); double dot(@NotNull Vector3 other);
Location toLocation(World world); Location toLocation(World world);
@@ -161,5 +161,7 @@ public interface Vector3 extends Cloneable {
Vector3 subtract(int x, int y, int z); Vector3 subtract(int x, int y, int z);
Vector3 subtract(Vector3Impl end); Vector3 subtract(Vector3 end);
public Vector3 clone();
} }
@@ -7,7 +7,7 @@ import com.dfsek.terra.api.entity.Entity;
import com.dfsek.terra.api.entity.EntityType; import com.dfsek.terra.api.entity.EntityType;
import com.dfsek.terra.api.world.generator.ChunkGenerator; import com.dfsek.terra.api.world.generator.ChunkGenerator;
import com.dfsek.terra.api.world.generator.GeneratorWrapper; import com.dfsek.terra.api.world.generator.GeneratorWrapper;
import com.dfsek.terra.api.world.generation.TerraChunkGenerator; import com.dfsek.terra.api.world.generator.TerraChunkGenerator;
public interface World extends Handle { public interface World extends Handle {
long getSeed(); long getSeed();
@@ -1,4 +1,4 @@
package com.dfsek.terra.api.world.generation; package com.dfsek.terra.api.world.generator;
/** /**
* Marker interface that marks a feature as "chunkified" (only modifying one chunk at a time) * Marker interface that marks a feature as "chunkified" (only modifying one chunk at a time)
@@ -0,0 +1,21 @@
package com.dfsek.terra.api.world.generator;
import com.dfsek.terra.api.block.BlockData;
import com.dfsek.terra.api.noise.NoiseSampler;
import com.dfsek.terra.api.util.ProbabilityCollection;
public interface Palette {
Palette add(BlockData m, int layers, NoiseSampler sampler);
Palette add(ProbabilityCollection<BlockData> m, int layers, NoiseSampler sampler);
/**
* Fetches a material from the palette, at a given layer.
*
* @param layer - The layer at which to fetch the material.
* @return BlockData - The material fetched.
*/
BlockData get(int layer, double x, double y, double z);
int getSize();
}
@@ -1,4 +1,4 @@
package com.dfsek.terra.api.world.generation; package com.dfsek.terra.api.world.generator;
import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.Chunk;
import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.World;
@@ -1,9 +1,9 @@
package com.dfsek.terra.api.world.generation; package com.dfsek.terra.api.world.generator;
import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.config.ConfigPack;
import com.dfsek.terra.api.world.BiomeGrid; import com.dfsek.terra.api.world.BiomeGrid;
import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.World;
import com.dfsek.terra.api.world.generator.ChunkData;
import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
import com.dfsek.terra.config.pack.ConfigPackImpl; import com.dfsek.terra.config.pack.ConfigPackImpl;
import com.dfsek.terra.world.generation.math.samplers.Sampler; import com.dfsek.terra.world.generation.math.samplers.Sampler;
@@ -17,17 +17,7 @@ public interface TerraChunkGenerator {
void generateBiomes(@NotNull World world, @NotNull Random random, int x, int z, @NotNull BiomeGrid biome); void generateBiomes(@NotNull World world, @NotNull Random random, int x, int z, @NotNull BiomeGrid biome);
boolean isParallelCapable(); ConfigPack getConfigPack();
boolean shouldGenerateCaves();
boolean shouldGenerateDecorations();
boolean shouldGenerateMobs();
boolean shouldGenerateStructures();
ConfigPackImpl getConfigPack();
TerraPlugin getMain(); TerraPlugin getMain();
@@ -40,9 +40,9 @@ public class GridSpawn {
zones.add(getChunkSpawn(xi, zi, seed)); zones.add(getChunkSpawn(xi, zi, seed));
} }
} }
Vector3Impl shortest = zones.get(0); Vector3 shortest = zones.get(0);
Vector3 compare = new Vector3Impl(x, 0, z); Vector3 compare = new Vector3Impl(x, 0, z);
for(Vector3Impl v : zones) { for(Vector3 v : zones) {
if(compare.distanceSquared(shortest) > compare.distanceSquared(v)) shortest = v.clone(); if(compare.distanceSquared(shortest) > compare.distanceSquared(v)) shortest = v.clone();
} }
return shortest; return shortest;
@@ -1,7 +1,7 @@
package com.dfsek.terra.api.util.world; package com.dfsek.terra.api.util.world;
import com.dfsek.terra.api.util.MathUtil; import com.dfsek.terra.api.util.MathUtil;
import com.dfsek.terra.api.world.palette.Palette; import com.dfsek.terra.api.world.generator.Palette;
import com.dfsek.terra.api.world.palette.slant.SlantHolder; import com.dfsek.terra.api.world.palette.slant.SlantHolder;
import com.dfsek.terra.config.templates.BiomeTemplate; import com.dfsek.terra.config.templates.BiomeTemplate;
import com.dfsek.terra.world.generation.math.samplers.Sampler; import com.dfsek.terra.world.generation.math.samplers.Sampler;
@@ -5,7 +5,7 @@ import com.dfsek.terra.api.block.BlockData;
import java.util.List; import java.util.List;
public class NoisePalette extends Palette { public class NoisePalette extends PaletteImpl {
private final NoiseSampler sampler; private final NoiseSampler sampler;
private final boolean is2D; private final boolean is2D;
@@ -3,7 +3,9 @@ package com.dfsek.terra.api.world.palette;
import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.noise.NoiseSampler;
import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.block.BlockData;
import com.dfsek.terra.api.util.GlueList; import com.dfsek.terra.api.util.GlueList;
import com.dfsek.terra.api.util.ProbabilityCollection;
import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl;
import com.dfsek.terra.api.world.generator.Palette;
import java.util.List; import java.util.List;
import java.util.Random; import java.util.Random;
@@ -12,39 +14,34 @@ import java.util.Random;
* A class representation of a "slice" of the world. * A class representation of a "slice" of the world.
* Used to get a section of blocks, based on the depth at which they are found. * Used to get a section of blocks, based on the depth at which they are found.
*/ */
public abstract class Palette { public abstract class PaletteImpl implements com.dfsek.terra.api.world.generator.Palette {
private final List<PaletteLayer> pallet = new GlueList<>(); private final List<PaletteLayer> pallet = new GlueList<>();
/** /**
* Constructs a blank palette. * Constructs a blank palette.
*/ */
public Palette() { public PaletteImpl() {
} }
public com.dfsek.terra.api.world.palette.Palette add(BlockData m, int layers, NoiseSampler sampler) { @Override
public Palette add(BlockData m, int layers, NoiseSampler sampler) {
for(int i = 0; i < layers; i++) { for(int i = 0; i < layers; i++) {
pallet.add(new PaletteLayer(m, sampler)); pallet.add(new PaletteLayer(m, sampler));
} }
return this; return this;
} }
public com.dfsek.terra.api.world.palette.Palette add(ProbabilityCollectionImpl<BlockData> m, int layers, NoiseSampler sampler) { @Override
public Palette add(ProbabilityCollection<BlockData> m, int layers, NoiseSampler sampler) {
for(int i = 0; i < layers; i++) { for(int i = 0; i < layers; i++) {
pallet.add(new PaletteLayer(m, sampler)); pallet.add(new PaletteLayer(m, sampler));
} }
return this; return this;
} }
/**
* Fetches a material from the palette, at a given layer.
*
* @param layer - The layer at which to fetch the material.
* @return BlockData - The material fetched.
*/
public abstract BlockData get(int layer, double x, double y, double z);
@Override
public int getSize() { public int getSize() {
return pallet.size(); return pallet.size();
} }
@@ -58,7 +55,7 @@ public abstract class Palette {
*/ */
public static class PaletteLayer { public static class PaletteLayer {
private final boolean col; // Is layer using a collection? private final boolean col; // Is layer using a collection?
private ProbabilityCollectionImpl<BlockData> collection; private ProbabilityCollection<BlockData> collection;
private final NoiseSampler sampler; private final NoiseSampler sampler;
private BlockData m; private BlockData m;
@@ -68,7 +65,7 @@ public abstract class Palette {
* @param type The collection of materials to choose from. * @param type The collection of materials to choose from.
* @param sampler Noise sampler to use * @param sampler Noise sampler to use
*/ */
public PaletteLayer(ProbabilityCollectionImpl<BlockData> type, NoiseSampler sampler) { public PaletteLayer(ProbabilityCollection<BlockData> type, NoiseSampler sampler) {
this.sampler = sampler; this.sampler = sampler;
this.col = true; this.col = true;
this.collection = type; this.collection = type;
@@ -106,8 +103,21 @@ public abstract class Palette {
return m; return m;
} }
public ProbabilityCollectionImpl<BlockData> getCollection() { public ProbabilityCollection<BlockData> getCollection() {
return collection; return collection;
} }
} }
public static class Singleton extends PaletteImpl {
private final BlockData item;
public Singleton(BlockData item) {
this.item = item;
}
@Override
public BlockData get(int layer, double x, double y, double z) {
return item;
}
}
} }
@@ -1,16 +0,0 @@
package com.dfsek.terra.api.world.palette;
import com.dfsek.terra.api.block.BlockData;
public class SinglePalette extends Palette {
private final BlockData item;
public SinglePalette(BlockData item) {
this.item = item;
}
@Override
public BlockData get(int layer, double x, double y, double z) {
return item;
}
}
@@ -1,6 +1,6 @@
package com.dfsek.terra.api.world.palette.holder; package com.dfsek.terra.api.world.palette.holder;
import com.dfsek.terra.api.world.palette.Palette; import com.dfsek.terra.api.world.generator.Palette;
public class PaletteHolder { public class PaletteHolder {
private final Palette[] palettes; private final Palette[] palettes;
@@ -1,6 +1,6 @@
package com.dfsek.terra.api.world.palette.holder; package com.dfsek.terra.api.world.palette.holder;
import com.dfsek.terra.api.world.palette.Palette; import com.dfsek.terra.api.world.generator.Palette;
import net.jafama.FastMath; import net.jafama.FastMath;
import java.util.Map; import java.util.Map;
@@ -1,6 +1,5 @@
package com.dfsek.terra.api.world.palette.slant; package com.dfsek.terra.api.world.palette.slant;
import com.dfsek.terra.api.world.palette.Palette;
import com.dfsek.terra.api.world.palette.holder.PaletteHolder; import com.dfsek.terra.api.world.palette.holder.PaletteHolder;
import java.util.TreeMap; import java.util.TreeMap;
@@ -4,7 +4,7 @@ import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.noise.samplers.noise.random.WhiteNoiseSampler; import com.dfsek.terra.api.noise.samplers.noise.random.WhiteNoiseSampler;
import com.dfsek.terra.api.world.Flora; import com.dfsek.terra.api.world.Flora;
import com.dfsek.terra.api.world.palette.NoisePalette; import com.dfsek.terra.api.world.palette.NoisePalette;
import com.dfsek.terra.api.world.palette.Palette; import com.dfsek.terra.api.world.palette.PaletteImpl;
import com.dfsek.terra.api.world.palette.holder.PaletteLayerHolder; import com.dfsek.terra.api.world.palette.holder.PaletteLayerHolder;
import com.dfsek.terra.config.templates.FloraTemplate; import com.dfsek.terra.config.templates.FloraTemplate;
import com.dfsek.terra.world.population.items.flora.TerraFlora; import com.dfsek.terra.world.population.items.flora.TerraFlora;
@@ -12,7 +12,7 @@ import com.dfsek.terra.world.population.items.flora.TerraFlora;
public class FloraFactory implements ConfigFactory<FloraTemplate, Flora> { public class FloraFactory implements ConfigFactory<FloraTemplate, Flora> {
@Override @Override
public TerraFlora build(FloraTemplate config, TerraPlugin main) { public TerraFlora build(FloraTemplate config, TerraPlugin main) {
Palette palette = new NoisePalette(new WhiteNoiseSampler(2403), false); PaletteImpl palette = new NoisePalette(new WhiteNoiseSampler(2403), false);
for(PaletteLayerHolder layer : config.getFloraPalette()) { for(PaletteLayerHolder layer : config.getFloraPalette()) {
palette.add(layer.getLayer(), layer.getSize(), layer.getSampler()); palette.add(layer.getLayer(), layer.getSize(), layer.getSampler());
} }
@@ -1,8 +1,8 @@
package com.dfsek.terra.config.factories; package com.dfsek.terra.config.factories;
import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.world.generator.Palette;
import com.dfsek.terra.api.world.palette.NoisePalette; import com.dfsek.terra.api.world.palette.NoisePalette;
import com.dfsek.terra.api.world.palette.Palette;
import com.dfsek.terra.api.world.palette.holder.PaletteLayerHolder; import com.dfsek.terra.api.world.palette.holder.PaletteLayerHolder;
import com.dfsek.terra.config.templates.PaletteTemplate; import com.dfsek.terra.config.templates.PaletteTemplate;
@@ -3,7 +3,8 @@ package com.dfsek.terra.config.loaders.palette;
import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.exception.LoadException;
import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.tectonic.loading.ConfigLoader;
import com.dfsek.tectonic.loading.TypeLoader; import com.dfsek.tectonic.loading.TypeLoader;
import com.dfsek.terra.api.world.palette.Palette; import com.dfsek.terra.api.world.generator.Palette;
import com.dfsek.terra.api.world.palette.PaletteImpl;
import com.dfsek.terra.api.world.palette.holder.PaletteHolder; import com.dfsek.terra.api.world.palette.holder.PaletteHolder;
import com.dfsek.terra.api.world.palette.holder.PaletteHolderBuilder; import com.dfsek.terra.api.world.palette.holder.PaletteHolderBuilder;
@@ -19,7 +20,7 @@ public class PaletteHolderLoader implements TypeLoader<PaletteHolder> {
PaletteHolderBuilder builder = new PaletteHolderBuilder(); PaletteHolderBuilder builder = new PaletteHolderBuilder();
for(Map<String, Integer> layer : palette) { for(Map<String, Integer> layer : palette) {
for(Map.Entry<String, Integer> entry : layer.entrySet()) { for(Map.Entry<String, Integer> entry : layer.entrySet()) {
builder.add(entry.getValue(), (Palette) configLoader.loadType(Palette.class, entry.getKey())); builder.add(entry.getValue(), (Palette) configLoader.loadType(PaletteImpl.class, entry.getKey()));
} }
} }
return builder.build(); return builder.build();
@@ -19,8 +19,8 @@ import com.dfsek.terra.api.world.biome.Biome;
import com.dfsek.terra.api.util.GlueList; import com.dfsek.terra.api.util.GlueList;
import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl;
import com.dfsek.terra.api.util.seeded.NoiseSeeded; import com.dfsek.terra.api.util.seeded.NoiseSeeded;
import com.dfsek.terra.api.world.palette.Palette; import com.dfsek.terra.api.world.generator.Palette;
import com.dfsek.terra.api.world.palette.SinglePalette; import com.dfsek.terra.api.world.palette.PaletteImpl;
import com.dfsek.terra.api.world.palette.holder.PaletteHolder; import com.dfsek.terra.api.world.palette.holder.PaletteHolder;
import com.dfsek.terra.api.world.palette.slant.SlantHolder; import com.dfsek.terra.api.world.palette.slant.SlantHolder;
import com.dfsek.terra.carving.UserDefinedCarver; import com.dfsek.terra.carving.UserDefinedCarver;
@@ -256,7 +256,7 @@ public class BiomeTemplate extends AbstractableTemplate implements ValidatedConf
return 2; return 2;
} }
}; };
oceanPalette = new SinglePalette(main.getWorldHandle().createBlockData("minecraft:water")); oceanPalette = new PaletteImpl.Singleton(main.getWorldHandle().createBlockData("minecraft:water"));
} }
public Map<BlockType, Palette> getSlabPalettes() { public Map<BlockType, Palette> getSlabPalettes() {
@@ -7,7 +7,7 @@ import com.dfsek.terra.api.config.ConfigPack;
import com.dfsek.terra.api.registry.OpenRegistry; import com.dfsek.terra.api.registry.OpenRegistry;
import com.dfsek.terra.api.world.Tree; import com.dfsek.terra.api.world.Tree;
import com.dfsek.terra.api.world.Flora; import com.dfsek.terra.api.world.Flora;
import com.dfsek.terra.api.world.palette.Palette; import com.dfsek.terra.api.world.palette.PaletteImpl;
import com.dfsek.terra.carving.UserDefinedCarver; import com.dfsek.terra.carving.UserDefinedCarver;
import com.dfsek.terra.config.builder.BiomeBuilder; import com.dfsek.terra.config.builder.BiomeBuilder;
import com.dfsek.terra.config.factories.BiomeFactory; import com.dfsek.terra.config.factories.BiomeFactory;
@@ -42,7 +42,7 @@ public class ConfigTypeRegistry extends OpenRegistryImpl<ConfigType<?, ?>> {
public ConfigTypeRegistry(ConfigPackImpl pack, TerraPlugin main, BiConsumer<String, ConfigType<?, ?>> callback) { public ConfigTypeRegistry(ConfigPackImpl pack, TerraPlugin main, BiConsumer<String, ConfigType<?, ?>> callback) {
super(new LinkedHashMap<>()); // Ordered super(new LinkedHashMap<>()); // Ordered
this.callback = callback; this.callback = callback;
add("PALETTE", new ConfigBuilder<>(new PaletteFactory(), PaletteTemplate::new, Palette.class, () -> new PaletteRegistry(main))); add("PALETTE", new ConfigBuilder<>(new PaletteFactory(), PaletteTemplate::new, PaletteImpl.class, () -> new PaletteRegistry(main)));
add("ORE", new ConfigBuilder<>(new OreFactory(), OreTemplate::new, Ore.class, OreRegistry::new)); add("ORE", new ConfigBuilder<>(new OreFactory(), OreTemplate::new, Ore.class, OreRegistry::new));
add("FLORA", new ConfigBuilder<>(new FloraFactory(), FloraTemplate::new, Flora.class, () -> new FloraRegistry(main))); add("FLORA", new ConfigBuilder<>(new FloraFactory(), FloraTemplate::new, Flora.class, () -> new FloraRegistry(main)));
add("CARVER", new ConfigBuilder<>(new CarverFactory(pack), CarverTemplate::new, UserDefinedCarver.class, CarverRegistry::new)); add("CARVER", new ConfigBuilder<>(new CarverFactory(pack), CarverTemplate::new, UserDefinedCarver.class, CarverRegistry::new));
@@ -1,8 +1,8 @@
package com.dfsek.terra.registry.config; package com.dfsek.terra.registry.config;
import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.world.palette.Palette; import com.dfsek.terra.api.world.generator.Palette;
import com.dfsek.terra.api.world.palette.SinglePalette; import com.dfsek.terra.api.world.palette.PaletteImpl;
import com.dfsek.terra.registry.OpenRegistryImpl; import com.dfsek.terra.registry.OpenRegistryImpl;
public class PaletteRegistry extends OpenRegistryImpl<Palette> { public class PaletteRegistry extends OpenRegistryImpl<Palette> {
@@ -15,7 +15,7 @@ public class PaletteRegistry extends OpenRegistryImpl<Palette> {
@Override @Override
public Palette get(String identifier) { public Palette get(String identifier) {
if(identifier.startsWith("BLOCK:")) if(identifier.startsWith("BLOCK:"))
return new SinglePalette(main.getWorldHandle().createBlockData(identifier.substring(6))); // Return single palette for BLOCK: shortcut. return new PaletteImpl.Singleton(main.getWorldHandle().createBlockData(identifier.substring(6))); // Return single palette for BLOCK: shortcut.
return super.get(identifier); return super.get(identifier);
} }
} }
@@ -8,7 +8,7 @@ import com.dfsek.terra.api.block.BlockData;
import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.World;
import com.dfsek.terra.api.world.biome.UserDefinedBiome; import com.dfsek.terra.api.world.biome.UserDefinedBiome;
import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
import com.dfsek.terra.api.world.palette.Palette; import com.dfsek.terra.api.world.generator.Palette;
import com.dfsek.terra.config.pack.ConfigPackImpl; import com.dfsek.terra.config.pack.ConfigPackImpl;
import com.dfsek.terra.config.pack.WorldConfig; import com.dfsek.terra.config.pack.WorldConfig;
import com.dfsek.terra.world.generation.math.samplers.Sampler; import com.dfsek.terra.world.generation.math.samplers.Sampler;
@@ -2,7 +2,7 @@ package com.dfsek.terra.world.generation;
import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.noise.NoiseSampler;
import com.dfsek.terra.api.world.biome.Generator; import com.dfsek.terra.api.world.biome.Generator;
import com.dfsek.terra.api.world.palette.Palette; import com.dfsek.terra.api.world.generator.Palette;
import com.dfsek.terra.api.world.palette.holder.PaletteHolder; import com.dfsek.terra.api.world.palette.holder.PaletteHolder;
import com.dfsek.terra.api.world.palette.slant.SlantHolder; import com.dfsek.terra.api.world.palette.slant.SlantHolder;
@@ -10,9 +10,9 @@ import com.dfsek.terra.api.util.world.PaletteUtil;
import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.TerraBiome;
import com.dfsek.terra.api.world.biome.UserDefinedBiome; import com.dfsek.terra.api.world.biome.UserDefinedBiome;
import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
import com.dfsek.terra.api.world.generation.TerraBlockPopulator; import com.dfsek.terra.api.world.generator.Palette;
import com.dfsek.terra.api.world.generation.TerraChunkGenerator; import com.dfsek.terra.api.world.generator.TerraBlockPopulator;
import com.dfsek.terra.api.world.palette.Palette; import com.dfsek.terra.api.world.generator.TerraChunkGenerator;
import com.dfsek.terra.config.pack.ConfigPackImpl; import com.dfsek.terra.config.pack.ConfigPackImpl;
import com.dfsek.terra.config.templates.BiomeTemplate; import com.dfsek.terra.config.templates.BiomeTemplate;
import com.dfsek.terra.api.profiler.ProfileFrame; import com.dfsek.terra.api.profiler.ProfileFrame;
@@ -3,6 +3,7 @@ package com.dfsek.terra.world.generation.generators;
import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.math.range.ConstantRange; import com.dfsek.terra.api.math.range.ConstantRange;
import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.vector.Vector3;
import com.dfsek.terra.api.world.generator.Palette;
import com.dfsek.terra.config.pack.ConfigPackImpl; import com.dfsek.terra.config.pack.ConfigPackImpl;
import com.dfsek.terra.vector.Vector3Impl; import com.dfsek.terra.vector.Vector3Impl;
import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.block.BlockData;
@@ -19,10 +20,9 @@ import com.dfsek.terra.api.util.world.PaletteUtil;
import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.TerraBiome;
import com.dfsek.terra.api.world.biome.UserDefinedBiome; import com.dfsek.terra.api.world.biome.UserDefinedBiome;
import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
import com.dfsek.terra.api.world.generation.TerraBlockPopulator; import com.dfsek.terra.api.world.generator.TerraBlockPopulator;
import com.dfsek.terra.api.world.generation.TerraChunkGenerator; import com.dfsek.terra.api.world.generator.TerraChunkGenerator;
import com.dfsek.terra.api.world.palette.Palette; import com.dfsek.terra.api.world.palette.PaletteImpl;
import com.dfsek.terra.api.world.palette.SinglePalette;
import com.dfsek.terra.config.templates.BiomeTemplate; import com.dfsek.terra.config.templates.BiomeTemplate;
import com.dfsek.terra.api.profiler.ProfileFrame; import com.dfsek.terra.api.profiler.ProfileFrame;
import com.dfsek.terra.world.Carver; import com.dfsek.terra.world.Carver;
@@ -46,7 +46,7 @@ public class DefaultChunkGenerator3D implements TerraChunkGenerator {
private final ConfigPackImpl configPack; private final ConfigPackImpl configPack;
private final TerraPlugin main; private final TerraPlugin main;
private final BlockType water; private final BlockType water;
private final SinglePalette blank; private final PaletteImpl.Singleton blank;
private final List<TerraBlockPopulator> blockPopulators = new ArrayList<>(); private final List<TerraBlockPopulator> blockPopulators = new ArrayList<>();
private final Carver carver; private final Carver carver;
@@ -63,7 +63,7 @@ public class DefaultChunkGenerator3D implements TerraChunkGenerator {
carver = new NoiseCarver(new ConstantRange(0, 255), main.getWorldHandle().createBlockData("minecraft:air"), main); carver = new NoiseCarver(new ConstantRange(0, 255), main.getWorldHandle().createBlockData("minecraft:air"), main);
water = main.getWorldHandle().createBlockData("minecraft:water").getBlockType(); water = main.getWorldHandle().createBlockData("minecraft:water").getBlockType();
blank = new SinglePalette(main.getWorldHandle().createBlockData("minecraft:air")); blank = new PaletteImpl.Singleton(main.getWorldHandle().createBlockData("minecraft:air"));
} }
@Override @Override
@@ -9,8 +9,8 @@ import com.dfsek.terra.api.handle.WorldHandle;
import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.Chunk;
import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.World;
import com.dfsek.terra.api.util.world.PopulationUtil; import com.dfsek.terra.api.util.world.PopulationUtil;
import com.dfsek.terra.api.world.generation.Chunkified; import com.dfsek.terra.api.world.generator.Chunkified;
import com.dfsek.terra.api.world.generation.TerraBlockPopulator; import com.dfsek.terra.api.world.generator.TerraBlockPopulator;
import com.dfsek.terra.carving.UserDefinedCarver; import com.dfsek.terra.carving.UserDefinedCarver;
import com.dfsek.terra.config.pack.WorldConfig; import com.dfsek.terra.config.pack.WorldConfig;
import com.dfsek.terra.config.templates.CarverTemplate; import com.dfsek.terra.config.templates.CarverTemplate;
@@ -8,7 +8,7 @@ import com.dfsek.terra.api.world.World;
import com.dfsek.terra.api.util.world.PopulationUtil; import com.dfsek.terra.api.util.world.PopulationUtil;
import com.dfsek.terra.api.world.biome.UserDefinedBiome; import com.dfsek.terra.api.world.biome.UserDefinedBiome;
import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
import com.dfsek.terra.api.world.generation.TerraBlockPopulator; import com.dfsek.terra.api.world.generator.TerraBlockPopulator;
import com.dfsek.terra.api.profiler.ProfileFrame; import com.dfsek.terra.api.profiler.ProfileFrame;
import com.dfsek.terra.world.TerraWorld; import com.dfsek.terra.world.TerraWorld;
import com.dfsek.terra.world.population.items.flora.FloraLayer; import com.dfsek.terra.world.population.items.flora.FloraLayer;
@@ -8,7 +8,7 @@ import com.dfsek.terra.api.world.World;
import com.dfsek.terra.api.util.FastRandom; import com.dfsek.terra.api.util.FastRandom;
import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.TerraBiome;
import com.dfsek.terra.api.world.biome.UserDefinedBiome; import com.dfsek.terra.api.world.biome.UserDefinedBiome;
import com.dfsek.terra.api.world.generation.TerraBlockPopulator; import com.dfsek.terra.api.world.generator.TerraBlockPopulator;
import com.dfsek.terra.config.templates.BiomeTemplate; import com.dfsek.terra.config.templates.BiomeTemplate;
import com.dfsek.terra.api.profiler.ProfileFrame; import com.dfsek.terra.api.profiler.ProfileFrame;
import com.dfsek.terra.world.TerraWorld; import com.dfsek.terra.world.TerraWorld;
@@ -9,8 +9,8 @@ import com.dfsek.terra.api.structure.rotation.Rotation;
import com.dfsek.terra.api.util.FastRandom; import com.dfsek.terra.api.util.FastRandom;
import com.dfsek.terra.api.world.biome.UserDefinedBiome; import com.dfsek.terra.api.world.biome.UserDefinedBiome;
import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
import com.dfsek.terra.api.world.generation.Chunkified; import com.dfsek.terra.api.world.generator.Chunkified;
import com.dfsek.terra.api.world.generation.TerraBlockPopulator; import com.dfsek.terra.api.world.generator.TerraBlockPopulator;
import com.dfsek.terra.config.pack.WorldConfig; import com.dfsek.terra.config.pack.WorldConfig;
import com.dfsek.terra.api.profiler.ProfileFrame; import com.dfsek.terra.api.profiler.ProfileFrame;
import com.dfsek.terra.world.TerraWorld; import com.dfsek.terra.world.TerraWorld;
@@ -7,7 +7,7 @@ import com.dfsek.terra.api.world.World;
import com.dfsek.terra.api.util.world.PopulationUtil; import com.dfsek.terra.api.util.world.PopulationUtil;
import com.dfsek.terra.api.world.biome.UserDefinedBiome; import com.dfsek.terra.api.world.biome.UserDefinedBiome;
import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
import com.dfsek.terra.api.world.generation.TerraBlockPopulator; import com.dfsek.terra.api.world.generator.TerraBlockPopulator;
import com.dfsek.terra.api.profiler.ProfileFrame; import com.dfsek.terra.api.profiler.ProfileFrame;
import com.dfsek.terra.world.TerraWorld; import com.dfsek.terra.world.TerraWorld;
import com.dfsek.terra.world.population.items.tree.TreeLayer; import com.dfsek.terra.world.population.items.tree.TreeLayer;
@@ -15,7 +15,7 @@ import com.dfsek.terra.api.util.FastRandom;
import com.dfsek.terra.api.util.GlueList; import com.dfsek.terra.api.util.GlueList;
import com.dfsek.terra.api.util.collections.MaterialSet; import com.dfsek.terra.api.util.collections.MaterialSet;
import com.dfsek.terra.api.world.Flora; import com.dfsek.terra.api.world.Flora;
import com.dfsek.terra.api.world.palette.Palette; import com.dfsek.terra.api.world.generator.Palette;
import net.jafama.FastMath; import net.jafama.FastMath;
import java.util.ArrayList; import java.util.ArrayList;
+60
View File
@@ -0,0 +1,60 @@
import com.dfsek.terra.configureCompilation
import com.dfsek.terra.configureDependencies
plugins {
`java-library`
`maven-publish`
idea
}
configureCompilation()
configureDependencies()
group = "com.dfsek.terra.common"
dependencies {
"shadedApi"(project(":common:api"))
"shadedApi"(project(":common:implementation"))
"shadedApi"("org.apache.commons:commons-rng-core:1.3")
"shadedApi"("commons-io:commons-io:2.4")
"shadedApi"("com.dfsek:Paralithic:0.3.2")
"shadedApi"("com.dfsek:Tectonic:1.4.0")
"shadedApi"("net.jafama:jafama:2.3.2")
"shadedApi"("org.yaml:snakeyaml:1.27")
"shadedApi"("org.ow2.asm:asm:9.0")
"shadedApi"("commons-io:commons-io:2.6")
"shadedApi"("com.googlecode.json-simple:json-simple:1.1.1")
"shadedApi"("org.yaml:snakeyaml:1.27")
"compileOnly"("com.google.guava:guava:30.0-jre")
"testImplementation"("com.google.guava:guava:30.0-jre")
}
publishing {
publications {
create<MavenPublication>("mavenJava") {
artifact(tasks["sourcesJar"])
artifact(tasks["jar"])
}
}
repositories {
val mavenUrl = "https://repo.codemc.io/repository/maven-releases/"
val mavenSnapshotUrl = "https://repo.codemc.io/repository/maven-snapshots/"
maven(mavenUrl) {
val mavenUsername: String? by project
val mavenPassword: String? by project
if (mavenUsername != null && mavenPassword != null) {
credentials {
username = mavenUsername
password = mavenPassword
}
}
}
}
}
@@ -22,7 +22,7 @@ import com.dfsek.terra.api.registry.LockedRegistry;
import com.dfsek.terra.api.util.logging.DebugLogger; import com.dfsek.terra.api.util.logging.DebugLogger;
import com.dfsek.terra.api.util.logging.JavaLogger; import com.dfsek.terra.api.util.logging.JavaLogger;
import com.dfsek.terra.api.util.logging.Logger; import com.dfsek.terra.api.util.logging.Logger;
import com.dfsek.terra.api.world.generation.TerraChunkGenerator; import com.dfsek.terra.api.world.generator.TerraChunkGenerator;
import com.dfsek.terra.bukkit.command.BukkitCommandAdapter; import com.dfsek.terra.bukkit.command.BukkitCommandAdapter;
import com.dfsek.terra.bukkit.command.FixChunkCommand; import com.dfsek.terra.bukkit.command.FixChunkCommand;
import com.dfsek.terra.bukkit.command.SaveDataCommand; import com.dfsek.terra.bukkit.command.SaveDataCommand;
@@ -3,7 +3,7 @@ package com.dfsek.terra.bukkit.generator;
import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.Chunk;
import com.dfsek.terra.api.world.generator.GeneratorWrapper; import com.dfsek.terra.api.world.generator.GeneratorWrapper;
import com.dfsek.terra.api.world.generation.TerraChunkGenerator; import com.dfsek.terra.api.world.generator.TerraChunkGenerator;
import com.dfsek.terra.bukkit.population.PopulationManager; import com.dfsek.terra.bukkit.population.PopulationManager;
import com.dfsek.terra.bukkit.world.BukkitAdapter; import com.dfsek.terra.bukkit.world.BukkitAdapter;
import com.dfsek.terra.bukkit.world.BukkitBiomeGrid; import com.dfsek.terra.bukkit.world.BukkitBiomeGrid;
@@ -1,8 +1,7 @@
package com.dfsek.terra.bukkit.generator; package com.dfsek.terra.bukkit.generator;
import com.dfsek.terra.api.world.generation.Chunkified; import com.dfsek.terra.api.world.generator.Chunkified;
import com.dfsek.terra.api.world.generation.TerraBlockPopulator; import com.dfsek.terra.api.world.generator.TerraChunkGenerator;
import com.dfsek.terra.api.world.generation.TerraChunkGenerator;
import com.dfsek.terra.bukkit.world.BukkitAdapter; import com.dfsek.terra.bukkit.world.BukkitAdapter;
import org.bukkit.Chunk; import org.bukkit.Chunk;
import org.bukkit.World; import org.bukkit.World;
@@ -4,8 +4,8 @@ import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.Chunk;
import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.World;
import com.dfsek.terra.api.util.FastRandom; import com.dfsek.terra.api.util.FastRandom;
import com.dfsek.terra.api.world.generation.Chunkified; import com.dfsek.terra.api.world.generator.Chunkified;
import com.dfsek.terra.api.world.generation.TerraChunkGenerator; import com.dfsek.terra.api.world.generator.TerraChunkGenerator;
import com.dfsek.terra.bukkit.TerraBukkitPlugin; import com.dfsek.terra.bukkit.TerraBukkitPlugin;
import com.dfsek.terra.bukkit.world.BukkitAdapter; import com.dfsek.terra.bukkit.world.BukkitAdapter;
import com.dfsek.terra.api.profiler.ProfileFrame; import com.dfsek.terra.api.profiler.ProfileFrame;
@@ -5,8 +5,8 @@ import com.dfsek.terra.api.world.World;
import com.dfsek.terra.api.world.generator.ChunkData; import com.dfsek.terra.api.world.generator.ChunkData;
import com.dfsek.terra.api.world.generator.GeneratorWrapper; import com.dfsek.terra.api.world.generator.GeneratorWrapper;
import com.dfsek.terra.api.util.FastRandom; import com.dfsek.terra.api.util.FastRandom;
import com.dfsek.terra.api.world.generation.Chunkified; import com.dfsek.terra.api.world.generator.Chunkified;
import com.dfsek.terra.api.world.generation.TerraChunkGenerator; import com.dfsek.terra.api.world.generator.TerraChunkGenerator;
import com.dfsek.terra.api.world.locate.AsyncStructureFinder; import com.dfsek.terra.api.world.locate.AsyncStructureFinder;
import com.dfsek.terra.config.pack.ConfigPackImpl; import com.dfsek.terra.config.pack.ConfigPackImpl;
import com.dfsek.terra.fabric.TerraFabricPlugin; import com.dfsek.terra.fabric.TerraFabricPlugin;
@@ -2,7 +2,7 @@ package com.dfsek.terra.fabric.generation;
import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.Chunk;
import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.World;
import com.dfsek.terra.api.world.generation.Chunkified; import com.dfsek.terra.api.world.generator.Chunkified;
import com.mojang.serialization.Codec; import com.mojang.serialization.Codec;
import net.minecraft.world.StructureWorldAccess; import net.minecraft.world.StructureWorldAccess;
import net.minecraft.world.gen.chunk.ChunkGenerator; import net.minecraft.world.gen.chunk.ChunkGenerator;
@@ -8,7 +8,7 @@ import com.dfsek.terra.api.world.Chunk;
import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.World;
import com.dfsek.terra.api.world.generator.ChunkGenerator; import com.dfsek.terra.api.world.generator.ChunkGenerator;
import com.dfsek.terra.api.world.generator.GeneratorWrapper; import com.dfsek.terra.api.world.generator.GeneratorWrapper;
import com.dfsek.terra.api.world.generation.TerraChunkGenerator; import com.dfsek.terra.api.world.generator.TerraChunkGenerator;
import com.dfsek.terra.fabric.block.FabricBlock; import com.dfsek.terra.fabric.block.FabricBlock;
import com.dfsek.terra.fabric.generation.FabricChunkGeneratorWrapper; import com.dfsek.terra.fabric.generation.FabricChunkGeneratorWrapper;
import net.minecraft.server.world.ServerWorld; import net.minecraft.server.world.ServerWorld;
@@ -8,7 +8,7 @@ import com.dfsek.terra.api.world.Chunk;
import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.World;
import com.dfsek.terra.api.world.generator.ChunkGenerator; import com.dfsek.terra.api.world.generator.ChunkGenerator;
import com.dfsek.terra.api.world.generator.GeneratorWrapper; import com.dfsek.terra.api.world.generator.GeneratorWrapper;
import com.dfsek.terra.api.world.generation.TerraChunkGenerator; import com.dfsek.terra.api.world.generator.TerraChunkGenerator;
import com.dfsek.terra.fabric.block.FabricBlock; import com.dfsek.terra.fabric.block.FabricBlock;
import com.dfsek.terra.fabric.generation.FabricChunkGeneratorWrapper; import com.dfsek.terra.fabric.generation.FabricChunkGeneratorWrapper;
import net.minecraft.server.world.ServerWorld; import net.minecraft.server.world.ServerWorld;
+3
View File
@@ -10,6 +10,9 @@
rootProject.name = "Terra" rootProject.name = "Terra"
include("common:api") include("common:api")
include("common:implementation") include("common:implementation")
include("common:platform")
include("platforms:bukkit") include("platforms:bukkit")
include("platforms:fabric") include("platforms:fabric")
include("platforms:region") include("platforms:region")