This commit is contained in:
GJ
2012-06-05 09:57:10 -04:00
parent 7ada587df3
commit 1cca4de9e5
33 changed files with 107 additions and 85 deletions

View File

@@ -18,6 +18,7 @@ import com.gmail.nossr50.mcMMO;
public class HashChunkletManager implements ChunkletManager {
private HashMap<String, ChunkletStore> store = new HashMap<String, ChunkletStore>();
@Override
public void chunkLoaded(int cx, int cz, World world) {
File dataDir = new File(world.getWorldFolder(), "mcmmo_data");
File cxDir = new File(dataDir, "" + cx);
@@ -38,6 +39,7 @@ public class HashChunkletManager implements ChunkletManager {
}
}
@Override
public void chunkUnloaded(int cx, int cz, World world) {
File dataDir = new File(world.getWorldFolder(), "mcmmo_data");
@@ -56,6 +58,7 @@ public class HashChunkletManager implements ChunkletManager {
}
}
@Override
public void saveWorld(World world) {
String worldName = world.getName();
File dataDir = new File(world.getWorldFolder(), "mcmmo_data");
@@ -74,6 +77,7 @@ public class HashChunkletManager implements ChunkletManager {
}
}
@Override
public void unloadWorld(World world) {
saveWorld(world);
@@ -87,12 +91,14 @@ public class HashChunkletManager implements ChunkletManager {
}
}
@Override
public void saveAll() {
for(World world : Bukkit.getWorlds()) {
saveWorld(world);
}
}
@Override
public void unloadAll() {
saveAll();
for(World world : Bukkit.getWorlds()) {
@@ -100,6 +106,7 @@ public class HashChunkletManager implements ChunkletManager {
}
}
@Override
public boolean isTrue(int x, int y, int z, World world) {
int cx = x / 16;
int cz = z / 16;
@@ -114,10 +121,12 @@ public class HashChunkletManager implements ChunkletManager {
return check.isTrue(ix, iy, iz);
}
@Override
public boolean isTrue(Block block) {
return isTrue(block.getX(), block.getY(), block.getZ(), block.getWorld());
}
@Override
public void setTrue(int x, int y, int z, World world) {
int cx = x / 16;
int cz = z / 16;
@@ -137,10 +146,12 @@ public class HashChunkletManager implements ChunkletManager {
cStore.setTrue(ix, iy, iz);
}
@Override
public void setTrue(Block block) {
setTrue(block.getX(), block.getY(), block.getZ(), block.getWorld());
}
@Override
public void setFalse(int x, int y, int z, World world) {
int cx = x / 16;
int cz = z / 16;
@@ -159,10 +170,12 @@ public class HashChunkletManager implements ChunkletManager {
cStore.setFalse(ix, iy, iz);
}
@Override
public void setFalse(Block block) {
setFalse(block.getX(), block.getY(), block.getZ(), block.getWorld());
}
@Override
public void cleanUp() {
for(String key : store.keySet()) {
if(store.get(key).isEmpty()) {

View File

@@ -6,18 +6,22 @@ public class PrimitiveChunkletStore implements ChunkletStore {
/** X, Z, Y */
private boolean[][][] store = new boolean[16][16][64];
@Override
public boolean isTrue(int x, int y, int z) {
return store[x][z][y];
}
@Override
public void setTrue(int x, int y, int z) {
store[x][z][y] = true;
}
@Override
public void setFalse(int x, int y, int z) {
store[x][z][y] = false;
}
@Override
public boolean isEmpty() {
for(int x = 0; x < 16; x++) {
for(int z = 0; z < 16; z++) {