refactor, cleanup, and perf improvements

This commit is contained in:
dfsek 2021-01-05 19:21:42 -07:00
parent 4ad2db3ca8
commit 47cad8a30b
98 changed files with 178 additions and 305 deletions

View File

@ -1,4 +0,0 @@
package com.dfsek.terra;
public interface CommandHandler {
}

View File

@ -13,7 +13,6 @@ public class TerraProfiler extends WorldProfiler {
.addMeasurement(new Measurement(10000000, DataType.PERIOD_MILLISECONDS), "TreeTime") .addMeasurement(new Measurement(10000000, DataType.PERIOD_MILLISECONDS), "TreeTime")
.addMeasurement(new Measurement(1500000, DataType.PERIOD_MILLISECONDS), "OreTime") .addMeasurement(new Measurement(1500000, DataType.PERIOD_MILLISECONDS), "OreTime")
.addMeasurement(new Measurement(5000000, DataType.PERIOD_MILLISECONDS), "CaveTime") .addMeasurement(new Measurement(5000000, DataType.PERIOD_MILLISECONDS), "CaveTime")
.addMeasurement(new Measurement(1500000, DataType.PERIOD_MILLISECONDS), "StructureTime") .addMeasurement(new Measurement(1500000, DataType.PERIOD_MILLISECONDS), "StructureTime");
.addMeasurement(new Measurement(1500000, DataType.PERIOD_MILLISECONDS), "ElevationTime");
} }
} }

View File

