This commit is contained in:
NuclearW 2012-05-17 03:57:16 -04:00
parent 5645bf7982
commit db59f24873
5 changed files with 39 additions and 37 deletions

View File

@ -1,8 +1,8 @@
package com.gmail.nossr50.util.blockmeta; package com.gmail.nossr50.util.blockmeta;
public class ChunkletManagerFactory { public class ChunkletManagerFactory {
public static ChunkletManager getChunkletManager() { public static ChunkletManager getChunkletManager() {
// TODO: Add in loading from config what type of manager we want. // TODO: Add in loading from config what type of manager we want.
return new HashChunkletManager(); return new HashChunkletManager();
} }
} }

View File

@ -4,6 +4,8 @@ import java.io.Serializable;
public interface ChunkletStore extends Serializable { public interface ChunkletStore extends Serializable {
/** /**
* Checks the value at the given coordinates
*
* @param x x coordinate in current chunklet * @param x x coordinate in current chunklet
* @param y y coordinate in current chunklet * @param y y coordinate in current chunklet
* @param z z coordinate in current chunklet * @param z z coordinate in current chunklet

View File

@ -1,8 +1,8 @@
package com.gmail.nossr50.util.blockmeta; package com.gmail.nossr50.util.blockmeta;
public class ChunkletStoreFactory { public class ChunkletStoreFactory {
protected static ChunkletStore getChunkletStore() { protected static ChunkletStore getChunkletStore() {
// TODO: Add in loading from config what type of store we want. // TODO: Add in loading from config what type of store we want.
return new PrimitiveChunkletStore(); return new PrimitiveChunkletStore();
} }
} }

View File

@ -29,7 +29,7 @@ public class HashChunkletManager implements ChunkletManager {
} else { } else {
ChunkletStore in = deserializeChunkletStore(yFile); ChunkletStore in = deserializeChunkletStore(yFile);
if(in != null) { if(in != null) {
store.put(world.getName() + "," + cx + "," + cz + "," + y, in); store.put(world.getName() + "," + cx + "," + cz + "," + y, in);
} }
} }
} }
@ -78,29 +78,29 @@ public class HashChunkletManager implements ChunkletManager {
} }
public void unloadWorld(World world) { public void unloadWorld(World world) {
saveWorld(world); saveWorld(world);
String worldName = world.getName(); String worldName = world.getName();
for(String key : store.keySet()) { for(String key : store.keySet()) {
String tempWorldName = key.split(",")[0]; String tempWorldName = key.split(",")[0];
if(tempWorldName.equals(worldName)) { if(tempWorldName.equals(worldName)) {
store.remove(key); store.remove(key);
} }
} }
} }
public void saveAll() { public void saveAll() {
for(World world : Bukkit.getWorlds()) { for(World world : Bukkit.getWorlds()) {
saveWorld(world); saveWorld(world);
} }
} }
public void unloadAll() { public void unloadAll() {
saveAll(); saveAll();
for(World world : Bukkit.getWorlds()) { for(World world : Bukkit.getWorlds()) {
unloadWorld(world); unloadWorld(world);
} }
} }
public boolean isTrue(int x, int y, int z, World world) { public boolean isTrue(int x, int y, int z, World world) {
@ -155,7 +155,7 @@ public class HashChunkletManager implements ChunkletManager {
ChunkletStore cStore; ChunkletStore cStore;
if(!store.containsKey(world.getName() + "," + cx + "," + cz + "," + cy)) { if(!store.containsKey(world.getName() + "," + cx + "," + cz + "," + cy)) {
return; // No need to make a store for something we will be setting to false return; // No need to make a store for something we will be setting to false
} }
cStore = store.get(world.getName() + "," + cx + "," + cz + "," + cy); cStore = store.get(world.getName() + "," + cx + "," + cz + "," + cy);
@ -192,7 +192,7 @@ public class HashChunkletManager implements ChunkletManager {
* @param location Where on the disk to put it * @param location Where on the disk to put it
*/ */
private void serializeChunkletStore(ChunkletStore cStore, File location) { private void serializeChunkletStore(ChunkletStore cStore, File location) {
try { try {
FileOutputStream fileOut = new FileOutputStream(location); FileOutputStream fileOut = new FileOutputStream(location);
ObjectOutputStream objOut = new ObjectOutputStream(fileOut); ObjectOutputStream objOut = new ObjectOutputStream(fileOut);
objOut.writeObject(cStore); objOut.writeObject(cStore);
@ -219,8 +219,8 @@ public class HashChunkletManager implements ChunkletManager {
} catch (IOException ex) { } catch (IOException ex) {
ex.printStackTrace(); ex.printStackTrace();
} catch (ClassNotFoundException ex) { } catch (ClassNotFoundException ex) {
ex.printStackTrace(); ex.printStackTrace();
} }
return storeIn; return storeIn;
} }