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

@ -6,7 +6,7 @@ import org.bukkit.block.Block;
public interface ChunkletManager { public interface ChunkletManager {
/** /**
* Informs the ChunkletManager a chunk is loaded, it should load appropriate data * Informs the ChunkletManager a chunk is loaded, it should load appropriate data
* *
* @param cx Chunk X coordiate that is loaded * @param cx Chunk X coordiate that is loaded
* @param cz Chunk Z coordiate that is loaded * @param cz Chunk Z coordiate that is loaded
* @param world World that the chunk was loaded in * @param world World that the chunk was loaded in
@ -15,7 +15,7 @@ public interface ChunkletManager {
/** /**
* Informs the ChunkletManager a chunk is unloaded, it should unload and save appropriate data * Informs the ChunkletManager a chunk is unloaded, it should unload and save appropriate data
* *
* @param cx Chunk X coordiate that is unloaded * @param cx Chunk X coordiate that is unloaded
* @param cz Chunk Z coordiate that is unloaded * @param cz Chunk Z coordiate that is unloaded
* @param world World that the chunk was unloaded in * @param world World that the chunk was unloaded in
@ -24,14 +24,14 @@ public interface ChunkletManager {
/** /**
* Save all ChunkletStores related to the given world * Save all ChunkletStores related to the given world
* *
* @param world World to save * @param world World to save
*/ */
public void saveWorld(World world); public void saveWorld(World world);
/** /**
* Unload all ChunkletStores from memory related to the given world after saving them * Unload all ChunkletStores from memory related to the given world after saving them
* *
* @param world World to unload * @param world World to unload
*/ */
public void unloadWorld(World world); public void unloadWorld(World world);
@ -48,7 +48,7 @@ public interface ChunkletManager {
/** /**
* Check to see if a given location is set to true * Check to see if a given location is set to true
* *
* @param x X coordinate to check * @param x X coordinate to check
* @param y Y coordinate to check * @param y Y coordinate to check
* @param z Z coordinate to check * @param z Z coordinate to check
@ -59,7 +59,7 @@ public interface ChunkletManager {
/** /**
* Check to see if a given block location is set to true * Check to see if a given block location is set to true
* *
* @param block Block location to check * @param block Block location to check
* @return true if the given block location is set to true, false if otherwise * @return true if the given block location is set to true, false if otherwise
*/ */
@ -67,7 +67,7 @@ public interface ChunkletManager {
/** /**
* Set a given location to true, should create stores as necessary if the location does not exist * Set a given location to true, should create stores as necessary if the location does not exist
* *
* @param x X coordinate to set * @param x X coordinate to set
* @param y Y coordinate to set * @param y Y coordinate to set
* @param z Z coordinate to set * @param z Z coordinate to set
@ -77,14 +77,14 @@ public interface ChunkletManager {
/** /**
* Set a given block location to true, should create stores as necessary if the location does not exist * Set a given block location to true, should create stores as necessary if the location does not exist
* *
* @param block Block location to set * @param block Block location to set
*/ */
public void setTrue(Block block); public void setTrue(Block block);
/** /**
* Set a given location to false, should not create stores if one does not exist for the given location * Set a given location to false, should not create stores if one does not exist for the given location
* *
* @param x X coordinate to set * @param x X coordinate to set
* @param y Y coordinate to set * @param y Y coordinate to set
* @param z Z coordinate to set * @param z Z coordinate to set
@ -94,7 +94,7 @@ public interface ChunkletManager {
/** /**
* Set a given block location to false, should not create stores if one does not exist for the given location * Set a given block location to false, should not create stores if one does not exist for the given location
* *
* @param block Block location to set * @param block Block location to set
*/ */
public void setFalse(Block block); public void setFalse(Block block);

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
@ -13,7 +15,7 @@ public interface ChunkletStore extends Serializable {
/** /**
* Set the value to true at the given coordinates * Set the value to true 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
@ -22,7 +24,7 @@ public interface ChunkletStore extends Serializable {
/** /**
* Set the value to false at the given coordinates * Set the value to false 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;
} }