From e35741585dc0211ad2f3e2f46568b8f1e27d02f3 Mon Sep 17 00:00:00 2001 From: George Gooden Date: Sat, 21 Mar 2015 12:58:35 +0800 Subject: [PATCH] Added fix for issue #4 --- build.gradle | 2 +- .../chunkgen/handlers/TickHandler.java | 2 +- .../gecgooden/chunkgen/util/Utilities.java | 24 ++++++++++--------- 3 files changed, 15 insertions(+), 13 deletions(-) diff --git a/build.gradle b/build.gradle index 25b2ec4..b9797e5 100644 --- a/build.gradle +++ b/build.gradle @@ -17,7 +17,7 @@ apply plugin: 'forge' -version = "1.7.10-1.2.2" +version = "1.7.10-1.2.3" group= "com.gecgooden.chunkgen" // http://maven.apache.org/guides/mini/guide-naming-conventions.html archivesBaseName = "chunkgen" diff --git a/src/main/java/com/gecgooden/chunkgen/handlers/TickHandler.java b/src/main/java/com/gecgooden/chunkgen/handlers/TickHandler.java index 34472d6..f475c86 100644 --- a/src/main/java/com/gecgooden/chunkgen/handlers/TickHandler.java +++ b/src/main/java/com/gecgooden/chunkgen/handlers/TickHandler.java @@ -24,7 +24,7 @@ public void onServerTick(TickEvent.ServerTickEvent event) { for(int i = 0; i < Reference.numChunksPerTick; i++) { ChunkPosition cp = Reference.toGenerate.poll(); if(cp != null) { - Utilities.generateChunk(cp.getX(), cp.getZ(), cp.getDimensionID()); + Utilities.generateChunk(null, cp.getX(), cp.getZ(), cp.getDimensionID()); float completedPercentage = 1 - (float)Reference.toGenerate.size()/(float)Reference.startingSize; if(tickCounter == Reference.tickDelay) { Reference.logger.info("percentage: " + completedPercentage); diff --git a/src/main/java/com/gecgooden/chunkgen/util/Utilities.java b/src/main/java/com/gecgooden/chunkgen/util/Utilities.java index 6686094..f241e2b 100644 --- a/src/main/java/com/gecgooden/chunkgen/util/Utilities.java +++ b/src/main/java/com/gecgooden/chunkgen/util/Utilities.java @@ -20,11 +20,7 @@ public static void generateChunks(int x, int z, int width, int height, int dimen List chunks = new ArrayList(width*height); for(int i = (x - width/2); i < (x + width/2); i++) { for(int j = (z - height/2); j < (z + height/2); j++) { - if(!cps.chunkExists(i, j)) { - chunks.add(cps.loadChunk(i, j)); - cps.saveChunks(true, null); - } - Reference.logger.info("Loaded Chunk at " + i + " " + j + " " + dimensionID); + generateChunk(null, i, j, dimensionID); } } for(Chunk c : chunks) { @@ -32,15 +28,21 @@ public static void generateChunks(int x, int z, int width, int height, int dimen } } - public static void generateChunk(int x, int z, int dimensionID) { - ChunkProviderServer cps = MinecraftServer.getServer().worldServerForDimension(dimensionID).theChunkProviderServer; - if(!cps.chunkExists(x, z)) { + private static boolean chunksExist(ChunkProviderServer cps, int x, int z) { + return cps.chunkExists(x, z) && cps.chunkExists(x, z+1) && cps.chunkExists(x+1, z) && cps.chunkExists(x+1, z+1); + } + + public static void generateChunk(ChunkProviderServer cps, int x, int z, int dimensionID) { + if(cps == null) { + cps = MinecraftServer.getServer().worldServerForDimension(dimensionID).theChunkProviderServer; + } + if(!chunksExist(cps, x, z)) { + cps.loadChunk(x, z); + cps.loadChunk(x, z+1); - cps.loadChunk(x, z-1); cps.loadChunk(x+1, z); - cps.loadChunk(x-1, z); + cps.loadChunk(x+1, z+1); - cps.loadChunk(x, z); // cps.unloadChunksIfNotNearSpawn(x, z); // // cps.unloadChunksIfNotNearSpawn(x, z+1);