From 0220c1ff746cd721c14fa1b09836addc26742e14 Mon Sep 17 00:00:00 2001 From: feildmaster Date: Tue, 24 Apr 2012 13:30:55 -0500 Subject: [PATCH] Remove legacy Chunk cache. Fixes BUKKIT-1400 --- src/main/java/net/minecraft/server/Chunk.java | 13 +++++----- .../minecraft/server/ChunkProviderServer.java | 2 -- .../org/bukkit/craftbukkit/CraftWorld.java | 26 +++++-------------- 3 files changed, 12 insertions(+), 29 deletions(-) diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java index 9aa5217452..5835eef900 100644 --- a/src/main/java/net/minecraft/server/Chunk.java +++ b/src/main/java/net/minecraft/server/Chunk.java @@ -7,8 +7,11 @@ import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Random; -import org.bukkit.Bukkit; // CraftBukkit -import org.bukkit.craftbukkit.util.UnsafeList; // CraftBukkit + +// CraftBukkit start +import org.bukkit.Bukkit; +import org.bukkit.craftbukkit.util.UnsafeList; +// CraftBukkit end public class Chunk { @@ -62,11 +65,7 @@ public class Chunk { // CraftBukkit start if (!(this instanceof EmptyChunk)) { - org.bukkit.craftbukkit.CraftWorld cworld = this.world.getWorld(); - this.bukkitChunk = (cworld == null) ? null : cworld.popPreservedChunk(i, j); - if (this.bukkitChunk == null) { - this.bukkitChunk = new org.bukkit.craftbukkit.CraftChunk(this); - } + this.bukkitChunk = new org.bukkit.craftbukkit.CraftChunk(this); } } diff --git a/src/main/java/net/minecraft/server/ChunkProviderServer.java b/src/main/java/net/minecraft/server/ChunkProviderServer.java index bc21b8a06d..60f7f91d21 100644 --- a/src/main/java/net/minecraft/server/ChunkProviderServer.java +++ b/src/main/java/net/minecraft/server/ChunkProviderServer.java @@ -241,8 +241,6 @@ public class ChunkProviderServer implements IChunkProvider { ChunkUnloadEvent event = new ChunkUnloadEvent(chunk.bukkitChunk); server.getPluginManager().callEvent(event); if (!event.isCancelled()) { - this.world.getWorld().preserveChunk((CraftChunk) chunk.bukkitChunk); - chunk.removeEntities(); this.saveChunk(chunk); this.saveChunkNOP(chunk); diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java index 8603f9e270..5bc8eb6877 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java @@ -1,8 +1,13 @@ package org.bukkit.craftbukkit; -import com.google.common.collect.MapMaker; import java.io.File; import java.util.Set; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashSet; +import java.util.List; +import java.util.Random; +import java.util.UUID; import org.apache.commons.lang.Validate; import org.bukkit.craftbukkit.entity.*; @@ -10,14 +15,6 @@ import org.bukkit.craftbukkit.metadata.BlockMetadataStore; import org.bukkit.entity.*; import org.bukkit.entity.Entity; -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashSet; -import java.util.concurrent.ConcurrentMap; -import java.util.List; -import java.util.Random; -import java.util.UUID; - import net.minecraft.server.*; import org.bukkit.entity.Arrow; @@ -52,7 +49,6 @@ public class CraftWorld implements World { private final WorldServer world; private Environment environment; private final CraftServer server = (CraftServer) Bukkit.getServer(); - private ConcurrentMap unloadedChunks = new MapMaker().weakValues().makeMap(); private final ChunkGenerator generator; private final List populators = new ArrayList(); private final BlockMetadataStore blockMetadata = new BlockMetadataStore(this); @@ -69,15 +65,6 @@ public class CraftWorld implements World { environment = env; } - public void preserveChunk(CraftChunk chunk) { - chunk.breakLink(); - unloadedChunks.put((chunk.getX() << 16) + chunk.getZ(), chunk); - } - - public Chunk popPreservedChunk(int x, int z) { - return unloadedChunks.remove((x << 16) + z); - } - public Block getBlockAt(int x, int y, int z) { return getChunkAt(x >> 4, z >> 4).getBlock(x & 0xF, y & 0xFF, z & 0xF); } @@ -181,7 +168,6 @@ public class CraftWorld implements World { world.chunkProviderServer.saveChunkNOP(chunk); } - preserveChunk((CraftChunk) chunk.bukkitChunk); world.chunkProviderServer.unloadQueue.remove(x, z); world.chunkProviderServer.chunks.remove(x, z); world.chunkProviderServer.chunkList.remove(chunk);