Browse Source

Merge pull request #304 from Glitchfinder/master

Attempting a minor reduction in lag for larger servers.
Grant 12 years ago
parent
commit
9c4ff30ce7

+ 0 - 15
src/main/java/com/gmail/nossr50/listeners/WorldListener.java

@@ -49,19 +49,4 @@ public class WorldListener implements Listener {
     public void onChunkUnload(ChunkUnloadEvent event) {
         mcMMO.placeStore.chunkUnloaded(event.getChunk().getX(), event.getChunk().getZ(), event.getWorld());
     }
-
-    @EventHandler
-    public void onChunkLoad(ChunkLoadEvent event) {
-	File dataDir = new File(event.getChunk().getWorld().getWorldFolder(), "mcmmo_data");
-
-        if(!dataDir.exists() || !dataDir.isDirectory()) {
-            return;
-        }
-
-        World world = event.getChunk().getWorld();
-        int cx = event.getChunk().getX();
-        int cz = event.getChunk().getZ();
-
-        ((HashChunkManager) mcMMO.p.placeStore).convertChunk(dataDir, cx, cz, world);
-    }
 }

+ 8 - 3
src/main/java/com/gmail/nossr50/util/blockmeta/chunkmeta/HashChunkManager.java

@@ -6,6 +6,7 @@ import java.io.IOException;
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
 import java.io.OutputStream;
+import java.lang.Boolean;
 import java.lang.Integer;
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -30,6 +31,7 @@ public class HashChunkManager implements ChunkManager {
     private HashMap<UUID, HashMap<Long, mcMMOSimpleRegionFile>> regionFiles = new HashMap<UUID, HashMap<Long, mcMMOSimpleRegionFile>>();
     public HashMap<String, ChunkStore> store = new HashMap<String, ChunkStore>();
     public ArrayList<BlockStoreConversionZDirectory> converters = new ArrayList<BlockStoreConversionZDirectory>();
+    private HashMap<UUID, Boolean> oldData = new HashMap<UUID, Boolean>();
 
     @Override
     public synchronized void closeAll() {
@@ -149,9 +151,12 @@ public class HashChunkManager implements ChunkManager {
 
         ChunkStore in = null;
 
-        File dataDir = new File(world.getWorldFolder(), "mcmmo_data");
-        if(dataDir.exists())
-            convertChunk(dataDir, cx, cz, world, true);
+        UUID key = world.getUID();
+        if(!this.oldData.containsKey(key))
+            this.oldData.put(key, (new File(world.getWorldFolder(), "mcmmo_data")).exists());
+
+        if(this.oldData.containsKey(key) && oldData.get(key))
+            convertChunk(new File(world.getWorldFolder(), "mcmmo_data"), cx, cz, world, true);
 
         try {
             in = readChunkStore(world, cx, cz);