diff --git a/pom.xml b/pom.xml
index 660d1fdd0..57b3ec18c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -119,6 +119,5 @@
netty-all
4.1.52.Final
-
\ No newline at end of file
diff --git a/src/main/java/de/bixilon/minosoft/game/datatypes/objectLoader/versions/Versions.java b/src/main/java/de/bixilon/minosoft/game/datatypes/objectLoader/versions/Versions.java
index d585f5443..ca42c3a57 100644
--- a/src/main/java/de/bixilon/minosoft/game/datatypes/objectLoader/versions/Versions.java
+++ b/src/main/java/de/bixilon/minosoft/game/datatypes/objectLoader/versions/Versions.java
@@ -16,7 +16,6 @@ package de.bixilon.minosoft.game.datatypes.objectLoader.versions;
import com.google.common.collect.HashBiMap;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
-import com.google.gson.JsonParser;
import de.bixilon.minosoft.Config;
import de.bixilon.minosoft.Minosoft;
import de.bixilon.minosoft.config.GameConfiguration;
@@ -153,15 +152,15 @@ public class Versions {
}
String fileName = Config.homeDir + String.format("assets/mapping/%s.tar.gz", version.getVersionName());
- HashMap files;
+ HashMap files;
try {
- files = Util.readTarGzFile(fileName);
+ files = Util.readJsonTarGzFile(fileName);
} catch (FileNotFoundException e) {
long downloadStartTime = System.currentTimeMillis();
Log.info(String.format("Mappings for %s are not available on disk. Downloading them...", version.getVersionName()));
Util.downloadFile(String.format(Minosoft.getConfig().getString(GameConfiguration.MAPPINGS_URL), version.getVersionName()), fileName);
try {
- files = Util.readTarGzFile(fileName);
+ files = Util.readJsonTarGzFile(fileName);
} catch (ZipException e2) {
// bullshit downloaded, delete file
new File(fileName).delete();
@@ -171,7 +170,7 @@ public class Versions {
}
for (Map.Entry mappingSet : mappingsHashMap.entrySet()) {
- JsonObject data = JsonParser.parseString(files.get(mappingSet.getKey() + ".json")).getAsJsonObject().getAsJsonObject("minecraft");
+ JsonObject data = files.get(mappingSet.getKey() + ".json").getAsJsonObject("minecraft");
loadVersionMappings(mappingSet.getValue(), data, protocolId);
}
diff --git a/src/main/java/de/bixilon/minosoft/util/Util.java b/src/main/java/de/bixilon/minosoft/util/Util.java
index 57424fb33..5696ef556 100644
--- a/src/main/java/de/bixilon/minosoft/util/Util.java
+++ b/src/main/java/de/bixilon/minosoft/util/Util.java
@@ -88,7 +88,7 @@ public final class Util {
public static byte[] decompressGzip(byte[] raw) throws IOException {
GZIPInputStream gzipInputStream = new GZIPInputStream(new ByteArrayInputStream(raw));
- ByteArrayOutputStream outputStream = new java.io.ByteArrayOutputStream();
+ ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
int res = 0;
byte[] buf = new byte[1024];
@@ -98,7 +98,10 @@ public final class Util {
outputStream.write(buf, 0, res);
}
}
- return outputStream.toByteArray();
+ gzipInputStream.close();
+ byte[] ret = outputStream.toByteArray();
+ outputStream.close();
+ return ret;
}
public static String sha1(String string) {
@@ -115,13 +118,26 @@ public final class Util {
public static HashMap readTarGzFile(String fileName) throws IOException {
File inputFile = new File(fileName);
- GZIPInputStream gzipInputStream = new GZIPInputStream(new FileInputStream(inputFile));
- TarArchiveInputStream tarArchiveInputStream = new TarArchiveInputStream(gzipInputStream);
+ TarArchiveInputStream tarArchiveInputStream = new TarArchiveInputStream(new GZIPInputStream(new FileInputStream(inputFile)));
HashMap ret = new HashMap<>();
TarArchiveEntry entry;
while ((entry = tarArchiveInputStream.getNextTarEntry()) != null) {
ret.put(entry.getName(), readFile(new BufferedReader(new InputStreamReader(tarArchiveInputStream)), false));
}
+ tarArchiveInputStream.close();
+
+ return ret;
+ }
+
+ public static HashMap readJsonTarGzFile(String fileName) throws IOException {
+ File inputFile = new File(fileName);
+ TarArchiveInputStream tarArchiveInputStream = new TarArchiveInputStream(new GZIPInputStream(new FileInputStream(inputFile)));
+ HashMap ret = new HashMap<>();
+ TarArchiveEntry entry;
+ while ((entry = tarArchiveInputStream.getNextTarEntry()) != null) {
+ ret.put(entry.getName(), JsonParser.parseReader(new InputStreamReader(tarArchiveInputStream)).getAsJsonObject());
+ }
+ tarArchiveInputStream.close();
return ret;
}