File compression
This commit is contained in:
parent
2dbebbd2ea
commit
be661b51f2
File diff suppressed because it is too large
Load Diff
|
@ -1781,4 +1781,11 @@ public class EaglerAdapterImpl2 {
|
||||||
downloadFile0(filename, b.getBuffer());
|
downloadFile0(filename, b.getBuffer());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static boolean isCompressed(byte[] b) {
|
||||||
|
if(b == null || b.length < 2) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return (b[0] == (byte) 0x1F) && (b[1] == (byte) 0x8B);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -69,7 +69,12 @@ public class ChunkLoader implements IChunkLoader {
|
||||||
try {
|
try {
|
||||||
byte[] data = GL11.readFile(var4);
|
byte[] data = GL11.readFile(var4);
|
||||||
ByteArrayInputStream var5 = new ByteArrayInputStream(data);
|
ByteArrayInputStream var5 = new ByteArrayInputStream(data);
|
||||||
NBTTagCompound var6 = (NBTTagCompound) NBTBase.readTag(new DataInputStream(var5));
|
NBTTagCompound var6;
|
||||||
|
if(GL11.isCompressed(data)) {
|
||||||
|
var6 = CompressedStreamTools.func_1138_a(var5);
|
||||||
|
} else {
|
||||||
|
var6 = (NBTTagCompound) NBTBase.readTag(new DataInputStream(var5));
|
||||||
|
}
|
||||||
if(!var6.hasKey("Level")) {
|
if(!var6.hasKey("Level")) {
|
||||||
System.out.println("Chunk file at " + var2 + "," + var3 + " is missing level data, skipping");
|
System.out.println("Chunk file at " + var2 + "," + var3 + " is missing level data, skipping");
|
||||||
return null;
|
return null;
|
||||||
|
@ -111,15 +116,10 @@ public class ChunkLoader implements IChunkLoader {
|
||||||
NBTTagCompound var7 = new NBTTagCompound();
|
NBTTagCompound var7 = new NBTTagCompound();
|
||||||
var6.setTag("Level", var7);
|
var6.setTag("Level", var7);
|
||||||
this.storeChunkInCompound(var2, var1, var7);
|
this.storeChunkInCompound(var2, var1, var7);
|
||||||
try (DataOutputStream dos = new DataOutputStream(new BufferedOutputStream(var5))) {
|
CompressedStreamTools.writeGzippedCompoundToOutputStream(var6, var5);
|
||||||
NBTBase.writeTag(var6, dos);
|
var5.flush();
|
||||||
dos.flush();
|
GL11.writeFile(var4, var5.toByteArray());
|
||||||
var5.flush();
|
var5.close();
|
||||||
GL11.writeFile(var4, var5.toByteArray());
|
|
||||||
var5.close();
|
|
||||||
} catch(IOException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
|
|
||||||
if(GL11.readFile(var3) != null) {
|
if(GL11.readFile(var3) != null) {
|
||||||
GL11.deleteFile(var3);
|
GL11.deleteFile(var3);
|
||||||
|
|
|
@ -1,78 +1,79 @@
|
||||||
//package net.minecraft.src;
|
package net.minecraft.src;
|
||||||
//
|
|
||||||
//import java.io.ByteArrayInputStream;
|
import java.io.ByteArrayInputStream;
|
||||||
//import java.io.ByteArrayOutputStream;
|
import java.io.ByteArrayOutputStream;
|
||||||
//import java.io.DataInput;
|
import java.io.DataInput;
|
||||||
//import java.io.DataInputStream;
|
import java.io.DataInputStream;
|
||||||
//import java.io.DataOutput;
|
import java.io.DataOutput;
|
||||||
//import java.io.DataOutputStream;
|
import java.io.DataOutputStream;
|
||||||
//import java.io.IOException;
|
import java.io.IOException;
|
||||||
//import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
//import java.io.OutputStream;
|
import java.io.OutputStream;
|
||||||
//import java.util.zip.GZIPInputStream;
|
|
||||||
//import java.util.zip.GZIPOutputStream;
|
import com.jcraft.jzlib.GZIPInputStream;
|
||||||
//
|
import com.jcraft.jzlib.GZIPOutputStream;
|
||||||
//public class CompressedStreamTools {
|
|
||||||
// public static NBTTagCompound func_1138_a(InputStream var0) throws IOException {
|
public class CompressedStreamTools {
|
||||||
// DataInputStream var1 = new DataInputStream(new GZIPInputStream(var0));
|
public static NBTTagCompound func_1138_a(InputStream var0) throws IOException {
|
||||||
//
|
DataInputStream var1 = new DataInputStream(new GZIPInputStream(var0));
|
||||||
// NBTTagCompound var2;
|
|
||||||
// try {
|
NBTTagCompound var2;
|
||||||
// var2 = func_1141_a(var1);
|
try {
|
||||||
// } finally {
|
var2 = func_1141_a(var1);
|
||||||
// var1.close();
|
} finally {
|
||||||
// }
|
var1.close();
|
||||||
//
|
}
|
||||||
// return var2;
|
|
||||||
// }
|
return var2;
|
||||||
//
|
}
|
||||||
// public static void writeGzippedCompoundToOutputStream(NBTTagCompound var0, OutputStream var1) throws IOException {
|
|
||||||
// DataOutputStream var2 = new DataOutputStream(new GZIPOutputStream(var1));
|
public static void writeGzippedCompoundToOutputStream(NBTTagCompound var0, OutputStream var1) throws IOException {
|
||||||
//
|
DataOutputStream var2 = new DataOutputStream(new GZIPOutputStream(var1));
|
||||||
// try {
|
|
||||||
// func_1139_a(var0, var2);
|
try {
|
||||||
// } finally {
|
func_1139_a(var0, var2);
|
||||||
// var2.close();
|
} finally {
|
||||||
// }
|
var2.close();
|
||||||
//
|
}
|
||||||
// }
|
|
||||||
//
|
}
|
||||||
// public static NBTTagCompound func_1140_a(byte[] var0) throws IOException {
|
|
||||||
// DataInputStream var1 = new DataInputStream(new GZIPInputStream(new ByteArrayInputStream(var0)));
|
public static NBTTagCompound func_1140_a(byte[] var0) throws IOException {
|
||||||
//
|
DataInputStream var1 = new DataInputStream(new GZIPInputStream(new ByteArrayInputStream(var0)));
|
||||||
// NBTTagCompound var2;
|
|
||||||
// try {
|
NBTTagCompound var2;
|
||||||
// var2 = func_1141_a(var1);
|
try {
|
||||||
// } finally {
|
var2 = func_1141_a(var1);
|
||||||
// var1.close();
|
} finally {
|
||||||
// }
|
var1.close();
|
||||||
//
|
}
|
||||||
// return var2;
|
|
||||||
// }
|
return var2;
|
||||||
//
|
}
|
||||||
// public static byte[] func_1142_a(NBTTagCompound var0) throws IOException {
|
|
||||||
// ByteArrayOutputStream var1 = new ByteArrayOutputStream();
|
public static byte[] func_1142_a(NBTTagCompound var0) throws IOException {
|
||||||
// DataOutputStream var2 = new DataOutputStream(new GZIPOutputStream(var1));
|
ByteArrayOutputStream var1 = new ByteArrayOutputStream();
|
||||||
//
|
DataOutputStream var2 = new DataOutputStream(new GZIPOutputStream(var1));
|
||||||
// try {
|
|
||||||
// func_1139_a(var0, var2);
|
try {
|
||||||
// } finally {
|
func_1139_a(var0, var2);
|
||||||
// var2.close();
|
} finally {
|
||||||
// }
|
var2.close();
|
||||||
//
|
}
|
||||||
// return var1.toByteArray();
|
|
||||||
// }
|
return var1.toByteArray();
|
||||||
//
|
}
|
||||||
// public static NBTTagCompound func_1141_a(DataInput var0) throws IOException {
|
|
||||||
// NBTBase var1 = NBTBase.readTag(var0);
|
public static NBTTagCompound func_1141_a(DataInput var0) throws IOException {
|
||||||
// if(var1 instanceof NBTTagCompound) {
|
NBTBase var1 = NBTBase.readTag(var0);
|
||||||
// return (NBTTagCompound)var1;
|
if(var1 instanceof NBTTagCompound) {
|
||||||
// } else {
|
return (NBTTagCompound)var1;
|
||||||
// throw new IOException("Root tag must be a named compound tag");
|
} else {
|
||||||
// }
|
throw new IOException("Root tag must be a named compound tag");
|
||||||
// }
|
}
|
||||||
//
|
}
|
||||||
// public static void func_1139_a(NBTTagCompound var0, DataOutput var1) throws IOException {
|
|
||||||
// NBTBase.writeTag(var0, var1);
|
public static void func_1139_a(NBTTagCompound var0, DataOutput var1) throws IOException {
|
||||||
// }
|
NBTBase.writeTag(var0, var1);
|
||||||
//}
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -64,7 +64,12 @@ public class World implements IBlockAccess {
|
||||||
byte[] data = GL11.readFile("saves/" + var1 + "/level.dat");
|
byte[] data = GL11.readFile("saves/" + var1 + "/level.dat");
|
||||||
if(!(data == null)) {
|
if(!(data == null)) {
|
||||||
try {
|
try {
|
||||||
NBTTagCompound var5 = (NBTTagCompound) NBTBase.readTag(new DataInputStream(new ByteArrayInputStream(data)));
|
NBTTagCompound var5;
|
||||||
|
if(GL11.isCompressed(data)) {
|
||||||
|
var5 = CompressedStreamTools.func_1138_a(new ByteArrayInputStream(data));
|
||||||
|
} else {
|
||||||
|
var5 = (NBTTagCompound) NBTBase.readTag(new DataInputStream(new ByteArrayInputStream(data)));
|
||||||
|
}
|
||||||
NBTTagCompound var6 = var5.getCompoundTag("Data");
|
NBTTagCompound var6 = var5.getCompoundTag("Data");
|
||||||
return var6;
|
return var6;
|
||||||
} catch (Exception var7) {
|
} catch (Exception var7) {
|
||||||
|
@ -233,7 +238,12 @@ public class World implements IBlockAccess {
|
||||||
byte[] data = GL11.readFile(var18);
|
byte[] data = GL11.readFile(var18);
|
||||||
if(data != null) {
|
if(data != null) {
|
||||||
try {
|
try {
|
||||||
NBTTagCompound var8 = (NBTTagCompound) NBTBase.readTag(new DataInputStream(new ByteArrayInputStream(data)));
|
NBTTagCompound var8;
|
||||||
|
if(GL11.isCompressed(data)) {
|
||||||
|
var8 = CompressedStreamTools.func_1138_a(new ByteArrayInputStream(data));
|
||||||
|
} else {
|
||||||
|
var8 = (NBTTagCompound) NBTBase.readTag(new DataInputStream(new ByteArrayInputStream(data)));
|
||||||
|
}
|
||||||
NBTTagCompound var9 = var8.getCompoundTag("Data");
|
NBTTagCompound var9 = var8.getCompoundTag("Data");
|
||||||
this.randomSeed = var9.getLong("RandomSeed");
|
this.randomSeed = var9.getLong("RandomSeed");
|
||||||
this.spawnX = var9.getInteger("SpawnX");
|
this.spawnX = var9.getInteger("SpawnX");
|
||||||
|
@ -367,15 +377,7 @@ public class World implements IBlockAccess {
|
||||||
String var5 = field_9432_t + "/level.dat_old";
|
String var5 = field_9432_t + "/level.dat_old";
|
||||||
String var6 = field_9432_t + "/level.dat";
|
String var6 = field_9432_t + "/level.dat";
|
||||||
ByteArrayOutputStream data = new ByteArrayOutputStream();
|
ByteArrayOutputStream data = new ByteArrayOutputStream();
|
||||||
try (DataOutputStream dos = new DataOutputStream(new BufferedOutputStream(data))) {
|
CompressedStreamTools.writeGzippedCompoundToOutputStream(var3, data);
|
||||||
NBTBase.writeTag(var3, dos);
|
|
||||||
dos.flush();
|
|
||||||
byte[] file = data.toByteArray();
|
|
||||||
GL11.writeFile(var6, file);
|
|
||||||
} catch(IOException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
|
|
||||||
GL11.writeFile(var4, data.toByteArray());
|
GL11.writeFile(var4, data.toByteArray());
|
||||||
|
|
||||||
if(GL11.readFile(var5) != null) {
|
if(GL11.readFile(var5) != null) {
|
||||||
|
|
4837
web/js/app.js
4837
web/js/app.js
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue
Block a user