minify jar assets

This commit is contained in:
Bixilon 2021-12-16 13:24:19 +01:00
parent bbe19c5fb9
commit 7982e607ee
No known key found for this signature in database
GPG Key ID: 5CAD791931B09AC4

View File

@ -13,6 +13,7 @@
package de.bixilon.minosoft.assets.minecraft package de.bixilon.minosoft.assets.minecraft
import com.fasterxml.jackson.databind.JsonNode
import de.bixilon.minosoft.assets.InvalidAssetException import de.bixilon.minosoft.assets.InvalidAssetException
import de.bixilon.minosoft.assets.util.FileAssetsUtil import de.bixilon.minosoft.assets.util.FileAssetsUtil
import de.bixilon.minosoft.assets.util.FileUtil import de.bixilon.minosoft.assets.util.FileUtil
@ -26,11 +27,13 @@ import de.bixilon.minosoft.util.CountUpAndDownLatch
import de.bixilon.minosoft.util.KUtil.generalize import de.bixilon.minosoft.util.KUtil.generalize
import de.bixilon.minosoft.util.KUtil.toResourceLocation import de.bixilon.minosoft.util.KUtil.toResourceLocation
import de.bixilon.minosoft.util.Util import de.bixilon.minosoft.util.Util
import de.bixilon.minosoft.util.json.Jackson
import org.kamranzafar.jtar.TarEntry import org.kamranzafar.jtar.TarEntry
import org.kamranzafar.jtar.TarHeader import org.kamranzafar.jtar.TarHeader
import org.kamranzafar.jtar.TarOutputStream import org.kamranzafar.jtar.TarOutputStream
import java.io.* import java.io.*
/** /**
* Integrated assets-manager, that provides the assets in the minecraft.jar file * Integrated assets-manager, that provides the assets in the minecraft.jar file
* First downloads the original minecraft jar, then removes all unnecessary files * First downloads the original minecraft jar, then removes all unnecessary files
@ -81,6 +84,13 @@ class JarAssetsManager(
} }
cutFilename = splitFilename.getOrNull(1) ?: continue cutFilename = splitFilename.getOrNull(1) ?: continue
var outData = data
if (cutFilename.endsWith(".json")) {
// minify json
val jsonNode = Jackson.MAPPER.readValue(data, JsonNode::class.java)
outData = jsonNode.toString().toByteArray()
}
var required = false var required = false
for (prefix in REQUIRED_FILE_PREFIXES) { for (prefix in REQUIRED_FILE_PREFIXES) {
if (cutFilename.startsWith(prefix)) { if (cutFilename.startsWith(prefix)) {
@ -91,9 +101,9 @@ class JarAssetsManager(
if (!required) { if (!required) {
continue continue
} }
buildingJarAsset[cutFilename] = data buildingJarAsset[cutFilename] = outData
tarOutputStream.putNextEntry(TarEntry(TarHeader.createHeader(filename, data.size.toLong(), 0L, false, 777).apply { generalize() })) tarOutputStream.putNextEntry(TarEntry(TarHeader.createHeader(filename, outData.size.toLong(), 0L, false, 777).apply { generalize() }))
tarOutputStream.write(data) tarOutputStream.write(outData)
tarOutputStream.flush() tarOutputStream.flush()
} }
tarOutputStream.close() tarOutputStream.close()