Large package structure refactoring.
This commit is contained in:
parent
7fb858c7ca
commit
1167efbe4e
@ -1,4 +1,4 @@
|
|||||||
package ca.recrown.islandsurvivalcraft;
|
package ca.recrown.islandsurvivalcraft.utilities;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
@ -7,9 +7,9 @@ import java.util.concurrent.ExecutorService;
|
|||||||
import java.util.concurrent.Executors;
|
import java.util.concurrent.Executors;
|
||||||
import java.util.concurrent.ThreadFactory;
|
import java.util.concurrent.ThreadFactory;
|
||||||
|
|
||||||
import ca.recrown.islandsurvivalcraft.datatypes.Point2;
|
import ca.recrown.islandsurvivalcraft.utilities.datatypes.Point2;
|
||||||
|
|
||||||
public class Utilities {
|
public class GeneralUtilities {
|
||||||
public final static int CHUNK_SIZE = 16;
|
public final static int CHUNK_SIZE = 16;
|
||||||
public final static ExecutorService ISC_EXECUTOR_ALPHA = Executors.newFixedThreadPool(1, createThreadFactory("ALPHA", Thread.NORM_PRIORITY + 1));
|
public final static ExecutorService ISC_EXECUTOR_ALPHA = Executors.newFixedThreadPool(1, createThreadFactory("ALPHA", Thread.NORM_PRIORITY + 1));
|
||||||
public final static ExecutorService ISC_EXECUTOR_BETA = Executors.newFixedThreadPool(2, createThreadFactory("BETA", Thread.NORM_PRIORITY));
|
public final static ExecutorService ISC_EXECUTOR_BETA = Executors.newFixedThreadPool(2, createThreadFactory("BETA", Thread.NORM_PRIORITY));
|
@ -1,4 +1,4 @@
|
|||||||
package ca.recrown.islandsurvivalcraft.caching;
|
package ca.recrown.islandsurvivalcraft.utilities.caching;
|
||||||
|
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
import java.util.concurrent.locks.ReentrantLock;
|
import java.util.concurrent.locks.ReentrantLock;
|
@ -1,4 +1,4 @@
|
|||||||
package ca.recrown.islandsurvivalcraft.caching;
|
package ca.recrown.islandsurvivalcraft.utilities.caching;
|
||||||
|
|
||||||
import java.util.concurrent.locks.ReentrantLock;
|
import java.util.concurrent.locks.ReentrantLock;
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
package ca.recrown.islandsurvivalcraft.caching;
|
package ca.recrown.islandsurvivalcraft.utilities.caching;
|
||||||
|
|
||||||
class CacheValue<KeyType, ValueType> {
|
class CacheValue<KeyType, ValueType> {
|
||||||
/**
|
/**
|
@ -1,4 +1,4 @@
|
|||||||
package ca.recrown.islandsurvivalcraft.datatypes;
|
package ca.recrown.islandsurvivalcraft.utilities.datatypes;
|
||||||
|
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
package ca.recrown.islandsurvivalcraft.datatypes;
|
package ca.recrown.islandsurvivalcraft.utilities.datatypes;
|
||||||
|
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
package ca.recrown.islandsurvivalcraft.datatypes;
|
package ca.recrown.islandsurvivalcraft.utilities.datatypes;
|
||||||
|
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
@ -1,6 +1,6 @@
|
|||||||
package ca.recrown.islandsurvivalcraft.floodfill;
|
package ca.recrown.islandsurvivalcraft.utilities.floodfill;
|
||||||
|
|
||||||
import ca.recrown.islandsurvivalcraft.datatypes.Point2;
|
import ca.recrown.islandsurvivalcraft.utilities.datatypes.Point2;
|
||||||
|
|
||||||
public interface Floodable {
|
public interface Floodable {
|
||||||
/**
|
/**
|
@ -1,9 +1,10 @@
|
|||||||
package ca.recrown.islandsurvivalcraft.floodfill;
|
package ca.recrown.islandsurvivalcraft.utilities.floodfill;
|
||||||
|
|
||||||
|
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
|
|
||||||
import ca.recrown.islandsurvivalcraft.datatypes.Point2;
|
import ca.recrown.islandsurvivalcraft.utilities.datatypes.Point2;
|
||||||
|
|
||||||
public class Flooder {
|
public class Flooder {
|
||||||
private final Point2 start;
|
private final Point2 start;
|
@ -1,4 +1,4 @@
|
|||||||
package ca.recrown.islandsurvivalcraft.pathfinding;
|
package ca.recrown.islandsurvivalcraft.utilities.pathfinding;
|
||||||
|
|
||||||
public interface CoordinateTargetValidatable {
|
public interface CoordinateTargetValidatable {
|
||||||
/**
|
/**
|
@ -1,4 +1,4 @@
|
|||||||
package ca.recrown.islandsurvivalcraft.pathfinding;
|
package ca.recrown.islandsurvivalcraft.utilities.pathfinding;
|
||||||
|
|
||||||
public interface CoordinateValidatable {
|
public interface CoordinateValidatable {
|
||||||
public boolean validate(int x, int y);
|
public boolean validate(int x, int y);
|
@ -1,8 +1,8 @@
|
|||||||
package ca.recrown.islandsurvivalcraft.pathfinding;
|
package ca.recrown.islandsurvivalcraft.utilities.pathfinding;
|
||||||
|
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
import ca.recrown.islandsurvivalcraft.datatypes.Point2;
|
import ca.recrown.islandsurvivalcraft.utilities.datatypes.Point2;
|
||||||
|
|
||||||
public class DFSNode extends Point2 implements Comparable<DFSNode> {
|
public class DFSNode extends Point2 implements Comparable<DFSNode> {
|
||||||
private DFSNode goal;
|
private DFSNode goal;
|
@ -1,4 +1,4 @@
|
|||||||
package ca.recrown.islandsurvivalcraft.pathfinding;
|
package ca.recrown.islandsurvivalcraft.utilities.pathfinding;
|
||||||
|
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.PriorityQueue;
|
import java.util.PriorityQueue;
|
||||||
@ -6,7 +6,7 @@ import java.util.Queue;
|
|||||||
|
|
||||||
import org.apache.commons.lang.NullArgumentException;
|
import org.apache.commons.lang.NullArgumentException;
|
||||||
|
|
||||||
import ca.recrown.islandsurvivalcraft.datatypes.Point2;
|
import ca.recrown.islandsurvivalcraft.utilities.datatypes.Point2;
|
||||||
|
|
||||||
public class DepthFirstSearch {
|
public class DepthFirstSearch {
|
||||||
private Queue<DFSNode> queue;
|
private Queue<DFSNode> queue;
|
@ -8,7 +8,7 @@ import java.util.Map.Entry;
|
|||||||
import org.bukkit.block.Biome;
|
import org.bukkit.block.Biome;
|
||||||
import org.bukkit.util.noise.SimplexOctaveGenerator;
|
import org.bukkit.util.noise.SimplexOctaveGenerator;
|
||||||
|
|
||||||
import ca.recrown.islandsurvivalcraft.Utilities;
|
import ca.recrown.islandsurvivalcraft.utilities.GeneralUtilities;
|
||||||
|
|
||||||
public class BiomeMap {
|
public class BiomeMap {
|
||||||
private final SimplexOctaveGenerator noise;
|
private final SimplexOctaveGenerator noise;
|
||||||
@ -74,7 +74,7 @@ public class BiomeMap {
|
|||||||
landBiomeTemperatures.put(Biome.BADLANDS_PLATEAU, 2.0f);
|
landBiomeTemperatures.put(Biome.BADLANDS_PLATEAU, 2.0f);
|
||||||
landBiomeTemperatures.put(Biome.MODIFIED_BADLANDS_PLATEAU, 2.0f);
|
landBiomeTemperatures.put(Biome.MODIFIED_BADLANDS_PLATEAU, 2.0f);
|
||||||
landBiomeTemperatures.put(Biome.SHATTERED_SAVANNA_PLATEAU, 1.0f);
|
landBiomeTemperatures.put(Biome.SHATTERED_SAVANNA_PLATEAU, 1.0f);
|
||||||
temperaturesForLand = Utilities.invertHashMap(landBiomeTemperatures);
|
temperaturesForLand = GeneralUtilities.invertHashMap(landBiomeTemperatures);
|
||||||
|
|
||||||
for (Entry<Float, ArrayList<Biome>> entry : temperaturesForLand.entrySet()) {
|
for (Entry<Float, ArrayList<Biome>> entry : temperaturesForLand.entrySet()) {
|
||||||
if (entry.getKey() <= 0.05f) {
|
if (entry.getKey() <= 0.05f) {
|
||||||
@ -95,7 +95,7 @@ public class BiomeMap {
|
|||||||
oceanBiomeTemperatures.put(Biome.OCEAN, 0.3f);
|
oceanBiomeTemperatures.put(Biome.OCEAN, 0.3f);
|
||||||
oceanBiomeTemperatures.put(Biome.COLD_OCEAN, 0.3f);
|
oceanBiomeTemperatures.put(Biome.COLD_OCEAN, 0.3f);
|
||||||
oceanBiomeTemperatures.put(Biome.FROZEN_OCEAN, 0f);
|
oceanBiomeTemperatures.put(Biome.FROZEN_OCEAN, 0f);
|
||||||
temperaturesForOcean = Utilities.invertHashMap(oceanBiomeTemperatures);
|
temperaturesForOcean = GeneralUtilities.invertHashMap(oceanBiomeTemperatures);
|
||||||
for (Entry<Float, ArrayList<Biome>> entry : temperaturesForOcean.entrySet()) {
|
for (Entry<Float, ArrayList<Biome>> entry : temperaturesForOcean.entrySet()) {
|
||||||
if (entry.getKey() <= 0.00f) {
|
if (entry.getKey() <= 0.00f) {
|
||||||
temperaturePartitionedOceanBiomes.get(0.0f).addAll(entry.getValue());
|
temperaturePartitionedOceanBiomes.get(0.0f).addAll(entry.getValue());
|
||||||
|
@ -4,10 +4,10 @@ import java.util.Random;
|
|||||||
|
|
||||||
import org.bukkit.util.noise.SimplexOctaveGenerator;
|
import org.bukkit.util.noise.SimplexOctaveGenerator;
|
||||||
|
|
||||||
import ca.recrown.islandsurvivalcraft.datatypes.Point2;
|
import ca.recrown.islandsurvivalcraft.utilities.caching.Cache;
|
||||||
import ca.recrown.islandsurvivalcraft.caching.Cache;
|
import ca.recrown.islandsurvivalcraft.utilities.datatypes.Point2;
|
||||||
import ca.recrown.islandsurvivalcraft.pathfinding.CoordinateValidatable;
|
import ca.recrown.islandsurvivalcraft.utilities.pathfinding.CoordinateValidatable;
|
||||||
import ca.recrown.islandsurvivalcraft.pathfinding.DepthFirstSearch;
|
import ca.recrown.islandsurvivalcraft.utilities.pathfinding.DepthFirstSearch;
|
||||||
|
|
||||||
public class IslandWorldMap implements CoordinateValidatable {
|
public class IslandWorldMap implements CoordinateValidatable {
|
||||||
private final Cache<Point2, Double> blockValueCache;
|
private final Cache<Point2, Double> blockValueCache;
|
||||||
|
@ -4,8 +4,8 @@ import java.util.Random;
|
|||||||
|
|
||||||
import org.bukkit.util.noise.SimplexOctaveGenerator;
|
import org.bukkit.util.noise.SimplexOctaveGenerator;
|
||||||
|
|
||||||
import ca.recrown.islandsurvivalcraft.datatypes.Point2;
|
import ca.recrown.islandsurvivalcraft.utilities.caching.Cache;
|
||||||
import ca.recrown.islandsurvivalcraft.caching.Cache;
|
import ca.recrown.islandsurvivalcraft.utilities.datatypes.Point2;
|
||||||
|
|
||||||
public class TemperatureMap {
|
public class TemperatureMap {
|
||||||
private final Cache<Point2, Float> temperatureCache;
|
private final Cache<Point2, Float> temperatureCache;
|
||||||
|
@ -3,8 +3,8 @@ package ca.recrown.islandsurvivalcraft.world.generation.biomes;
|
|||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
import org.bukkit.block.Biome;
|
import org.bukkit.block.Biome;
|
||||||
|
|
||||||
import ca.recrown.islandsurvivalcraft.caching.Cache;
|
import ca.recrown.islandsurvivalcraft.utilities.caching.Cache;
|
||||||
import ca.recrown.islandsurvivalcraft.datatypes.Point2;
|
import ca.recrown.islandsurvivalcraft.utilities.datatypes.Point2;
|
||||||
import ca.recrown.islandsurvivalcraft.world.BiomeMap;
|
import ca.recrown.islandsurvivalcraft.world.BiomeMap;
|
||||||
import ca.recrown.islandsurvivalcraft.world.IslandWorldMap;
|
import ca.recrown.islandsurvivalcraft.world.IslandWorldMap;
|
||||||
import ca.recrown.islandsurvivalcraft.world.TemperatureMap;
|
import ca.recrown.islandsurvivalcraft.world.TemperatureMap;
|
||||||
|
@ -3,13 +3,13 @@ package ca.recrown.islandsurvivalcraft.world.generation.biomes;
|
|||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
import org.bukkit.block.Biome;
|
import org.bukkit.block.Biome;
|
||||||
|
|
||||||
import ca.recrown.islandsurvivalcraft.Utilities;
|
import ca.recrown.islandsurvivalcraft.utilities.GeneralUtilities;
|
||||||
import ca.recrown.islandsurvivalcraft.datatypes.Point2;
|
import ca.recrown.islandsurvivalcraft.utilities.caching.Cache;
|
||||||
import ca.recrown.islandsurvivalcraft.caching.Cache;
|
import ca.recrown.islandsurvivalcraft.utilities.datatypes.Point2;
|
||||||
import ca.recrown.islandsurvivalcraft.floodfill.Floodable;
|
import ca.recrown.islandsurvivalcraft.utilities.floodfill.Floodable;
|
||||||
import ca.recrown.islandsurvivalcraft.floodfill.Flooder;
|
import ca.recrown.islandsurvivalcraft.utilities.floodfill.Flooder;
|
||||||
import ca.recrown.islandsurvivalcraft.pathfinding.CoordinateTargetValidatable;
|
import ca.recrown.islandsurvivalcraft.utilities.pathfinding.CoordinateTargetValidatable;
|
||||||
import ca.recrown.islandsurvivalcraft.pathfinding.DepthFirstSearch;
|
import ca.recrown.islandsurvivalcraft.utilities.pathfinding.DepthFirstSearch;
|
||||||
import ca.recrown.islandsurvivalcraft.world.BiomeMap;
|
import ca.recrown.islandsurvivalcraft.world.BiomeMap;
|
||||||
import ca.recrown.islandsurvivalcraft.world.IslandWorldMap;
|
import ca.recrown.islandsurvivalcraft.world.IslandWorldMap;
|
||||||
import ca.recrown.islandsurvivalcraft.world.TemperatureMap;
|
import ca.recrown.islandsurvivalcraft.world.TemperatureMap;
|
||||||
@ -19,7 +19,7 @@ public class UniqueBiomeGenerator implements BiomeGenerator {
|
|||||||
public void generateBiomeColumn(Biome[][][] chunkBiomeSets, World world, int chunkX, int chunkZ, int localX, int localZ, IslandWorldMap mapper, BiomeMap biomeSelector, TemperatureMap tempGen, Cache<Point2, Biome[]> biomeCache, Cache<Point2, Boolean> chunkGenCache) {
|
public void generateBiomeColumn(Biome[][][] chunkBiomeSets, World world, int chunkX, int chunkZ, int localX, int localZ, IslandWorldMap mapper, BiomeMap biomeSelector, TemperatureMap tempGen, Cache<Point2, Biome[]> biomeCache, Cache<Point2, Boolean> chunkGenCache) {
|
||||||
int worldX = 16 * chunkX + localX;
|
int worldX = 16 * chunkX + localX;
|
||||||
int worldZ = 16 * chunkZ + localZ;
|
int worldZ = 16 * chunkZ + localZ;
|
||||||
Point2 chunkCoords = Utilities.worldToChunkCoordinates(new Point2(worldX, worldZ));
|
Point2 chunkCoords = GeneralUtilities.worldToChunkCoordinates(new Point2(worldX, worldZ));
|
||||||
chunkGenCache.set(chunkCoords, false);
|
chunkGenCache.set(chunkCoords, false);
|
||||||
|
|
||||||
//Check if we can just give it something in cache.
|
//Check if we can just give it something in cache.
|
||||||
@ -60,14 +60,14 @@ public class UniqueBiomeGenerator implements BiomeGenerator {
|
|||||||
Biome[] res = null;
|
Biome[] res = null;
|
||||||
|
|
||||||
if (chunkBiomeSets != null) {
|
if (chunkBiomeSets != null) {
|
||||||
Point2 localCoords = Utilities.worldToLocalChunkCoordinates(worldCoords);
|
Point2 localCoords = GeneralUtilities.worldToLocalChunkCoordinates(worldCoords);
|
||||||
return chunkBiomeSets[localCoords.x][localCoords.y];
|
return chunkBiomeSets[localCoords.x][localCoords.y];
|
||||||
}
|
}
|
||||||
|
|
||||||
res = biomeCache.get(worldCoords);
|
res = biomeCache.get(worldCoords);
|
||||||
if (res != null) return res;
|
if (res != null) return res;
|
||||||
|
|
||||||
Point2 chunkCoords = Utilities.worldToChunkCoordinates(worldCoords);
|
Point2 chunkCoords = GeneralUtilities.worldToChunkCoordinates(worldCoords);
|
||||||
Boolean chunkExists = existenceCache.get(chunkCoords);
|
Boolean chunkExists = existenceCache.get(chunkCoords);
|
||||||
if (chunkExists == null) {
|
if (chunkExists == null) {
|
||||||
chunkExists = world.isChunkGenerated(worldX, worldZ);
|
chunkExists = world.isChunkGenerated(worldX, worldZ);
|
||||||
@ -85,7 +85,7 @@ public class UniqueBiomeGenerator implements BiomeGenerator {
|
|||||||
private void setCacheBiome(int worldX, int worldZ, Biome[] biomeSet, Biome[][][] localBiomes, Cache<Point2, Biome[]> biomeCache) {
|
private void setCacheBiome(int worldX, int worldZ, Biome[] biomeSet, Biome[][][] localBiomes, Cache<Point2, Biome[]> biomeCache) {
|
||||||
Point2 worldCoords = new Point2(worldX, worldZ);
|
Point2 worldCoords = new Point2(worldX, worldZ);
|
||||||
if (localBiomes != null) {
|
if (localBiomes != null) {
|
||||||
Point2 localCoords = Utilities.worldToLocalChunkCoordinates(worldCoords);
|
Point2 localCoords = GeneralUtilities.worldToLocalChunkCoordinates(worldCoords);
|
||||||
localBiomes[localCoords.x][localCoords.y] = biomeSet;
|
localBiomes[localCoords.x][localCoords.y] = biomeSet;
|
||||||
}
|
}
|
||||||
biomeCache.set(worldCoords, biomeSet);
|
biomeCache.set(worldCoords, biomeSet);
|
||||||
@ -145,7 +145,7 @@ public class UniqueBiomeGenerator implements BiomeGenerator {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean flood(Point2 point) {
|
public boolean flood(Point2 point) {
|
||||||
Point2 chunkCoords = Utilities.worldToChunkCoordinates(point);
|
Point2 chunkCoords = GeneralUtilities.worldToChunkCoordinates(point);
|
||||||
if (!this.chunkCoords.fastEquals(chunkCoords) || !mapper.validate(point.x, point.y)) return false;
|
if (!this.chunkCoords.fastEquals(chunkCoords) || !mapper.validate(point.x, point.y)) return false;
|
||||||
int x = point.x;
|
int x = point.x;
|
||||||
int y = point.y;
|
int y = point.y;
|
||||||
|
@ -15,9 +15,9 @@ import org.bukkit.block.data.BlockData;
|
|||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.generator.ChunkGenerator;
|
import org.bukkit.generator.ChunkGenerator;
|
||||||
|
|
||||||
import ca.recrown.islandsurvivalcraft.Utilities;
|
import ca.recrown.islandsurvivalcraft.utilities.GeneralUtilities;
|
||||||
import ca.recrown.islandsurvivalcraft.caching.Cache;
|
import ca.recrown.islandsurvivalcraft.utilities.caching.Cache;
|
||||||
import ca.recrown.islandsurvivalcraft.datatypes.Point2;
|
import ca.recrown.islandsurvivalcraft.utilities.datatypes.Point2;
|
||||||
import ca.recrown.islandsurvivalcraft.world.BiomeMap;
|
import ca.recrown.islandsurvivalcraft.world.BiomeMap;
|
||||||
import ca.recrown.islandsurvivalcraft.world.IslandWorldMap;
|
import ca.recrown.islandsurvivalcraft.world.IslandWorldMap;
|
||||||
import ca.recrown.islandsurvivalcraft.world.TemperatureMap;
|
import ca.recrown.islandsurvivalcraft.world.TemperatureMap;
|
||||||
@ -39,8 +39,8 @@ public class IslandWorldChunkGenerator extends ChunkGenerator implements Listene
|
|||||||
private volatile WorldLayerShader layerShader;
|
private volatile WorldLayerShader layerShader;
|
||||||
private volatile Cache<Point2, Biome[]> biomeCache = new Cache<>(131072);
|
private volatile Cache<Point2, Biome[]> biomeCache = new Cache<>(131072);
|
||||||
private volatile Cache<Point2, Boolean> chunkLoadedCache = new Cache<>(4096);
|
private volatile Cache<Point2, Boolean> chunkLoadedCache = new Cache<>(4096);
|
||||||
private volatile ExecutorService exAlpha = Utilities.ISC_EXECUTOR_ALPHA;
|
private volatile ExecutorService exAlpha = GeneralUtilities.ISC_EXECUTOR_ALPHA;
|
||||||
private volatile ExecutorService exBeta = Utilities.ISC_EXECUTOR_BETA;
|
private volatile ExecutorService exBeta = GeneralUtilities.ISC_EXECUTOR_BETA;
|
||||||
|
|
||||||
public void initialize(Random random, boolean uniqueBiome, int seaLevel, int worldHeight) {
|
public void initialize(Random random, boolean uniqueBiome, int seaLevel, int worldHeight) {
|
||||||
if (initialized) throw new IllegalStateException("This generator has already been initialized");
|
if (initialized) throw new IllegalStateException("This generator has already been initialized");
|
||||||
@ -76,22 +76,22 @@ public class IslandWorldChunkGenerator extends ChunkGenerator implements Listene
|
|||||||
LinkedList<Future<Boolean>> tasks = new LinkedList<>();
|
LinkedList<Future<Boolean>> tasks = new LinkedList<>();
|
||||||
ChunkData chunkData = createChunkData(world);
|
ChunkData chunkData = createChunkData(world);
|
||||||
Future<Boolean> preLoader = exAlpha.submit(() -> {
|
Future<Boolean> preLoader = exAlpha.submit(() -> {
|
||||||
for (int x = Utilities.CHUNK_SIZE - 1; x >= 0; x--) {
|
for (int x = GeneralUtilities.CHUNK_SIZE - 1; x >= 0; x--) {
|
||||||
for (int z = Utilities.CHUNK_SIZE - 1; z >= 0; z--) {
|
for (int z = GeneralUtilities.CHUNK_SIZE - 1; z >= 0; z--) {
|
||||||
if (Thread.currentThread().isInterrupted()) return false;
|
if (Thread.currentThread().isInterrupted()) return false;
|
||||||
islandMap.getWorldValue(Utilities.CHUNK_SIZE * chunkX + x, Utilities.CHUNK_SIZE * chunkZ + z);
|
islandMap.getWorldValue(GeneralUtilities.CHUNK_SIZE * chunkX + x, GeneralUtilities.CHUNK_SIZE * chunkZ + z);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
});
|
});
|
||||||
|
|
||||||
Biome[][][] biomeArraySet = new Biome[Utilities.CHUNK_SIZE][Utilities.CHUNK_SIZE][4];
|
Biome[][][] biomeArraySet = new Biome[GeneralUtilities.CHUNK_SIZE][GeneralUtilities.CHUNK_SIZE][4];
|
||||||
for (int x = 0; x < Utilities.CHUNK_SIZE; x++) {
|
for (int x = 0; x < GeneralUtilities.CHUNK_SIZE; x++) {
|
||||||
for (int z = 0; z < Utilities.CHUNK_SIZE; z++) {
|
for (int z = 0; z < GeneralUtilities.CHUNK_SIZE; z++) {
|
||||||
final int localX = x;
|
final int localX = x;
|
||||||
final int localZ = z;
|
final int localZ = z;
|
||||||
final int worldX = Utilities.CHUNK_SIZE * chunkX + localX;
|
final int worldX = GeneralUtilities.CHUNK_SIZE * chunkX + localX;
|
||||||
final int worldZ = Utilities.CHUNK_SIZE * chunkZ + localZ;
|
final int worldZ = GeneralUtilities.CHUNK_SIZE * chunkZ + localZ;
|
||||||
if (biomeArraySet[localX][localZ][0] == null) {
|
if (biomeArraySet[localX][localZ][0] == null) {
|
||||||
biomeGenerator.generateBiomeColumn(biomeArraySet, world, chunkX, chunkZ, localX, localZ, islandMap, biomeMap,
|
biomeGenerator.generateBiomeColumn(biomeArraySet, world, chunkX, chunkZ, localX, localZ, islandMap, biomeMap,
|
||||||
temperatureMap, biomeCache, chunkLoadedCache);
|
temperatureMap, biomeCache, chunkLoadedCache);
|
||||||
|
@ -7,8 +7,8 @@ import org.bukkit.block.Biome;
|
|||||||
import org.bukkit.block.data.BlockData;
|
import org.bukkit.block.data.BlockData;
|
||||||
import org.bukkit.util.noise.SimplexOctaveGenerator;
|
import org.bukkit.util.noise.SimplexOctaveGenerator;
|
||||||
|
|
||||||
import ca.recrown.islandsurvivalcraft.caching.Cache;
|
import ca.recrown.islandsurvivalcraft.utilities.caching.Cache;
|
||||||
import ca.recrown.islandsurvivalcraft.datatypes.Vector3;
|
import ca.recrown.islandsurvivalcraft.utilities.datatypes.Vector3;
|
||||||
import ca.recrown.islandsurvivalcraft.world.IslandWorldMap;
|
import ca.recrown.islandsurvivalcraft.world.IslandWorldMap;
|
||||||
|
|
||||||
@SuppressWarnings("unused")
|
@SuppressWarnings("unused")
|
||||||
|
@ -1,129 +0,0 @@
|
|||||||
package ca.recrown.islandsurvivalcraft;
|
|
||||||
|
|
||||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.HashMap;
|
|
||||||
|
|
||||||
import org.junit.jupiter.api.Test;
|
|
||||||
import org.junit.jupiter.api.TestInstance;
|
|
||||||
import org.junit.jupiter.api.TestInstance.Lifecycle;
|
|
||||||
|
|
||||||
import ca.recrown.islandsurvivalcraft.datatypes.Point2;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Unit test for simple App.
|
|
||||||
*/
|
|
||||||
@TestInstance(Lifecycle.PER_CLASS)
|
|
||||||
public class UtilitiesTest {
|
|
||||||
/**
|
|
||||||
* Basic hashmap inversion test.
|
|
||||||
*/
|
|
||||||
@Test
|
|
||||||
public void testInvertHashMap()
|
|
||||||
{
|
|
||||||
HashMap<String, Integer> hashMap = new HashMap<>();
|
|
||||||
hashMap.put("a", 1);
|
|
||||||
hashMap.put("b", 1);
|
|
||||||
hashMap.put("c", 2);
|
|
||||||
hashMap.put("d", 2);
|
|
||||||
|
|
||||||
HashMap<Integer, ArrayList<String>> res = Utilities.invertHashMap(hashMap);
|
|
||||||
ArrayList<String> first = res.get(1);
|
|
||||||
ArrayList<String> expectedFirst = new ArrayList<>();
|
|
||||||
expectedFirst.add("a");
|
|
||||||
expectedFirst.add("b");
|
|
||||||
|
|
||||||
ArrayList<String> second = res.get(2);
|
|
||||||
ArrayList<String> expectedSecond = new ArrayList<>();
|
|
||||||
expectedSecond.add("c");
|
|
||||||
expectedSecond.add("d");
|
|
||||||
assertEquals(first, expectedFirst);
|
|
||||||
assertEquals(second, expectedSecond);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testMagnitudeAddPositive() {
|
|
||||||
assertEquals(2, Utilities.addMagnitude(1, 1));
|
|
||||||
}
|
|
||||||
@Test
|
|
||||||
public void testMagnitudeAddNegative() {
|
|
||||||
assertEquals(-2, Utilities.addMagnitude(-1, 1));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testWorldToChunkCoordinatesNegativePerfect() {
|
|
||||||
assertEquals(new Point2(-4, -3), Utilities.worldToChunkCoordinates(-64, -48));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testWorldToChunkCoordinatesNegativeOff() {
|
|
||||||
assertEquals(new Point2(-4, -3), Utilities.worldToChunkCoordinates(-55, -33));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testWorldToChunkCoordinatesNegativeOffClose() {
|
|
||||||
assertEquals(new Point2(15, -15), Utilities.worldToChunkCoordinates(255, -227));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testWorldToChunkCoordinatesPositivePerfect() {
|
|
||||||
assertEquals(new Point2(4, 5), Utilities.worldToChunkCoordinates(64, 80));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testWorldToChunkCoordinatesPositiveOff() {
|
|
||||||
assertEquals(new Point2(4, 5), Utilities.worldToChunkCoordinates(67, 84));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testWorldToLocalCoordinatesNegative() {
|
|
||||||
assertEquals(new Point2(2, 5), Utilities.worldToLocalChunkCoordinates(-62, -27));
|
|
||||||
assertEquals(new Point2(2, 5), Utilities.worldToLocalChunkCoordinates(new Point2(-62, -27)));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testWorldToLocalCoordinatesNegativePerfect() {
|
|
||||||
assertEquals(new Point2(0, 0), Utilities.worldToLocalChunkCoordinates(-128, -32));
|
|
||||||
assertEquals(new Point2(0, 0), Utilities.worldToLocalChunkCoordinates(new Point2(-256, -16)));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testWorldToLocalCoordinatesPositive() {
|
|
||||||
assertEquals(new Point2(7, 3), Utilities.worldToLocalChunkCoordinates(39, 83));
|
|
||||||
assertEquals(new Point2(7, 3), Utilities.worldToLocalChunkCoordinates(new Point2(39, 83)));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testWorldToLocalCoordinatesPositivePerfect() {
|
|
||||||
assertEquals(new Point2(0, 0), Utilities.worldToLocalChunkCoordinates(1024, 32));
|
|
||||||
assertEquals(new Point2(0, 0), Utilities.worldToLocalChunkCoordinates(new Point2(16, 80)));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testWorldToLocalCoordinatesPositiveEntirety() {
|
|
||||||
int chunkX = 4;
|
|
||||||
int chunkZ = 3;
|
|
||||||
for (int x = 0; x < Utilities.CHUNK_SIZE; x++) {
|
|
||||||
for (int z = 0; z < Utilities.CHUNK_SIZE; z++) {
|
|
||||||
int worldX = Utilities.CHUNK_SIZE * chunkX + x;
|
|
||||||
int worldZ = Utilities.CHUNK_SIZE * chunkZ + z;
|
|
||||||
assertEquals(new Point2(x, z), Utilities.worldToLocalChunkCoordinates(new Point2(worldX, worldZ)));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testWorldToLocalCoordinatesNegativeEntirety() {
|
|
||||||
int chunkX = -42;
|
|
||||||
int chunkZ = -3;
|
|
||||||
for (int x = 0; x < Utilities.CHUNK_SIZE; x++) {
|
|
||||||
for (int z = 0; z < Utilities.CHUNK_SIZE; z++) {
|
|
||||||
int worldX = Utilities.CHUNK_SIZE * chunkX + x;
|
|
||||||
int worldZ = Utilities.CHUNK_SIZE * chunkZ + z;
|
|
||||||
assertEquals(new Point2(x, z), Utilities.worldToLocalChunkCoordinates(new Point2(worldX, worldZ)));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -0,0 +1,129 @@
|
|||||||
|
package ca.recrown.islandsurvivalcraft.utilities;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
|
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.junit.jupiter.api.TestInstance;
|
||||||
|
import org.junit.jupiter.api.TestInstance.Lifecycle;
|
||||||
|
|
||||||
|
import ca.recrown.islandsurvivalcraft.utilities.datatypes.Point2;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Unit test for simple App.
|
||||||
|
*/
|
||||||
|
@TestInstance(Lifecycle.PER_CLASS)
|
||||||
|
public class GeneralUtilitiesTest {
|
||||||
|
/**
|
||||||
|
* Basic hashmap inversion test.
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void testInvertHashMap()
|
||||||
|
{
|
||||||
|
HashMap<String, Integer> hashMap = new HashMap<>();
|
||||||
|
hashMap.put("a", 1);
|
||||||
|
hashMap.put("b", 1);
|
||||||
|
hashMap.put("c", 2);
|
||||||
|
hashMap.put("d", 2);
|
||||||
|
|
||||||
|
HashMap<Integer, ArrayList<String>> res = GeneralUtilities.invertHashMap(hashMap);
|
||||||
|
ArrayList<String> first = res.get(1);
|
||||||
|
ArrayList<String> expectedFirst = new ArrayList<>();
|
||||||
|
expectedFirst.add("a");
|
||||||
|
expectedFirst.add("b");
|
||||||
|
|
||||||
|
ArrayList<String> second = res.get(2);
|
||||||
|
ArrayList<String> expectedSecond = new ArrayList<>();
|
||||||
|
expectedSecond.add("c");
|
||||||
|
expectedSecond.add("d");
|
||||||
|
assertEquals(first, expectedFirst);
|
||||||
|
assertEquals(second, expectedSecond);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testMagnitudeAddPositive() {
|
||||||
|
assertEquals(2, GeneralUtilities.addMagnitude(1, 1));
|
||||||
|
}
|
||||||
|
@Test
|
||||||
|
public void testMagnitudeAddNegative() {
|
||||||
|
assertEquals(-2, GeneralUtilities.addMagnitude(-1, 1));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testWorldToChunkCoordinatesNegativePerfect() {
|
||||||
|
assertEquals(new Point2(-4, -3), GeneralUtilities.worldToChunkCoordinates(-64, -48));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testWorldToChunkCoordinatesNegativeOff() {
|
||||||
|
assertEquals(new Point2(-4, -3), GeneralUtilities.worldToChunkCoordinates(-55, -33));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testWorldToChunkCoordinatesNegativeOffClose() {
|
||||||
|
assertEquals(new Point2(15, -15), GeneralUtilities.worldToChunkCoordinates(255, -227));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testWorldToChunkCoordinatesPositivePerfect() {
|
||||||
|
assertEquals(new Point2(4, 5), GeneralUtilities.worldToChunkCoordinates(64, 80));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testWorldToChunkCoordinatesPositiveOff() {
|
||||||
|
assertEquals(new Point2(4, 5), GeneralUtilities.worldToChunkCoordinates(67, 84));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testWorldToLocalCoordinatesNegative() {
|
||||||
|
assertEquals(new Point2(2, 5), GeneralUtilities.worldToLocalChunkCoordinates(-62, -27));
|
||||||
|
assertEquals(new Point2(2, 5), GeneralUtilities.worldToLocalChunkCoordinates(new Point2(-62, -27)));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testWorldToLocalCoordinatesNegativePerfect() {
|
||||||
|
assertEquals(new Point2(0, 0), GeneralUtilities.worldToLocalChunkCoordinates(-128, -32));
|
||||||
|
assertEquals(new Point2(0, 0), GeneralUtilities.worldToLocalChunkCoordinates(new Point2(-256, -16)));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testWorldToLocalCoordinatesPositive() {
|
||||||
|
assertEquals(new Point2(7, 3), GeneralUtilities.worldToLocalChunkCoordinates(39, 83));
|
||||||
|
assertEquals(new Point2(7, 3), GeneralUtilities.worldToLocalChunkCoordinates(new Point2(39, 83)));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testWorldToLocalCoordinatesPositivePerfect() {
|
||||||
|
assertEquals(new Point2(0, 0), GeneralUtilities.worldToLocalChunkCoordinates(1024, 32));
|
||||||
|
assertEquals(new Point2(0, 0), GeneralUtilities.worldToLocalChunkCoordinates(new Point2(16, 80)));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testWorldToLocalCoordinatesPositiveEntirety() {
|
||||||
|
int chunkX = 4;
|
||||||
|
int chunkZ = 3;
|
||||||
|
for (int x = 0; x < GeneralUtilities.CHUNK_SIZE; x++) {
|
||||||
|
for (int z = 0; z < GeneralUtilities.CHUNK_SIZE; z++) {
|
||||||
|
int worldX = GeneralUtilities.CHUNK_SIZE * chunkX + x;
|
||||||
|
int worldZ = GeneralUtilities.CHUNK_SIZE * chunkZ + z;
|
||||||
|
assertEquals(new Point2(x, z), GeneralUtilities.worldToLocalChunkCoordinates(new Point2(worldX, worldZ)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testWorldToLocalCoordinatesNegativeEntirety() {
|
||||||
|
int chunkX = -42;
|
||||||
|
int chunkZ = -3;
|
||||||
|
for (int x = 0; x < GeneralUtilities.CHUNK_SIZE; x++) {
|
||||||
|
for (int z = 0; z < GeneralUtilities.CHUNK_SIZE; z++) {
|
||||||
|
int worldX = GeneralUtilities.CHUNK_SIZE * chunkX + x;
|
||||||
|
int worldZ = GeneralUtilities.CHUNK_SIZE * chunkZ + z;
|
||||||
|
assertEquals(new Point2(x, z), GeneralUtilities.worldToLocalChunkCoordinates(new Point2(worldX, worldZ)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
package ca.recrown.islandsurvivalcraft.caching;
|
package ca.recrown.islandsurvivalcraft.utilities.caching;
|
||||||
|
|
||||||
import static org.junit.Assert.assertSame;
|
import static org.junit.Assert.assertSame;
|
||||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
@ -1,4 +1,4 @@
|
|||||||
package ca.recrown.islandsurvivalcraft.floodfill;
|
package ca.recrown.islandsurvivalcraft.utilities.floodfill;
|
||||||
|
|
||||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||||
@ -13,7 +13,8 @@ import org.junit.jupiter.api.Test;
|
|||||||
import org.junit.jupiter.api.TestInstance;
|
import org.junit.jupiter.api.TestInstance;
|
||||||
import org.junit.jupiter.api.TestInstance.Lifecycle;
|
import org.junit.jupiter.api.TestInstance.Lifecycle;
|
||||||
|
|
||||||
import ca.recrown.islandsurvivalcraft.datatypes.Point2;
|
import ca.recrown.islandsurvivalcraft.utilities.datatypes.Point2;
|
||||||
|
import ca.recrown.islandsurvivalcraft.utilities.floodfill.Floodable;
|
||||||
|
|
||||||
@TestInstance(Lifecycle.PER_CLASS)
|
@TestInstance(Lifecycle.PER_CLASS)
|
||||||
public class FloodFillTest {
|
public class FloodFillTest {
|
@ -1,4 +1,4 @@
|
|||||||
package ca.recrown.islandsurvivalcraft.pathfinding;
|
package ca.recrown.islandsurvivalcraft.utilities.pathfinding;
|
||||||
|
|
||||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
import static org.junit.jupiter.api.Assertions.assertFalse;
|
import static org.junit.jupiter.api.Assertions.assertFalse;
|
||||||
@ -14,6 +14,9 @@ import org.junit.jupiter.api.Test;
|
|||||||
import org.junit.jupiter.api.TestInstance;
|
import org.junit.jupiter.api.TestInstance;
|
||||||
import org.junit.jupiter.api.TestInstance.Lifecycle;
|
import org.junit.jupiter.api.TestInstance.Lifecycle;
|
||||||
|
|
||||||
|
import ca.recrown.islandsurvivalcraft.utilities.pathfinding.CoordinateTargetValidatable;
|
||||||
|
import ca.recrown.islandsurvivalcraft.utilities.pathfinding.CoordinateValidatable;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Unit test for simple App.
|
* Unit test for simple App.
|
||||||
*/
|
*/
|
@ -19,9 +19,9 @@ import org.junit.jupiter.api.TestInstance;
|
|||||||
import org.junit.jupiter.api.Timeout;
|
import org.junit.jupiter.api.Timeout;
|
||||||
import org.junit.jupiter.api.TestInstance.Lifecycle;
|
import org.junit.jupiter.api.TestInstance.Lifecycle;
|
||||||
|
|
||||||
import ca.recrown.islandsurvivalcraft.Utilities;
|
import ca.recrown.islandsurvivalcraft.utilities.GeneralUtilities;
|
||||||
import ca.recrown.islandsurvivalcraft.caching.Cache;
|
import ca.recrown.islandsurvivalcraft.utilities.caching.Cache;
|
||||||
import ca.recrown.islandsurvivalcraft.datatypes.Point2;
|
import ca.recrown.islandsurvivalcraft.utilities.datatypes.Point2;
|
||||||
import ca.recrown.islandsurvivalcraft.world.BiomeMap;
|
import ca.recrown.islandsurvivalcraft.world.BiomeMap;
|
||||||
import ca.recrown.islandsurvivalcraft.world.IslandWorldMap;
|
import ca.recrown.islandsurvivalcraft.world.IslandWorldMap;
|
||||||
import ca.recrown.islandsurvivalcraft.world.TemperatureMap;
|
import ca.recrown.islandsurvivalcraft.world.TemperatureMap;
|
||||||
@ -60,9 +60,9 @@ public class UniqueBiomeGeneratorTest {
|
|||||||
TemperatureMap temperatureMapGenerator = new TemperatureMap(random);
|
TemperatureMap temperatureMapGenerator = new TemperatureMap(random);
|
||||||
BiomeGenerator biomeGenerator = new UniqueBiomeGenerator();
|
BiomeGenerator biomeGenerator = new UniqueBiomeGenerator();
|
||||||
|
|
||||||
Biome[][][] biomes = new Biome[Utilities.CHUNK_SIZE][Utilities.CHUNK_SIZE][4];
|
Biome[][][] biomes = new Biome[GeneralUtilities.CHUNK_SIZE][GeneralUtilities.CHUNK_SIZE][4];
|
||||||
for (int localX = 0; localX < Utilities.CHUNK_SIZE; localX++) {
|
for (int localX = 0; localX < GeneralUtilities.CHUNK_SIZE; localX++) {
|
||||||
for (int localZ = 0; localZ < Utilities.CHUNK_SIZE; localZ++) {
|
for (int localZ = 0; localZ < GeneralUtilities.CHUNK_SIZE; localZ++) {
|
||||||
if (biomes[localX][localZ] == null) {
|
if (biomes[localX][localZ] == null) {
|
||||||
biomeGenerator.generateBiomeColumn(biomes, dummyWorld, chunkX, chunkZ, localX, localZ, mapper,
|
biomeGenerator.generateBiomeColumn(biomes, dummyWorld, chunkX, chunkZ, localX, localZ, mapper,
|
||||||
biomeSelector, temperatureMapGenerator, biomeCache, chunkExistenceCache);
|
biomeSelector, temperatureMapGenerator, biomeCache, chunkExistenceCache);
|
||||||
|
Loading…
Reference in New Issue
Block a user