mirror of
https://gitlab.bixilon.de/bixilon/minosoft.git
synced 2025-09-19 04:15:14 -04:00
improve some util functions (potential memory leaks, etc)
This commit is contained in:
parent
a143e79c25
commit
bd1283c6d8
1
pom.xml
1
pom.xml
@ -119,6 +119,5 @@
|
|||||||
<artifactId>netty-all</artifactId>
|
<artifactId>netty-all</artifactId>
|
||||||
<version>4.1.52.Final</version>
|
<version>4.1.52.Final</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
</project>
|
</project>
|
@ -16,7 +16,6 @@ package de.bixilon.minosoft.game.datatypes.objectLoader.versions;
|
|||||||
import com.google.common.collect.HashBiMap;
|
import com.google.common.collect.HashBiMap;
|
||||||
import com.google.gson.JsonElement;
|
import com.google.gson.JsonElement;
|
||||||
import com.google.gson.JsonObject;
|
import com.google.gson.JsonObject;
|
||||||
import com.google.gson.JsonParser;
|
|
||||||
import de.bixilon.minosoft.Config;
|
import de.bixilon.minosoft.Config;
|
||||||
import de.bixilon.minosoft.Minosoft;
|
import de.bixilon.minosoft.Minosoft;
|
||||||
import de.bixilon.minosoft.config.GameConfiguration;
|
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());
|
String fileName = Config.homeDir + String.format("assets/mapping/%s.tar.gz", version.getVersionName());
|
||||||
HashMap<String, String> files;
|
HashMap<String, JsonObject> files;
|
||||||
try {
|
try {
|
||||||
files = Util.readTarGzFile(fileName);
|
files = Util.readJsonTarGzFile(fileName);
|
||||||
} catch (FileNotFoundException e) {
|
} catch (FileNotFoundException e) {
|
||||||
long downloadStartTime = System.currentTimeMillis();
|
long downloadStartTime = System.currentTimeMillis();
|
||||||
Log.info(String.format("Mappings for %s are not available on disk. Downloading them...", version.getVersionName()));
|
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);
|
Util.downloadFile(String.format(Minosoft.getConfig().getString(GameConfiguration.MAPPINGS_URL), version.getVersionName()), fileName);
|
||||||
try {
|
try {
|
||||||
files = Util.readTarGzFile(fileName);
|
files = Util.readJsonTarGzFile(fileName);
|
||||||
} catch (ZipException e2) {
|
} catch (ZipException e2) {
|
||||||
// bullshit downloaded, delete file
|
// bullshit downloaded, delete file
|
||||||
new File(fileName).delete();
|
new File(fileName).delete();
|
||||||
@ -171,7 +170,7 @@ public class Versions {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (Map.Entry<String, Mappings> mappingSet : mappingsHashMap.entrySet()) {
|
for (Map.Entry<String, Mappings> 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);
|
loadVersionMappings(mappingSet.getValue(), data, protocolId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -88,7 +88,7 @@ public final class Util {
|
|||||||
|
|
||||||
public static byte[] decompressGzip(byte[] raw) throws IOException {
|
public static byte[] decompressGzip(byte[] raw) throws IOException {
|
||||||
GZIPInputStream gzipInputStream = new GZIPInputStream(new ByteArrayInputStream(raw));
|
GZIPInputStream gzipInputStream = new GZIPInputStream(new ByteArrayInputStream(raw));
|
||||||
ByteArrayOutputStream outputStream = new java.io.ByteArrayOutputStream();
|
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
|
||||||
|
|
||||||
int res = 0;
|
int res = 0;
|
||||||
byte[] buf = new byte[1024];
|
byte[] buf = new byte[1024];
|
||||||
@ -98,7 +98,10 @@ public final class Util {
|
|||||||
outputStream.write(buf, 0, res);
|
outputStream.write(buf, 0, res);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return outputStream.toByteArray();
|
gzipInputStream.close();
|
||||||
|
byte[] ret = outputStream.toByteArray();
|
||||||
|
outputStream.close();
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String sha1(String string) {
|
public static String sha1(String string) {
|
||||||
@ -115,13 +118,26 @@ public final class Util {
|
|||||||
|
|
||||||
public static HashMap<String, String> readTarGzFile(String fileName) throws IOException {
|
public static HashMap<String, String> readTarGzFile(String fileName) throws IOException {
|
||||||
File inputFile = new File(fileName);
|
File inputFile = new File(fileName);
|
||||||
GZIPInputStream gzipInputStream = new GZIPInputStream(new FileInputStream(inputFile));
|
TarArchiveInputStream tarArchiveInputStream = new TarArchiveInputStream(new GZIPInputStream(new FileInputStream(inputFile)));
|
||||||
TarArchiveInputStream tarArchiveInputStream = new TarArchiveInputStream(gzipInputStream);
|
|
||||||
HashMap<String, String> ret = new HashMap<>();
|
HashMap<String, String> ret = new HashMap<>();
|
||||||
TarArchiveEntry entry;
|
TarArchiveEntry entry;
|
||||||
while ((entry = tarArchiveInputStream.getNextTarEntry()) != null) {
|
while ((entry = tarArchiveInputStream.getNextTarEntry()) != null) {
|
||||||
ret.put(entry.getName(), readFile(new BufferedReader(new InputStreamReader(tarArchiveInputStream)), false));
|
ret.put(entry.getName(), readFile(new BufferedReader(new InputStreamReader(tarArchiveInputStream)), false));
|
||||||
}
|
}
|
||||||
|
tarArchiveInputStream.close();
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static HashMap<String, JsonObject> readJsonTarGzFile(String fileName) throws IOException {
|
||||||
|
File inputFile = new File(fileName);
|
||||||
|
TarArchiveInputStream tarArchiveInputStream = new TarArchiveInputStream(new GZIPInputStream(new FileInputStream(inputFile)));
|
||||||
|
HashMap<String, JsonObject> ret = new HashMap<>();
|
||||||
|
TarArchiveEntry entry;
|
||||||
|
while ((entry = tarArchiveInputStream.getNextTarEntry()) != null) {
|
||||||
|
ret.put(entry.getName(), JsonParser.parseReader(new InputStreamReader(tarArchiveInputStream)).getAsJsonObject());
|
||||||
|
}
|
||||||
|
tarArchiveInputStream.close();
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user