From bc170451968e3fcac09a34c714439910740de512 Mon Sep 17 00:00:00 2001 From: Mike Primm Date: Sat, 17 Sep 2011 13:49:21 +0800 Subject: [PATCH] Workaround explosion in getSnapshot in Bukkit when biome data requested on nether in 1.8 Bukkit --- .../java/org/dynmap/utils/NewMapChunkCache.java | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/dynmap/utils/NewMapChunkCache.java b/src/main/java/org/dynmap/utils/NewMapChunkCache.java index 79692ddf..67d82414 100644 --- a/src/main/java/org/dynmap/utils/NewMapChunkCache.java +++ b/src/main/java/org/dynmap/utils/NewMapChunkCache.java @@ -8,6 +8,7 @@ import java.util.ListIterator; import org.bukkit.World; import org.bukkit.Chunk; +import org.bukkit.World.Environment; import org.bukkit.block.Biome; import org.bukkit.entity.Entity; import org.bukkit.ChunkSnapshot; @@ -357,6 +358,9 @@ public class NewMapChunkCache implements MapChunkCache { @SuppressWarnings({ "unchecked", "rawtypes" }) public void setChunks(World w, List chunks) { this.w = w; + if(w.getEnvironment() != Environment.NORMAL) { + biome = biomeraw = false; + } this.chunks = chunks; if(poppreservedchunk == null) { /* Get CraftWorld.popPreservedChunk(x,z) - reduces memory bloat from map traversals (optional) */ @@ -469,6 +473,7 @@ public class NewMapChunkCache implements MapChunkCache { iterator = chunks.listIterator(); DynmapPlugin.setIgnoreChunkLoads(true); + boolean isnormral = w.getEnvironment() == Environment.NORMAL; // Load the required chunks. while((cnt < max_to_load) && iterator.hasNext()) { DynmapChunk chunk = iterator.next(); @@ -733,8 +738,13 @@ public class NewMapChunkCache implements MapChunkCache { } @Override public boolean setChunkDataTypes(boolean blockdata, boolean biome, boolean highestblocky, boolean rawbiome) { - this.biome = biome; - this.biomeraw = rawbiome; + if((w != null) && (w.getEnvironment() != Environment.NORMAL)) { + this.biome = this.biomeraw = false; + } + else { + this.biome = biome; + this.biomeraw = rawbiome; + } this.highesty = highestblocky; this.blockdata = blockdata; return true;