@ -1,6 +1,7 @@
package com.dfsek.terra.api; package com.dfsek.terra.api;
import com.dfsek.tectonic.loading.TypeRegistry; import com.dfsek.tectonic.loading.TypeRegistry;
import com.dfsek.terra.api.math.GridSpawn;
import com.dfsek.terra.api.math.ProbabilityCollection; import com.dfsek.terra.api.math.ProbabilityCollection;
import com.dfsek.terra.api.math.Range; import com.dfsek.terra.api.math.Range;
import com.dfsek.terra.api.platform.TerraPlugin; import com.dfsek.terra.api.platform.TerraPlugin;
@ -22,14 +23,13 @@ import com.dfsek.terra.config.loaders.palette.CarverPaletteLoader;
import com.dfsek.terra.config.loaders.palette.PaletteHolderLoader; import com.dfsek.terra.config.loaders.palette.PaletteHolderLoader;
import com.dfsek.terra.config.loaders.palette.PaletteLayerLoader; import com.dfsek.terra.config.loaders.palette.PaletteLayerLoader;
import com.dfsek.terra.generation.config.NoiseBuilder; import com.dfsek.terra.generation.config.NoiseBuilder;
import com.dfsek.terra.generation.items.flora.FloraLayer;
import com.dfsek.terra.generation.items.flora.TerraFlora;
import com.dfsek.terra.generation.items.ores.Ore;
import com.dfsek.terra.generation.items.ores.OreConfig;
import com.dfsek.terra.generation.items.ores.OreHolder;
import com.dfsek.terra.generation.items.tree.TreeLayer;
import com.dfsek.terra.image.ImageLoader; import com.dfsek.terra.image.ImageLoader;
import com.dfsek.terra.procgen.GridSpawn; import com.dfsek.terra.population.items.flora.FloraLayer;
import com.dfsek.terra.population.items.flora.TerraFlora;
import com.dfsek.terra.population.items.ores.Ore;
import com.dfsek.terra.population.items.ores.OreConfig;
import com.dfsek.terra.population.items.ores.OreHolder;
import com.dfsek.terra.population.items.tree.TreeLayer;
import com.dfsek.terra.util.MaterialSet; import com.dfsek.terra.util.MaterialSet;
public class GenericLoaders implements LoaderRegistrar { public class GenericLoaders implements LoaderRegistrar {
@ -51,7 +51,7 @@ public class GenericLoaders implements LoaderRegistrar {
.registerLoader(Ore.Type.class, (t, o, l) -> Ore.Type.valueOf((String) o)) .registerLoader(Ore.Type.class, (t, o, l) -> Ore.Type.valueOf((String) o))
.registerLoader(OreConfig.class, new OreConfigLoader()) .registerLoader(OreConfig.class, new OreConfigLoader())
.registerLoader(NoiseBuilder.class, new NoiseBuilderLoader()) .registerLoader(NoiseBuilder.class, new NoiseBuilderLoader())
.registerLoader(TreeLayer.class, new TreeLayerLoader(main)) .registerLoader(TreeLayer.class, new TreeLayerLoader())
.registerLoader(MaterialSet.class, new MaterialSetLoader()) .registerLoader(MaterialSet.class, new MaterialSetLoader())
.registerLoader(OreHolder.class, new OreHolderLoader()) .registerLoader(OreHolder.class, new OreHolderLoader())
.registerLoader(ImageLoader.class, new ImageLoaderLoader()) .registerLoader(ImageLoader.class, new ImageLoaderLoader())

View File

@ -1,4 +1,4 @@
package com.dfsek.terra.api.lang; package com.dfsek.terra.api.language;
import com.dfsek.tectonic.config.Configuration; import com.dfsek.tectonic.config.Configuration;

View File

@ -1,4 +1,4 @@
package com.dfsek.terra.api.lang; package com.dfsek.terra.api.language;
import com.dfsek.terra.api.platform.CommandSender; import com.dfsek.terra.api.platform.CommandSender;

View File

@ -1,4 +1,4 @@
package com.dfsek.terra.api.lang; package com.dfsek.terra.api.language;
import com.dfsek.terra.api.platform.CommandSender; import com.dfsek.terra.api.platform.CommandSender;

View File

@ -1,4 +1,4 @@
package com.dfsek.terra.api.lang; package com.dfsek.terra.api.language;
import com.dfsek.terra.api.platform.CommandSender; import com.dfsek.terra.api.platform.CommandSender;

View File

@ -1,6 +1,5 @@
package com.dfsek.terra.procgen; package com.dfsek.terra.api.math;
import com.dfsek.terra.api.math.MathUtil;
import com.dfsek.terra.api.math.vector.Vector3; import com.dfsek.terra.api.math.vector.Vector3;
import com.dfsek.terra.api.util.FastRandom; import com.dfsek.terra.api.util.FastRandom;
import com.dfsek.terra.api.util.GlueList; import com.dfsek.terra.api.util.GlueList;

View File

@ -1,6 +1,7 @@
package com.dfsek.terra.api.math; package com.dfsek.terra.api.math;
import com.dfsek.terra.api.util.FastRandom; import com.dfsek.terra.api.util.FastRandom;
import com.dfsek.terra.generation.math.Sampler;
import net.jafama.FastMath; import net.jafama.FastMath;
import java.util.Random; import java.util.Random;
@ -9,7 +10,14 @@ import java.util.Random;
* Utility class for mathematical functions. * Utility class for mathematical functions.
*/ */
public final class MathUtil { public final class MathUtil {
private static final double EPSILON = 0.1E-5; /**
* Epsilon for fuzzy floating point comparisons.
*/
public static final double EPSILON = 1.0E-5;
/**
* Derivative constant.
*/
private static final double DERIVATIVE_DIST = 0.55;
/** /**
* Gets the standard deviation of an array of doubles. * Gets the standard deviation of an array of doubles.
@ -68,4 +76,17 @@ public final class MathUtil {
public static boolean equals(double a, double b) { public static boolean equals(double a, double b) {
return a == b || FastMath.abs(a - b) < EPSILON; return a == b || FastMath.abs(a - b) < EPSILON;
} }
public static double derivative(Sampler sampler, double x, double y, double z) {
double baseSample = sampler.sample(x, y, z);
double xVal1 = (sampler.sample(x + DERIVATIVE_DIST, y, z) - baseSample) / DERIVATIVE_DIST;
double xVal2 = (sampler.sample(x - DERIVATIVE_DIST, y, z) - baseSample) / DERIVATIVE_DIST;
double zVal1 = (sampler.sample(x, y, z + DERIVATIVE_DIST) - baseSample) / DERIVATIVE_DIST;
double zVal2 = (sampler.sample(x, y, z - DERIVATIVE_DIST) - baseSample) / DERIVATIVE_DIST;
double yVal1 = (sampler.sample(x, y + DERIVATIVE_DIST, z) - baseSample) / DERIVATIVE_DIST;
double yVal2 = (sampler.sample(x, y - DERIVATIVE_DIST, z) - baseSample) / DERIVATIVE_DIST;
return Math.sqrt(((xVal2 - xVal1) * (xVal2 - xVal1)) + ((zVal2 - zVal1) * (zVal2 - zVal1)) + ((yVal2 - yVal1) * (yVal2 - yVal1)));
}
} }

View File

@ -1,5 +1,6 @@
package com.dfsek.terra.api.math; package com.dfsek.terra.api.math;
import com.dfsek.terra.api.math.noise.FastNoiseLite;
import com.dfsek.terra.api.world.biome.NormalizationUtil; import com.dfsek.terra.api.world.biome.NormalizationUtil;
import java.util.HashSet; import java.util.HashSet;

View File

@ -1,4 +1,4 @@
package com.dfsek.terra.api.math;// MIT License package com.dfsek.terra.api.math.noise;// MIT License
import net.jafama.FastMath; import net.jafama.FastMath;
@ -58,6 +58,7 @@ perform a file-wide replace on the following strings (including / * FNLdouble *
/ *FNLdouble* / double / *FNLdouble* / double
*/ */
@SuppressWarnings("ManualMinMaxCalculation")
public class FastNoiseLite { public class FastNoiseLite {
private static final double[] Gradients2D = { private static final double[] Gradients2D = {
0.130526192220052f, 0.99144486137381f, 0.38268343236509f, 0.923879532511287f, 0.608761429008721f, 0.793353340291235f, 0.130526192220052f, 0.99144486137381f, 0.38268343236509f, 0.923879532511287f, 0.608761429008721f, 0.793353340291235f,
@ -328,14 +329,14 @@ public class FastNoiseLite {
private TransformType3D mWarpTransformType3D = TransformType3D.DefaultOpenSimplex2; private TransformType3D mWarpTransformType3D = TransformType3D.DefaultOpenSimplex2;
private double mDomainWarpAmp = 1.0f; private double mDomainWarpAmp = 1.0f;
private static final com.dfsek.terra.api.math.FastNoiseLite CELLULAR_LOOKUP_DEFAULT = new com.dfsek.terra.api.math.FastNoiseLite(); private static final FastNoiseLite CELLULAR_LOOKUP_DEFAULT = new FastNoiseLite();
private com.dfsek.terra.api.math.FastNoiseLite cellularNoiseLookup = CELLULAR_LOOKUP_DEFAULT; private FastNoiseLite cellularNoiseLookup = CELLULAR_LOOKUP_DEFAULT;
public com.dfsek.terra.api.math.FastNoiseLite getCellularNoiseLookup() { public FastNoiseLite getCellularNoiseLookup() {
return cellularNoiseLookup; return cellularNoiseLookup;
} }
public void setCellularNoiseLookup(com.dfsek.terra.api.math.FastNoiseLite cellularNoiseLookup) { public void setCellularNoiseLookup(FastNoiseLite cellularNoiseLookup) {
this.cellularNoiseLookup = cellularNoiseLookup; this.cellularNoiseLookup = cellularNoiseLookup;
} }
@ -1442,7 +1443,6 @@ public class FastNoiseLite {
if (mCellularDistanceFunction == CellularDistanceFunction.Euclidean && mCellularReturnType != CellularReturnType.CellValue) { if (mCellularDistanceFunction == CellularDistanceFunction.Euclidean && mCellularReturnType != CellularReturnType.CellValue) {
distance0 = FastSqrt(distance0); distance0 = FastSqrt(distance0);
//noinspection ConstantConditions
if (mCellularReturnType != CellularReturnType.CellValue) { if (mCellularReturnType != CellularReturnType.CellValue) {
distance1 = FastSqrt(distance1); distance1 = FastSqrt(distance1);
} }
@ -1593,8 +1593,6 @@ public class FastNoiseLite {
if (mCellularDistanceFunction == CellularDistanceFunction.Euclidean && mCellularReturnType != CellularReturnType.CellValue) { if (mCellularDistanceFunction == CellularDistanceFunction.Euclidean && mCellularReturnType != CellularReturnType.CellValue) {
distance0 = FastSqrt(distance0); distance0 = FastSqrt(distance0);
//noinspection ConstantConditions
if (mCellularReturnType != CellularReturnType.CellValue) { if (mCellularReturnType != CellularReturnType.CellValue) {
distance1 = FastSqrt(distance1); distance1 = FastSqrt(distance1);
} }

View File

@ -1,4 +1,4 @@
package com.dfsek.terra.math; package com.dfsek.terra.api.math.noise;
import parsii.eval.Function; import parsii.eval.Function;

View File

@ -1,6 +1,5 @@
package com.dfsek.terra.math; package com.dfsek.terra.api.math.noise;
import com.dfsek.terra.api.math.FastNoiseLite;
import com.dfsek.terra.generation.config.NoiseBuilder; import com.dfsek.terra.generation.config.NoiseBuilder;
import com.dfsek.terra.util.hash.HashMapDoubleDouble; import com.dfsek.terra.util.hash.HashMapDoubleDouble;
import parsii.eval.Expression; import parsii.eval.Expression;

View File

@ -1,6 +1,5 @@
package com.dfsek.terra.math; package com.dfsek.terra.api.math.noise;
import com.dfsek.terra.api.math.FastNoiseLite;
import com.dfsek.terra.generation.config.NoiseBuilder; import com.dfsek.terra.generation.config.NoiseBuilder;
import parsii.eval.Expression; import parsii.eval.Expression;

View File

@ -1,4 +1,4 @@
package com.dfsek.terra.math; package com.dfsek.terra.api.math.parsii;
import parsii.eval.Expression; import parsii.eval.Expression;
import parsii.eval.Function; import parsii.eval.Function;

View File

@ -1,4 +1,4 @@
package com.dfsek.terra.math; package com.dfsek.terra.api.math.parsii;
import com.dfsek.terra.api.util.FastRandom; import com.dfsek.terra.api.util.FastRandom;
import parsii.eval.Expression; import parsii.eval.Expression;

View File

@ -1,4 +1,4 @@
package com.dfsek.terra.procgen.pixel; package com.dfsek.terra.api.math.pixel;
public class Distribution { public class Distribution {
public Distribution(Rectangle bound, int numPoints, double minRad) { public Distribution(Rectangle bound, int numPoints, double minRad) {

View File

@ -1,4 +1,4 @@
package com.dfsek.terra.procgen.pixel; package com.dfsek.terra.api.math.pixel;
import com.dfsek.terra.api.math.vector.Vector2; import com.dfsek.terra.api.math.vector.Vector2;

View File

@ -1,4 +1,4 @@
package com.dfsek.terra.procgen.pixel; package com.dfsek.terra.api.math.pixel;
import com.dfsek.terra.api.math.vector.Vector2; import com.dfsek.terra.api.math.vector.Vector2;
import net.jafama.FastMath; import net.jafama.FastMath;

View File

@ -163,6 +163,6 @@ public class Location implements Cloneable {
@Override @Override
public String toString() { public String toString() {
return "(" + getX() + ", " + getY() + ", " + getZ() + ")"; return "[" + world + ": (" + getX() + ", " + getY() + ", " + getZ() + ")]";
} }
} }

View File

@ -1,5 +1,6 @@
package com.dfsek.terra.api.math.vector; package com.dfsek.terra.api.math.vector;
import com.dfsek.terra.api.math.MathUtil;
import net.jafama.FastMath; import net.jafama.FastMath;
/** /**
@ -157,11 +158,9 @@ public class Vector2 implements Cloneable {
@Override @Override
public boolean equals(Object obj) { public boolean equals(Object obj) {
if(!(obj instanceof Vector2)) { if(!(obj instanceof Vector2)) return false;
return false;
}
Vector2 other = (Vector2) obj; Vector2 other = (Vector2) obj;
return other.x == this.x && other.z == this.z; return MathUtil.equals(this.x, other.x) && MathUtil.equals(this.z, other.z);
} }
@Override @Override

View File

@ -1,15 +1,12 @@
package com.dfsek.terra.api.math.vector; package com.dfsek.terra.api.math.vector;
import com.dfsek.terra.api.math.MathUtil;
import com.dfsek.terra.api.platform.world.World; import com.dfsek.terra.api.platform.world.World;
import net.jafama.FastMath; import net.jafama.FastMath;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
public class Vector3 implements Cloneable { public class Vector3 implements Cloneable {
/**
* Threshold for fuzzy equals().
*/
private static final double epsilon = 0.000001;
private double x; private double x;
private double y; private double y;
@ -21,15 +18,6 @@ public class Vector3 implements Cloneable {
this.z = z; this.z = z;
} }
/**
* Get the threshold used for equals().
*
* @return The epsilon.
*/
public static double getEpsilon() {
return epsilon;
}
public double getZ() { public double getZ() {
return z; return z;
} }
@ -119,7 +107,7 @@ public class Vector3 implements Cloneable {
* @return whether the vector is normalised * @return whether the vector is normalised
*/ */
public boolean isNormalized() { public boolean isNormalized() {
return Math.abs(this.lengthSquared() - 1) < getEpsilon(); return MathUtil.equals(this.lengthSquared(), 1);
} }
/** /**
@ -333,12 +321,14 @@ public class Vector3 implements Cloneable {
*/ */
@Override @Override
public boolean equals(Object obj) { public boolean equals(Object obj) {
if(!(obj instanceof Vector3)) { if(!(obj instanceof Vector3)) return false;
return false;
}
Vector3 other = (Vector3) obj; Vector3 other = (Vector3) obj;
return MathUtil.equals(x, other.x) && MathUtil.equals(y, other.y) && MathUtil.equals(x, other.z);
}
return Math.abs(x - other.x) < epsilon && Math.abs(y - other.y) < epsilon && Math.abs(z - other.z) < epsilon && (this.getClass().equals(obj.getClass())); @Override
public String toString() {
return "(" + getX() + ", " + getY() + ", " + getZ() + ")";
} }
} }

View File

@ -1,4 +1,4 @@
package com.dfsek.terra.procgen.voxel; package com.dfsek.terra.api.math.voxel;
import com.dfsek.terra.api.math.vector.Vector3; import com.dfsek.terra.api.math.vector.Vector3;

View File

@ -1,6 +1,6 @@
package com.dfsek.terra.procgen.voxel; package com.dfsek.terra.api.math.voxel;
import com.dfsek.terra.api.math.FastNoiseLite; import com.dfsek.terra.api.math.noise.FastNoiseLite;
import com.dfsek.terra.api.math.vector.Vector3; import com.dfsek.terra.api.math.vector.Vector3;
public class DeformedSphere extends VoxelGeometry { public class DeformedSphere extends VoxelGeometry {

View File

@ -1,4 +1,4 @@
package com.dfsek.terra.procgen.voxel; package com.dfsek.terra.api.math.voxel;
import com.dfsek.terra.api.math.vector.Vector3; import com.dfsek.terra.api.math.vector.Vector3;

View File

@ -1,4 +1,4 @@
package com.dfsek.terra.procgen.voxel; package com.dfsek.terra.api.math.voxel;
import com.dfsek.terra.api.math.vector.Vector3; import com.dfsek.terra.api.math.vector.Vector3;

View File

@ -1,4 +1,4 @@
package com.dfsek.terra.procgen.voxel; package com.dfsek.terra.api.math.voxel;
import com.dfsek.terra.api.math.vector.Vector3; import com.dfsek.terra.api.math.vector.Vector3;
import com.dfsek.terra.api.util.GlueList; import com.dfsek.terra.api.util.GlueList;

View File

@ -2,7 +2,7 @@ package com.dfsek.terra.api.platform;
import com.dfsek.terra.TerraWorld; import com.dfsek.terra.TerraWorld;
import com.dfsek.terra.api.LoaderRegistrar; import com.dfsek.terra.api.LoaderRegistrar;
import com.dfsek.terra.api.lang.Language; import com.dfsek.terra.api.language.Language;
import com.dfsek.terra.api.platform.handle.ItemHandle; import com.dfsek.terra.api.platform.handle.ItemHandle;
import com.dfsek.terra.api.platform.handle.WorldHandle; import com.dfsek.terra.api.platform.handle.WorldHandle;
import com.dfsek.terra.api.platform.world.World; import com.dfsek.terra.api.platform.world.World;

View File

@ -15,10 +15,7 @@ public class WorldProfiler {
public WorldProfiler(World w) { public WorldProfiler(World w) {
if(w.getGenerator().getTerraGenerator() == null) if(w.getGenerator().getTerraGenerator() == null)
throw new IllegalArgumentException("Attempted to instantiate profiler on non-Gaea managed world!"); throw new IllegalArgumentException("Attempted to instantiate profiler on non-Gaea managed world!");
this.addMeasurement(new Measurement(2500000, DataType.PERIOD_MILLISECONDS), "TotalChunkGenTime") this.addMeasurement(new Measurement(2500000, DataType.PERIOD_MILLISECONDS), "TotalChunkGenTime");
.addMeasurement(new Measurement(2500000, DataType.PERIOD_MILLISECONDS), "ChunkBaseGenTime")
.addMeasurement(new Measurement(2000000, DataType.PERIOD_MILLISECONDS), "BiomeApplyTime")
.addMeasurement(new Measurement(2000000, DataType.PERIOD_MILLISECONDS), "PopulationManagerTime");
isProfiling = false; isProfiling = false;
this.world = w; this.world = w;
} }

View File

@ -34,6 +34,7 @@ import org.apache.commons.io.IOUtils;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.util.Collections;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.Map; import java.util.Map;
import java.util.Random; import java.util.Random;
@ -42,7 +43,7 @@ public class StructureScript {
private final Block block; private final Block block;
private final String id; private final String id;
String tempID; String tempID;
private final LinkedHashMap<Location, StructureBuffer> cache; private final Map<Location, StructureBuffer> cache;
public StructureScript(InputStream inputStream, TerraPlugin main, ScriptRegistry registry, LootRegistry lootRegistry, SamplerCache cache) throws ParseException { public StructureScript(InputStream inputStream, TerraPlugin main, ScriptRegistry registry, LootRegistry lootRegistry, SamplerCache cache) throws ParseException {
Parser parser; Parser parser;
@ -79,12 +80,12 @@ public class StructureScript {
block = parser.parse(); block = parser.parse();
this.id = parser.getID(); this.id = parser.getID();
tempID = id; tempID = id;
this.cache = new LinkedHashMap<Location, StructureBuffer>() { this.cache = Collections.synchronizedMap(new LinkedHashMap<Location, StructureBuffer>() {
@Override @Override
protected boolean removeEldestEntry(Map.Entry<Location, StructureBuffer> eldest) { protected boolean removeEldestEntry(Map.Entry<Location, StructureBuffer> eldest) {
return this.size() > main.getTerraConfig().getStructureCache(); return this.size() > main.getTerraConfig().getStructureCache();
} }
}; });
} }
/** /**
@ -113,6 +114,7 @@ public class StructureScript {
} }
private StructureBuffer computeBuffer(Location location, Random random, Rotation rotation) { private StructureBuffer computeBuffer(Location location, Random random, Rotation rotation) {
synchronized(cache) {
return cache.computeIfAbsent(location, loc -> { return cache.computeIfAbsent(location, loc -> {
StructureBuffer buf = new StructureBuffer(loc); StructureBuffer buf = new StructureBuffer(loc);
Block.ReturnInfo<?> level = block.apply(new TerraImplementationArguments(buf, rotation, random, 0)); Block.ReturnInfo<?> level = block.apply(new TerraImplementationArguments(buf, rotation, random, 0));
@ -120,6 +122,7 @@ public class StructureScript {
return buf; return buf;
}); });
} }
}
public boolean executeInBuffer(Buffer buffer, Random random, Rotation rotation, int recursions) { public boolean executeInBuffer(Buffer buffer, Random random, Rotation rotation, int recursions) {
return !block.apply(new TerraImplementationArguments(buffer, rotation, random, recursions)).getLevel().equals(Block.ReturnLevel.FAIL); return !block.apply(new TerraImplementationArguments(buffer, rotation, random, recursions)).getLevel().equals(Block.ReturnLevel.FAIL);

View File

@ -1,6 +1,6 @@
package com.dfsek.terra.api.world.biome; package com.dfsek.terra.api.world.biome;
import com.dfsek.terra.api.math.FastNoiseLite; import com.dfsek.terra.api.math.noise.FastNoiseLite;
import com.dfsek.terra.api.math.vector.Location; import com.dfsek.terra.api.math.vector.Location;
import com.dfsek.terra.api.world.generation.GenerationPhase; import com.dfsek.terra.api.world.generation.GenerationPhase;

View File

@ -1,7 +1,7 @@
package com.dfsek.terra.api.world.palette; package com.dfsek.terra.api.world.palette;
import com.dfsek.terra.api.math.FastNoiseLite;
import com.dfsek.terra.api.math.ProbabilityCollection; import com.dfsek.terra.api.math.ProbabilityCollection;
import com.dfsek.terra.api.math.noise.FastNoiseLite;
import com.dfsek.terra.api.util.GlueList; import com.dfsek.terra.api.util.GlueList;
import java.util.List; import java.util.List;

View File

@ -1,6 +1,6 @@
package com.dfsek.terra.api.world.palette; package com.dfsek.terra.api.world.palette;
import com.dfsek.terra.api.math.FastNoiseLite; import com.dfsek.terra.api.math.noise.FastNoiseLite;
import java.util.List; import java.util.List;

View File

@ -8,7 +8,7 @@ import com.dfsek.terra.api.structures.structure.Rotation;
import com.dfsek.terra.api.util.FastRandom; import com.dfsek.terra.api.util.FastRandom;
import com.dfsek.terra.biome.UserDefinedBiome; import com.dfsek.terra.biome.UserDefinedBiome;
import com.dfsek.terra.biome.grid.master.TerraBiomeGrid; import com.dfsek.terra.biome.grid.master.TerraBiomeGrid;
import com.dfsek.terra.generation.items.TerraStructure; import com.dfsek.terra.population.items.TerraStructure;
import net.jafama.FastMath; import net.jafama.FastMath;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;

View File

@ -1,6 +1,6 @@
package com.dfsek.terra.biome; package com.dfsek.terra.biome;
import com.dfsek.terra.api.math.FastNoiseLite; import com.dfsek.terra.api.math.noise.FastNoiseLite;
import com.dfsek.terra.api.world.biome.BiomeGrid; import com.dfsek.terra.api.world.biome.BiomeGrid;
import com.dfsek.terra.api.world.biome.NormalizationUtil; import com.dfsek.terra.api.world.biome.NormalizationUtil;
import com.dfsek.terra.config.base.ConfigPack; import com.dfsek.terra.config.base.ConfigPack;

View File

@ -1,6 +1,6 @@
package com.dfsek.terra.biome.postprocessing; package com.dfsek.terra.biome.postprocessing;
import com.dfsek.terra.api.math.FastNoiseLite; import com.dfsek.terra.api.math.noise.FastNoiseLite;
import com.dfsek.terra.api.math.vector.Vector2; import com.dfsek.terra.api.math.vector.Vector2;
/** /**

View File

@ -1,6 +1,6 @@
package com.dfsek.terra.biome.postprocessing; package com.dfsek.terra.biome.postprocessing;
import com.dfsek.terra.api.math.FastNoiseLite; import com.dfsek.terra.api.math.noise.FastNoiseLite;
import net.jafama.FastMath; import net.jafama.FastMath;
/** /**

View File

@ -1,6 +1,7 @@
package com.dfsek.terra.carving; package com.dfsek.terra.carving;
import com.dfsek.terra.api.math.Range; import com.dfsek.terra.api.math.Range;
import com.dfsek.terra.api.math.parsii.RandomFunction;
import com.dfsek.terra.api.math.vector.Vector3; import com.dfsek.terra.api.math.vector.Vector3;
import com.dfsek.terra.api.platform.TerraPlugin; import com.dfsek.terra.api.platform.TerraPlugin;
import com.dfsek.terra.api.platform.world.World; import com.dfsek.terra.api.platform.world.World;
@ -11,7 +12,6 @@ import com.dfsek.terra.api.world.generation.GenerationPhase;
import com.dfsek.terra.biome.UserDefinedBiome; import com.dfsek.terra.biome.UserDefinedBiome;
import com.dfsek.terra.config.templates.BiomeTemplate; import com.dfsek.terra.config.templates.BiomeTemplate;
import com.dfsek.terra.config.templates.CarverTemplate; import com.dfsek.terra.config.templates.CarverTemplate;
import com.dfsek.terra.math.RandomFunction;
import net.jafama.FastMath; import net.jafama.FastMath;
import parsii.eval.Expression; import parsii.eval.Expression;
import parsii.eval.Parser; import parsii.eval.Parser;

View File

@ -1,5 +0,0 @@
package com.dfsek.terra.command;
public class Command {
}

View File

@ -40,9 +40,9 @@ import com.dfsek.terra.config.templates.OreTemplate;
import com.dfsek.terra.config.templates.PaletteTemplate; import com.dfsek.terra.config.templates.PaletteTemplate;
import com.dfsek.terra.config.templates.StructureTemplate; import com.dfsek.terra.config.templates.StructureTemplate;
import com.dfsek.terra.config.templates.TreeTemplate; import com.dfsek.terra.config.templates.TreeTemplate;
import com.dfsek.terra.generation.items.TerraStructure;
import com.dfsek.terra.generation.items.ores.Ore;
import com.dfsek.terra.generation.math.SamplerCache; import com.dfsek.terra.generation.math.SamplerCache;
import com.dfsek.terra.population.items.TerraStructure;
import com.dfsek.terra.population.items.ores.Ore;
import com.dfsek.terra.registry.BiomeGridRegistry; import com.dfsek.terra.registry.BiomeGridRegistry;
import com.dfsek.terra.registry.BiomeRegistry; import com.dfsek.terra.registry.BiomeRegistry;
import com.dfsek.terra.registry.CarverRegistry; import com.dfsek.terra.registry.CarverRegistry;

View File

@ -8,7 +8,7 @@ import com.dfsek.terra.api.world.palette.Palette;
import com.dfsek.terra.api.world.palette.RandomPalette; import com.dfsek.terra.api.world.palette.RandomPalette;
import com.dfsek.terra.biome.palette.PaletteLayer; import com.dfsek.terra.biome.palette.PaletteLayer;
import com.dfsek.terra.config.templates.FloraTemplate; import com.dfsek.terra.config.templates.FloraTemplate;
import com.dfsek.terra.generation.items.flora.TerraFlora; import com.dfsek.terra.population.items.flora.TerraFlora;
public class FloraFactory implements TerraFactory<FloraTemplate, Flora> { public class FloraFactory implements TerraFactory<FloraTemplate, Flora> {
@Override @Override

View File

@ -3,9 +3,9 @@ package com.dfsek.terra.config.factories;
import com.dfsek.terra.api.platform.TerraPlugin; import com.dfsek.terra.api.platform.TerraPlugin;
import com.dfsek.terra.api.platform.block.BlockData; import com.dfsek.terra.api.platform.block.BlockData;
import com.dfsek.terra.config.templates.OreTemplate; import com.dfsek.terra.config.templates.OreTemplate;
import com.dfsek.terra.generation.items.ores.DeformedSphereOre; import com.dfsek.terra.population.items.ores.DeformedSphereOre;
import com.dfsek.terra.generation.items.ores.Ore; import com.dfsek.terra.population.items.ores.Ore;
import com.dfsek.terra.generation.items.ores.VanillaOre; import com.dfsek.terra.population.items.ores.VanillaOre;
public class OreFactory implements TerraFactory<OreTemplate, Ore> { public class OreFactory implements TerraFactory<OreTemplate, Ore> {
@Override @Override

View File

@ -1,6 +1,6 @@
package com.dfsek.terra.config.factories; package com.dfsek.terra.config.factories;
import com.dfsek.terra.api.math.FastNoiseLite; import com.dfsek.terra.api.math.noise.FastNoiseLite;
import com.dfsek.terra.api.platform.TerraPlugin; import com.dfsek.terra.api.platform.TerraPlugin;
import com.dfsek.terra.api.platform.block.BlockData; import com.dfsek.terra.api.platform.block.BlockData;
import com.dfsek.terra.api.util.FastRandom; import com.dfsek.terra.api.util.FastRandom;

View File

@ -1,13 +1,12 @@
package com.dfsek.terra.config.factories; package com.dfsek.terra.config.factories;
import com.dfsek.tectonic.exception.LoadException;
import com.dfsek.terra.api.platform.TerraPlugin; import com.dfsek.terra.api.platform.TerraPlugin;
import com.dfsek.terra.config.templates.StructureTemplate; import com.dfsek.terra.config.templates.StructureTemplate;
import com.dfsek.terra.generation.items.TerraStructure; import com.dfsek.terra.population.items.TerraStructure;
public class StructureFactory implements TerraFactory<StructureTemplate, TerraStructure> { public class StructureFactory implements TerraFactory<StructureTemplate, TerraStructure> {
@Override @Override
public TerraStructure build(StructureTemplate config, TerraPlugin main) throws LoadException { public TerraStructure build(StructureTemplate config, TerraPlugin main) {
return new TerraStructure(config.getStructures(), config.getY(), config.getSpawn(), config); return new TerraStructure(config.getStructures(), config.getY(), config.getSpawn(), config);
} }
} }

View File

@ -1,14 +1,13 @@
package com.dfsek.terra.config.factories; package com.dfsek.terra.config.factories;
import com.dfsek.tectonic.exception.LoadException;
import com.dfsek.terra.api.platform.TerraPlugin; import com.dfsek.terra.api.platform.TerraPlugin;
import com.dfsek.terra.api.world.tree.Tree; import com.dfsek.terra.api.world.tree.Tree;
import com.dfsek.terra.config.templates.TreeTemplate; import com.dfsek.terra.config.templates.TreeTemplate;
import com.dfsek.terra.generation.items.tree.TerraTree; import com.dfsek.terra.population.items.tree.TerraTree;
public class TreeFactory implements TerraFactory<TreeTemplate, Tree> { public class TreeFactory implements TerraFactory<TreeTemplate, Tree> {
@Override @Override
public Tree build(TreeTemplate config, TerraPlugin main) throws LoadException { public Tree build(TreeTemplate config, TerraPlugin main) {
return new TerraTree(config.getSpawnable(), config.getyOffset(), config.getStructures()); return new TerraTree(config.getSpawnable(), config.getyOffset(), config.getStructures());
} }
} }

View File

@ -1,6 +1,6 @@
package com.dfsek.terra.config.lang; package com.dfsek.terra.config.lang;
import com.dfsek.terra.api.lang.Language; import com.dfsek.terra.api.language.Language;
import com.dfsek.terra.api.platform.CommandSender; import com.dfsek.terra.api.platform.CommandSender;
import com.dfsek.terra.api.platform.TerraPlugin; import com.dfsek.terra.api.platform.TerraPlugin;
import com.dfsek.terra.debug.Debug; import com.dfsek.terra.debug.Debug;

View File

@ -18,8 +18,7 @@ public class MaterialSetLoader implements TypeLoader<MaterialSet> {
for(String string : stringData) { for(String string : stringData) {
try { try {
if(string.startsWith("#")) set.addTag(string.substring(1)); set.add((MaterialData) configLoader.loadType(MaterialData.class, string));
else set.add((MaterialData) configLoader.loadType(MaterialData.class, string));
} catch(NullPointerException e) { } catch(NullPointerException e) {
throw new LoadException("Invalid data identifier \"" + string + "\"", e); throw new LoadException("Invalid data identifier \"" + string + "\"", e);
} }

View File

@ -3,12 +3,12 @@ package com.dfsek.terra.config.loaders.config;
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.math.FastNoiseLite;
import com.dfsek.terra.api.math.ProbabilityCollection; import com.dfsek.terra.api.math.ProbabilityCollection;
import com.dfsek.terra.api.math.Range; import com.dfsek.terra.api.math.Range;
import com.dfsek.terra.api.math.noise.FastNoiseLite;
import com.dfsek.terra.api.world.flora.Flora; import com.dfsek.terra.api.world.flora.Flora;
import com.dfsek.terra.config.loaders.Types; import com.dfsek.terra.config.loaders.Types;
import com.dfsek.terra.generation.items.flora.FloraLayer; import com.dfsek.terra.population.items.flora.FloraLayer;
import java.lang.reflect.Type; import java.lang.reflect.Type;
import java.util.Map; import java.util.Map;

View File

@ -2,7 +2,7 @@ package com.dfsek.terra.config.loaders.config;
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.procgen.GridSpawn; import com.dfsek.terra.api.math.GridSpawn;
import java.lang.reflect.Type; import java.lang.reflect.Type;
import java.util.Map; import java.util.Map;

View File

@ -5,7 +5,7 @@ import com.dfsek.tectonic.exception.ConfigException;
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.math.FastNoiseLite; import com.dfsek.terra.api.math.noise.FastNoiseLite;
import com.dfsek.terra.generation.config.NoiseBuilder; import com.dfsek.terra.generation.config.NoiseBuilder;
import java.lang.reflect.Type; import java.lang.reflect.Type;

View File

@ -1,10 +1,9 @@
package com.dfsek.terra.config.loaders.config; package com.dfsek.terra.config.loaders.config;
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.math.Range; import com.dfsek.terra.api.math.Range;
import com.dfsek.terra.generation.items.ores.OreConfig; import com.dfsek.terra.population.items.ores.OreConfig;
import java.lang.reflect.Type; import java.lang.reflect.Type;
import java.util.Map; import java.util.Map;
@ -12,7 +11,7 @@ import java.util.Map;
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public class OreConfigLoader implements TypeLoader<OreConfig> { public class OreConfigLoader implements TypeLoader<OreConfig> {
@Override @Override
public OreConfig load(Type type, Object o, ConfigLoader configLoader) throws LoadException { public OreConfig load(Type type, Object o, ConfigLoader configLoader) {
Map<String, Integer> map = (Map<String, Integer>) o; Map<String, Integer> map = (Map<String, Integer>) o;
Range amount = new Range(map.get("min"), map.get("max")); Range amount = new Range(map.get("min"), map.get("max"));
Range height = new Range(map.get("min-height"), map.get("max-height")); Range height = new Range(map.get("min-height"), map.get("max-height"));

View File

@ -3,9 +3,9 @@ package com.dfsek.terra.config.loaders.config;
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.generation.items.ores.Ore; import com.dfsek.terra.population.items.ores.Ore;
import com.dfsek.terra.generation.items.ores.OreConfig; import com.dfsek.terra.population.items.ores.OreConfig;
import com.dfsek.terra.generation.items.ores.OreHolder; import com.dfsek.terra.population.items.ores.OreHolder;
import java.lang.reflect.Type; import java.lang.reflect.Type;
import java.util.Map; import java.util.Map;

View File

@ -3,23 +3,20 @@ package com.dfsek.terra.config.loaders.config;
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.math.FastNoiseLite;
import com.dfsek.terra.api.math.ProbabilityCollection; import com.dfsek.terra.api.math.ProbabilityCollection;
import com.dfsek.terra.api.math.Range; import com.dfsek.terra.api.math.Range;
import com.dfsek.terra.api.platform.TerraPlugin; import com.dfsek.terra.api.math.noise.FastNoiseLite;
import com.dfsek.terra.api.world.tree.Tree; import com.dfsek.terra.api.world.tree.Tree;
import com.dfsek.terra.config.loaders.Types; import com.dfsek.terra.config.loaders.Types;
import com.dfsek.terra.generation.items.tree.TreeLayer; import com.dfsek.terra.population.items.tree.TreeLayer;
import java.lang.reflect.Type; import java.lang.reflect.Type;
import java.util.Map; import java.util.Map;
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public class TreeLayerLoader implements TypeLoader<TreeLayer> { public class TreeLayerLoader implements TypeLoader<TreeLayer> {
private final TerraPlugin main;
public TreeLayerLoader(TerraPlugin main) { public TreeLayerLoader() {
this.main = main;
} }
@Override @Override

View File

@ -5,6 +5,7 @@ import com.dfsek.tectonic.annotations.Default;
import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.annotations.Value;
import com.dfsek.tectonic.config.ValidatedConfigTemplate; import com.dfsek.tectonic.config.ValidatedConfigTemplate;
import com.dfsek.tectonic.exception.ValidationException; import com.dfsek.tectonic.exception.ValidationException;
import com.dfsek.terra.api.math.parsii.BlankFunction;
import com.dfsek.terra.api.platform.TerraPlugin; import com.dfsek.terra.api.platform.TerraPlugin;
import com.dfsek.terra.api.platform.block.BlockData; import com.dfsek.terra.api.platform.block.BlockData;
import com.dfsek.terra.api.platform.block.MaterialData; import com.dfsek.terra.api.platform.block.MaterialData;
@ -15,11 +16,10 @@ import com.dfsek.terra.biome.palette.PaletteHolder;
import com.dfsek.terra.biome.palette.SinglePalette; import com.dfsek.terra.biome.palette.SinglePalette;
import com.dfsek.terra.carving.UserDefinedCarver; import com.dfsek.terra.carving.UserDefinedCarver;
import com.dfsek.terra.config.base.ConfigPack; import com.dfsek.terra.config.base.ConfigPack;
import com.dfsek.terra.generation.items.TerraStructure; import com.dfsek.terra.population.items.TerraStructure;
import com.dfsek.terra.generation.items.flora.FloraLayer; import com.dfsek.terra.population.items.flora.FloraLayer;
import com.dfsek.terra.generation.items.ores.OreHolder; import com.dfsek.terra.population.items.ores.OreHolder;
import com.dfsek.terra.generation.items.tree.TreeLayer; import com.dfsek.terra.population.items.tree.TreeLayer;
import com.dfsek.terra.math.BlankFunction;
import parsii.eval.Parser; import parsii.eval.Parser;
import parsii.eval.Scope; import parsii.eval.Scope;
import parsii.tokenizer.ParseException; import parsii.tokenizer.ParseException;

View File

@ -4,7 +4,7 @@ import com.dfsek.tectonic.annotations.Abstractable;
import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Default;
import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.annotations.Value;
import com.dfsek.terra.biome.palette.PaletteLayer; import com.dfsek.terra.biome.palette.PaletteLayer;
import com.dfsek.terra.generation.items.flora.TerraFlora; import com.dfsek.terra.population.items.flora.TerraFlora;
import com.dfsek.terra.util.MaterialSet; import com.dfsek.terra.util.MaterialSet;
import java.util.List; import java.util.List;

View File

@ -5,7 +5,7 @@ import com.dfsek.tectonic.annotations.Default;
import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.annotations.Value;
import com.dfsek.terra.api.math.Range; import com.dfsek.terra.api.math.Range;
import com.dfsek.terra.api.platform.block.BlockData; import com.dfsek.terra.api.platform.block.BlockData;
import com.dfsek.terra.generation.items.ores.Ore; import com.dfsek.terra.population.items.ores.Ore;
import com.dfsek.terra.util.MaterialSet; import com.dfsek.terra.util.MaterialSet;
@SuppressWarnings({"unused", "FieldMayBeFinal"}) @SuppressWarnings({"unused", "FieldMayBeFinal"})

View File

@ -4,11 +4,11 @@ import com.dfsek.tectonic.annotations.Abstractable;
import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Default;
import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.annotations.Value;
import com.dfsek.tectonic.config.ConfigTemplate; import com.dfsek.tectonic.config.ConfigTemplate;
import com.dfsek.terra.api.math.GridSpawn;
import com.dfsek.terra.api.math.ProbabilityCollection; import com.dfsek.terra.api.math.ProbabilityCollection;
import com.dfsek.terra.api.math.Range; import com.dfsek.terra.api.math.Range;
import com.dfsek.terra.api.structures.script.StructureScript; import com.dfsek.terra.api.structures.script.StructureScript;
import com.dfsek.terra.api.util.GlueList; import com.dfsek.terra.api.util.GlueList;
import com.dfsek.terra.procgen.GridSpawn;
import java.util.List; import java.util.List;

View File

@ -90,7 +90,6 @@ public class MasterChunkGenerator implements TerraChunkGenerator {
TerraWorld tw = main.getWorld(world); TerraWorld tw = main.getWorld(world);
com.dfsek.terra.api.world.biome.BiomeGrid grid = tw.getGrid(); com.dfsek.terra.api.world.biome.BiomeGrid grid = tw.getGrid();
try(ProfileFuture ignore = tw.getProfiler().measure("TotalChunkGenTime")) { try(ProfileFuture ignore = tw.getProfiler().measure("TotalChunkGenTime")) {
try(ProfileFuture ignored = tw.getProfiler().measure("ChunkBaseGenTime")) {
if(!tw.isSafe()) return chunk; if(!tw.isSafe()) return chunk;
int xOrig = (chunkX << 4); int xOrig = (chunkX << 4);
int zOrig = (chunkZ << 4); int zOrig = (chunkZ << 4);
@ -139,8 +138,6 @@ public class MasterChunkGenerator implements TerraChunkGenerator {
} }
} }
} }
}
return chunk; return chunk;
} }
} }

View File

@ -3,7 +3,7 @@ package com.dfsek.terra.generation.config;
import com.dfsek.tectonic.annotations.Default; import com.dfsek.tectonic.annotations.Default;
import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.annotations.Value;
import com.dfsek.tectonic.config.ConfigTemplate; import com.dfsek.tectonic.config.ConfigTemplate;
import com.dfsek.terra.api.math.FastNoiseLite; import com.dfsek.terra.api.math.noise.FastNoiseLite;
public class NoiseBuilder implements ConfigTemplate { public class NoiseBuilder implements ConfigTemplate {
@Value("type") @Value("type")

View File

@ -1,12 +1,12 @@
package com.dfsek.terra.generation.config; package com.dfsek.terra.generation.config;
import com.dfsek.terra.api.math.noise.NoiseFunction2;
import com.dfsek.terra.api.math.noise.NoiseFunction3;
import com.dfsek.terra.api.math.parsii.RandomFunction;
import com.dfsek.terra.api.platform.block.BlockData; import com.dfsek.terra.api.platform.block.BlockData;
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.palette.Palette;
import com.dfsek.terra.biome.palette.PaletteHolder; import com.dfsek.terra.biome.palette.PaletteHolder;
import com.dfsek.terra.math.NoiseFunction2;
import com.dfsek.terra.math.NoiseFunction3;
import com.dfsek.terra.math.RandomFunction;
import parsii.eval.Expression; import parsii.eval.Expression;
import parsii.eval.Parser; import parsii.eval.Parser;
import parsii.eval.Scope; import parsii.eval.Scope;

View File

@ -3,6 +3,7 @@ package com.dfsek.terra.generation.math;
import com.dfsek.terra.api.platform.world.World; import com.dfsek.terra.api.platform.world.World;
import com.dfsek.terra.biome.grid.master.TerraBiomeGrid; import com.dfsek.terra.biome.grid.master.TerraBiomeGrid;
import com.dfsek.terra.generation.math.interpolation.ChunkInterpolator; import com.dfsek.terra.generation.math.interpolation.ChunkInterpolator;
import com.dfsek.terra.generation.math.interpolation.ElevationInterpolator;
import net.jafama.FastMath; import net.jafama.FastMath;
public class Sampler { public class Sampler {

View File

@ -1,10 +1,9 @@
package com.dfsek.terra.generation.math; package com.dfsek.terra.generation.math.interpolation;
import com.dfsek.terra.api.platform.world.World; import com.dfsek.terra.api.platform.world.World;
import com.dfsek.terra.api.world.biome.BiomeGrid; import com.dfsek.terra.api.world.biome.BiomeGrid;
import com.dfsek.terra.api.world.generation.GenerationPhase; import com.dfsek.terra.api.world.generation.GenerationPhase;
import com.dfsek.terra.generation.config.WorldGenerator; import com.dfsek.terra.generation.config.WorldGenerator;
import com.dfsek.terra.generation.math.interpolation.Interpolator;
import net.jafama.FastMath; import net.jafama.FastMath;
public class ElevationInterpolator { public class ElevationInterpolator {

View File

@ -1,20 +0,0 @@
package com.dfsek.terra.math;
import com.dfsek.terra.generation.math.Sampler;
public final class MathUtil {
private static final double CONST = 0.55;
public static double derivative(Sampler sampler, double x, double y, double z) {
double baseSample = sampler.sample(x, y, z);
double xVal1 = (sampler.sample(x + CONST, y, z) - baseSample) / CONST;
double xVal2 = (sampler.sample(x - CONST, y, z) - baseSample) / CONST;
double zVal1 = (sampler.sample(x, y, z + CONST) - baseSample) / CONST;
double zVal2 = (sampler.sample(x, y, z - CONST) - baseSample) / CONST;
double yVal1 = (sampler.sample(x, y + CONST, z) - baseSample) / CONST;
double yVal2 = (sampler.sample(x, y - CONST, z) - baseSample) / CONST;
return Math.sqrt(((xVal2 - xVal1) * (xVal2 - xVal1)) + ((zVal2 - zVal1) * (zVal2 - zVal1)) + ((yVal2 - yVal1) * (yVal2 - yVal1)));
}
}

View File

@ -10,7 +10,7 @@ import com.dfsek.terra.api.world.generation.GenerationPhase;
import com.dfsek.terra.api.world.generation.TerraBlockPopulator; import com.dfsek.terra.api.world.generation.TerraBlockPopulator;
import com.dfsek.terra.biome.UserDefinedBiome; import com.dfsek.terra.biome.UserDefinedBiome;
import com.dfsek.terra.biome.grid.master.TerraBiomeGrid; import com.dfsek.terra.biome.grid.master.TerraBiomeGrid;
import com.dfsek.terra.generation.items.flora.FloraLayer; import com.dfsek.terra.population.items.flora.FloraLayer;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import java.util.HashMap; import java.util.HashMap;

View File

@ -13,7 +13,7 @@ import com.dfsek.terra.api.world.generation.TerraBlockPopulator;
import com.dfsek.terra.biome.UserDefinedBiome; import com.dfsek.terra.biome.UserDefinedBiome;
import com.dfsek.terra.biome.grid.master.TerraBiomeGrid; import com.dfsek.terra.biome.grid.master.TerraBiomeGrid;
import com.dfsek.terra.config.base.ConfigPack; import com.dfsek.terra.config.base.ConfigPack;
import com.dfsek.terra.generation.items.TerraStructure; import com.dfsek.terra.population.items.TerraStructure;
import net.jafama.FastMath; import net.jafama.FastMath;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;

View File

@ -10,7 +10,7 @@ import com.dfsek.terra.api.world.generation.GenerationPhase;
import com.dfsek.terra.api.world.generation.TerraBlockPopulator; import com.dfsek.terra.api.world.generation.TerraBlockPopulator;
import com.dfsek.terra.biome.UserDefinedBiome; import com.dfsek.terra.biome.UserDefinedBiome;
import com.dfsek.terra.biome.grid.master.TerraBiomeGrid; import com.dfsek.terra.biome.grid.master.TerraBiomeGrid;
import com.dfsek.terra.generation.items.tree.TreeLayer; import com.dfsek.terra.population.items.tree.TreeLayer;
import net.jafama.FastMath; import net.jafama.FastMath;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;

View File

@ -1,8 +1,8 @@
package com.dfsek.terra.generation.items; package com.dfsek.terra.population.items;
import com.dfsek.terra.api.math.FastNoiseLite;
import com.dfsek.terra.api.math.ProbabilityCollection; import com.dfsek.terra.api.math.ProbabilityCollection;
import com.dfsek.terra.api.math.Range; import com.dfsek.terra.api.math.Range;
import com.dfsek.terra.api.math.noise.FastNoiseLite;
import com.dfsek.terra.api.math.vector.Vector2; import com.dfsek.terra.api.math.vector.Vector2;
import com.dfsek.terra.api.platform.world.Chunk; import com.dfsek.terra.api.platform.world.Chunk;

View File

@ -1,10 +1,10 @@
package com.dfsek.terra.generation.items; package com.dfsek.terra.population.items;
import com.dfsek.terra.api.math.GridSpawn;
import com.dfsek.terra.api.math.ProbabilityCollection; import com.dfsek.terra.api.math.ProbabilityCollection;
import com.dfsek.terra.api.math.Range; import com.dfsek.terra.api.math.Range;
import com.dfsek.terra.api.structures.script.StructureScript; import com.dfsek.terra.api.structures.script.StructureScript;
import com.dfsek.terra.config.templates.StructureTemplate; import com.dfsek.terra.config.templates.StructureTemplate;
import com.dfsek.terra.procgen.GridSpawn;
public class TerraStructure { public class TerraStructure {
private final ProbabilityCollection<StructureScript> structure; private final ProbabilityCollection<StructureScript> structure;

View File

@ -1,4 +1,4 @@
package com.dfsek.terra.generation.items.flora; package com.dfsek.terra.population.items.flora;
import com.dfsek.terra.api.math.Range; import com.dfsek.terra.api.math.Range;
import com.dfsek.terra.api.math.vector.Location; import com.dfsek.terra.api.math.vector.Location;

View File

@ -1,4 +1,4 @@
package com.dfsek.terra.generation.items.flora; package com.dfsek.terra.population.items.flora;
import com.dfsek.terra.api.math.Range; import com.dfsek.terra.api.math.Range;
import com.dfsek.terra.api.math.vector.Location; import com.dfsek.terra.api.math.vector.Location;

View File

@ -1,12 +1,12 @@
package com.dfsek.terra.generation.items.flora; package com.dfsek.terra.population.items.flora;
import com.dfsek.terra.api.math.FastNoiseLite;
import com.dfsek.terra.api.math.ProbabilityCollection; import com.dfsek.terra.api.math.ProbabilityCollection;
import com.dfsek.terra.api.math.Range; import com.dfsek.terra.api.math.Range;
import com.dfsek.terra.api.math.noise.FastNoiseLite;
import com.dfsek.terra.api.math.vector.Vector2; import com.dfsek.terra.api.math.vector.Vector2;
import com.dfsek.terra.api.platform.world.Chunk; import com.dfsek.terra.api.platform.world.Chunk;
import com.dfsek.terra.api.world.flora.Flora; import com.dfsek.terra.api.world.flora.Flora;
import com.dfsek.terra.generation.items.PlaceableLayer; import com.dfsek.terra.population.items.PlaceableLayer;
import java.util.Random; import java.util.Random;

View File

@ -1,4 +1,4 @@
package com.dfsek.terra.generation.items.flora; package com.dfsek.terra.population.items.flora;
import com.dfsek.terra.api.math.Range; import com.dfsek.terra.api.math.Range;
import com.dfsek.terra.api.math.vector.Location; import com.dfsek.terra.api.math.vector.Location;

View File

@ -1,7 +1,7 @@
package com.dfsek.terra.generation.items.ores; package com.dfsek.terra.population.items.ores;
import com.dfsek.terra.api.math.FastNoiseLite;
import com.dfsek.terra.api.math.Range; import com.dfsek.terra.api.math.Range;
import com.dfsek.terra.api.math.noise.FastNoiseLite;
import com.dfsek.terra.api.math.vector.Vector3; import com.dfsek.terra.api.math.vector.Vector3;
import com.dfsek.terra.api.platform.TerraPlugin; import com.dfsek.terra.api.platform.TerraPlugin;
import com.dfsek.terra.api.platform.block.Block; import com.dfsek.terra.api.platform.block.Block;

View File

@ -1,4 +1,4 @@
package com.dfsek.terra.generation.items.ores; package com.dfsek.terra.population.items.ores;
import com.dfsek.terra.api.math.vector.Vector3; import com.dfsek.terra.api.math.vector.Vector3;
import com.dfsek.terra.api.platform.TerraPlugin; import com.dfsek.terra.api.platform.TerraPlugin;

View File

@ -1,4 +1,4 @@
package com.dfsek.terra.generation.items.ores; package com.dfsek.terra.population.items.ores;
import com.dfsek.terra.api.math.Range; import com.dfsek.terra.api.math.Range;

View File

@ -1,4 +1,4 @@
package com.dfsek.terra.generation.items.ores; package com.dfsek.terra.population.items.ores;
import com.dfsek.terra.api.util.GlueList; import com.dfsek.terra.api.util.GlueList;

View File

@ -1,4 +1,4 @@
package com.dfsek.terra.generation.items.ores; package com.dfsek.terra.population.items.ores;
import com.dfsek.terra.api.math.Range; import com.dfsek.terra.api.math.Range;
import com.dfsek.terra.api.math.vector.Vector3; import com.dfsek.terra.api.math.vector.Vector3;

View File

@ -1,4 +1,4 @@
package com.dfsek.terra.generation.items.tree; package com.dfsek.terra.population.items.tree;
import com.dfsek.terra.api.math.ProbabilityCollection; import com.dfsek.terra.api.math.ProbabilityCollection;
import com.dfsek.terra.api.math.vector.Location; import com.dfsek.terra.api.math.vector.Location;

View File

@ -1,14 +1,14 @@
package com.dfsek.terra.generation.items.tree; package com.dfsek.terra.population.items.tree;
import com.dfsek.terra.api.math.FastNoiseLite;
import com.dfsek.terra.api.math.ProbabilityCollection; import com.dfsek.terra.api.math.ProbabilityCollection;
import com.dfsek.terra.api.math.Range; import com.dfsek.terra.api.math.Range;
import com.dfsek.terra.api.math.noise.FastNoiseLite;
import com.dfsek.terra.api.math.vector.Vector2; import com.dfsek.terra.api.math.vector.Vector2;
import com.dfsek.terra.api.platform.block.Block; import com.dfsek.terra.api.platform.block.Block;
import com.dfsek.terra.api.platform.block.BlockFace; import com.dfsek.terra.api.platform.block.BlockFace;
import com.dfsek.terra.api.platform.world.Chunk; import com.dfsek.terra.api.platform.world.Chunk;
import com.dfsek.terra.api.world.tree.Tree; import com.dfsek.terra.api.world.tree.Tree;
import com.dfsek.terra.generation.items.PlaceableLayer; import com.dfsek.terra.population.items.PlaceableLayer;
import java.util.Random; import java.util.Random;

View File

@ -4,7 +4,7 @@ import com.dfsek.terra.api.platform.TerraPlugin;
import com.dfsek.terra.api.platform.block.BlockData; import com.dfsek.terra.api.platform.block.BlockData;
import com.dfsek.terra.api.platform.block.MaterialData; import com.dfsek.terra.api.platform.block.MaterialData;
import com.dfsek.terra.api.world.flora.Flora; import com.dfsek.terra.api.world.flora.Flora;
import com.dfsek.terra.generation.items.flora.ConstantFlora; import com.dfsek.terra.population.items.flora.ConstantFlora;
import com.dfsek.terra.util.MaterialSet; import com.dfsek.terra.util.MaterialSet;
import java.util.Arrays; import java.util.Arrays;

View File

@ -1,6 +1,6 @@
package com.dfsek.terra.registry; package com.dfsek.terra.registry;
import com.dfsek.terra.generation.items.ores.Ore; import com.dfsek.terra.population.items.ores.Ore;
public class OreRegistry extends TerraRegistry<Ore> { public class OreRegistry extends TerraRegistry<Ore> {
} }

View File

@ -1,6 +1,6 @@
package com.dfsek.terra.registry; package com.dfsek.terra.registry;
import com.dfsek.terra.generation.items.TerraStructure; import com.dfsek.terra.population.items.TerraStructure;
public class StructureRegistry extends TerraRegistry<TerraStructure> { public class StructureRegistry extends TerraRegistry<TerraStructure> {
} }

View File

@ -21,10 +21,6 @@ public class MaterialSet extends HashSet<MaterialData> {
return set; return set;
} }
public void addTag(String tag) {
this.addAll(TagUtil.getTag(tag));
}
private void add(BlockData data) { private void add(BlockData data) {
add(data.getMaterial()); add(data.getMaterial());
} }

View File

@ -1,11 +1,11 @@
package com.dfsek.terra.util; package com.dfsek.terra.util;
import com.dfsek.terra.api.math.MathUtil;
import com.dfsek.terra.api.platform.block.BlockData; import com.dfsek.terra.api.platform.block.BlockData;
import com.dfsek.terra.api.world.palette.Palette; import com.dfsek.terra.api.world.palette.Palette;
import com.dfsek.terra.biome.palette.PaletteHolder; import com.dfsek.terra.biome.palette.PaletteHolder;
import com.dfsek.terra.config.templates.BiomeTemplate; import com.dfsek.terra.config.templates.BiomeTemplate;
import com.dfsek.terra.generation.math.Sampler; import com.dfsek.terra.generation.math.Sampler;
import com.dfsek.terra.math.MathUtil;
public final class PaletteUtil { public final class PaletteUtil {
public static Palette<BlockData> getPalette(int x, int y, int z, BiomeTemplate c, Sampler sampler) { public static Palette<BlockData> getPalette(int x, int y, int z, BiomeTemplate c, Sampler sampler) {

View File

@ -1,14 +0,0 @@
package com.dfsek.terra.util;
public final class StringUtils {
/**
* Strip Minecraft namespace from string
*
* @param in String to strip namespace of
* @return Stripped string/
*/
public static String stripMinecraftNamespace(String in) {
if(!in.startsWith("minecraft:")) return in;
return in.substring(10);
}
}

View File

@ -1,77 +0,0 @@
package com.dfsek.terra.util;
import com.dfsek.terra.api.platform.block.MaterialData;
import com.dfsek.terra.debug.Debug;
import org.jetbrains.annotations.NotNull;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@SuppressWarnings("unchecked")
public final class TagUtil {
private static final Map<String, Set<MaterialData>> tagMap;
static {
Debug.info("Loading tags...");
tagMap = new HashMap<>();
/*
Field[] tags = Tag.class.getFields(); // Add Bukkit tags
for(Field field : tags) {
if(Modifier.isStatic(field.getModifiers())) {
try {
Tag<Material> tag = (Tag<Material>) field.get(new Object());
tagMap.put(tag.getKey().toString(), tag.getValues());
} catch(IllegalAccessException e) {
e.printStackTrace();
} catch(ClassCastException ignore) {
}
}
}
putCustomSet("minecraft:base_stone_nether", Material.NETHERRACK, Material.BASALT, Material.BLACKSTONE);
putCustomSet("minecraft:base_stone_overworld", Material.STONE, Material.GRANITE, Material.DIORITE, Material.ANDESITE);
Set<Material> snow = new HashSet<>();
Set<Material> solid = new HashSet<>();
for(Material m : Material.values()) {
if(m.isSolid()) solid.add(m);
String name = m.toString().toLowerCase();
if(name.contains("slab")
|| name.contains("stair")
|| name.contains("wall")
|| name.contains("fence")
|| name.contains("lantern")
|| name.contains("chest")
|| name.contains("door")
|| name.contains("repeater")
|| name.equals("lily_pad")
|| name.equals("snow")
|| name.equals("pane")
|| !m.isSolid()) snow.add(m);
}
tagMap.put("com.dfsek.terra:snow_blacklist", snow);
tagMap.put("com.dfsek.terra:solid", solid);
Debug.info("Added " + snow.size() + " materials to snow blacklist");
Debug.info("Added " + solid.size() + " materials to solid list");
Debug.info("Loaded " + tagMap.size() + " tags.");
*/
}
private static Set<MaterialData> getSet(MaterialData... materials) {
return Stream.of(materials).collect(Collectors.toSet());
}
private static void putCustomSet(String key, MaterialData... materials) {
tagMap.put(key, getSet(materials));
}
@NotNull
public static Set<MaterialData> getTag(String tag) {
return Objects.requireNonNull(tagMap.get(tag));
}
}

View File

@ -3,7 +3,7 @@ package com.dfsek.terra.bukkit;
import com.dfsek.tectonic.loading.TypeRegistry; import com.dfsek.tectonic.loading.TypeRegistry;
import com.dfsek.terra.TerraWorld; import com.dfsek.terra.TerraWorld;
import com.dfsek.terra.api.GenericLoaders; import com.dfsek.terra.api.GenericLoaders;
import com.dfsek.terra.api.lang.Language; import com.dfsek.terra.api.language.Language;
import com.dfsek.terra.api.platform.TerraPlugin; import com.dfsek.terra.api.platform.TerraPlugin;
import com.dfsek.terra.api.platform.block.BlockData; import com.dfsek.terra.api.platform.block.BlockData;
import com.dfsek.terra.api.platform.block.MaterialData; import com.dfsek.terra.api.platform.block.MaterialData;
@ -30,7 +30,6 @@ import com.dfsek.terra.config.lang.LangUtil;
import com.dfsek.terra.debug.Debug; import com.dfsek.terra.debug.Debug;
import com.dfsek.terra.generation.MasterChunkGenerator; import com.dfsek.terra.generation.MasterChunkGenerator;
import com.dfsek.terra.registry.ConfigRegistry; import com.dfsek.terra.registry.ConfigRegistry;
import com.dfsek.terra.util.StringUtils;
import org.bstats.bukkit.Metrics; import org.bstats.bukkit.Metrics;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.TreeType; import org.bukkit.TreeType;
@ -107,7 +106,7 @@ public class TerraBukkitPlugin extends JavaPlugin implements TerraPlugin {
.add("OAK", new BukkitTree(TreeType.TREE, this)) .add("OAK", new BukkitTree(TreeType.TREE, this))
.add("MEGA_SPRUCE", new BukkitTree(TreeType.MEGA_REDWOOD, this)) .add("MEGA_SPRUCE", new BukkitTree(TreeType.MEGA_REDWOOD, this))
.add("SWAMP_OAK", new BukkitTree(TreeType.SWAMP, this))) .add("SWAMP_OAK", new BukkitTree(TreeType.SWAMP, this)))
.addTransform(id -> new BukkitTree(TreeType.valueOf(StringUtils.stripMinecraftNamespace(id)), this)) // Finally, try stripping minecraft namespace. .addTransform(id -> new BukkitTree(TreeType.valueOf(id), this)) // Finally, try stripping minecraft namespace.
.build()); .build());
saveDefaultConfig(); saveDefaultConfig();

View File

@ -9,7 +9,7 @@ import com.dfsek.terra.carving.UserDefinedCarver;
import com.dfsek.terra.config.base.ConfigPack; import com.dfsek.terra.config.base.ConfigPack;
import com.dfsek.terra.config.lang.LangUtil; import com.dfsek.terra.config.lang.LangUtil;
import com.dfsek.terra.config.templates.BiomeTemplate; import com.dfsek.terra.config.templates.BiomeTemplate;
import com.dfsek.terra.generation.items.TerraStructure; import com.dfsek.terra.population.items.TerraStructure;
import org.bukkit.World; import org.bukkit.World;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;

View File

@ -1,13 +1,13 @@
package com.dfsek.terra.bukkit.command.command.geometry; package com.dfsek.terra.bukkit.command.command.geometry;
import com.dfsek.terra.api.math.FastNoiseLite; import com.dfsek.terra.api.math.noise.FastNoiseLite;
import com.dfsek.terra.api.math.vector.Vector3; import com.dfsek.terra.api.math.vector.Vector3;
import com.dfsek.terra.api.math.voxel.DeformedSphere;
import com.dfsek.terra.bukkit.BukkitCommandSender; import com.dfsek.terra.bukkit.BukkitCommandSender;
import com.dfsek.terra.bukkit.BukkitPlayer; import com.dfsek.terra.bukkit.BukkitPlayer;
import com.dfsek.terra.bukkit.command.PlayerCommand; import com.dfsek.terra.bukkit.command.PlayerCommand;
import com.dfsek.terra.bukkit.world.BukkitAdapter; import com.dfsek.terra.bukkit.world.BukkitAdapter;
import com.dfsek.terra.config.lang.LangUtil; import com.dfsek.terra.config.lang.LangUtil;
import com.dfsek.terra.procgen.voxel.DeformedSphere;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;

View File

@ -1,12 +1,12 @@
package com.dfsek.terra.bukkit.command.command.geometry; package com.dfsek.terra.bukkit.command.command.geometry;
import com.dfsek.terra.api.math.vector.Vector3; import com.dfsek.terra.api.math.vector.Vector3;
import com.dfsek.terra.api.math.voxel.Sphere;
import com.dfsek.terra.bukkit.BukkitCommandSender; import com.dfsek.terra.bukkit.BukkitCommandSender;
import com.dfsek.terra.bukkit.BukkitPlayer; import com.dfsek.terra.bukkit.BukkitPlayer;
import com.dfsek.terra.bukkit.command.PlayerCommand; import com.dfsek.terra.bukkit.command.PlayerCommand;
import com.dfsek.terra.bukkit.world.BukkitAdapter; import com.dfsek.terra.bukkit.world.BukkitAdapter;
import com.dfsek.terra.config.lang.LangUtil; import com.dfsek.terra.config.lang.LangUtil;
import com.dfsek.terra.procgen.voxel.Sphere;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;

View File

@ -1,13 +1,13 @@
package com.dfsek.terra.bukkit.command.command.geometry; package com.dfsek.terra.bukkit.command.command.geometry;
import com.dfsek.terra.api.math.vector.Vector3; import com.dfsek.terra.api.math.vector.Vector3;
import com.dfsek.terra.api.math.voxel.Tube;
import com.dfsek.terra.bukkit.BukkitCommandSender; import com.dfsek.terra.bukkit.BukkitCommandSender;
import com.dfsek.terra.bukkit.command.PlayerCommand; import com.dfsek.terra.bukkit.command.PlayerCommand;
import com.dfsek.terra.bukkit.structure.WorldEditUtil; import com.dfsek.terra.bukkit.structure.WorldEditUtil;
import com.dfsek.terra.bukkit.util.BukkitConversions; import com.dfsek.terra.bukkit.util.BukkitConversions;
import com.dfsek.terra.bukkit.world.BukkitAdapter; import com.dfsek.terra.bukkit.world.BukkitAdapter;
import com.dfsek.terra.config.lang.LangUtil; import com.dfsek.terra.config.lang.LangUtil;
import com.dfsek.terra.procgen.voxel.Tube;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;

View File

@ -7,7 +7,7 @@ import com.dfsek.terra.bukkit.TerraBukkitPlugin;
import com.dfsek.terra.bukkit.command.WorldCommand; import com.dfsek.terra.bukkit.command.WorldCommand;
import com.dfsek.terra.bukkit.world.BukkitAdapter; import com.dfsek.terra.bukkit.world.BukkitAdapter;
import com.dfsek.terra.config.lang.LangUtil; import com.dfsek.terra.config.lang.LangUtil;
import com.dfsek.terra.generation.items.TerraStructure; import com.dfsek.terra.population.items.TerraStructure;
import net.md_5.bungee.api.ChatColor; import net.md_5.bungee.api.ChatColor;
import net.md_5.bungee.api.chat.BaseComponent; import net.md_5.bungee.api.chat.BaseComponent;
import net.md_5.bungee.api.chat.ClickEvent; import net.md_5.bungee.api.chat.ClickEvent;
@ -32,7 +32,7 @@ public class LocateCommand extends WorldCommand {
super(parent); super(parent);
} }
@SuppressWarnings("DuplicatedCode") @SuppressWarnings({"DuplicatedCode", "deprecation"})
@Override @Override
public boolean execute(@NotNull Player sender, @NotNull Command command, @NotNull String label, @NotNull String[] args, World world) { public boolean execute(@NotNull Player sender, @NotNull Command command, @NotNull String label, @NotNull String[] args, World world) {
String id = args[0]; String id = args[0];

View File

@ -5,7 +5,7 @@ import com.dfsek.terra.api.platform.TerraPlugin;
import com.dfsek.terra.async.AsyncStructureFinder; import com.dfsek.terra.async.AsyncStructureFinder;
import com.dfsek.terra.bukkit.world.BukkitAdapter; import com.dfsek.terra.bukkit.world.BukkitAdapter;
import com.dfsek.terra.debug.Debug; import com.dfsek.terra.debug.Debug;
import com.dfsek.terra.generation.items.TerraStructure; import com.dfsek.terra.population.items.TerraStructure;
import org.bukkit.entity.EnderSignal; import org.bukkit.entity.EnderSignal;
import org.bukkit.entity.Entity; import org.bukkit.entity.Entity;
import org.bukkit.entity.EntityType; import org.bukkit.entity.EntityType;

View File

@ -99,4 +99,9 @@ public class BukkitWorld implements World {
public int hashCode() { public int hashCode() {
return delegate.hashCode(); return delegate.hashCode();
} }
@Override
public String toString() {
return delegate.toString();
}
} }

View File

@ -97,7 +97,7 @@ public class BukkitMobSpawner extends BukkitBlockState implements MobSpawner {
SerialState.parse(state).forEach((k, v) -> { SerialState.parse(state).forEach((k, v) -> {
switch(k) { switch(k) {
case "type": case "type":
setSpawnedType(new BukkitEntityType(org.bukkit.entity.EntityType.valueOf(v))); setSpawnedType(new BukkitEntityType(org.bukkit.entity.EntityType.valueOf(v.toUpperCase())));
return; return;
case "delay": case "delay":
setDelay(Integer.parseInt(v)); setDelay(Integer.parseInt(v));

View File

@ -6,6 +6,6 @@ biome-search-resolution: 4
cache: cache:
carver: 512 carver: 512
structure: 32 structure: 32
sampler: 512 sampler: 128
master-disable: master-disable:
caves: false caves: false

View File

@ -3,7 +3,7 @@ package com.dfsek.terra.fabric;
import com.dfsek.tectonic.loading.TypeRegistry; import com.dfsek.tectonic.loading.TypeRegistry;
import com.dfsek.terra.TerraWorld; import com.dfsek.terra.TerraWorld;
import com.dfsek.terra.api.GenericLoaders; import com.dfsek.terra.api.GenericLoaders;
import com.dfsek.terra.api.lang.Language; import com.dfsek.terra.api.language.Language;
import com.dfsek.terra.api.platform.TerraPlugin; import com.dfsek.terra.api.platform.TerraPlugin;
import com.dfsek.terra.api.platform.block.BlockData; import com.dfsek.terra.api.platform.block.BlockData;
import com.dfsek.terra.api.platform.block.MaterialData; import com.dfsek.terra.api.platform.block.MaterialData;
@ -25,7 +25,6 @@ import com.dfsek.terra.fabric.world.TerraBiomeSource;
import com.dfsek.terra.fabric.world.features.PopulatorFeature; import com.dfsek.terra.fabric.world.features.PopulatorFeature;
import com.dfsek.terra.fabric.world.generator.FabricChunkGeneratorWrapper; import com.dfsek.terra.fabric.world.generator.FabricChunkGeneratorWrapper;
import com.dfsek.terra.registry.ConfigRegistry; import com.dfsek.terra.registry.ConfigRegistry;
import com.dfsek.terra.util.StringUtils;
import net.fabricmc.api.EnvType; import net.fabricmc.api.EnvType;
import net.fabricmc.api.ModInitializer; import net.fabricmc.api.ModInitializer;
import net.fabricmc.loader.api.FabricLoader; import net.fabricmc.loader.api.FabricLoader;
@ -82,7 +81,6 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer {
private File config; private File config;
private static final Transformer<String, ConfiguredFeature<?, ?>> TREE_TRANSFORMER = new Transformer.Builder<String, ConfiguredFeature<?, ?>>() private static final Transformer<String, ConfiguredFeature<?, ?>> TREE_TRANSFORMER = new Transformer.Builder<String, ConfiguredFeature<?, ?>>()
.addTransform(TerraFabricPlugin::getFeature) .addTransform(TerraFabricPlugin::getFeature)
.addTransform(id -> getFeature(StringUtils.stripMinecraftNamespace(id)))
.addTransform(new MapTransform<String, ConfiguredFeature<?, ?>>() .addTransform(new MapTransform<String, ConfiguredFeature<?, ?>>()
.add("BROWN_MUSHROOM", ConfiguredFeatures.BROWN_MUSHROOM_GIANT) .add("BROWN_MUSHROOM", ConfiguredFeatures.BROWN_MUSHROOM_GIANT)
.add("RED_MUSHROOM", ConfiguredFeatures.RED_MUSHROOM_GIANT) .add("RED_MUSHROOM", ConfiguredFeatures.RED_MUSHROOM_GIANT)

View File

@ -2,7 +2,7 @@ package com.dfsek.terra;
import com.dfsek.tectonic.loading.TypeRegistry; import com.dfsek.tectonic.loading.TypeRegistry;
import com.dfsek.terra.api.GenericLoaders; import com.dfsek.terra.api.GenericLoaders;
import com.dfsek.terra.api.lang.Language; import com.dfsek.terra.api.language.Language;
import com.dfsek.terra.api.platform.TerraPlugin; import com.dfsek.terra.api.platform.TerraPlugin;
import com.dfsek.terra.api.platform.block.BlockData; import com.dfsek.terra.api.platform.block.BlockData;
import com.dfsek.terra.api.platform.block.MaterialData; import com.dfsek.terra.api.platform.block.MaterialData;