diff --git a/src/main/java/ca/recrown/islandsurvivalcraft/worldgen/IslandBaseTerrainGenerator.java b/src/main/java/ca/recrown/islandsurvivalcraft/worldgen/IslandBaseTerrainGenerator.java deleted file mode 100644 index f044d68..0000000 --- a/src/main/java/ca/recrown/islandsurvivalcraft/worldgen/IslandBaseTerrainGenerator.java +++ /dev/null @@ -1,101 +0,0 @@ -package ca.recrown.islandsurvivalcraft.worldgen; - -import java.util.Random; - -import org.bukkit.Material; -import org.bukkit.World; -import org.bukkit.block.Biome; -import org.bukkit.generator.ChunkGenerator.ChunkData; -import org.bukkit.util.noise.SimplexOctaveGenerator; - -import nl.rutgerkok.worldgeneratorapi.BaseTerrainGenerator; -import nl.rutgerkok.worldgeneratorapi.BaseNoiseGenerator.TerrainSettings; - -public class IslandBaseTerrainGenerator implements BaseTerrainGenerator { - private TerrainSettings settings; - private SimplexOctaveGenerator baseNoiseGenerator; - private SimplexOctaveGenerator islandShapeGenerator; - private final int scale = 100; - private final int maximumHeight = 65; - private final int minimumHeight = 3; - private Random random; - private World world; - - public IslandBaseTerrainGenerator(World world) { - this.random = new Random(world.getSeed()); - this.baseNoiseGenerator = new SimplexOctaveGenerator(random, 4); - this.baseNoiseGenerator.setScale(0.0125D); - this.islandShapeGenerator = new SimplexOctaveGenerator(random, 8); - this.islandShapeGenerator.setScale(0.02D); - this.settings = new TerrainSettings(); - this.settings.seaLevel = world.getSeaLevel(); - - this.world = world; - } - - @Override - public void setBlocksInChunk(GeneratingChunk chunk) { - for (int x = 0; x < 16; x++) - for (int z = 0; z < 16; z++) { - int worldX = 16 * chunk.getChunkX() + x; - int worldZ = 16 * chunk.getChunkZ() + z; - - int height = baseHeight(worldX, worldZ); - Biome biome = chunk.getBiomesForChunk().getBiome(x, height, z); - height += additionalHeight(worldX, worldZ, biome); - fillChunkColumn(x, z, height, chunk.getBlocksForChunk()); - } - } - - - private void fillChunkColumn(int x, int z, int height, ChunkData chunkData) { - if (height <= settings.seaLevel) { - chunkData.setRegion(x, height, z, x+1, settings.seaLevel, z+1, Material.WATER); - chunkData.setRegion(x, 0, z, x+1, height, z+1, Material.STONE); - } else { - chunkData.setRegion(x, 0, z, x+1, height, z+1, Material.STONE); - } - } - - private int baseHeight(int x, int z) { - return Math.min((int) ((baseNoiseGenerator.noise(x, z, 0.2D, 0.3D, true) + 1D) * scale/2D) + minimumHeight, maximumHeight); - } - - private int additionalHeight(int worldX, int worldZ, Biome biome) { - int height = 0; - String biomeName = biome.name(); - if (biomeName.contains("hills")) { - height += islandHeight(worldX, worldZ, 0.5D, 0.5D, 15); - } else if (biomeName.contains("mountains")) { - height += islandHeight(worldX, worldZ, 0.5D, 0.5D, 60); - } else if (biomeName.contains("plateau")) { - height *= 1.2f; - height += Math.min(55, islandHeight(worldX, worldZ, 0.3D, 0.3D, 5)); - } else if (biomeName.contains("modified")) { - height += islandHeight(worldX, worldZ, 0.5D, 0.5D, 20); - } else if (biomeName.contains("shattered")) { - height += islandHeight(worldX, worldZ, 0.5D, 0.5D, 20); - } else if (biomeName.contains("tall")) { - height += islandHeight(worldX, worldZ, 0.5D, 0.5D, 30); - } else { - height += islandHeight(worldX, worldZ, 0.5D, 0.5D, 8); - } - return height; - } - - private int islandHeight(int x, int z, double freq, double amp, int maximumHeight) { - return (int) ((islandShapeGenerator.noise(x, z, freq, amp, true) + 1D) * maximumHeight/2D); - } - - @Override - public int getHeight(int x, int z, HeightType type) { - // TODO FIX THIS. Innacurate readings. Due to innacurate biomes. - Biome biome = world.getBiome(x, settings.seaLevel, z); - int totalHeight = additionalHeight(x, z, biome) + baseHeight(x, z); - if (totalHeight <= settings.seaLevel && type == HeightType.OCEAN_FLOOR) { - return totalHeight; - } - return totalHeight; - } - -} \ No newline at end of file