From f023529d375d86a18c95ed81ca348b05ca2ee0c4 Mon Sep 17 00:00:00 2001 From: Glitchfinder Date: Tue, 6 Nov 2012 23:15:15 -0800 Subject: [PATCH] Reducing filesystem usage. Should help reduce lag on larger servers. THIS IS NOT A PERMANENT SOLUTION. --- .../gmail/nossr50/listeners/WorldListener.java | 15 --------------- .../blockmeta/chunkmeta/HashChunkManager.java | 11 ++++++++--- 2 files changed, 8 insertions(+), 18 deletions(-) diff --git a/src/main/java/com/gmail/nossr50/listeners/WorldListener.java b/src/main/java/com/gmail/nossr50/listeners/WorldListener.java index 1b1c27bfc..514b489ad 100644 --- a/src/main/java/com/gmail/nossr50/listeners/WorldListener.java +++ b/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); - } } diff --git a/src/main/java/com/gmail/nossr50/util/blockmeta/chunkmeta/HashChunkManager.java b/src/main/java/com/gmail/nossr50/util/blockmeta/chunkmeta/HashChunkManager.java index 225725dca..c449e7681 100755 --- a/src/main/java/com/gmail/nossr50/util/blockmeta/chunkmeta/HashChunkManager.java +++ b/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> regionFiles = new HashMap>(); public HashMap store = new HashMap(); public ArrayList converters = new ArrayList(); + private HashMap oldData = new HashMap(); @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);