mirror of
https://github.com/mcMMO-Dev/mcMMO.git
synced 2024-11-02 08:39:49 +01:00
General cleanup for pull request.
This commit is contained in:
parent
c3dd777e44
commit
3129acfc19
@ -28,7 +28,7 @@ public class HiddenConfig {
|
|||||||
if (mcMMO.p.getResource(fileName) != null) {
|
if (mcMMO.p.getResource(fileName) != null) {
|
||||||
config = YamlConfiguration.loadConfiguration(mcMMO.p.getResource(fileName));
|
config = YamlConfiguration.loadConfiguration(mcMMO.p.getResource(fileName));
|
||||||
chunkletsEnabled = config.getBoolean("Options.Chunklets", true);
|
chunkletsEnabled = config.getBoolean("Options.Chunklets", true);
|
||||||
conversionRate = config.getInt("Options.ConversionRate", 1);
|
conversionRate = config.getInt("Options.ConversionRate", 3);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -13,13 +13,8 @@ import org.bukkit.event.world.WorldUnloadEvent;
|
|||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
|
|
||||||
import com.gmail.nossr50.mcMMO;
|
import com.gmail.nossr50.mcMMO;
|
||||||
import com.gmail.nossr50.runnables.BlockStoreConversionMain;
|
import com.gmail.nossr50.runnables.blockstoreconversion.BlockStoreConversionMain;
|
||||||
import com.gmail.nossr50.util.blockmeta.ChunkletStore;
|
import com.gmail.nossr50.util.blockmeta.chunkmeta.HashChunkManager;
|
||||||
import com.gmail.nossr50.util.blockmeta.PrimitiveChunkletStore;
|
|
||||||
import com.gmail.nossr50.util.blockmeta.PrimitiveExChunkletStore;
|
|
||||||
import com.gmail.nossr50.util.blockmeta.PrimitiveChunkStore;
|
|
||||||
import com.gmail.nossr50.util.blockmeta.HashChunkletManager;
|
|
||||||
import com.gmail.nossr50.util.blockmeta.HashChunkManager;
|
|
||||||
|
|
||||||
public class WorldListener implements Listener {
|
public class WorldListener implements Listener {
|
||||||
ArrayList<BlockStoreConversionMain> converters = new ArrayList<BlockStoreConversionMain>();
|
ArrayList<BlockStoreConversionMain> converters = new ArrayList<BlockStoreConversionMain>();
|
||||||
@ -66,90 +61,7 @@ public class WorldListener implements Listener {
|
|||||||
World world = event.getChunk().getWorld();
|
World world = event.getChunk().getWorld();
|
||||||
int cx = event.getChunk().getX();
|
int cx = event.getChunk().getX();
|
||||||
int cz = event.getChunk().getZ();
|
int cz = event.getChunk().getZ();
|
||||||
HashChunkletManager manager = new HashChunkletManager();
|
|
||||||
HashChunkManager newManager = (HashChunkManager) mcMMO.p.placeStore;
|
|
||||||
|
|
||||||
manager.loadChunk(cx, cz, world);
|
((HashChunkManager) mcMMO.p.placeStore).convertChunk(dataDir, cx, cz, world);
|
||||||
|
|
||||||
for(int y = 0; y < (world.getMaxHeight() / 64); y++) {
|
|
||||||
String chunkletName = world.getName() + "," + cx + "," + cz + "," + y;
|
|
||||||
ChunkletStore tempChunklet = manager.store.get(chunkletName);
|
|
||||||
PrimitiveChunkletStore primitiveChunklet = null;
|
|
||||||
PrimitiveExChunkletStore primitiveExChunklet = null;
|
|
||||||
if(tempChunklet instanceof PrimitiveChunkletStore)
|
|
||||||
primitiveChunklet = (PrimitiveChunkletStore) tempChunklet;
|
|
||||||
else if(tempChunklet instanceof PrimitiveExChunkletStore)
|
|
||||||
primitiveExChunklet = (PrimitiveExChunkletStore) tempChunklet;
|
|
||||||
if(tempChunklet == null) {
|
|
||||||
continue;
|
|
||||||
} else {
|
|
||||||
String chunkName = world.getName() + "," + cx + "," + cz;
|
|
||||||
PrimitiveChunkStore cChunk = (PrimitiveChunkStore) newManager.store.get(chunkName);
|
|
||||||
|
|
||||||
if(cChunk != null) {
|
|
||||||
int xPos = cx * 16;
|
|
||||||
int zPos = cz * 16;
|
|
||||||
|
|
||||||
for(int x = 0; x < 16; x++) {
|
|
||||||
for(int z = 0; z < 16; z++) {
|
|
||||||
int cxPos = xPos + x;
|
|
||||||
int czPos = zPos + z;
|
|
||||||
|
|
||||||
for(int y2 = (64 * y); y2 < (64 * y + 64); y2++) {
|
|
||||||
if(!manager.isTrue(cxPos, y2, czPos, world))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
newManager.setTrue(cxPos, y2, czPos, world);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
newManager.setTrue(cx * 16, 0, cz * 16, world);
|
|
||||||
newManager.setFalse(cx * 16, 0, cz * 16, world);
|
|
||||||
cChunk = (PrimitiveChunkStore) newManager.store.get(chunkName);
|
|
||||||
|
|
||||||
for(int x = 0; x < 16; x++) {
|
|
||||||
for(int z = 0; z < 16; z++) {
|
|
||||||
boolean[] oldArray;
|
|
||||||
if(primitiveChunklet != null)
|
|
||||||
oldArray = primitiveChunklet.store[x][z];
|
|
||||||
if(primitiveExChunklet != null)
|
|
||||||
oldArray = primitiveExChunklet.store[x][z];
|
|
||||||
else
|
|
||||||
return;
|
|
||||||
boolean[] newArray = cChunk.store[x][z];
|
|
||||||
if(oldArray.length < 64)
|
|
||||||
return;
|
|
||||||
else if(newArray.length < ((y * 64) + 64))
|
|
||||||
return;
|
|
||||||
System.arraycopy(oldArray, 0, newArray, (y * 64), 64);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
manager.unloadChunk(cx, cz, world);
|
|
||||||
newManager.unloadChunk(cx, cz, world);
|
|
||||||
|
|
||||||
File cxDir = new File(dataDir, "" + cx);
|
|
||||||
if(!cxDir.exists()) return;
|
|
||||||
File czDir = new File(cxDir, "" + cz);
|
|
||||||
if(!czDir.exists()) return;
|
|
||||||
|
|
||||||
for(File yFile : czDir.listFiles()) {
|
|
||||||
if(!yFile.exists())
|
|
||||||
continue;
|
|
||||||
|
|
||||||
yFile.delete();
|
|
||||||
}
|
|
||||||
|
|
||||||
if(czDir.listFiles().length <= 0)
|
|
||||||
czDir.delete();
|
|
||||||
if(cxDir.listFiles().length <= 0)
|
|
||||||
cxDir.delete();
|
|
||||||
if(dataDir.listFiles().length <= 0)
|
|
||||||
dataDir.delete();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -79,8 +79,8 @@ import com.gmail.nossr50.util.Leaderboard;
|
|||||||
import com.gmail.nossr50.util.Metrics;
|
import com.gmail.nossr50.util.Metrics;
|
||||||
import com.gmail.nossr50.util.Metrics.Graph;
|
import com.gmail.nossr50.util.Metrics.Graph;
|
||||||
import com.gmail.nossr50.util.Users;
|
import com.gmail.nossr50.util.Users;
|
||||||
import com.gmail.nossr50.util.blockmeta.ChunkManager;
|
import com.gmail.nossr50.util.blockmeta.chunkmeta.ChunkManager;
|
||||||
import com.gmail.nossr50.util.blockmeta.ChunkManagerFactory;
|
import com.gmail.nossr50.util.blockmeta.chunkmeta.ChunkManagerFactory;
|
||||||
|
|
||||||
|
|
||||||
public class mcMMO extends JavaPlugin {
|
public class mcMMO extends JavaPlugin {
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
package com.gmail.nossr50.runnables;
|
package com.gmail.nossr50.runnables.blockstoreconversion;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.lang.Runnable;
|
import java.lang.Runnable;
|
@ -1,4 +1,4 @@
|
|||||||
package com.gmail.nossr50.runnables;
|
package com.gmail.nossr50.runnables.blockstoreconversion;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.lang.Runnable;
|
import java.lang.Runnable;
|
@ -1,4 +1,4 @@
|
|||||||
package com.gmail.nossr50.runnables;
|
package com.gmail.nossr50.runnables.blockstoreconversion;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.lang.Runnable;
|
import java.lang.Runnable;
|
||||||
@ -10,9 +10,9 @@ import com.gmail.nossr50.mcMMO;
|
|||||||
import com.gmail.nossr50.util.blockmeta.ChunkletStore;
|
import com.gmail.nossr50.util.blockmeta.ChunkletStore;
|
||||||
import com.gmail.nossr50.util.blockmeta.PrimitiveChunkletStore;
|
import com.gmail.nossr50.util.blockmeta.PrimitiveChunkletStore;
|
||||||
import com.gmail.nossr50.util.blockmeta.PrimitiveExChunkletStore;
|
import com.gmail.nossr50.util.blockmeta.PrimitiveExChunkletStore;
|
||||||
import com.gmail.nossr50.util.blockmeta.PrimitiveChunkStore;
|
import com.gmail.nossr50.util.blockmeta.chunkmeta.PrimitiveChunkStore;
|
||||||
import com.gmail.nossr50.util.blockmeta.HashChunkletManager;
|
import com.gmail.nossr50.util.blockmeta.HashChunkletManager;
|
||||||
import com.gmail.nossr50.util.blockmeta.HashChunkManager;
|
import com.gmail.nossr50.util.blockmeta.chunkmeta.HashChunkManager;
|
||||||
|
|
||||||
public class BlockStoreConversionZDirectory implements Runnable {
|
public class BlockStoreConversionZDirectory implements Runnable {
|
||||||
private int taskID, cx, cz, x, y, z, y2, xPos, zPos, cxPos, czPos;
|
private int taskID, cx, cz, x, y, z, y2, xPos, zPos, cxPos, czPos;
|
@ -1,4 +1,4 @@
|
|||||||
package com.gmail.nossr50.util.blockmeta;
|
package com.gmail.nossr50.util.blockmeta.chunkmeta;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
package com.gmail.nossr50.util.blockmeta;
|
package com.gmail.nossr50.util.blockmeta.chunkmeta;
|
||||||
|
|
||||||
import com.gmail.nossr50.config.HiddenConfig;
|
import com.gmail.nossr50.config.HiddenConfig;
|
||||||
|
|
@ -1,7 +1,9 @@
|
|||||||
package com.gmail.nossr50.util.blockmeta;
|
package com.gmail.nossr50.util.blockmeta.chunkmeta;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
import com.gmail.nossr50.util.blockmeta.ChunkletStore;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A ChunkStore should be responsible for a 16x16xWorldHeight area of data
|
* A ChunkStore should be responsible for a 16x16xWorldHeight area of data
|
||||||
*/
|
*/
|
@ -1,4 +1,4 @@
|
|||||||
package com.gmail.nossr50.util.blockmeta;
|
package com.gmail.nossr50.util.blockmeta.chunkmeta;
|
||||||
|
|
||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
package com.gmail.nossr50.util.blockmeta;
|
package com.gmail.nossr50.util.blockmeta.chunkmeta;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
@ -17,20 +17,24 @@ import org.bukkit.block.Block;
|
|||||||
|
|
||||||
import com.gmail.nossr50.mcMMO;
|
import com.gmail.nossr50.mcMMO;
|
||||||
import com.gmail.nossr50.runnables.ChunkletUnloader;
|
import com.gmail.nossr50.runnables.ChunkletUnloader;
|
||||||
|
import com.gmail.nossr50.util.blockmeta.ChunkletStore;
|
||||||
|
import com.gmail.nossr50.util.blockmeta.PrimitiveChunkletStore;
|
||||||
|
import com.gmail.nossr50.util.blockmeta.PrimitiveExChunkletStore;
|
||||||
|
import com.gmail.nossr50.util.blockmeta.HashChunkletManager;
|
||||||
|
|
||||||
import org.getspout.spoutapi.chunkstore.SimpleRegionFile;
|
import org.getspout.spoutapi.chunkstore.mcMMOSimpleRegionFile;
|
||||||
|
|
||||||
public class HashChunkManager implements ChunkManager {
|
public class HashChunkManager implements ChunkManager {
|
||||||
private HashMap<UUID, HashMap<Long, SimpleRegionFile>> regionFiles = new HashMap<UUID, HashMap<Long, SimpleRegionFile>>();
|
private HashMap<UUID, HashMap<Long, mcMMOSimpleRegionFile>> regionFiles = new HashMap<UUID, HashMap<Long, mcMMOSimpleRegionFile>>();
|
||||||
public HashMap<String, ChunkStore> store = new HashMap<String, ChunkStore>();
|
public HashMap<String, ChunkStore> store = new HashMap<String, ChunkStore>();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void closeAll() {
|
public void closeAll() {
|
||||||
for (UUID uid : regionFiles.keySet()) {
|
for (UUID uid : regionFiles.keySet()) {
|
||||||
HashMap<Long, SimpleRegionFile> worldRegions = regionFiles.get(uid);
|
HashMap<Long, mcMMOSimpleRegionFile> worldRegions = regionFiles.get(uid);
|
||||||
Iterator<SimpleRegionFile> itr = worldRegions.values().iterator();
|
Iterator<mcMMOSimpleRegionFile> itr = worldRegions.values().iterator();
|
||||||
while (itr.hasNext()) {
|
while (itr.hasNext()) {
|
||||||
SimpleRegionFile rf = itr.next();
|
mcMMOSimpleRegionFile rf = itr.next();
|
||||||
if (rf != null) {
|
if (rf != null) {
|
||||||
rf.close();
|
rf.close();
|
||||||
itr.remove();
|
itr.remove();
|
||||||
@ -42,7 +46,7 @@ public class HashChunkManager implements ChunkManager {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ChunkStore readChunkStore(World world, int x, int z) throws IOException {
|
public ChunkStore readChunkStore(World world, int x, int z) throws IOException {
|
||||||
SimpleRegionFile rf = getSimpleRegionFile(world, x, z);
|
mcMMOSimpleRegionFile rf = getSimpleRegionFile(world, x, z);
|
||||||
InputStream in = rf.getInputStream(x, z);
|
InputStream in = rf.getInputStream(x, z);
|
||||||
if (in == null) {
|
if (in == null) {
|
||||||
return null;
|
return null;
|
||||||
@ -73,7 +77,7 @@ public class HashChunkManager implements ChunkManager {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
SimpleRegionFile rf = getSimpleRegionFile(world, x, z);
|
mcMMOSimpleRegionFile rf = getSimpleRegionFile(world, x, z);
|
||||||
ObjectOutputStream objectStream = new ObjectOutputStream(rf.getOutputStream(x, z));
|
ObjectOutputStream objectStream = new ObjectOutputStream(rf.getOutputStream(x, z));
|
||||||
objectStream.writeObject(data);
|
objectStream.writeObject(data);
|
||||||
objectStream.flush();
|
objectStream.flush();
|
||||||
@ -86,23 +90,23 @@ public class HashChunkManager implements ChunkManager {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void closeChunkStore(World world, int x, int z) {
|
public void closeChunkStore(World world, int x, int z) {
|
||||||
SimpleRegionFile rf = getSimpleRegionFile(world, x, z);
|
mcMMOSimpleRegionFile rf = getSimpleRegionFile(world, x, z);
|
||||||
if (rf != null) {
|
if (rf != null) {
|
||||||
rf.close();
|
rf.close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private SimpleRegionFile getSimpleRegionFile(World world, int x, int z) {
|
private mcMMOSimpleRegionFile getSimpleRegionFile(World world, int x, int z) {
|
||||||
File directory = new File(world.getWorldFolder(), "mcmmo_regions");
|
File directory = new File(world.getWorldFolder(), "mcmmo_regions");
|
||||||
|
|
||||||
directory.mkdirs();
|
directory.mkdirs();
|
||||||
|
|
||||||
UUID key = world.getUID();
|
UUID key = world.getUID();
|
||||||
|
|
||||||
HashMap<Long, SimpleRegionFile> worldRegions = regionFiles.get(key);
|
HashMap<Long, mcMMOSimpleRegionFile> worldRegions = regionFiles.get(key);
|
||||||
|
|
||||||
if (worldRegions == null) {
|
if (worldRegions == null) {
|
||||||
worldRegions = new HashMap<Long, SimpleRegionFile>();
|
worldRegions = new HashMap<Long, mcMMOSimpleRegionFile>();
|
||||||
regionFiles.put(key, worldRegions);
|
regionFiles.put(key, worldRegions);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -111,11 +115,11 @@ public class HashChunkManager implements ChunkManager {
|
|||||||
|
|
||||||
long key2 = (((long) rx) << 32) | (((long) rz) & 0xFFFFFFFFL);
|
long key2 = (((long) rx) << 32) | (((long) rz) & 0xFFFFFFFFL);
|
||||||
|
|
||||||
SimpleRegionFile regionFile = worldRegions.get(key2);
|
mcMMOSimpleRegionFile regionFile = worldRegions.get(key2);
|
||||||
|
|
||||||
if (regionFile == null) {
|
if (regionFile == null) {
|
||||||
File file = new File(directory, "mcmmo_" + rx + "_" + rz + "_.mcm");
|
File file = new File(directory, "mcmmo_" + rx + "_" + rz + "_.mcm");
|
||||||
regionFile = new SimpleRegionFile(file, rx, rz);
|
regionFile = new mcMMOSimpleRegionFile(file, rx, rz);
|
||||||
worldRegions.put(key2, regionFile);
|
worldRegions.put(key2, regionFile);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -371,4 +375,90 @@ public class HashChunkManager implements ChunkManager {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void cleanUp() {}
|
public void cleanUp() {}
|
||||||
|
|
||||||
|
public void convertChunk(File dataDir, int cx, int cz, World world) {
|
||||||
|
HashChunkletManager manager = new HashChunkletManager();
|
||||||
|
manager.loadChunk(cx, cz, world);
|
||||||
|
|
||||||
|
for(int y = 0; y < (world.getMaxHeight() / 64); y++) {
|
||||||
|
String chunkletName = world.getName() + "," + cx + "," + cz + "," + y;
|
||||||
|
ChunkletStore tempChunklet = manager.store.get(chunkletName);
|
||||||
|
PrimitiveChunkletStore primitiveChunklet = null;
|
||||||
|
PrimitiveExChunkletStore primitiveExChunklet = null;
|
||||||
|
if(tempChunklet instanceof PrimitiveChunkletStore)
|
||||||
|
primitiveChunklet = (PrimitiveChunkletStore) tempChunklet;
|
||||||
|
else if(tempChunklet instanceof PrimitiveExChunkletStore)
|
||||||
|
primitiveExChunklet = (PrimitiveExChunkletStore) tempChunklet;
|
||||||
|
if(tempChunklet == null) {
|
||||||
|
continue;
|
||||||
|
} else {
|
||||||
|
String chunkName = world.getName() + "," + cx + "," + cz;
|
||||||
|
PrimitiveChunkStore cChunk = (PrimitiveChunkStore) store.get(chunkName);
|
||||||
|
|
||||||
|
if(cChunk != null) {
|
||||||
|
int xPos = cx * 16;
|
||||||
|
int zPos = cz * 16;
|
||||||
|
|
||||||
|
for(int x = 0; x < 16; x++) {
|
||||||
|
for(int z = 0; z < 16; z++) {
|
||||||
|
int cxPos = xPos + x;
|
||||||
|
int czPos = zPos + z;
|
||||||
|
|
||||||
|
for(int y2 = (64 * y); y2 < (64 * y + 64); y2++) {
|
||||||
|
if(!manager.isTrue(cxPos, y2, czPos, world))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
setTrue(cxPos, y2, czPos, world);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
setTrue(cx * 16, 0, cz * 16, world);
|
||||||
|
setFalse(cx * 16, 0, cz * 16, world);
|
||||||
|
cChunk = (PrimitiveChunkStore) store.get(chunkName);
|
||||||
|
|
||||||
|
for(int x = 0; x < 16; x++) {
|
||||||
|
for(int z = 0; z < 16; z++) {
|
||||||
|
boolean[] oldArray;
|
||||||
|
if(primitiveChunklet != null)
|
||||||
|
oldArray = primitiveChunklet.store[x][z];
|
||||||
|
if(primitiveExChunklet != null)
|
||||||
|
oldArray = primitiveExChunklet.store[x][z];
|
||||||
|
else
|
||||||
|
return;
|
||||||
|
boolean[] newArray = cChunk.store[x][z];
|
||||||
|
if(oldArray.length < 64)
|
||||||
|
return;
|
||||||
|
else if(newArray.length < ((y * 64) + 64))
|
||||||
|
return;
|
||||||
|
System.arraycopy(oldArray, 0, newArray, (y * 64), 64);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
manager.unloadChunk(cx, cz, world);
|
||||||
|
unloadChunk(cx, cz, world);
|
||||||
|
|
||||||
|
File cxDir = new File(dataDir, "" + cx);
|
||||||
|
if(!cxDir.exists()) return;
|
||||||
|
File czDir = new File(cxDir, "" + cz);
|
||||||
|
if(!czDir.exists()) return;
|
||||||
|
|
||||||
|
for(File yFile : czDir.listFiles()) {
|
||||||
|
if(!yFile.exists())
|
||||||
|
continue;
|
||||||
|
|
||||||
|
yFile.delete();
|
||||||
|
}
|
||||||
|
|
||||||
|
if(czDir.listFiles().length <= 0)
|
||||||
|
czDir.delete();
|
||||||
|
if(cxDir.listFiles().length <= 0)
|
||||||
|
cxDir.delete();
|
||||||
|
if(dataDir.listFiles().length <= 0)
|
||||||
|
dataDir.delete();
|
||||||
|
}
|
||||||
}
|
}
|
@ -1,4 +1,4 @@
|
|||||||
package com.gmail.nossr50.util.blockmeta;
|
package com.gmail.nossr50.util.blockmeta.chunkmeta;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
package com.gmail.nossr50.util.blockmeta;
|
package com.gmail.nossr50.util.blockmeta.chunkmeta;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.ObjectInputStream;
|
import java.io.ObjectInputStream;
|
||||||
@ -8,6 +8,7 @@ import java.util.UUID;
|
|||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
|
|
||||||
import com.gmail.nossr50.mcMMO;
|
import com.gmail.nossr50.mcMMO;
|
||||||
|
import com.gmail.nossr50.util.blockmeta.ChunkletStore;
|
||||||
|
|
||||||
public class PrimitiveChunkStore implements ChunkStore {
|
public class PrimitiveChunkStore implements ChunkStore {
|
||||||
private static final long serialVersionUID = -1L;
|
private static final long serialVersionUID = -1L;
|
@ -22,11 +22,11 @@ package org.getspout.spoutapi.chunkstore;
|
|||||||
import java.io.ByteArrayOutputStream;
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
public class SimpleChunkBuffer extends ByteArrayOutputStream {
|
public class mcMMOSimpleChunkBuffer extends ByteArrayOutputStream {
|
||||||
final SimpleRegionFile rf;
|
final mcMMOSimpleRegionFile rf;
|
||||||
final int index;
|
final int index;
|
||||||
|
|
||||||
SimpleChunkBuffer(SimpleRegionFile rf, int index) {
|
mcMMOSimpleChunkBuffer(mcMMOSimpleRegionFile rf, int index) {
|
||||||
super(1024);
|
super(1024);
|
||||||
this.rf = rf;
|
this.rf = rf;
|
||||||
this.index = index;
|
this.index = index;
|
@ -29,7 +29,7 @@ import java.util.ArrayList;
|
|||||||
import java.util.zip.DeflaterOutputStream;
|
import java.util.zip.DeflaterOutputStream;
|
||||||
import java.util.zip.InflaterInputStream;
|
import java.util.zip.InflaterInputStream;
|
||||||
|
|
||||||
public class SimpleRegionFile {
|
public class mcMMOSimpleRegionFile {
|
||||||
private RandomAccessFile file;
|
private RandomAccessFile file;
|
||||||
private final int[] dataStart = new int[1024];
|
private final int[] dataStart = new int[1024];
|
||||||
private final int[] dataActualLength = new int[1024];
|
private final int[] dataActualLength = new int[1024];
|
||||||
@ -46,11 +46,11 @@ public class SimpleRegionFile {
|
|||||||
@SuppressWarnings("unused")
|
@SuppressWarnings("unused")
|
||||||
private static long TIMEOUT_TIME = 300000; // 5 min
|
private static long TIMEOUT_TIME = 300000; // 5 min
|
||||||
|
|
||||||
public SimpleRegionFile(File f, int rx, int rz) {
|
public mcMMOSimpleRegionFile(File f, int rx, int rz) {
|
||||||
this(f, rx, rz, 10);
|
this(f, rx, rz, 10);
|
||||||
}
|
}
|
||||||
|
|
||||||
public SimpleRegionFile(File f, int rx, int rz, int defaultSegmentSize) {
|
public mcMMOSimpleRegionFile(File f, int rx, int rz, int defaultSegmentSize) {
|
||||||
this.rx = rx;
|
this.rx = rx;
|
||||||
this.rz = rz;
|
this.rz = rz;
|
||||||
this.defaultSegmentSize = defaultSegmentSize;
|
this.defaultSegmentSize = defaultSegmentSize;
|
||||||
@ -160,7 +160,7 @@ public class SimpleRegionFile {
|
|||||||
|
|
||||||
public DataOutputStream getOutputStream(int x, int z) {
|
public DataOutputStream getOutputStream(int x, int z) {
|
||||||
int index = getChunkIndex(x, z);
|
int index = getChunkIndex(x, z);
|
||||||
return new DataOutputStream(new DeflaterOutputStream(new SimpleChunkBuffer(this, index)));
|
return new DataOutputStream(new DeflaterOutputStream(new mcMMOSimpleChunkBuffer(this, index)));
|
||||||
}
|
}
|
||||||
|
|
||||||
public DataInputStream getInputStream(int x, int z) throws IOException {
|
public DataInputStream getInputStream(int x, int z) throws IOException {
|
@ -6,4 +6,4 @@ Options:
|
|||||||
# true to use Chunklets metadata store system, false to disable
|
# true to use Chunklets metadata store system, false to disable
|
||||||
Chunklets: true
|
Chunklets: true
|
||||||
# Square root of the number of chunks to convert per tick.
|
# Square root of the number of chunks to convert per tick.
|
||||||
ConversionRate: 1
|
ConversionRate: 3
|
Loading…
Reference in New Issue
Block a user