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(1500000, DataType.PERIOD_MILLISECONDS), "OreTime")
.addMeasurement(new Measurement(5000000, DataType.PERIOD_MILLISECONDS), "CaveTime")
.addMeasurement(new Measurement(1500000, DataType.PERIOD_MILLISECONDS), "StructureTime")
.addMeasurement(new Measurement(1500000, DataType.PERIOD_MILLISECONDS), "ElevationTime");
.addMeasurement(new Measurement(1500000, DataType.PERIOD_MILLISECONDS), "StructureTime");
}
}

View File

@ -1,6 +1,7 @@
package com.dfsek.terra.api;
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.Range;
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.PaletteLayerLoader;
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.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;
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(OreConfig.class, new OreConfigLoader())
.registerLoader(NoiseBuilder.class, new NoiseBuilderLoader())
.registerLoader(TreeLayer.class, new TreeLayerLoader(main))
.registerLoader(TreeLayer.class, new TreeLayerLoader())
.registerLoader(MaterialSet.class, new MaterialSetLoader())
.registerLoader(OreHolder.class, new OreHolderLoader())
.registerLoader(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;

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;

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;

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;

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.util.FastRandom;
import com.dfsek.terra.api.util.GlueList;

View File

@ -1,6 +1,7 @@
package com.dfsek.terra.api.math;
import com.dfsek.terra.api.util.FastRandom;
import com.dfsek.terra.generation.math.Sampler;
import net.jafama.FastMath;
import java.util.Random;
@ -9,7 +10,14 @@ import java.util.Random;
* Utility class for mathematical functions.
*/
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.
@ -68,4 +76,17 @@ public final class MathUtil {
public static boolean equals(double a, double b) {
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;
import com.dfsek.terra.api.math.noise.FastNoiseLite;
import com.dfsek.terra.api.world.biome.NormalizationUtil;
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;
@ -58,6 +58,7 @@ perform a file-wide replace on the following strings (including / * FNLdouble *
/ *FNLdouble* / double
*/
@SuppressWarnings("ManualMinMaxCalculation")
public class FastNoiseLite {
private static final double[] Gradients2D = {
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 double mDomainWarpAmp = 1.0f;
private static final com.dfsek.terra.api.math.FastNoiseLite CELLULAR_LOOKUP_DEFAULT = new com.dfsek.terra.api.math.FastNoiseLite();
private com.dfsek.terra.api.math.FastNoiseLite cellularNoiseLookup = CELLULAR_LOOKUP_DEFAULT;
private static final FastNoiseLite CELLULAR_LOOKUP_DEFAULT = new FastNoiseLite();
private FastNoiseLite cellularNoiseLookup = CELLULAR_LOOKUP_DEFAULT;
public com.dfsek.terra.api.math.FastNoiseLite getCellularNoiseLookup() {
public FastNoiseLite getCellularNoiseLookup() {
return cellularNoiseLookup;
}
public void setCellularNoiseLookup(com.dfsek.terra.api.math.FastNoiseLite cellularNoiseLookup) {
public void setCellularNoiseLookup(FastNoiseLite cellularNoiseLookup) {
this.cellularNoiseLookup = cellularNoiseLookup;
}
@ -1442,7 +1443,6 @@ public class FastNoiseLite {
if (mCellularDistanceFunction == CellularDistanceFunction.Euclidean && mCellularReturnType != CellularReturnType.CellValue) {
distance0 = FastSqrt(distance0);
//noinspection ConstantConditions
if (mCellularReturnType != CellularReturnType.CellValue) {
distance1 = FastSqrt(distance1);
}
@ -1593,8 +1593,6 @@ public class FastNoiseLite {
if (mCellularDistanceFunction == CellularDistanceFunction.Euclidean && mCellularReturnType != CellularReturnType.CellValue) {
distance0 = FastSqrt(distance0);
//noinspection ConstantConditions
if (mCellularReturnType != CellularReturnType.CellValue) {
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;

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.util.hash.HashMapDoubleDouble;
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 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.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 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 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;

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 net.jafama.FastMath;

View File

@ -163,6 +163,6 @@ public class Location implements Cloneable {
@Override
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;
import com.dfsek.terra.api.math.MathUtil;
import net.jafama.FastMath;
/**
@ -157,11 +158,9 @@ public class Vector2 implements Cloneable {
@Override
public boolean equals(Object obj) {
if(!(obj instanceof Vector2)) {
return false;
}
if(!(obj instanceof Vector2)) return false;
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

View File

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

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;
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;

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;

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.util.GlueList;

View File

@ -2,7 +2,7 @@ package com.dfsek.terra.api.platform;
import com.dfsek.terra.TerraWorld;
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.WorldHandle;
import com.dfsek.terra.api.platform.world.World;

View File

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

View File

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

View File

@ -1,6 +1,6 @@
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.world.generation.GenerationPhase;

View File

@ -1,7 +1,7 @@
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.noise.FastNoiseLite;
import com.dfsek.terra.api.util.GlueList;
import java.util.List;

View File

@ -1,6 +1,6 @@
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;

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.biome.UserDefinedBiome;
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 org.jetbrains.annotations.NotNull;

View File

@ -1,6 +1,6 @@
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.NormalizationUtil;
import com.dfsek.terra.config.base.ConfigPack;

View File

@ -1,6 +1,6 @@
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;
/**

View File

@ -1,6 +1,6 @@
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;
/**

View File

@ -1,6 +1,7 @@
package com.dfsek.terra.carving;
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.platform.TerraPlugin;
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.config.templates.BiomeTemplate;
import com.dfsek.terra.config.templates.CarverTemplate;
import com.dfsek.terra.math.RandomFunction;
import net.jafama.FastMath;
import parsii.eval.Expression;
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.StructureTemplate;
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.population.items.TerraStructure;
import com.dfsek.terra.population.items.ores.Ore;
import com.dfsek.terra.registry.BiomeGridRegistry;
import com.dfsek.terra.registry.BiomeRegistry;
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.biome.palette.PaletteLayer;
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> {
@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.block.BlockData;
import com.dfsek.terra.config.templates.OreTemplate;
import com.dfsek.terra.generation.items.ores.DeformedSphereOre;
import com.dfsek.terra.generation.items.ores.Ore;
import com.dfsek.terra.generation.items.ores.VanillaOre;
import com.dfsek.terra.population.items.ores.DeformedSphereOre;
import com.dfsek.terra.population.items.ores.Ore;
import com.dfsek.terra.population.items.ores.VanillaOre;
public class OreFactory implements TerraFactory<OreTemplate, Ore> {
@Override

View File

@ -1,6 +1,6 @@
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.block.BlockData;
import com.dfsek.terra.api.util.FastRandom;

View File

@ -1,13 +1,12 @@
package com.dfsek.terra.config.factories;
import com.dfsek.tectonic.exception.LoadException;
import com.dfsek.terra.api.platform.TerraPlugin;
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> {
@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);
}
}

View File

@ -1,14 +1,13 @@
package com.dfsek.terra.config.factories;
import com.dfsek.tectonic.exception.LoadException;
import com.dfsek.terra.api.platform.TerraPlugin;
import com.dfsek.terra.api.world.tree.Tree;
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> {
@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());
}
}

View File

@ -1,6 +1,6 @@
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.TerraPlugin;
import com.dfsek.terra.debug.Debug;

View File

@ -18,8 +18,7 @@ public class MaterialSetLoader implements TypeLoader<MaterialSet> {
for(String string : stringData) {
try {
if(string.startsWith("#")) set.addTag(string.substring(1));
else set.add((MaterialData) configLoader.loadType(MaterialData.class, string));
set.add((MaterialData) configLoader.loadType(MaterialData.class, string));
} catch(NullPointerException 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.loading.ConfigLoader;
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.Range;
import com.dfsek.terra.api.math.noise.FastNoiseLite;
import com.dfsek.terra.api.world.flora.Flora;
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.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.TypeLoader;
import com.dfsek.terra.procgen.GridSpawn;
import com.dfsek.terra.api.math.GridSpawn;
import java.lang.reflect.Type;
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.loading.ConfigLoader;
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 java.lang.reflect.Type;

View File

@ -1,10 +1,9 @@
package com.dfsek.terra.config.loaders.config;
import com.dfsek.tectonic.exception.LoadException;
import com.dfsek.tectonic.loading.ConfigLoader;
import com.dfsek.tectonic.loading.TypeLoader;
import com.dfsek.terra.api.math.Range;
import com.dfsek.terra.generation.items.ores.OreConfig;
import com.dfsek.terra.population.items.ores.OreConfig;
import java.lang.reflect.Type;
import java.util.Map;
@ -12,7 +11,7 @@ import java.util.Map;
@SuppressWarnings("unchecked")
public class OreConfigLoader implements TypeLoader<OreConfig> {
@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;
Range amount = new Range(map.get("min"), map.get("max"));
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.loading.ConfigLoader;
import com.dfsek.tectonic.loading.TypeLoader;
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.population.items.ores.Ore;
import com.dfsek.terra.population.items.ores.OreConfig;
import com.dfsek.terra.population.items.ores.OreHolder;
import java.lang.reflect.Type;
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.loading.ConfigLoader;
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.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.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.util.Map;
@SuppressWarnings("unchecked")
public class TreeLayerLoader implements TypeLoader<TreeLayer> {
private final TerraPlugin main;
public TreeLayerLoader(TerraPlugin main) {
this.main = main;
public TreeLayerLoader() {
}
@Override

View File

@ -5,6 +5,7 @@ import com.dfsek.tectonic.annotations.Default;
import com.dfsek.tectonic.annotations.Value;
import com.dfsek.tectonic.config.ValidatedConfigTemplate;
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.block.BlockData;
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.carving.UserDefinedCarver;
import com.dfsek.terra.config.base.ConfigPack;
import com.dfsek.terra.generation.items.TerraStructure;
import com.dfsek.terra.generation.items.flora.FloraLayer;
import com.dfsek.terra.generation.items.ores.OreHolder;
import com.dfsek.terra.generation.items.tree.TreeLayer;
import com.dfsek.terra.math.BlankFunction;
import com.dfsek.terra.population.items.TerraStructure;
import com.dfsek.terra.population.items.flora.FloraLayer;
import com.dfsek.terra.population.items.ores.OreHolder;
import com.dfsek.terra.population.items.tree.TreeLayer;
import parsii.eval.Parser;
import parsii.eval.Scope;
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.Value;
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 java.util.List;

View File

@ -5,7 +5,7 @@ import com.dfsek.tectonic.annotations.Default;
import com.dfsek.tectonic.annotations.Value;
import com.dfsek.terra.api.math.Range;
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;
@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.Value;
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.Range;
import com.dfsek.terra.api.structures.script.StructureScript;
import com.dfsek.terra.api.util.GlueList;
import com.dfsek.terra.procgen.GridSpawn;
import java.util.List;

View File

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

View File

@ -1,12 +1,12 @@
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.world.biome.Generator;
import com.dfsek.terra.api.world.palette.Palette;
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.Parser;
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.biome.grid.master.TerraBiomeGrid;
import com.dfsek.terra.generation.math.interpolation.ChunkInterpolator;
import com.dfsek.terra.generation.math.interpolation.ElevationInterpolator;
import net.jafama.FastMath;
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.world.biome.BiomeGrid;
import com.dfsek.terra.api.world.generation.GenerationPhase;
import com.dfsek.terra.generation.config.WorldGenerator;
import com.dfsek.terra.generation.math.interpolation.Interpolator;
import net.jafama.FastMath;
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.biome.UserDefinedBiome;
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 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.grid.master.TerraBiomeGrid;
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 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.biome.UserDefinedBiome;
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 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.Range;
import com.dfsek.terra.api.math.noise.FastNoiseLite;
import com.dfsek.terra.api.math.vector.Vector2;
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.Range;
import com.dfsek.terra.api.structures.script.StructureScript;
import com.dfsek.terra.config.templates.StructureTemplate;
import com.dfsek.terra.procgen.GridSpawn;
public class TerraStructure {
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.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.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.Range;
import com.dfsek.terra.api.math.noise.FastNoiseLite;
import com.dfsek.terra.api.math.vector.Vector2;
import com.dfsek.terra.api.platform.world.Chunk;
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;

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.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.noise.FastNoiseLite;
import com.dfsek.terra.api.math.vector.Vector3;
import com.dfsek.terra.api.platform.TerraPlugin;
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.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;

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;

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.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.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.Range;
import com.dfsek.terra.api.math.noise.FastNoiseLite;
import com.dfsek.terra.api.math.vector.Vector2;
import com.dfsek.terra.api.platform.block.Block;
import com.dfsek.terra.api.platform.block.BlockFace;
import com.dfsek.terra.api.platform.world.Chunk;
import com.dfsek.terra.api.world.tree.Tree;
import com.dfsek.terra.generation.items.PlaceableLayer;
import com.dfsek.terra.population.items.PlaceableLayer;
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.MaterialData;
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 java.util.Arrays;

View File

@ -1,6 +1,6 @@
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> {
}

View File

@ -1,6 +1,6 @@
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> {
}

View File

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

View File

@ -1,11 +1,11 @@
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.world.palette.Palette;
import com.dfsek.terra.biome.palette.PaletteHolder;
import com.dfsek.terra.config.templates.BiomeTemplate;
import com.dfsek.terra.generation.math.Sampler;
import com.dfsek.terra.math.MathUtil;
public final class PaletteUtil {
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.terra.TerraWorld;
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.block.BlockData;
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.generation.MasterChunkGenerator;
import com.dfsek.terra.registry.ConfigRegistry;
import com.dfsek.terra.util.StringUtils;
import org.bstats.bukkit.Metrics;
import org.bukkit.Bukkit;
import org.bukkit.TreeType;
@ -107,7 +106,7 @@ public class TerraBukkitPlugin extends JavaPlugin implements TerraPlugin {
.add("OAK", new BukkitTree(TreeType.TREE, this))
.add("MEGA_SPRUCE", new BukkitTree(TreeType.MEGA_REDWOOD, 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());
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.lang.LangUtil;
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.command.Command;
import org.bukkit.command.CommandSender;

View File

@ -1,13 +1,13 @@
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.voxel.DeformedSphere;
import com.dfsek.terra.bukkit.BukkitCommandSender;
import com.dfsek.terra.bukkit.BukkitPlayer;
import com.dfsek.terra.bukkit.command.PlayerCommand;
import com.dfsek.terra.bukkit.world.BukkitAdapter;
import com.dfsek.terra.config.lang.LangUtil;
import com.dfsek.terra.procgen.voxel.DeformedSphere;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;

View File

@ -1,12 +1,12 @@
package com.dfsek.terra.bukkit.command.command.geometry;
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.BukkitPlayer;
import com.dfsek.terra.bukkit.command.PlayerCommand;
import com.dfsek.terra.bukkit.world.BukkitAdapter;
import com.dfsek.terra.config.lang.LangUtil;
import com.dfsek.terra.procgen.voxel.Sphere;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;

View File

@ -1,13 +1,13 @@
package com.dfsek.terra.bukkit.command.command.geometry;
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.command.PlayerCommand;
import com.dfsek.terra.bukkit.structure.WorldEditUtil;
import com.dfsek.terra.bukkit.util.BukkitConversions;
import com.dfsek.terra.bukkit.world.BukkitAdapter;
import com.dfsek.terra.config.lang.LangUtil;
import com.dfsek.terra.procgen.voxel.Tube;
import org.bukkit.Location;
import org.bukkit.command.Command;
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.world.BukkitAdapter;
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.chat.BaseComponent;
import net.md_5.bungee.api.chat.ClickEvent;
@ -32,7 +32,7 @@ public class LocateCommand extends WorldCommand {
super(parent);
}
@SuppressWarnings("DuplicatedCode")
@SuppressWarnings({"DuplicatedCode", "deprecation"})
@Override
public boolean execute(@NotNull Player sender, @NotNull Command command, @NotNull String label, @NotNull String[] args, World world) {
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.bukkit.world.BukkitAdapter;
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.Entity;
import org.bukkit.entity.EntityType;

View File

@ -99,4 +99,9 @@ public class BukkitWorld implements World {
public int 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) -> {
switch(k) {
case "type":
setSpawnedType(new BukkitEntityType(org.bukkit.entity.EntityType.valueOf(v)));
setSpawnedType(new BukkitEntityType(org.bukkit.entity.EntityType.valueOf(v.toUpperCase())));
return;
case "delay":
setDelay(Integer.parseInt(v));

View File

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

View File

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