Large package structure refactoring.
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
package ca.recrown.islandsurvivalcraft;
|
||||
package ca.recrown.islandsurvivalcraft.utilities;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
@@ -7,9 +7,9 @@ import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.Executors;
|
||||
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 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));
|
@@ -1,4 +1,4 @@
|
||||
package ca.recrown.islandsurvivalcraft.caching;
|
||||
package ca.recrown.islandsurvivalcraft.utilities.caching;
|
||||
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
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;
|
||||
|
@@ -1,4 +1,4 @@
|
||||
package ca.recrown.islandsurvivalcraft.caching;
|
||||
package ca.recrown.islandsurvivalcraft.utilities.caching;
|
||||
|
||||
class CacheValue<KeyType, ValueType> {
|
||||
/**
|
@@ -1,4 +1,4 @@
|
||||
package ca.recrown.islandsurvivalcraft.datatypes;
|
||||
package ca.recrown.islandsurvivalcraft.utilities.datatypes;
|
||||
|
||||
import java.util.Objects;
|
||||
|
@@ -1,4 +1,4 @@
|
||||
package ca.recrown.islandsurvivalcraft.datatypes;
|
||||
package ca.recrown.islandsurvivalcraft.utilities.datatypes;
|
||||
|
||||
import java.util.Objects;
|
||||
|
@@ -1,4 +1,4 @@
|
||||
package ca.recrown.islandsurvivalcraft.datatypes;
|
||||
package ca.recrown.islandsurvivalcraft.utilities.datatypes;
|
||||
|
||||
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 {
|
||||
/**
|
@@ -1,9 +1,10 @@
|
||||
package ca.recrown.islandsurvivalcraft.floodfill;
|
||||
package ca.recrown.islandsurvivalcraft.utilities.floodfill;
|
||||
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.LinkedList;
|
||||
|
||||
import ca.recrown.islandsurvivalcraft.datatypes.Point2;
|
||||
import ca.recrown.islandsurvivalcraft.utilities.datatypes.Point2;
|
||||
|
||||
public class Flooder {
|
||||
private final Point2 start;
|
@@ -1,4 +1,4 @@
|
||||
package ca.recrown.islandsurvivalcraft.pathfinding;
|
||||
package ca.recrown.islandsurvivalcraft.utilities.pathfinding;
|
||||
|
||||
public interface CoordinateTargetValidatable {
|
||||
/**
|
@@ -1,4 +1,4 @@
|
||||
package ca.recrown.islandsurvivalcraft.pathfinding;
|
||||
package ca.recrown.islandsurvivalcraft.utilities.pathfinding;
|
||||
|
||||
public interface CoordinateValidatable {
|
||||
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 ca.recrown.islandsurvivalcraft.datatypes.Point2;
|
||||
import ca.recrown.islandsurvivalcraft.utilities.datatypes.Point2;
|
||||
|
||||
public class DFSNode extends Point2 implements Comparable<DFSNode> {
|
||||
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.PriorityQueue;
|
||||
@@ -6,7 +6,7 @@ import java.util.Queue;
|
||||
|
||||
import org.apache.commons.lang.NullArgumentException;
|
||||
|
||||
import ca.recrown.islandsurvivalcraft.datatypes.Point2;
|
||||
import ca.recrown.islandsurvivalcraft.utilities.datatypes.Point2;
|
||||
|
||||
public class DepthFirstSearch {
|
||||
private Queue<DFSNode> queue;
|
@@ -8,7 +8,7 @@ import java.util.Map.Entry;
|
||||
import org.bukkit.block.Biome;
|
||||
import org.bukkit.util.noise.SimplexOctaveGenerator;
|
||||
|
||||
import ca.recrown.islandsurvivalcraft.Utilities;
|
||||
import ca.recrown.islandsurvivalcraft.utilities.GeneralUtilities;
|
||||
|
||||
public class BiomeMap {
|
||||
private final SimplexOctaveGenerator noise;
|
||||
@@ -74,7 +74,7 @@ public class BiomeMap {
|
||||
landBiomeTemperatures.put(Biome.BADLANDS_PLATEAU, 2.0f);
|
||||
landBiomeTemperatures.put(Biome.MODIFIED_BADLANDS_PLATEAU, 2.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()) {
|
||||
if (entry.getKey() <= 0.05f) {
|
||||
@@ -95,7 +95,7 @@ public class BiomeMap {
|
||||
oceanBiomeTemperatures.put(Biome.OCEAN, 0.3f);
|
||||
oceanBiomeTemperatures.put(Biome.COLD_OCEAN, 0.3f);
|
||||
oceanBiomeTemperatures.put(Biome.FROZEN_OCEAN, 0f);
|
||||
temperaturesForOcean = Utilities.invertHashMap(oceanBiomeTemperatures);
|
||||
temperaturesForOcean = GeneralUtilities.invertHashMap(oceanBiomeTemperatures);
|
||||
for (Entry<Float, ArrayList<Biome>> entry : temperaturesForOcean.entrySet()) {
|
||||
if (entry.getKey() <= 0.00f) {
|
||||
temperaturePartitionedOceanBiomes.get(0.0f).addAll(entry.getValue());
|
||||
|
@@ -4,10 +4,10 @@ import java.util.Random;
|
||||
|
||||
import org.bukkit.util.noise.SimplexOctaveGenerator;
|
||||
|
||||
import ca.recrown.islandsurvivalcraft.datatypes.Point2;
|
||||
import ca.recrown.islandsurvivalcraft.caching.Cache;
|
||||
import ca.recrown.islandsurvivalcraft.pathfinding.CoordinateValidatable;
|
||||
import ca.recrown.islandsurvivalcraft.pathfinding.DepthFirstSearch;
|
||||
import ca.recrown.islandsurvivalcraft.utilities.caching.Cache;
|
||||
import ca.recrown.islandsurvivalcraft.utilities.datatypes.Point2;
|
||||
import ca.recrown.islandsurvivalcraft.utilities.pathfinding.CoordinateValidatable;
|
||||
import ca.recrown.islandsurvivalcraft.utilities.pathfinding.DepthFirstSearch;
|
||||
|
||||
public class IslandWorldMap implements CoordinateValidatable {
|
||||
private final Cache<Point2, Double> blockValueCache;
|
||||
|
@@ -4,8 +4,8 @@ import java.util.Random;
|
||||
|
||||
import org.bukkit.util.noise.SimplexOctaveGenerator;
|
||||
|
||||
import ca.recrown.islandsurvivalcraft.datatypes.Point2;
|
||||
import ca.recrown.islandsurvivalcraft.caching.Cache;
|
||||
import ca.recrown.islandsurvivalcraft.utilities.caching.Cache;
|
||||
import ca.recrown.islandsurvivalcraft.utilities.datatypes.Point2;
|
||||
|
||||
public class TemperatureMap {
|
||||
private final Cache<Point2, Float> temperatureCache;
|
||||
|
@@ -3,8 +3,8 @@ package ca.recrown.islandsurvivalcraft.world.generation.biomes;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.block.Biome;
|
||||
|
||||
import ca.recrown.islandsurvivalcraft.caching.Cache;
|
||||
import ca.recrown.islandsurvivalcraft.datatypes.Point2;
|
||||
import ca.recrown.islandsurvivalcraft.utilities.caching.Cache;
|
||||
import ca.recrown.islandsurvivalcraft.utilities.datatypes.Point2;
|
||||
import ca.recrown.islandsurvivalcraft.world.BiomeMap;
|
||||
import ca.recrown.islandsurvivalcraft.world.IslandWorldMap;
|
||||
import ca.recrown.islandsurvivalcraft.world.TemperatureMap;
|
||||
|
@@ -3,13 +3,13 @@ package ca.recrown.islandsurvivalcraft.world.generation.biomes;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.block.Biome;
|
||||
|
||||
import ca.recrown.islandsurvivalcraft.Utilities;
|
||||
import ca.recrown.islandsurvivalcraft.datatypes.Point2;
|
||||
import ca.recrown.islandsurvivalcraft.caching.Cache;
|
||||
import ca.recrown.islandsurvivalcraft.floodfill.Floodable;
|
||||
import ca.recrown.islandsurvivalcraft.floodfill.Flooder;
|
||||
import ca.recrown.islandsurvivalcraft.pathfinding.CoordinateTargetValidatable;
|
||||
import ca.recrown.islandsurvivalcraft.pathfinding.DepthFirstSearch;
|
||||
import ca.recrown.islandsurvivalcraft.utilities.GeneralUtilities;
|
||||
import ca.recrown.islandsurvivalcraft.utilities.caching.Cache;
|
||||
import ca.recrown.islandsurvivalcraft.utilities.datatypes.Point2;
|
||||
import ca.recrown.islandsurvivalcraft.utilities.floodfill.Floodable;
|
||||
import ca.recrown.islandsurvivalcraft.utilities.floodfill.Flooder;
|
||||
import ca.recrown.islandsurvivalcraft.utilities.pathfinding.CoordinateTargetValidatable;
|
||||
import ca.recrown.islandsurvivalcraft.utilities.pathfinding.DepthFirstSearch;
|
||||
import ca.recrown.islandsurvivalcraft.world.BiomeMap;
|
||||
import ca.recrown.islandsurvivalcraft.world.IslandWorldMap;
|
||||
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) {
|
||||
int worldX = 16 * chunkX + localX;
|
||||
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);
|
||||
|
||||
//Check if we can just give it something in cache.
|
||||
@@ -60,14 +60,14 @@ public class UniqueBiomeGenerator implements BiomeGenerator {
|
||||
Biome[] res = null;
|
||||
|
||||
if (chunkBiomeSets != null) {
|
||||
Point2 localCoords = Utilities.worldToLocalChunkCoordinates(worldCoords);
|
||||
Point2 localCoords = GeneralUtilities.worldToLocalChunkCoordinates(worldCoords);
|
||||
return chunkBiomeSets[localCoords.x][localCoords.y];
|
||||
}
|
||||
|
||||
res = biomeCache.get(worldCoords);
|
||||
if (res != null) return res;
|
||||
|
||||
Point2 chunkCoords = Utilities.worldToChunkCoordinates(worldCoords);
|
||||
Point2 chunkCoords = GeneralUtilities.worldToChunkCoordinates(worldCoords);
|
||||
Boolean chunkExists = existenceCache.get(chunkCoords);
|
||||
if (chunkExists == null) {
|
||||
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) {
|
||||
Point2 worldCoords = new Point2(worldX, worldZ);
|
||||
if (localBiomes != null) {
|
||||
Point2 localCoords = Utilities.worldToLocalChunkCoordinates(worldCoords);
|
||||
Point2 localCoords = GeneralUtilities.worldToLocalChunkCoordinates(worldCoords);
|
||||
localBiomes[localCoords.x][localCoords.y] = biomeSet;
|
||||
}
|
||||
biomeCache.set(worldCoords, biomeSet);
|
||||
@@ -145,7 +145,7 @@ public class UniqueBiomeGenerator implements BiomeGenerator {
|
||||
|
||||
@Override
|
||||
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;
|
||||
int x = point.x;
|
||||
int y = point.y;
|
||||
|
@@ -15,9 +15,9 @@ import org.bukkit.block.data.BlockData;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.generator.ChunkGenerator;
|
||||
|
||||
import ca.recrown.islandsurvivalcraft.Utilities;
|
||||
import ca.recrown.islandsurvivalcraft.caching.Cache;
|
||||
import ca.recrown.islandsurvivalcraft.datatypes.Point2;
|
||||
import ca.recrown.islandsurvivalcraft.utilities.GeneralUtilities;
|
||||
import ca.recrown.islandsurvivalcraft.utilities.caching.Cache;
|
||||
import ca.recrown.islandsurvivalcraft.utilities.datatypes.Point2;
|
||||
import ca.recrown.islandsurvivalcraft.world.BiomeMap;
|
||||
import ca.recrown.islandsurvivalcraft.world.IslandWorldMap;
|
||||
import ca.recrown.islandsurvivalcraft.world.TemperatureMap;
|
||||
@@ -39,8 +39,8 @@ public class IslandWorldChunkGenerator extends ChunkGenerator implements Listene
|
||||
private volatile WorldLayerShader layerShader;
|
||||
private volatile Cache<Point2, Biome[]> biomeCache = new Cache<>(131072);
|
||||
private volatile Cache<Point2, Boolean> chunkLoadedCache = new Cache<>(4096);
|
||||
private volatile ExecutorService exAlpha = Utilities.ISC_EXECUTOR_ALPHA;
|
||||
private volatile ExecutorService exBeta = Utilities.ISC_EXECUTOR_BETA;
|
||||
private volatile ExecutorService exAlpha = GeneralUtilities.ISC_EXECUTOR_ALPHA;
|
||||
private volatile ExecutorService exBeta = GeneralUtilities.ISC_EXECUTOR_BETA;
|
||||
|
||||
public void initialize(Random random, boolean uniqueBiome, int seaLevel, int worldHeight) {
|
||||
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<>();
|
||||
ChunkData chunkData = createChunkData(world);
|
||||
Future<Boolean> preLoader = exAlpha.submit(() -> {
|
||||
for (int x = Utilities.CHUNK_SIZE - 1; x >= 0; x--) {
|
||||
for (int z = Utilities.CHUNK_SIZE - 1; z >= 0; z--) {
|
||||
for (int x = GeneralUtilities.CHUNK_SIZE - 1; x >= 0; x--) {
|
||||
for (int z = GeneralUtilities.CHUNK_SIZE - 1; z >= 0; z--) {
|
||||
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;
|
||||
});
|
||||
|
||||
Biome[][][] biomeArraySet = new Biome[Utilities.CHUNK_SIZE][Utilities.CHUNK_SIZE][4];
|
||||
for (int x = 0; x < Utilities.CHUNK_SIZE; x++) {
|
||||
for (int z = 0; z < Utilities.CHUNK_SIZE; z++) {
|
||||
Biome[][][] biomeArraySet = new Biome[GeneralUtilities.CHUNK_SIZE][GeneralUtilities.CHUNK_SIZE][4];
|
||||
for (int x = 0; x < GeneralUtilities.CHUNK_SIZE; x++) {
|
||||
for (int z = 0; z < GeneralUtilities.CHUNK_SIZE; z++) {
|
||||
final int localX = x;
|
||||
final int localZ = z;
|
||||
final int worldX = Utilities.CHUNK_SIZE * chunkX + localX;
|
||||
final int worldZ = Utilities.CHUNK_SIZE * chunkZ + localZ;
|
||||
final int worldX = GeneralUtilities.CHUNK_SIZE * chunkX + localX;
|
||||
final int worldZ = GeneralUtilities.CHUNK_SIZE * chunkZ + localZ;
|
||||
if (biomeArraySet[localX][localZ][0] == null) {
|
||||
biomeGenerator.generateBiomeColumn(biomeArraySet, world, chunkX, chunkZ, localX, localZ, islandMap, biomeMap,
|
||||
temperatureMap, biomeCache, chunkLoadedCache);
|
||||
|
@@ -7,8 +7,8 @@ import org.bukkit.block.Biome;
|
||||
import org.bukkit.block.data.BlockData;
|
||||
import org.bukkit.util.noise.SimplexOctaveGenerator;
|
||||
|
||||
import ca.recrown.islandsurvivalcraft.caching.Cache;
|
||||
import ca.recrown.islandsurvivalcraft.datatypes.Vector3;
|
||||
import ca.recrown.islandsurvivalcraft.utilities.caching.Cache;
|
||||
import ca.recrown.islandsurvivalcraft.utilities.datatypes.Vector3;
|
||||
import ca.recrown.islandsurvivalcraft.world.IslandWorldMap;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
|
Reference in New Issue
Block a user