API compiles now

This commit is contained in:
dfsek
2021-06-23 12:43:16 -07:00
parent 686680d731
commit f380247613
125 changed files with 421 additions and 279 deletions
@@ -1,4 +1,4 @@
package com.dfsek.terra.api.util.logging; package com.dfsek.terra.api;
public interface Logger { public interface Logger {
void info(String message); void info(String message);
@@ -6,4 +6,8 @@ public interface Logger {
void warning(String message); void warning(String message);
void severe(String message); void severe(String message);
default void stack(Throwable t) {
t.printStackTrace();
}
} }
@@ -2,12 +2,15 @@ package com.dfsek.terra.api;
import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.addon.TerraAddon;
import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.config.ConfigPack;
import com.dfsek.terra.api.config.PluginConfig;
import com.dfsek.terra.api.event.EventManager; import com.dfsek.terra.api.event.EventManager;
import com.dfsek.terra.api.handle.ItemHandle; import com.dfsek.terra.api.handle.ItemHandle;
import com.dfsek.terra.api.handle.WorldHandle; import com.dfsek.terra.api.handle.WorldHandle;
import com.dfsek.terra.api.lang.Language;
import com.dfsek.terra.api.profiler.Profiler; import com.dfsek.terra.api.profiler.Profiler;
import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.registry.CheckedRegistry;
import com.dfsek.terra.api.registry.Registry; import com.dfsek.terra.api.registry.Registry;
import com.dfsek.terra.api.util.JarUtil;
import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.TerraWorld;
import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.World;
@@ -44,7 +47,7 @@ public interface TerraPlugin extends LoaderRegistrar {
String platformName(); String platformName();
DebugLogger getDebugLogger(); Logger getDebugLogger();
EventManager getEventManager(); EventManager getEventManager();
@@ -67,20 +67,6 @@ public enum BlockFace {
return modZ; return modZ;
} }
/**
* Gets the normal vector corresponding to this block face.
*
* @return the normal vector
*/
@NotNull
public Vector3 getDirection() {
Vector3 direction = new Vector3Impl(modX, modY, modZ);
if(modX != 0 || modY != 0 || modZ != 0) {
direction.normalize();
}
return direction;
}
@NotNull @NotNull
public BlockFace getOppositeFace() { public BlockFace getOppositeFace() {
switch(this) { switch(this) {
@@ -0,0 +1,33 @@
package com.dfsek.terra.api.config;
import com.dfsek.terra.api.TerraPlugin;
public interface PluginConfig {
void load(TerraPlugin main);
String getLanguage();
boolean isDebugCommands();
boolean isDebugLogging();
boolean isDebugProfiler();
boolean isDebugScript();
long getDataSaveInterval();
int getBiomeSearchResolution();
int getCarverCacheSize();
int getStructureCache();
int getSamplerCache();
int getMaxRecursion();
int getBiomeCache();
int getProviderCache();
}
@@ -3,6 +3,7 @@ package com.dfsek.terra.api.config;
import com.dfsek.terra.api.registry.Registry; import com.dfsek.terra.api.registry.Registry;
import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.TerraWorld;
import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
import com.dfsek.terra.api.world.generator.SamplerCache;
import java.util.Set; import java.util.Set;
@@ -14,7 +15,5 @@ public interface WorldConfig {
SamplerCache getSamplerCache(); SamplerCache getSamplerCache();
Set<UserDefinedCarver> getCarvers();
BiomeProvider getProvider(); BiomeProvider getProvider();
} }
@@ -6,6 +6,8 @@ import com.dfsek.terra.api.event.events.Cancellable;
import com.dfsek.terra.api.event.events.PackEvent; import com.dfsek.terra.api.event.events.PackEvent;
import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.block.Block;
import com.dfsek.terra.api.block.state.Container; import com.dfsek.terra.api.block.state.Container;
import com.dfsek.terra.api.structure.LootTable;
import com.dfsek.terra.api.structure.Structure;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
/** /**
@@ -16,14 +18,14 @@ public class LootPopulateEvent extends AbstractCancellable implements PackEvent,
private final Container container; private final Container container;
private LootTable table; private LootTable table;
private final ConfigPack pack; private final ConfigPack pack;
private final StructureScript script; private final Structure structure;
public LootPopulateEvent(Block block, Container container, LootTable table, ConfigPack pack, StructureScript script) { public LootPopulateEvent(Block block, Container container, LootTable table, ConfigPack pack, Structure structure) {
this.block = block; this.block = block;
this.container = container; this.container = container;
this.table = table; this.table = table;
this.pack = pack; this.pack = pack;
this.script = script; this.structure = structure;
} }
@Override @Override
@@ -71,7 +73,7 @@ public class LootPopulateEvent extends AbstractCancellable implements PackEvent,
* *
* @return Structure script. * @return Structure script.
*/ */
public StructureScript getStructureScript() { public Structure getStructure() {
return script; return structure;
} }
} }
@@ -0,0 +1,15 @@
package com.dfsek.terra.api.lang;
import com.dfsek.terra.api.entity.CommandSender;
import java.util.logging.Level;
import java.util.logging.Logger;
public interface Language {
@SuppressWarnings("unchecked")
Message getMessage(String id);
void log(String messageID, Level level, Logger logger, String... args);
void send(String messageID, CommandSender sender, String... args);
}
@@ -1,4 +1,4 @@
package com.dfsek.terra.config.lang; package com.dfsek.terra.api.lang;
import com.dfsek.terra.api.entity.CommandSender; import com.dfsek.terra.api.entity.CommandSender;
@@ -0,0 +1,25 @@
package com.dfsek.terra.api.structure;
import com.dfsek.terra.api.inventory.Inventory;
import com.dfsek.terra.api.inventory.ItemStack;
import java.util.List;
import java.util.Random;
public interface LootTable {
/**
* Fetches a list of ItemStacks from the loot table using the given Random instance.
*
* @param r The Random instance to use.
* @return List&lt;ItemStack&gt; - The list of loot fetched.
*/
List<ItemStack> getLoot(Random r);
/**
* Fills an Inventory with loot.
*
* @param i The Inventory to fill.
* @param r The The Random instance to use.
*/
void fillInventory(Inventory i, Random r);
}
@@ -0,0 +1,34 @@
package com.dfsek.terra.api.structure;
import com.dfsek.terra.api.structure.buffer.Buffer;
import com.dfsek.terra.api.structure.rotation.Rotation;
import com.dfsek.terra.api.vector.Location;
import com.dfsek.terra.api.world.Chunk;
import java.util.Random;
public interface Structure {
/**
* Paste the structure at a location
*
* @param location Location to paste structure
* @param rotation Rotation of structure
* @return Whether generation was successful
*/
@SuppressWarnings("try")
boolean generate(Location location, Random random, Rotation rotation);
@SuppressWarnings("try")
boolean generate(Location location, Chunk chunk, Random random, Rotation rotation);
@SuppressWarnings("try")
boolean test(Location location, Random random, Rotation rotation);
@SuppressWarnings("try")
boolean generate(Buffer buffer, Random random, Rotation rotation, int recursions);
@SuppressWarnings("try")
boolean generateDirect(Location location, Random random, Rotation rotation);
String getId();
}
@@ -1,6 +1,5 @@
package com.dfsek.terra.api.util; package com.dfsek.terra.api.util;
import com.dfsek.terra.api.util.FastRandom;
import com.dfsek.terra.api.world.generator.Sampler; import com.dfsek.terra.api.world.generator.Sampler;
import net.jafama.FastMath; import net.jafama.FastMath;
@@ -43,19 +42,6 @@ public final class MathUtil {
return FastMath.sqrt(standardDeviation / length); return FastMath.sqrt(standardDeviation / length);
} }
/**
* Gets the carver seed for a chunk.
*
* @param chunkX Chunk's X coordinate
* @param chunkZ Chunk's Z coordinate
* @param seed World seed
* @return long - The carver seed.
*/
public static long getCarverChunkSeed(int chunkX, int chunkZ, long seed) {
Random r = new FastRandom(seed);
return chunkX * r.nextLong() ^ chunkZ * r.nextLong() ^ seed;
}
public static long hashToLong(String s) { public static long hashToLong(String s) {
if(s == null) { if(s == null) {
return 0; return 0;
@@ -1,12 +1,14 @@
package com.dfsek.terra.api.world; package com.dfsek.terra.api.world;
import com.dfsek.terra.api.vector.LocationImpl; import com.dfsek.terra.api.block.BlockType;
import com.dfsek.terra.api.vector.Location;
import java.util.Random; import java.util.Random;
import java.util.Set;
public interface Tree { public interface Tree {
boolean plant(LocationImpl l, Random r); boolean plant(Location l, Random r);
MaterialSet getSpawnable(); Set<BlockType> getSpawnable();
} }
@@ -0,0 +1,9 @@
package com.dfsek.terra.api.world.generator;
public interface SamplerCache {
Sampler get(int x, int z);
Sampler getChunk(int cx, int cz);
void clear();
}
@@ -1,6 +1,6 @@
package com.dfsek.terra.api.math; package com.dfsek.terra.api.math;
import com.dfsek.terra.api.util.MathUtil; import com.dfsek.terra.api.util.PopulationUtil;
import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.vector.Vector3;
import com.dfsek.terra.vector.Vector3Impl; import com.dfsek.terra.vector.Vector3Impl;
import com.dfsek.terra.api.util.FastRandom; import com.dfsek.terra.api.util.FastRandom;
@@ -57,7 +57,7 @@ public class GridSpawn {
* @return Vector representing spawnpoint * @return Vector representing spawnpoint
*/ */
public Vector3 getChunkSpawn(int structureChunkX, int structureChunkZ, long seed) { public Vector3 getChunkSpawn(int structureChunkX, int structureChunkZ, long seed) {
Random r = new FastRandom(MathUtil.getCarverChunkSeed(structureChunkX, structureChunkZ, seed + salt)); Random r = new FastRandom(PopulationUtil.getCarverChunkSeed(structureChunkX, structureChunkZ, seed + salt));
int offsetX = r.nextInt(width); int offsetX = r.nextInt(width);
int offsetZ = r.nextInt(width); int offsetZ = r.nextInt(width);
int sx = structureChunkX * (width + 2 * separation) + offsetX; int sx = structureChunkX * (width + 2 * separation) + offsetX;
@@ -15,7 +15,7 @@ import java.util.Random;
/** /**
* Class representation of a Loot Table to populate chest loot. * Class representation of a Loot Table to populate chest loot.
*/ */
public class LootTable { public class LootTableImpl implements com.dfsek.terra.api.structure.LootTable {
private final List<Pool> pools = new GlueList<>(); private final List<Pool> pools = new GlueList<>();
/** /**
@@ -24,7 +24,7 @@ public class LootTable {
* @param json The JSON String representing the loot table. * @param json The JSON String representing the loot table.
* @throws ParseException if malformed JSON is passed. * @throws ParseException if malformed JSON is passed.
*/ */
public LootTable(String json, TerraPlugin main) throws ParseException { public LootTableImpl(String json, TerraPlugin main) throws ParseException {
JSONParser jsonParser = new JSONParser(); JSONParser jsonParser = new JSONParser();
Object tableJSON = jsonParser.parse(json); Object tableJSON = jsonParser.parse(json);
JSONArray poolArray = (JSONArray) ((JSONObject) tableJSON).get("pools"); JSONArray poolArray = (JSONArray) ((JSONObject) tableJSON).get("pools");
@@ -33,12 +33,7 @@ public class LootTable {
} }
} }
/** @Override
* Fetches a list of ItemStacks from the loot table using the given Random instance.
*
* @param r The Random instance to use.
* @return List&lt;ItemStack&gt; - The list of loot fetched.
*/
public List<ItemStack> getLoot(Random r) { public List<ItemStack> getLoot(Random r) {
List<ItemStack> itemList = new GlueList<>(); List<ItemStack> itemList = new GlueList<>();
for(Pool pool : pools) { for(Pool pool : pools) {
@@ -47,12 +42,7 @@ public class LootTable {
return itemList; return itemList;
} }
/** @Override
* Fills an Inventory with loot.
*
* @param i The Inventory to fill.
* @param r The The Random instance to use.
*/
public void fillInventory(Inventory i, Random r) { public void fillInventory(Inventory i, Random r) {
List<ItemStack> loot = getLoot(r); List<ItemStack> loot = getLoot(r);
for(ItemStack stack : loot) { for(ItemStack stack : loot) {
@@ -1,10 +1,12 @@
package com.dfsek.terra.api.structures.script; package com.dfsek.terra.api.structures.script;
import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.structure.LootTable;
import com.dfsek.terra.api.structure.Structure;
import com.dfsek.terra.api.vector.Location;
import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.vector.LocationImpl;
import com.dfsek.terra.api.world.Chunk; import com.dfsek.terra.api.world.Chunk;
import com.dfsek.terra.api.registry.Registry; import com.dfsek.terra.api.registry.Registry;
import com.dfsek.terra.api.structures.loot.LootTable;
import com.dfsek.terra.api.structures.parser.Parser; import com.dfsek.terra.api.structures.parser.Parser;
import com.dfsek.terra.api.structures.parser.exceptions.ParseException; import com.dfsek.terra.api.structures.parser.exceptions.ParseException;
import com.dfsek.terra.api.structures.parser.lang.Block; import com.dfsek.terra.api.structures.parser.lang.Block;
@@ -44,14 +46,14 @@ import java.nio.charset.Charset;
import java.util.Random; import java.util.Random;
import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutionException;
public class StructureScript { public class StructureScript implements Structure {
private final Block block; private final Block block;
private final String id; private final String id;
private final Cache<LocationImpl, StructureBuffer> cache; private final Cache<LocationImpl, StructureBuffer> cache;
private final TerraPlugin main; private final TerraPlugin main;
private String tempID; private String tempID;
public StructureScript(InputStream inputStream, TerraPlugin main, Registry<StructureScript> registry, Registry<LootTable> lootRegistry, Registry<FunctionBuilder<?>> functionRegistry) throws ParseException { public StructureScript(InputStream inputStream, TerraPlugin main, Registry<Structure> registry, Registry<LootTable> lootRegistry, Registry<FunctionBuilder<?>> functionRegistry) throws ParseException {
Parser parser; Parser parser;
try { try {
parser = new Parser(IOUtils.toString(inputStream, Charset.defaultCharset())); parser = new Parser(IOUtils.toString(inputStream, Charset.defaultCharset()));
@@ -110,15 +112,9 @@ public class StructureScript {
this.cache = CacheBuilder.newBuilder().maximumSize(main.getTerraConfig().getStructureCache()).build(); this.cache = CacheBuilder.newBuilder().maximumSize(main.getTerraConfig().getStructureCache()).build();
} }
/** @Override
* Paste the structure at a location
*
* @param location Location to paste structure
* @param rotation Rotation of structure
* @return Whether generation was successful
*/
@SuppressWarnings("try") @SuppressWarnings("try")
public boolean execute(LocationImpl location, Random random, Rotation rotation) { public boolean generate(Location location, Random random, Rotation rotation) {
try(ProfileFrame ignore = main.getProfiler().profile("terrascript:" + id)) { try(ProfileFrame ignore = main.getProfiler().profile("terrascript:" + id)) {
StructureBuffer buffer = new StructureBuffer(location); StructureBuffer buffer = new StructureBuffer(location);
boolean level = applyBlock(new TerraImplementationArguments(buffer, rotation, random, 0)); boolean level = applyBlock(new TerraImplementationArguments(buffer, rotation, random, 0));
@@ -127,8 +123,9 @@ public class StructureScript {
} }
} }
@Override
@SuppressWarnings("try") @SuppressWarnings("try")
public boolean execute(LocationImpl location, Chunk chunk, Random random, Rotation rotation) { public boolean generate(Location location, Chunk chunk, Random random, Rotation rotation) {
try(ProfileFrame ignore = main.getProfiler().profile("terrascript_chunk:" + id)) { try(ProfileFrame ignore = main.getProfiler().profile("terrascript_chunk:" + id)) {
StructureBuffer buffer = computeBuffer(location, random, rotation); StructureBuffer buffer = computeBuffer(location, random, rotation);
buffer.paste(chunk); buffer.paste(chunk);
@@ -136,15 +133,16 @@ public class StructureScript {
} }
} }
@Override
@SuppressWarnings("try") @SuppressWarnings("try")
public boolean test(LocationImpl location, Random random, Rotation rotation) { public boolean test(Location location, Random random, Rotation rotation) {
try(ProfileFrame ignore = main.getProfiler().profile("terrascript_test:" + id)) { try(ProfileFrame ignore = main.getProfiler().profile("terrascript_test:" + id)) {
StructureBuffer buffer = computeBuffer(location, random, rotation); StructureBuffer buffer = computeBuffer(location, random, rotation);
return buffer.succeeded(); return buffer.succeeded();
} }
} }
private StructureBuffer computeBuffer(LocationImpl location, Random random, Rotation rotation) { private StructureBuffer computeBuffer(Location location, Random random, Rotation rotation) {
try { try {
return cache.get(location, () -> { return cache.get(location, () -> {
StructureBuffer buf = new StructureBuffer(location); StructureBuffer buf = new StructureBuffer(location);
@@ -156,21 +154,24 @@ public class StructureScript {
} }
} }
@Override
@SuppressWarnings("try") @SuppressWarnings("try")
public boolean executeInBuffer(Buffer buffer, Random random, Rotation rotation, int recursions) { public boolean generate(Buffer buffer, Random random, Rotation rotation, int recursions) {
try(ProfileFrame ignore = main.getProfiler().profile("terrascript_recursive:" + id)) { try(ProfileFrame ignore = main.getProfiler().profile("terrascript_recursive:" + id)) {
return applyBlock(new TerraImplementationArguments(buffer, rotation, random, recursions)); return applyBlock(new TerraImplementationArguments(buffer, rotation, random, recursions));
} }
} }
@Override
@SuppressWarnings("try") @SuppressWarnings("try")
public boolean executeDirect(LocationImpl location, Random random, Rotation rotation) { public boolean generateDirect(Location location, Random random, Rotation rotation) {
try(ProfileFrame ignore = main.getProfiler().profile("terrascript_direct:" + id)) { try(ProfileFrame ignore = main.getProfiler().profile("terrascript_direct:" + id)) {
DirectBuffer buffer = new DirectBuffer(location); DirectBuffer buffer = new DirectBuffer(location);
return applyBlock(new TerraImplementationArguments(buffer, rotation, random, 0)); return applyBlock(new TerraImplementationArguments(buffer, rotation, random, 0));
} }
} }
@Override
public String getId() { public String getId() {
return id; return id;
} }
@@ -6,7 +6,6 @@ import com.dfsek.terra.api.structures.parser.lang.Returnable;
import com.dfsek.terra.api.structures.parser.lang.functions.FunctionBuilder; import com.dfsek.terra.api.structures.parser.lang.functions.FunctionBuilder;
import com.dfsek.terra.api.structures.script.functions.CheckFunction; import com.dfsek.terra.api.structures.script.functions.CheckFunction;
import com.dfsek.terra.api.structures.tokenizer.Position; import com.dfsek.terra.api.structures.tokenizer.Position;
import com.dfsek.terra.world.generation.math.SamplerCache;
import java.util.List; import java.util.List;
@@ -2,7 +2,7 @@ package com.dfsek.terra.api.structures.script.builders;
import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.registry.Registry; import com.dfsek.terra.api.registry.Registry;
import com.dfsek.terra.api.structures.loot.LootTable; import com.dfsek.terra.api.structure.LootTable;
import com.dfsek.terra.api.structures.parser.lang.Returnable; import com.dfsek.terra.api.structures.parser.lang.Returnable;
import com.dfsek.terra.api.structures.parser.lang.functions.FunctionBuilder; import com.dfsek.terra.api.structures.parser.lang.functions.FunctionBuilder;
import com.dfsek.terra.api.structures.script.StructureScript; import com.dfsek.terra.api.structures.script.StructureScript;
@@ -2,10 +2,10 @@ package com.dfsek.terra.api.structures.script.builders;
import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.registry.Registry; import com.dfsek.terra.api.registry.Registry;
import com.dfsek.terra.api.structure.Structure;
import com.dfsek.terra.api.structures.parser.exceptions.ParseException; import com.dfsek.terra.api.structures.parser.exceptions.ParseException;
import com.dfsek.terra.api.structures.parser.lang.Returnable; import com.dfsek.terra.api.structures.parser.lang.Returnable;
import com.dfsek.terra.api.structures.parser.lang.functions.FunctionBuilder; import com.dfsek.terra.api.structures.parser.lang.functions.FunctionBuilder;
import com.dfsek.terra.api.structures.script.StructureScript;
import com.dfsek.terra.api.structures.script.functions.StructureFunction; import com.dfsek.terra.api.structures.script.functions.StructureFunction;
import com.dfsek.terra.api.structures.tokenizer.Position; import com.dfsek.terra.api.structures.tokenizer.Position;
@@ -13,10 +13,10 @@ import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
public class StructureFunctionBuilder implements FunctionBuilder<StructureFunction> { public class StructureFunctionBuilder implements FunctionBuilder<StructureFunction> {
private final Registry<StructureScript> registry; private final Registry<Structure> registry;
private final TerraPlugin main; private final TerraPlugin main;
public StructureFunctionBuilder(Registry<StructureScript> registry, TerraPlugin main) { public StructureFunctionBuilder(Registry<Structure> registry, TerraPlugin main) {
this.registry = registry; this.registry = registry;
this.main = main; this.main = main;
} }
@@ -10,7 +10,7 @@ import com.dfsek.terra.api.structures.parser.lang.Returnable;
import com.dfsek.terra.api.structures.parser.lang.functions.Function; import com.dfsek.terra.api.structures.parser.lang.functions.Function;
import com.dfsek.terra.api.structures.parser.lang.variables.Variable; import com.dfsek.terra.api.structures.parser.lang.variables.Variable;
import com.dfsek.terra.api.structures.script.TerraImplementationArguments; import com.dfsek.terra.api.structures.script.TerraImplementationArguments;
import com.dfsek.terra.api.structure.rotation.RotationUtil; import com.dfsek.terra.api.util.RotationUtil;
import com.dfsek.terra.api.structures.structure.buffer.items.BufferedBlock; import com.dfsek.terra.api.structures.structure.buffer.items.BufferedBlock;
import com.dfsek.terra.api.structures.tokenizer.Position; import com.dfsek.terra.api.structures.tokenizer.Position;
import net.jafama.FastMath; import net.jafama.FastMath;
@@ -9,7 +9,7 @@ import com.dfsek.terra.api.structures.parser.lang.Returnable;
import com.dfsek.terra.api.structures.parser.lang.functions.Function; import com.dfsek.terra.api.structures.parser.lang.functions.Function;
import com.dfsek.terra.api.structures.parser.lang.variables.Variable; import com.dfsek.terra.api.structures.parser.lang.variables.Variable;
import com.dfsek.terra.api.structures.script.TerraImplementationArguments; import com.dfsek.terra.api.structures.script.TerraImplementationArguments;
import com.dfsek.terra.api.structure.rotation.RotationUtil; import com.dfsek.terra.api.util.RotationUtil;
import com.dfsek.terra.api.structures.tokenizer.Position; import com.dfsek.terra.api.structures.tokenizer.Position;
import com.dfsek.terra.api.world.biome.UserDefinedBiome; import com.dfsek.terra.api.world.biome.UserDefinedBiome;
import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
@@ -8,7 +8,7 @@ import com.dfsek.terra.api.structures.parser.lang.Returnable;
import com.dfsek.terra.api.structures.parser.lang.functions.Function; import com.dfsek.terra.api.structures.parser.lang.functions.Function;
import com.dfsek.terra.api.structures.parser.lang.variables.Variable; import com.dfsek.terra.api.structures.parser.lang.variables.Variable;
import com.dfsek.terra.api.structures.script.TerraImplementationArguments; import com.dfsek.terra.api.structures.script.TerraImplementationArguments;
import com.dfsek.terra.api.structure.rotation.RotationUtil; import com.dfsek.terra.api.util.RotationUtil;
import com.dfsek.terra.api.structures.tokenizer.Position; import com.dfsek.terra.api.structures.tokenizer.Position;
import net.jafama.FastMath; import net.jafama.FastMath;
@@ -1,6 +1,7 @@
package com.dfsek.terra.api.structures.script.functions; package com.dfsek.terra.api.structures.script.functions;
import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.world.generator.SamplerCache;
import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.vector.LocationImpl;
import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.vector.Vector2;
import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.TerraWorld;
@@ -12,12 +13,11 @@ import com.dfsek.terra.api.structures.parser.lang.Returnable;
import com.dfsek.terra.api.structures.parser.lang.functions.Function; import com.dfsek.terra.api.structures.parser.lang.functions.Function;
import com.dfsek.terra.api.structures.parser.lang.variables.Variable; import com.dfsek.terra.api.structures.parser.lang.variables.Variable;
import com.dfsek.terra.api.structures.script.TerraImplementationArguments; import com.dfsek.terra.api.structures.script.TerraImplementationArguments;
import com.dfsek.terra.api.structure.rotation.RotationUtil; import com.dfsek.terra.api.util.RotationUtil;
import com.dfsek.terra.api.structures.tokenizer.Position; import com.dfsek.terra.api.structures.tokenizer.Position;
import com.dfsek.terra.api.world.biome.UserDefinedBiome; import com.dfsek.terra.api.world.biome.UserDefinedBiome;
import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
import com.dfsek.terra.config.templates.BiomeTemplate; import com.dfsek.terra.config.templates.BiomeTemplate;
import com.dfsek.terra.world.generation.math.SamplerCache;
import net.jafama.FastMath; import net.jafama.FastMath;
import java.util.Map; import java.util.Map;
@@ -12,7 +12,7 @@ import com.dfsek.terra.api.structures.parser.lang.constants.ConstantExpression;
import com.dfsek.terra.api.structures.parser.lang.functions.Function; import com.dfsek.terra.api.structures.parser.lang.functions.Function;
import com.dfsek.terra.api.structures.parser.lang.variables.Variable; import com.dfsek.terra.api.structures.parser.lang.variables.Variable;
import com.dfsek.terra.api.structures.script.TerraImplementationArguments; import com.dfsek.terra.api.structures.script.TerraImplementationArguments;
import com.dfsek.terra.api.structure.rotation.RotationUtil; import com.dfsek.terra.api.util.RotationUtil;
import com.dfsek.terra.api.structures.structure.buffer.items.BufferedEntity; import com.dfsek.terra.api.structures.structure.buffer.items.BufferedEntity;
import com.dfsek.terra.api.structures.tokenizer.Position; import com.dfsek.terra.api.structures.tokenizer.Position;
@@ -8,7 +8,7 @@ import com.dfsek.terra.api.structures.parser.lang.Returnable;
import com.dfsek.terra.api.structures.parser.lang.functions.Function; import com.dfsek.terra.api.structures.parser.lang.functions.Function;
import com.dfsek.terra.api.structures.parser.lang.variables.Variable; import com.dfsek.terra.api.structures.parser.lang.variables.Variable;
import com.dfsek.terra.api.structures.script.TerraImplementationArguments; import com.dfsek.terra.api.structures.script.TerraImplementationArguments;
import com.dfsek.terra.api.structure.rotation.RotationUtil; import com.dfsek.terra.api.util.RotationUtil;
import com.dfsek.terra.api.structures.tokenizer.Position; import com.dfsek.terra.api.structures.tokenizer.Position;
import net.jafama.FastMath; import net.jafama.FastMath;
@@ -1,18 +1,19 @@
package com.dfsek.terra.api.structures.script.functions; package com.dfsek.terra.api.structures.script.functions;
import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.structure.LootTable;
import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.vector.Vector2;
import com.dfsek.terra.vector.Vector2Impl; import com.dfsek.terra.vector.Vector2Impl;
import com.dfsek.terra.vector.Vector3Impl; import com.dfsek.terra.vector.Vector3Impl;
import com.dfsek.terra.api.registry.Registry; import com.dfsek.terra.api.registry.Registry;
import com.dfsek.terra.api.structures.loot.LootTable; import com.dfsek.terra.api.structures.loot.LootTableImpl;
import com.dfsek.terra.api.structures.parser.lang.ImplementationArguments; import com.dfsek.terra.api.structures.parser.lang.ImplementationArguments;
import com.dfsek.terra.api.structures.parser.lang.Returnable; import com.dfsek.terra.api.structures.parser.lang.Returnable;
import com.dfsek.terra.api.structures.parser.lang.functions.Function; import com.dfsek.terra.api.structures.parser.lang.functions.Function;
import com.dfsek.terra.api.structures.parser.lang.variables.Variable; import com.dfsek.terra.api.structures.parser.lang.variables.Variable;
import com.dfsek.terra.api.structures.script.StructureScript; import com.dfsek.terra.api.structures.script.StructureScript;
import com.dfsek.terra.api.structures.script.TerraImplementationArguments; import com.dfsek.terra.api.structures.script.TerraImplementationArguments;
import com.dfsek.terra.api.structure.rotation.RotationUtil; import com.dfsek.terra.api.util.RotationUtil;
import com.dfsek.terra.api.structures.structure.buffer.items.BufferedLootApplication; import com.dfsek.terra.api.structures.structure.buffer.items.BufferedLootApplication;
import com.dfsek.terra.api.structures.tokenizer.Position; import com.dfsek.terra.api.structures.tokenizer.Position;
import net.jafama.FastMath; import net.jafama.FastMath;
@@ -46,7 +47,7 @@ public class LootFunction implements Function<Void> {
RotationUtil.rotateVector(xz, arguments.getRotation()); RotationUtil.rotateVector(xz, arguments.getRotation());
String id = data.apply(implementationArguments, variableMap); String id = data.apply(implementationArguments, variableMap);
LootTable table = registry.get(id); LootTableImpl table = registry.get(id);
if(table == null) { if(table == null) {
main.logger().severe("No such loot table " + id); main.logger().severe("No such loot table " + id);
@@ -12,7 +12,7 @@ import com.dfsek.terra.api.structures.parser.lang.constants.ConstantExpression;
import com.dfsek.terra.api.structures.parser.lang.functions.Function; import com.dfsek.terra.api.structures.parser.lang.functions.Function;
import com.dfsek.terra.api.structures.parser.lang.variables.Variable; import com.dfsek.terra.api.structures.parser.lang.variables.Variable;
import com.dfsek.terra.api.structures.script.TerraImplementationArguments; import com.dfsek.terra.api.structures.script.TerraImplementationArguments;
import com.dfsek.terra.api.structure.rotation.RotationUtil; import com.dfsek.terra.api.util.RotationUtil;
import com.dfsek.terra.api.structures.structure.buffer.items.BufferedPulledBlock; import com.dfsek.terra.api.structures.structure.buffer.items.BufferedPulledBlock;
import com.dfsek.terra.api.structures.tokenizer.Position; import com.dfsek.terra.api.structures.tokenizer.Position;
import net.jafama.FastMath; import net.jafama.FastMath;
@@ -8,7 +8,7 @@ import com.dfsek.terra.api.structures.parser.lang.Returnable;
import com.dfsek.terra.api.structures.parser.lang.functions.Function; import com.dfsek.terra.api.structures.parser.lang.functions.Function;
import com.dfsek.terra.api.structures.parser.lang.variables.Variable; import com.dfsek.terra.api.structures.parser.lang.variables.Variable;
import com.dfsek.terra.api.structures.script.TerraImplementationArguments; import com.dfsek.terra.api.structures.script.TerraImplementationArguments;
import com.dfsek.terra.api.structure.rotation.RotationUtil; import com.dfsek.terra.api.util.RotationUtil;
import com.dfsek.terra.api.structures.tokenizer.Position; import com.dfsek.terra.api.structures.tokenizer.Position;
import net.jafama.FastMath; import net.jafama.FastMath;
@@ -9,7 +9,7 @@ import com.dfsek.terra.api.structures.parser.lang.Returnable;
import com.dfsek.terra.api.structures.parser.lang.functions.Function; import com.dfsek.terra.api.structures.parser.lang.functions.Function;
import com.dfsek.terra.api.structures.parser.lang.variables.Variable; import com.dfsek.terra.api.structures.parser.lang.variables.Variable;
import com.dfsek.terra.api.structures.script.TerraImplementationArguments; import com.dfsek.terra.api.structures.script.TerraImplementationArguments;
import com.dfsek.terra.api.structure.rotation.RotationUtil; import com.dfsek.terra.api.util.RotationUtil;
import com.dfsek.terra.api.structures.structure.buffer.items.BufferedStateManipulator; import com.dfsek.terra.api.structures.structure.buffer.items.BufferedStateManipulator;
import com.dfsek.terra.api.structures.tokenizer.Position; import com.dfsek.terra.api.structures.tokenizer.Position;
import net.jafama.FastMath; import net.jafama.FastMath;
@@ -1,6 +1,7 @@
package com.dfsek.terra.api.structures.script.functions; package com.dfsek.terra.api.structures.script.functions;
import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.structure.Structure;
import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.vector.Vector2;
import com.dfsek.terra.vector.Vector2Impl; import com.dfsek.terra.vector.Vector2Impl;
import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.vector.Vector3;
@@ -10,10 +11,9 @@ import com.dfsek.terra.api.structures.parser.lang.ImplementationArguments;
import com.dfsek.terra.api.structures.parser.lang.Returnable; import com.dfsek.terra.api.structures.parser.lang.Returnable;
import com.dfsek.terra.api.structures.parser.lang.functions.Function; import com.dfsek.terra.api.structures.parser.lang.functions.Function;
import com.dfsek.terra.api.structures.parser.lang.variables.Variable; import com.dfsek.terra.api.structures.parser.lang.variables.Variable;
import com.dfsek.terra.api.structures.script.StructureScript;
import com.dfsek.terra.api.structures.script.TerraImplementationArguments; import com.dfsek.terra.api.structures.script.TerraImplementationArguments;
import com.dfsek.terra.api.structure.rotation.Rotation; import com.dfsek.terra.api.structure.rotation.Rotation;
import com.dfsek.terra.api.structure.rotation.RotationUtil; import com.dfsek.terra.api.util.RotationUtil;
import com.dfsek.terra.api.structures.structure.buffer.IntermediateBuffer; import com.dfsek.terra.api.structures.structure.buffer.IntermediateBuffer;
import com.dfsek.terra.api.structures.tokenizer.Position; import com.dfsek.terra.api.structures.tokenizer.Position;
import net.jafama.FastMath; import net.jafama.FastMath;
@@ -22,14 +22,14 @@ import java.util.List;
import java.util.Map; import java.util.Map;
public class StructureFunction implements Function<Boolean> { public class StructureFunction implements Function<Boolean> {
private final Registry<StructureScript> registry; private final Registry<Structure> registry;
private final Returnable<String> id; private final Returnable<String> id;
private final Returnable<Number> x, y, z; private final Returnable<Number> x, y, z;
private final Position position; private final Position position;
private final TerraPlugin main; private final TerraPlugin main;
private final List<Returnable<String>> rotations; private final List<Returnable<String>> rotations;
public StructureFunction(Returnable<Number> x, Returnable<Number> y, Returnable<Number> z, Returnable<String> id, List<Returnable<String>> rotations, Registry<StructureScript> registry, Position position, TerraPlugin main) { public StructureFunction(Returnable<Number> x, Returnable<Number> y, Returnable<Number> z, Returnable<String> id, List<Returnable<String>> rotations, Registry<Structure> registry, Position position, TerraPlugin main) {
this.registry = registry; this.registry = registry;
this.id = id; this.id = id;
this.position = position; this.position = position;
@@ -57,7 +57,7 @@ public class StructureFunction implements Function<Boolean> {
RotationUtil.rotateVector(xz, arguments.getRotation()); RotationUtil.rotateVector(xz, arguments.getRotation());
String app = id.apply(implementationArguments, variableMap); String app = id.apply(implementationArguments, variableMap);
StructureScript script = registry.get(app); Structure script = registry.get(app);
if(script == null) { if(script == null) {
main.logger().severe("No such structure " + app); main.logger().severe("No such structure " + app);
return null; return null;
@@ -74,7 +74,7 @@ public class StructureFunction implements Function<Boolean> {
Vector3 offset = new Vector3Impl(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).doubleValue(), FastMath.roundToInt(xz.getZ())); Vector3 offset = new Vector3Impl(FastMath.roundToInt(xz.getX()), y.apply(implementationArguments, variableMap).doubleValue(), FastMath.roundToInt(xz.getZ()));
return script.executeInBuffer(new IntermediateBuffer(arguments.getBuffer(), offset), arguments.getRandom(), arguments.getRotation().rotate(rotation1), arguments.getRecursions() + 1); return script.generate(new IntermediateBuffer(arguments.getBuffer(), offset), arguments.getRandom(), arguments.getRotation().rotate(rotation1), arguments.getRecursions() + 1);
} }
@Override @Override
@@ -1,6 +1,7 @@
package com.dfsek.terra.api.structures.structure.buffer; package com.dfsek.terra.api.structures.structure.buffer;
import com.dfsek.terra.api.structure.buffer.Buffer; import com.dfsek.terra.api.structure.buffer.Buffer;
import com.dfsek.terra.api.vector.Location;
import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.vector.LocationImpl;
import com.dfsek.terra.api.structure.buffer.BufferedItem; import com.dfsek.terra.api.structure.buffer.BufferedItem;
@@ -11,31 +12,31 @@ import java.util.Map;
* Buffer implementation that directly pastes to the world. * Buffer implementation that directly pastes to the world.
*/ */
public class DirectBuffer implements Buffer { public class DirectBuffer implements Buffer {
private final LocationImpl origin; private final Location origin;
private final Map<LocationImpl, String> marks = new LinkedHashMap<>(); private final Map<Location, String> marks = new LinkedHashMap<>();
public DirectBuffer(LocationImpl origin) { public DirectBuffer(Location origin) {
this.origin = origin; this.origin = origin;
} }
@Override @Override
public Buffer addItem(BufferedItem item, LocationImpl location) { public Buffer addItem(BufferedItem item, Location location) {
item.paste(origin.clone().add(location)); item.paste(origin.clone().add(location));
return this; return this;
} }
@Override @Override
public LocationImpl getOrigin() { public Location getOrigin() {
return origin; return origin;
} }
@Override @Override
public String getMark(LocationImpl location) { public String getMark(Location location) {
return marks.get(location); return marks.get(location);
} }
@Override @Override
public Buffer setMark(String mark, LocationImpl location) { public Buffer setMark(String mark, Location location) {
marks.put(location, mark); marks.put(location, mark);
return this; return this;
} }
@@ -7,16 +7,16 @@ import com.dfsek.terra.vector.LocationImpl;
import com.dfsek.terra.api.block.Block; import com.dfsek.terra.api.block.Block;
import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.block.state.BlockState;
import com.dfsek.terra.api.block.state.Container; import com.dfsek.terra.api.block.state.Container;
import com.dfsek.terra.api.structures.loot.LootTable; import com.dfsek.terra.api.structures.loot.LootTableImpl;
import com.dfsek.terra.api.structures.script.StructureScript; import com.dfsek.terra.api.structures.script.StructureScript;
import com.dfsek.terra.api.util.FastRandom; import com.dfsek.terra.api.util.FastRandom;
public class BufferedLootApplication implements BufferedItem { public class BufferedLootApplication implements BufferedItem {
private final LootTable table; private final LootTableImpl table;
private final TerraPlugin main; private final TerraPlugin main;
private final StructureScript structure; private final StructureScript structure;
public BufferedLootApplication(LootTable table, TerraPlugin main, StructureScript structure) { public BufferedLootApplication(LootTableImpl table, TerraPlugin main, StructureScript structure) {
this.table = table; this.table = table;
this.main = main; this.main = main;
this.structure = structure; this.structure = structure;
@@ -1,4 +1,4 @@
package com.dfsek.terra.api.util.world; package com.dfsek.terra.api.util;
import com.dfsek.terra.api.util.MathUtil; import com.dfsek.terra.api.util.MathUtil;
import com.dfsek.terra.api.world.generator.Palette; import com.dfsek.terra.api.world.generator.Palette;
@@ -0,0 +1,28 @@
package com.dfsek.terra.api.util;
import com.dfsek.terra.api.world.Chunk;
import java.util.Random;
public final class PopulationUtil {
public static FastRandom getRandom(Chunk c) {
return getRandom(c, 0);
}
public static FastRandom getRandom(Chunk c, long salt) {
return new FastRandom(getCarverChunkSeed(c.getX(), c.getZ(), c.getWorld().getSeed() + salt));
}
/**
* Gets the carver seed for a chunk.
*
* @param chunkX Chunk's X coordinate
* @param chunkZ Chunk's Z coordinate
* @param seed World seed
* @return long - The carver seed.
*/
public static long getCarverChunkSeed(int chunkX, int chunkZ, long seed) {
Random r = new FastRandom(seed);
return chunkX * r.nextLong() ^ chunkZ * r.nextLong() ^ seed;
}
}
@@ -1,5 +1,6 @@
package com.dfsek.terra.api.structure.rotation; package com.dfsek.terra.api.util;
import com.dfsek.terra.api.structure.rotation.Rotation;
import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.vector.Vector2;
import com.dfsek.terra.api.block.Axis; import com.dfsek.terra.api.block.Axis;
import com.dfsek.terra.api.block.BlockData; import com.dfsek.terra.api.block.BlockData;
@@ -1,5 +1,7 @@
package com.dfsek.terra.api.util.logging; package com.dfsek.terra.api.util.logging;
import com.dfsek.terra.api.Logger;
public class DebugLogger { public class DebugLogger {
private final Logger logger; private final Logger logger;
private boolean debug = false; private boolean debug = false;
@@ -1,5 +1,7 @@
package com.dfsek.terra.api.util.logging; package com.dfsek.terra.api.util.logging;
import com.dfsek.terra.api.Logger;
public class JavaLogger implements Logger { public class JavaLogger implements Logger {
private final java.util.logging.Logger logger; private final java.util.logging.Logger logger;
@@ -1,15 +0,0 @@
package com.dfsek.terra.api.util.world;
import com.dfsek.terra.api.util.MathUtil;
import com.dfsek.terra.api.world.Chunk;
import com.dfsek.terra.api.util.FastRandom;
public final class PopulationUtil {
public static FastRandom getRandom(Chunk c) {
return getRandom(c, 0);
}
public static FastRandom getRandom(Chunk c, long salt) {
return new FastRandom(MathUtil.getCarverChunkSeed(c.getX(), c.getZ(), c.getWorld().getSeed() + salt));
}
}
@@ -1,7 +1,7 @@
package com.dfsek.terra.api.world.locate; package com.dfsek.terra.api.world.locate;
import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.util.MathUtil; import com.dfsek.terra.api.util.PopulationUtil;
import com.dfsek.terra.vector.LocationImpl; import com.dfsek.terra.vector.LocationImpl;
import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.vector.Vector3;
import com.dfsek.terra.api.structure.rotation.Rotation; import com.dfsek.terra.api.structure.rotation.Rotation;
@@ -30,7 +30,7 @@ public class AsyncStructureFinder extends AsyncFeatureFinder<TerraStructure> {
public boolean isValid(int x, int z, TerraStructure target) { public boolean isValid(int x, int z, TerraStructure target) {
LocationImpl spawn = target.getSpawn().getChunkSpawn(x, z, world.getSeed()).toLocation(world); LocationImpl spawn = target.getSpawn().getChunkSpawn(x, z, world.getSeed()).toLocation(world);
if(!((UserDefinedBiome) provider.getBiome(spawn)).getConfig().getStructures().contains(target)) return false; if(!((UserDefinedBiome) provider.getBiome(spawn)).getConfig().getStructures().contains(target)) return false;
Random random = new FastRandom(MathUtil.getCarverChunkSeed(FastMath.floorDiv(spawn.getBlockX(), 16), FastMath.floorDiv(spawn.getBlockZ(), 16), world.getSeed())); Random random = new FastRandom(PopulationUtil.getCarverChunkSeed(FastMath.floorDiv(spawn.getBlockX(), 16), FastMath.floorDiv(spawn.getBlockZ(), 16), world.getSeed()));
return target.getStructure().get(random).test(spawn.setY(target.getSpawnStart().get(random)), random, Rotation.fromDegrees(90 * random.nextInt(4))); return target.getStructure().get(random).test(spawn.setY(target.getSpawnStart().get(random)), random, Rotation.fromDegrees(90 * random.nextInt(4)));
} }
} }
@@ -2,6 +2,7 @@ package com.dfsek.terra.carving;
import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.util.MathUtil; import com.dfsek.terra.api.util.MathUtil;
import com.dfsek.terra.api.util.PopulationUtil;
import com.dfsek.terra.vector.Vector3Impl; import com.dfsek.terra.vector.Vector3Impl;
import com.dfsek.terra.api.world.World; import com.dfsek.terra.api.world.World;
import com.dfsek.terra.api.util.FastRandom; import com.dfsek.terra.api.util.FastRandom;
@@ -33,8 +34,8 @@ public class CarverCache {
int chunkX = (int) (key >> 32); int chunkX = (int) (key >> 32);
int chunkZ = (int) key.longValue(); int chunkZ = (int) key.longValue();
BiomeProvider provider = main.getWorld(w).getBiomeProvider(); BiomeProvider provider = main.getWorld(w).getBiomeProvider();
if(CarverCache.this.carver.isChunkCarved(w, chunkX, chunkZ, new FastRandom(MathUtil.getCarverChunkSeed(chunkX, chunkZ, w.getSeed() + CarverCache.this.carver.hashCode())))) { if(CarverCache.this.carver.isChunkCarved(w, chunkX, chunkZ, new FastRandom(PopulationUtil.getCarverChunkSeed(chunkX, chunkZ, w.getSeed() + CarverCache.this.carver.hashCode())))) {
long seed = MathUtil.getCarverChunkSeed(chunkX, chunkZ, w.getSeed()); long seed = PopulationUtil.getCarverChunkSeed(chunkX, chunkZ, w.getSeed());
Random r = new FastRandom(seed); Random r = new FastRandom(seed);
Worm carving = CarverCache.this.carver.getWorm(seed, new Vector3Impl((chunkX << 4) + r.nextInt(16), CarverCache.this.carver.getConfig().getHeight().get(r), (chunkZ << 4) + r.nextInt(16))); Worm carving = CarverCache.this.carver.getWorm(seed, new Vector3Impl((chunkX << 4) + r.nextInt(16), CarverCache.this.carver.getConfig().getHeight().get(r), (chunkZ << 4) + r.nextInt(16)));
List<Worm.WormPoint> points = new GlueList<>(); List<Worm.WormPoint> points = new GlueList<>();
@@ -14,7 +14,7 @@ import com.dfsek.terra.api.command.arg.IntegerArgumentParser;
import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.injection.annotations.Inject;
import com.dfsek.terra.api.entity.CommandSender; import com.dfsek.terra.api.entity.CommandSender;
import com.dfsek.terra.api.entity.Player; import com.dfsek.terra.api.entity.Player;
import com.dfsek.terra.api.structures.script.StructureScript; import com.dfsek.terra.api.structure.Structure;
import com.dfsek.terra.api.structure.rotation.Rotation; import com.dfsek.terra.api.structure.rotation.Rotation;
import com.dfsek.terra.api.util.FastRandom; import com.dfsek.terra.api.util.FastRandom;
import com.dfsek.terra.commands.structure.argument.ScriptArgumentParser; import com.dfsek.terra.commands.structure.argument.ScriptArgumentParser;
@@ -56,7 +56,7 @@ public class StructureLoadCommand implements CommandTemplate {
private boolean chunk; private boolean chunk;
@ArgumentTarget("structure") @ArgumentTarget("structure")
private StructureScript script; private Structure script;
@Inject @Inject
private TerraPlugin main; private TerraPlugin main;
@@ -79,9 +79,9 @@ public class StructureLoadCommand implements CommandTemplate {
return; return;
} }
if(this.chunk) { if(this.chunk) {
script.execute(player.getLocation(), player.getWorld().getChunkAt(player.getLocation()), random, r); script.generate(player.getLocation(), player.getWorld().getChunkAt(player.getLocation()), random, r);
} else { } else {
script.execute(player.getLocation(), random, r); script.generate(player.getLocation(), random, r);
} }
long l = System.nanoTime() - t; long l = System.nanoTime() - t;
@@ -5,14 +5,15 @@ import com.dfsek.terra.api.command.arg.ArgumentParser;
import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.injection.annotations.Inject;
import com.dfsek.terra.api.entity.CommandSender; import com.dfsek.terra.api.entity.CommandSender;
import com.dfsek.terra.api.entity.Player; import com.dfsek.terra.api.entity.Player;
import com.dfsek.terra.api.structure.Structure;
import com.dfsek.terra.api.structures.script.StructureScript; import com.dfsek.terra.api.structures.script.StructureScript;
public class ScriptArgumentParser implements ArgumentParser<StructureScript> { public class ScriptArgumentParser implements ArgumentParser<Structure> {
@Inject @Inject
private TerraPlugin main; private TerraPlugin main;
@Override @Override
public StructureScript parse(CommandSender sender, String arg) { public Structure parse(CommandSender sender, String arg) {
return main.getWorld(((Player) sender).getWorld()).getConfig().getRegistry(StructureScript.class).get(arg); return main.getWorld(((Player) sender).getWorld()).getConfig().getRegistry(StructureScript.class).get(arg);
} }
} }
@@ -5,6 +5,7 @@ import com.dfsek.terra.api.command.tab.TabCompleter;
import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.injection.annotations.Inject;
import com.dfsek.terra.api.entity.CommandSender; import com.dfsek.terra.api.entity.CommandSender;
import com.dfsek.terra.api.entity.Player; import com.dfsek.terra.api.entity.Player;
import com.dfsek.terra.api.structure.Structure;
import com.dfsek.terra.api.structures.script.StructureScript; import com.dfsek.terra.api.structures.script.StructureScript;
import java.util.List; import java.util.List;
@@ -16,6 +17,6 @@ public class ScriptCompleter implements TabCompleter {
@Override @Override
public List<String> complete(CommandSender sender) { public List<String> complete(CommandSender sender) {
return main.getWorld(((Player) sender).getWorld()).getConfig().getRegistry(StructureScript.class).entries().stream().map(StructureScript::getId).collect(Collectors.toList()); return main.getWorld(((Player) sender).getWorld()).getConfig().getRegistry(StructureScript.class).entries().stream().map(Structure::getId).collect(Collectors.toList());
} }
} }
@@ -6,8 +6,8 @@ import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.addon.TerraAddon; import com.dfsek.terra.api.addon.TerraAddon;
import com.dfsek.terra.api.math.GridSpawn; import com.dfsek.terra.api.math.GridSpawn;
import com.dfsek.terra.api.math.range.ConstantRange; import com.dfsek.terra.api.math.range.ConstantRange;
import com.dfsek.terra.api.noise.samplers.ImageSampler; import com.dfsek.terra.noise.samplers.ImageSampler;
import com.dfsek.terra.api.noise.samplers.noise.CellularSampler; import com.dfsek.terra.noise.samplers.noise.CellularSampler;
import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.block.BlockType;
import com.dfsek.terra.api.util.collections.MaterialSet; import com.dfsek.terra.api.util.collections.MaterialSet;
import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl;
@@ -7,7 +7,7 @@ import com.dfsek.tectonic.exception.ConfigException;
import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.tectonic.loading.ConfigLoader;
import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.util.JarUtil; import com.dfsek.terra.api.util.JarUtil;
import com.dfsek.terra.api.util.logging.Logger; import com.dfsek.terra.api.Logger;
import java.io.File; import java.io.File;
import java.io.FileInputStream; import java.io.FileInputStream;
@@ -17,7 +17,7 @@ import java.time.Duration;
import java.util.jar.JarFile; import java.util.jar.JarFile;
@SuppressWarnings("FieldMayBeFinal") @SuppressWarnings("FieldMayBeFinal")
public class PluginConfig implements ConfigTemplate { public class PluginConfigImpl implements ConfigTemplate, com.dfsek.terra.api.config.PluginConfig {
@Value("debug.commands") @Value("debug.commands")
@Default @Default
private boolean debugCommands = false; private boolean debugCommands = false;
@@ -74,6 +74,7 @@ public class PluginConfig implements ConfigTemplate {
@Default @Default
private int maxRecursion = 1000; private int maxRecursion = 1000;
@Override
public void load(TerraPlugin main) { public void load(TerraPlugin main) {
Logger logger = main.logger(); Logger logger = main.logger();
logger.info("Loading config values"); logger.info("Loading config values");
@@ -84,9 +85,9 @@ public class PluginConfig implements ConfigTemplate {
try(JarFile jar = main.getModJar()) { try(JarFile jar = main.getModJar()) {
JarUtil.copyResourcesToDirectory(jar, "packs", new File(main.getDataFolder(), "packs").toString()); JarUtil.copyResourcesToDirectory(jar, "packs", new File(main.getDataFolder(), "packs").toString());
} catch(IOException | URISyntaxException e) { } catch(IOException | URISyntaxException e) {
main.getDebugLogger().error("Failed to dump default config files!"); main.getDebugLogger().severe("Failed to dump default config files!");
e.printStackTrace(); e.printStackTrace();
main.getDebugLogger().error("Either you're on Forge, or this is a bug. If it's the latter, report this to Terra!"); main.getDebugLogger().severe("Either you're on Forge, or this is a bug. If it's the latter, report this to Terra!");
} }
} }
} catch(ConfigException | IOException e) { } catch(ConfigException | IOException e) {
@@ -99,54 +100,67 @@ public class PluginConfig implements ConfigTemplate {
if(isDebugScript()) logger.info("Script debug blocks enabled."); if(isDebugScript()) logger.info("Script debug blocks enabled.");
} }
@Override
public String getLanguage() { public String getLanguage() {
return language; return language;
} }
@Override
public boolean isDebugCommands() { public boolean isDebugCommands() {
return debugCommands; return debugCommands;
} }
@Override
public boolean isDebugLogging() { public boolean isDebugLogging() {
return debugLog; return debugLog;
} }
@Override
public boolean isDebugProfiler() { public boolean isDebugProfiler() {
return debugProfiler; return debugProfiler;
} }
@Override
public boolean isDebugScript() { public boolean isDebugScript() {
return debugScript; return debugScript;
} }
@Override
public long getDataSaveInterval() { public long getDataSaveInterval() {
return dataSave.toMillis() / 20L; return dataSave.toMillis() / 20L;
} }
@Override
public int getBiomeSearchResolution() { public int getBiomeSearchResolution() {
return biomeSearch; return biomeSearch;
} }
@Override
public int getCarverCacheSize() { public int getCarverCacheSize() {
return carverCache; return carverCache;
} }
@Override
public int getStructureCache() { public int getStructureCache() {
return structureCache; return structureCache;
} }
@Override
public int getSamplerCache() { public int getSamplerCache() {
return samplerCache; return samplerCache;
} }
@Override
public int getMaxRecursion() { public int getMaxRecursion() {
return maxRecursion; return maxRecursion;
} }
@Override
public int getBiomeCache() { public int getBiomeCache() {
return biomeCache; return biomeCache;
} }
@Override
public int getProviderCache() { public int getProviderCache() {
return providerCache; return providerCache;
} }
@@ -3,8 +3,8 @@ package com.dfsek.terra.config.builder;
import com.dfsek.paralithic.eval.parser.Scope; import com.dfsek.paralithic.eval.parser.Scope;
import com.dfsek.paralithic.eval.tokenizer.ParseException; import com.dfsek.paralithic.eval.tokenizer.ParseException;
import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.noise.NoiseSampler;
import com.dfsek.terra.api.noise.samplers.ExpressionSampler; import com.dfsek.terra.noise.samplers.ExpressionSampler;
import com.dfsek.terra.api.noise.samplers.noise.ConstantSampler; import com.dfsek.terra.noise.samplers.noise.ConstantSampler;
import com.dfsek.terra.api.world.biome.Biome; import com.dfsek.terra.api.world.biome.Biome;
import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl;
import com.dfsek.terra.api.util.seeded.NoiseSeeded; import com.dfsek.terra.api.util.seeded.NoiseSeeded;
@@ -1,7 +1,7 @@
package com.dfsek.terra.config.factories; package com.dfsek.terra.config.factories;
import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.noise.samplers.noise.random.WhiteNoiseSampler; import com.dfsek.terra.noise.samplers.noise.random.WhiteNoiseSampler;
import com.dfsek.terra.api.world.Flora; import com.dfsek.terra.api.world.Flora;
import com.dfsek.terra.api.world.palette.NoisePalette; import com.dfsek.terra.api.world.palette.NoisePalette;
import com.dfsek.terra.api.world.palette.PaletteImpl; import com.dfsek.terra.api.world.palette.PaletteImpl;
@@ -2,7 +2,8 @@ package com.dfsek.terra.config.lang;
import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.entity.CommandSender; import com.dfsek.terra.api.entity.CommandSender;
import com.dfsek.terra.api.util.logging.Logger; import com.dfsek.terra.api.Logger;
import com.dfsek.terra.api.lang.Language;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
@@ -26,7 +27,7 @@ public final class LangUtil {
try { try {
File file1 = new File(file, langID + ".yml"); File file1 = new File(file, langID + ".yml");
logger.info(file1.getAbsolutePath()); logger.info(file1.getAbsolutePath());
language = new Language(file1); language = new LanguageImpl(file1);
logger.info("Loaded language " + langID); logger.info("Loaded language " + langID);
} catch(IOException e) { } catch(IOException e) {
logger.severe("Unable to load language: " + langID); logger.severe("Unable to load language: " + langID);
@@ -3,6 +3,7 @@ package com.dfsek.terra.config.lang;
import com.dfsek.tectonic.config.Configuration; import com.dfsek.tectonic.config.Configuration;
import com.dfsek.terra.api.entity.CommandSender; import com.dfsek.terra.api.entity.CommandSender;
import com.dfsek.terra.api.lang.Message;
import java.io.File; import java.io.File;
import java.io.FileInputStream; import java.io.FileInputStream;
@@ -11,11 +12,12 @@ import java.util.List;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.logging.Logger; import java.util.logging.Logger;
public class Language { public class LanguageImpl implements com.dfsek.terra.api.lang.Language {
private final Configuration configuration; private final Configuration configuration;
public Language(File file) throws IOException { public LanguageImpl(File file) throws IOException {
configuration = new Configuration(new FileInputStream(file)); configuration = new Configuration(new FileInputStream(file));
} }
@Override
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public Message getMessage(String id) { public Message getMessage(String id) {
Message temp = null; Message temp = null;
@@ -31,9 +33,11 @@ public class Language {
if(temp == null || temp.isEmpty()) return new SingleLineMessage("message:" + id + ":translation_undefined"); if(temp == null || temp.isEmpty()) return new SingleLineMessage("message:" + id + ":translation_undefined");
return temp; return temp;
} }
@Override
public void log(String messageID, Level level, Logger logger, String... args) { public void log(String messageID, Level level, Logger logger, String... args) {
getMessage(messageID).log(logger, level, args); getMessage(messageID).log(logger, level, args);
} }
@Override
public void send(String messageID, CommandSender sender, String... args) { public void send(String messageID, CommandSender sender, String... args) {
getMessage(messageID).send(sender, args); getMessage(messageID).send(sender, args);
} }
@@ -1,6 +1,7 @@
package com.dfsek.terra.config.lang; package com.dfsek.terra.config.lang;
import com.dfsek.terra.api.entity.CommandSender; import com.dfsek.terra.api.entity.CommandSender;
import com.dfsek.terra.api.lang.Message;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
@@ -2,6 +2,7 @@ package com.dfsek.terra.config.lang;
import com.dfsek.terra.api.entity.CommandSender; import com.dfsek.terra.api.entity.CommandSender;
import com.dfsek.terra.api.lang.Message;
import java.util.Arrays; import java.util.Arrays;
import java.util.logging.Level; import java.util.logging.Level;
@@ -5,7 +5,7 @@ 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.ConstantRange; import com.dfsek.terra.api.math.range.ConstantRange;
import com.dfsek.terra.api.noise.samplers.noise.random.WhiteNoiseSampler; import com.dfsek.terra.noise.samplers.noise.random.WhiteNoiseSampler;
import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl;
import com.dfsek.terra.api.util.seeded.NoiseSeeded; import com.dfsek.terra.api.util.seeded.NoiseSeeded;
import com.dfsek.terra.api.world.Flora; import com.dfsek.terra.api.world.Flora;
@@ -4,7 +4,7 @@ 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.ConstantRange; import com.dfsek.terra.api.math.range.ConstantRange;
import com.dfsek.terra.api.noise.samplers.noise.random.WhiteNoiseSampler; import com.dfsek.terra.noise.samplers.noise.random.WhiteNoiseSampler;
import com.dfsek.terra.api.world.Tree; import com.dfsek.terra.api.world.Tree;
import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl;
import com.dfsek.terra.api.util.seeded.NoiseSeeded; import com.dfsek.terra.api.util.seeded.NoiseSeeded;
@@ -4,7 +4,7 @@ import com.dfsek.tectonic.annotations.Default;
import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.annotations.Value;
import com.dfsek.tectonic.loading.object.ObjectTemplate; import com.dfsek.tectonic.loading.object.ObjectTemplate;
import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.noise.NoiseSampler;
import com.dfsek.terra.api.noise.samplers.noise.ConstantSampler; import com.dfsek.terra.noise.samplers.noise.ConstantSampler;
import com.dfsek.terra.api.util.seeded.NoiseSeeded; import com.dfsek.terra.api.util.seeded.NoiseSeeded;
import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
@@ -3,7 +3,7 @@ package com.dfsek.terra.config.loaders.config.sampler.templates;
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.api.noise.NoiseSampler; import com.dfsek.terra.api.noise.NoiseSampler;
import com.dfsek.terra.api.noise.samplers.DomainWarpedSampler; import com.dfsek.terra.noise.samplers.DomainWarpedSampler;
import com.dfsek.terra.api.util.seeded.NoiseSeeded; import com.dfsek.terra.api.util.seeded.NoiseSeeded;
@SuppressWarnings({"unused", "FieldMayBeFinal"}) @SuppressWarnings({"unused", "FieldMayBeFinal"})
@@ -2,7 +2,7 @@ package com.dfsek.terra.config.loaders.config.sampler.templates;
import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.annotations.Value;
import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.noise.NoiseSampler;
import com.dfsek.terra.api.noise.samplers.ImageSampler; import com.dfsek.terra.noise.samplers.ImageSampler;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;
@@ -5,7 +5,7 @@ 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.noise.NoiseSampler; import com.dfsek.terra.api.noise.NoiseSampler;
import com.dfsek.terra.api.noise.samplers.KernelSampler; import com.dfsek.terra.noise.samplers.KernelSampler;
import com.dfsek.terra.api.util.seeded.NoiseSeeded; import com.dfsek.terra.api.util.seeded.NoiseSeeded;
import java.util.List; import java.util.List;
@@ -3,8 +3,8 @@ package com.dfsek.terra.config.loaders.config.sampler.templates.noise;
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.api.noise.NoiseSampler; import com.dfsek.terra.api.noise.NoiseSampler;
import com.dfsek.terra.api.noise.samplers.noise.CellularSampler; import com.dfsek.terra.noise.samplers.noise.CellularSampler;
import com.dfsek.terra.api.noise.samplers.noise.simplex.OpenSimplex2Sampler; import com.dfsek.terra.noise.samplers.noise.simplex.OpenSimplex2Sampler;
import com.dfsek.terra.api.util.seeded.NoiseSeeded; import com.dfsek.terra.api.util.seeded.NoiseSeeded;
@SuppressWarnings("FieldMayBeFinal") @SuppressWarnings("FieldMayBeFinal")
@@ -3,7 +3,7 @@ package com.dfsek.terra.config.loaders.config.sampler.templates.noise;
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.api.noise.NoiseSampler; import com.dfsek.terra.api.noise.NoiseSampler;
import com.dfsek.terra.api.noise.samplers.noise.ConstantSampler; import com.dfsek.terra.noise.samplers.noise.ConstantSampler;
import com.dfsek.terra.config.loaders.config.sampler.templates.SamplerTemplate; import com.dfsek.terra.config.loaders.config.sampler.templates.SamplerTemplate;
@SuppressWarnings("FieldMayBeFinal") @SuppressWarnings("FieldMayBeFinal")
@@ -9,7 +9,7 @@ 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.noise.NoiseSampler; import com.dfsek.terra.api.noise.NoiseSampler;
import com.dfsek.terra.api.noise.samplers.noise.ExpressionFunction; import com.dfsek.terra.noise.samplers.noise.ExpressionFunction;
import com.dfsek.terra.api.math.paralithic.defined.UserDefinedFunction; import com.dfsek.terra.api.math.paralithic.defined.UserDefinedFunction;
import com.dfsek.terra.api.math.paralithic.noise.NoiseFunction2; import com.dfsek.terra.api.math.paralithic.noise.NoiseFunction2;
import com.dfsek.terra.api.math.paralithic.noise.NoiseFunction3; import com.dfsek.terra.api.math.paralithic.noise.NoiseFunction3;
@@ -3,7 +3,7 @@ package com.dfsek.terra.config.loaders.config.sampler.templates.noise;
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.api.noise.NoiseSampler; import com.dfsek.terra.api.noise.NoiseSampler;
import com.dfsek.terra.api.noise.samplers.noise.GaborNoiseSampler; import com.dfsek.terra.noise.samplers.noise.GaborNoiseSampler;
public class GaborNoiseTemplate extends NoiseTemplate<GaborNoiseSampler> { public class GaborNoiseTemplate extends NoiseTemplate<GaborNoiseSampler> {
@Value("rotation") @Value("rotation")
@@ -2,7 +2,7 @@ package com.dfsek.terra.config.loaders.config.sampler.templates.noise;
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.api.noise.samplers.noise.NoiseFunction; import com.dfsek.terra.noise.samplers.noise.NoiseFunction;
import com.dfsek.terra.config.loaders.config.sampler.templates.SamplerTemplate; import com.dfsek.terra.config.loaders.config.sampler.templates.SamplerTemplate;
@SuppressWarnings({"unused", "FieldMayBeFinal"}) @SuppressWarnings({"unused", "FieldMayBeFinal"})
@@ -1,7 +1,7 @@
package com.dfsek.terra.config.loaders.config.sampler.templates.noise; package com.dfsek.terra.config.loaders.config.sampler.templates.noise;
import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.noise.NoiseSampler;
import com.dfsek.terra.api.noise.samplers.noise.NoiseFunction; import com.dfsek.terra.noise.samplers.noise.NoiseFunction;
import java.util.function.Function; import java.util.function.Function;
@@ -1,7 +1,7 @@
package com.dfsek.terra.config.loaders.config.sampler.templates.noise.fractal; package com.dfsek.terra.config.loaders.config.sampler.templates.noise.fractal;
import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.noise.NoiseSampler;
import com.dfsek.terra.api.noise.samplers.noise.fractal.BrownianMotionSampler; import com.dfsek.terra.noise.samplers.noise.fractal.BrownianMotionSampler;
public class BrownianMotionTemplate extends FractalTemplate<BrownianMotionSampler> { public class BrownianMotionTemplate extends FractalTemplate<BrownianMotionSampler> {
@Override @Override
@@ -2,7 +2,7 @@ package com.dfsek.terra.config.loaders.config.sampler.templates.noise.fractal;
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.api.noise.samplers.noise.fractal.FractalNoiseFunction; import com.dfsek.terra.noise.samplers.noise.fractal.FractalNoiseFunction;
import com.dfsek.terra.api.util.seeded.NoiseSeeded; import com.dfsek.terra.api.util.seeded.NoiseSeeded;
import com.dfsek.terra.config.loaders.config.sampler.templates.SamplerTemplate; import com.dfsek.terra.config.loaders.config.sampler.templates.SamplerTemplate;
@@ -3,7 +3,7 @@ package com.dfsek.terra.config.loaders.config.sampler.templates.noise.fractal;
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.api.noise.NoiseSampler; import com.dfsek.terra.api.noise.NoiseSampler;
import com.dfsek.terra.api.noise.samplers.noise.fractal.PingPongSampler; import com.dfsek.terra.noise.samplers.noise.fractal.PingPongSampler;
@SuppressWarnings({"unused", "FieldMayBeFinal"}) @SuppressWarnings({"unused", "FieldMayBeFinal"})
public class PingPongTemplate extends FractalTemplate<PingPongSampler> { public class PingPongTemplate extends FractalTemplate<PingPongSampler> {
@Value("ping-pong") @Value("ping-pong")
@@ -1,7 +1,7 @@
package com.dfsek.terra.config.loaders.config.sampler.templates.noise.fractal; package com.dfsek.terra.config.loaders.config.sampler.templates.noise.fractal;
import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.noise.NoiseSampler;
import com.dfsek.terra.api.noise.samplers.noise.fractal.RidgedFractalSampler; import com.dfsek.terra.noise.samplers.noise.fractal.RidgedFractalSampler;
public class RidgedFractalTemplate extends FractalTemplate<RidgedFractalSampler> { public class RidgedFractalTemplate extends FractalTemplate<RidgedFractalSampler> {
@Override @Override
@@ -2,8 +2,8 @@ package com.dfsek.terra.config.loaders.config.sampler.templates.normalizer;
import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.annotations.Value;
import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.noise.NoiseSampler;
import com.dfsek.terra.api.noise.normalizer.ClampNormalizer; import com.dfsek.terra.noise.normalizer.ClampNormalizer;
import com.dfsek.terra.api.noise.normalizer.LinearNormalizer; import com.dfsek.terra.noise.normalizer.LinearNormalizer;
@SuppressWarnings({"unused", "FieldMayBeFinal"}) @SuppressWarnings({"unused", "FieldMayBeFinal"})
public class ClampNormalizerTemplate extends NormalizerTemplate<LinearNormalizer> { public class ClampNormalizerTemplate extends NormalizerTemplate<LinearNormalizer> {
@@ -2,7 +2,7 @@ package com.dfsek.terra.config.loaders.config.sampler.templates.normalizer;
import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.annotations.Value;
import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.noise.NoiseSampler;
import com.dfsek.terra.api.noise.normalizer.LinearNormalizer; import com.dfsek.terra.noise.normalizer.LinearNormalizer;
@SuppressWarnings({"unused", "FieldMayBeFinal"}) @SuppressWarnings({"unused", "FieldMayBeFinal"})
public class LinearNormalizerTemplate extends NormalizerTemplate<LinearNormalizer> { public class LinearNormalizerTemplate extends NormalizerTemplate<LinearNormalizer> {
@@ -3,7 +3,7 @@ package com.dfsek.terra.config.loaders.config.sampler.templates.normalizer;
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.api.noise.NoiseSampler; import com.dfsek.terra.api.noise.NoiseSampler;
import com.dfsek.terra.api.noise.normalizer.NormalNormalizer; import com.dfsek.terra.noise.normalizer.NormalNormalizer;
@SuppressWarnings({"unused", "FieldMayBeFinal"}) @SuppressWarnings({"unused", "FieldMayBeFinal"})
public class NormalNormalizerTemplate extends NormalizerTemplate<NormalNormalizer> { public class NormalNormalizerTemplate extends NormalizerTemplate<NormalNormalizer> {
@@ -1,7 +1,7 @@
package com.dfsek.terra.config.loaders.config.sampler.templates.normalizer; package com.dfsek.terra.config.loaders.config.sampler.templates.normalizer;
import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.annotations.Value;
import com.dfsek.terra.api.noise.normalizer.Normalizer; import com.dfsek.terra.noise.normalizer.Normalizer;
import com.dfsek.terra.api.util.seeded.NoiseSeeded; import com.dfsek.terra.api.util.seeded.NoiseSeeded;
import com.dfsek.terra.config.loaders.config.sampler.templates.SamplerTemplate; import com.dfsek.terra.config.loaders.config.sampler.templates.SamplerTemplate;
@@ -15,7 +15,8 @@ import com.dfsek.terra.api.event.events.config.ConfigPackPreLoadEvent;
import com.dfsek.terra.api.registry.CheckedRegistry; import com.dfsek.terra.api.registry.CheckedRegistry;
import com.dfsek.terra.api.registry.OpenRegistry; import com.dfsek.terra.api.registry.OpenRegistry;
import com.dfsek.terra.api.registry.Registry; import com.dfsek.terra.api.registry.Registry;
import com.dfsek.terra.api.structures.loot.LootTable; import com.dfsek.terra.api.structure.Structure;
import com.dfsek.terra.api.structures.loot.LootTableImpl;
import com.dfsek.terra.api.structures.parser.lang.functions.FunctionBuilder; import com.dfsek.terra.api.structures.parser.lang.functions.FunctionBuilder;
import com.dfsek.terra.api.structures.script.StructureScript; import com.dfsek.terra.api.structures.script.StructureScript;
import com.dfsek.terra.api.util.generic.pair.ImmutablePair; import com.dfsek.terra.api.util.generic.pair.ImmutablePair;
@@ -190,7 +191,7 @@ public class ConfigPackImpl implements ConfigPack {
putPair(map, NoiseProvider.class, new NoiseRegistry()); putPair(map, NoiseProvider.class, new NoiseRegistry());
putPair(map, FunctionBuilder.class, (OpenRegistry<FunctionBuilder>) (Object) new FunctionRegistry()); putPair(map, FunctionBuilder.class, (OpenRegistry<FunctionBuilder>) (Object) new FunctionRegistry());
putPair(map, LootTable.class, new LootRegistry()); putPair(map, LootTableImpl.class, new LootRegistry());
putPair(map, StructureScript.class, new ScriptRegistry()); putPair(map, StructureScript.class, new ScriptRegistry());
return map; return map;
@@ -217,8 +218,8 @@ public class ConfigPackImpl implements ConfigPack {
loader.open("", ".tesf").thenEntries(entries -> { loader.open("", ".tesf").thenEntries(entries -> {
for(Map.Entry<String, InputStream> entry : entries) { for(Map.Entry<String, InputStream> entry : entries) {
try(InputStream stream = entry.getValue()) { try(InputStream stream = entry.getValue()) {
StructureScript structureScript = new StructureScript(stream, main, getRegistry(StructureScript.class), getRegistry(LootTable.class), (Registry<FunctionBuilder<?>>) (Object) getRegistry(FunctionBuilder.class)); Structure structure = new StructureScript(stream, main, getRegistry(StructureScript.class), getRegistry(LootTableImpl.class), (Registry<FunctionBuilder<?>>) (Object) getRegistry(FunctionBuilder.class));
getOpenRegistry(StructureScript.class).add(structureScript.getId(), structureScript); getOpenRegistry(StructureScript.class).add(structure.getId(), structure);
} catch(com.dfsek.terra.api.structures.parser.exceptions.ParseException | IOException e) { } catch(com.dfsek.terra.api.structures.parser.exceptions.ParseException | IOException e) {
throw new LoadException("Unable to load script \"" + entry.getKey() + "\"", e); throw new LoadException("Unable to load script \"" + entry.getKey() + "\"", e);
} }
@@ -226,7 +227,7 @@ public class ConfigPackImpl implements ConfigPack {
}).close().open("structures/loot", ".json").thenEntries(entries -> { }).close().open("structures/loot", ".json").thenEntries(entries -> {
for(Map.Entry<String, InputStream> entry : entries) { for(Map.Entry<String, InputStream> entry : entries) {
try { try {
getOpenRegistry(LootTable.class).add(entry.getKey(), new LootTable(IOUtils.toString(entry.getValue(), StandardCharsets.UTF_8), main)); getOpenRegistry(LootTableImpl.class).add(entry.getKey(), new LootTableImpl(IOUtils.toString(entry.getValue(), StandardCharsets.UTF_8), main));
} catch(ParseException | IOException | NullPointerException e) { } catch(ParseException | IOException | NullPointerException e) {
throw new LoadException("Unable to load loot table \"" + entry.getKey() + "\"", e); throw new LoadException("Unable to load loot table \"" + entry.getKey() + "\"", e);
} }
@@ -6,11 +6,11 @@ import com.dfsek.terra.api.registry.Registry;
import com.dfsek.terra.api.world.TerraWorld; import com.dfsek.terra.api.world.TerraWorld;
import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.biome.TerraBiome;
import com.dfsek.terra.api.world.biome.generation.BiomeProvider; import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
import com.dfsek.terra.carving.UserDefinedCarver; import com.dfsek.terra.api.world.generator.SamplerCache;
import com.dfsek.terra.config.builder.BiomeBuilder; import com.dfsek.terra.config.builder.BiomeBuilder;
import com.dfsek.terra.registry.LockedRegistryImpl; import com.dfsek.terra.registry.LockedRegistryImpl;
import com.dfsek.terra.registry.OpenRegistryImpl; import com.dfsek.terra.registry.OpenRegistryImpl;
import com.dfsek.terra.world.generation.math.SamplerCache; import com.dfsek.terra.world.generation.math.SamplerCacheImpl;
import com.dfsek.terra.world.population.items.TerraStructure; import com.dfsek.terra.world.population.items.TerraStructure;
import java.util.HashMap; import java.util.HashMap;
@@ -31,7 +31,7 @@ public class WorldConfigImpl implements com.dfsek.terra.api.config.WorldConfig {
public WorldConfigImpl(TerraWorld world, ConfigPackImpl pack, TerraPlugin main) { public WorldConfigImpl(TerraWorld world, ConfigPackImpl pack, TerraPlugin main) {
this.world = world; this.world = world;
this.pack = pack; this.pack = pack;
this.samplerCache = new SamplerCache(main, world); this.samplerCache = new SamplerCacheImpl(main, world);
pack.getRegistryMap().forEach((clazz, pair) -> registryMap.put(clazz, new LockedRegistryImpl<>(pair.getLeft()))); pack.getRegistryMap().forEach((clazz, pair) -> registryMap.put(clazz, new LockedRegistryImpl<>(pair.getLeft())));
@@ -58,11 +58,6 @@ public class WorldConfigImpl implements com.dfsek.terra.api.config.WorldConfig {
return samplerCache; return samplerCache;
} }
@Override
public Set<UserDefinedCarver> getCarvers() {
return new HashSet<>(getRegistry(UserDefinedCarver.class).entries());
}
@Override @Override
public BiomeProvider getProvider() { public BiomeProvider getProvider() {
return provider; return provider;
@@ -11,7 +11,7 @@ import com.dfsek.tectonic.exception.ValidationException;
import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.TerraPlugin;
import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.config.ConfigPack;
import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.noise.NoiseSampler;
import com.dfsek.terra.api.noise.samplers.noise.ConstantSampler; import com.dfsek.terra.noise.samplers.noise.ConstantSampler;
import com.dfsek.terra.api.math.paralithic.BlankFunction; import com.dfsek.terra.api.math.paralithic.BlankFunction;
import com.dfsek.terra.api.math.paralithic.defined.UserDefinedFunction; import com.dfsek.terra.api.math.paralithic.defined.UserDefinedFunction;
import com.dfsek.terra.api.block.BlockType; import com.dfsek.terra.api.block.BlockType;
@@ -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.api.noise.NoiseSampler; import com.dfsek.terra.api.noise.NoiseSampler;
import com.dfsek.terra.api.noise.samplers.noise.random.WhiteNoiseSampler; import com.dfsek.terra.noise.samplers.noise.random.WhiteNoiseSampler;
import com.dfsek.terra.api.util.seeded.NoiseSeeded; import com.dfsek.terra.api.util.seeded.NoiseSeeded;
import com.dfsek.terra.api.world.palette.holder.PaletteLayerHolder; import com.dfsek.terra.api.world.palette.holder.PaletteLayerHolder;
@@ -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.tectonic.config.ConfigTemplate; import com.dfsek.tectonic.config.ConfigTemplate;
import com.dfsek.terra.api.math.GridSpawn; import com.dfsek.terra.api.math.GridSpawn;
import com.dfsek.terra.api.structures.script.StructureScript; import com.dfsek.terra.api.structure.Structure;
import com.dfsek.terra.api.util.GlueList; import com.dfsek.terra.api.util.GlueList;
import com.dfsek.terra.api.util.Range; import com.dfsek.terra.api.util.Range;
import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl;
@@ -19,7 +19,7 @@ public class StructureTemplate extends AbstractableTemplate implements ConfigTem
@Value("scripts") @Value("scripts")
@Abstractable @Abstractable
private ProbabilityCollectionImpl<StructureScript> structure; private ProbabilityCollectionImpl<Structure> structure;
@Value("spawn.start") @Value("spawn.start")
@Abstractable @Abstractable
@@ -38,7 +38,7 @@ public class StructureTemplate extends AbstractableTemplate implements ConfigTem
return id; return id;
} }
public ProbabilityCollectionImpl<StructureScript> getStructures() { public ProbabilityCollectionImpl<Structure> getStructures() {
return structure; return structure;
} }
@@ -3,7 +3,7 @@ package com.dfsek.terra.config.templates;
import com.dfsek.tectonic.annotations.Abstractable; 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.api.structures.script.StructureScript; import com.dfsek.terra.api.structure.Structure;
import com.dfsek.terra.api.util.collections.MaterialSet; import com.dfsek.terra.api.util.collections.MaterialSet;
import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl; import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl;
@@ -11,7 +11,7 @@ import com.dfsek.terra.api.util.collections.ProbabilityCollectionImpl;
public class TreeTemplate extends AbstractableTemplate { public class TreeTemplate extends AbstractableTemplate {
@Value("scripts") @Value("scripts")
@Abstractable @Abstractable
private ProbabilityCollectionImpl<StructureScript> structure; private ProbabilityCollectionImpl<Structure> structure;
@Value("id") @Value("id")
private String id; private String id;
@@ -25,7 +25,7 @@ public class TreeTemplate extends AbstractableTemplate {
@Abstractable @Abstractable
private MaterialSet spawnable; private MaterialSet spawnable;
public ProbabilityCollectionImpl<StructureScript> getStructures() { public ProbabilityCollectionImpl<Structure> getStructures() {
return structure; return structure;
} }
@@ -1,4 +1,4 @@
package com.dfsek.terra.api.noise.normalizer; package com.dfsek.terra.noise.normalizer;
import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.noise.NoiseSampler;
import net.jafama.FastMath; import net.jafama.FastMath;
@@ -1,4 +1,4 @@
package com.dfsek.terra.api.noise.normalizer; package com.dfsek.terra.noise.normalizer;
import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.noise.NoiseSampler;
@@ -1,4 +1,4 @@
package com.dfsek.terra.api.noise.normalizer; package com.dfsek.terra.noise.normalizer;
import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.noise.NoiseSampler;
import com.dfsek.terra.api.util.MathUtil; import com.dfsek.terra.api.util.MathUtil;
@@ -1,4 +1,4 @@
package com.dfsek.terra.api.noise.normalizer; package com.dfsek.terra.noise.normalizer;
import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.noise.NoiseSampler;
@@ -1,4 +1,4 @@
package com.dfsek.terra.api.noise.samplers; package com.dfsek.terra.noise.samplers;
import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.noise.NoiseSampler;
@@ -1,10 +1,15 @@
package com.dfsek.terra.api.noise.samplers; package com.dfsek.terra.noise.samplers;
import com.dfsek.paralithic.Expression; import com.dfsek.paralithic.Expression;
import com.dfsek.paralithic.eval.parser.Parser; import com.dfsek.paralithic.eval.parser.Parser;
import com.dfsek.paralithic.eval.parser.Scope; import com.dfsek.paralithic.eval.parser.Scope;
import com.dfsek.paralithic.eval.tokenizer.ParseException; import com.dfsek.paralithic.eval.tokenizer.ParseException;
import com.dfsek.terra.api.math.paralithic.defined.UserDefinedFunction;
import com.dfsek.terra.api.math.paralithic.noise.NoiseFunction2;
import com.dfsek.terra.api.math.paralithic.noise.NoiseFunction3;
import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.noise.NoiseSampler;
import com.dfsek.terra.api.util.seeded.NoiseSeeded;
import com.dfsek.terra.config.loaders.config.function.FunctionTemplate;
import java.util.Map; import java.util.Map;
@@ -1,4 +1,4 @@
package com.dfsek.terra.api.noise.samplers; package com.dfsek.terra.noise.samplers;
import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.noise.NoiseSampler;
import net.jafama.FastMath; import net.jafama.FastMath;
@@ -1,4 +1,4 @@
package com.dfsek.terra.api.noise.samplers; package com.dfsek.terra.noise.samplers;
import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.noise.NoiseSampler;
@@ -1,7 +1,7 @@
package com.dfsek.terra.api.noise.samplers.noise; package com.dfsek.terra.noise.samplers.noise;
import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.noise.NoiseSampler;
import com.dfsek.terra.api.noise.samplers.noise.simplex.OpenSimplex2Sampler; import com.dfsek.terra.noise.samplers.noise.simplex.OpenSimplex2Sampler;
import com.dfsek.terra.api.vector.Vector2; import com.dfsek.terra.api.vector.Vector2;
import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.vector.Vector3;
@@ -1,4 +1,4 @@
package com.dfsek.terra.api.noise.samplers.noise; package com.dfsek.terra.noise.samplers.noise;
/** /**
* Sampler3D implementation that returns a constant. * Sampler3D implementation that returns a constant.
@@ -1,4 +1,4 @@
package com.dfsek.terra.api.noise.samplers.noise; package com.dfsek.terra.noise.samplers.noise;
import com.dfsek.paralithic.Expression; import com.dfsek.paralithic.Expression;
import com.dfsek.paralithic.eval.parser.Parser; import com.dfsek.paralithic.eval.parser.Parser;
@@ -1,6 +1,6 @@
package com.dfsek.terra.api.noise.samplers.noise; package com.dfsek.terra.noise.samplers.noise;
import com.dfsek.terra.api.noise.samplers.noise.random.WhiteNoiseSampler; import com.dfsek.terra.noise.samplers.noise.random.WhiteNoiseSampler;
import net.jafama.FastMath; import net.jafama.FastMath;
public class GaborNoiseSampler extends NoiseFunction { public class GaborNoiseSampler extends NoiseFunction {
@@ -1,4 +1,4 @@
package com.dfsek.terra.api.noise.samplers.noise; package com.dfsek.terra.noise.samplers.noise;
import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.noise.NoiseSampler;
import net.jafama.FastMath; import net.jafama.FastMath;
@@ -1,4 +1,4 @@
package com.dfsek.terra.api.noise.samplers.noise.fractal; package com.dfsek.terra.noise.samplers.noise.fractal;
import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.noise.NoiseSampler;
@@ -1,7 +1,7 @@
package com.dfsek.terra.api.noise.samplers.noise.fractal; package com.dfsek.terra.noise.samplers.noise.fractal;
import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.noise.NoiseSampler;
import com.dfsek.terra.api.noise.samplers.noise.NoiseFunction; import com.dfsek.terra.noise.samplers.noise.NoiseFunction;
public abstract class FractalNoiseFunction extends NoiseFunction { public abstract class FractalNoiseFunction extends NoiseFunction {
protected final NoiseSampler input; protected final NoiseSampler input;
@@ -1,4 +1,4 @@
package com.dfsek.terra.api.noise.samplers.noise.fractal; package com.dfsek.terra.noise.samplers.noise.fractal;
import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.noise.NoiseSampler;
@@ -1,4 +1,4 @@
package com.dfsek.terra.api.noise.samplers.noise.fractal; package com.dfsek.terra.noise.samplers.noise.fractal;
import com.dfsek.terra.api.noise.NoiseSampler; import com.dfsek.terra.api.noise.NoiseSampler;
@@ -1,6 +1,6 @@
package com.dfsek.terra.api.noise.samplers.noise.random; package com.dfsek.terra.noise.samplers.noise.random;
import com.dfsek.terra.api.noise.samplers.noise.NoiseFunction; import com.dfsek.terra.noise.samplers.noise.NoiseFunction;
/** /**
* NoiseSampler implementation to provide random, normally distributed (Gaussian) noise. * NoiseSampler implementation to provide random, normally distributed (Gaussian) noise.
@@ -1,6 +1,6 @@
package com.dfsek.terra.api.noise.samplers.noise.random; package com.dfsek.terra.noise.samplers.noise.random;
import com.dfsek.terra.api.noise.samplers.noise.NoiseFunction; import com.dfsek.terra.noise.samplers.noise.NoiseFunction;
/** /**
* NoiseSampler implementation to produce random, uniformly distributed (white) noise. * NoiseSampler implementation to produce random, uniformly distributed (white) noise.
@@ -1,4 +1,4 @@
package com.dfsek.terra.api.noise.samplers.noise.simplex; package com.dfsek.terra.noise.samplers.noise.simplex;
/** /**
* NoiseSampler implementation to provide OpenSimplex2 (Smooth Variant) noise. * NoiseSampler implementation to provide OpenSimplex2 (Smooth Variant) noise.
@@ -1,4 +1,4 @@
package com.dfsek.terra.api.noise.samplers.noise.simplex; package com.dfsek.terra.noise.samplers.noise.simplex;
/** /**
* NoiseSampler implementation to provide OpenSimplex2 noise. * NoiseSampler implementation to provide OpenSimplex2 noise.
@@ -1,4 +1,4 @@
package com.dfsek.terra.api.noise.samplers.noise.simplex; package com.dfsek.terra.noise.samplers.noise.simplex;
/** /**
* NoiseSampler implementation to provide Perlin Noise. * NoiseSampler implementation to provide Perlin Noise.

Some files were not shown because too many files have changed in this diff Show More