Strip signatures from jar manifests at startup to save memory
This commit is contained in:
parent
925c7526ee
commit
21cbcb0e04
|
|
@ -2,6 +2,7 @@ package org.embeddedt.modernfix.common.mixin.core;
|
|||
|
||||
import net.minecraft.server.Bootstrap;
|
||||
import net.minecraftforge.network.NetworkConstants;
|
||||
import org.embeddedt.modernfix.forge.classloading.ManifestCompactor;
|
||||
import org.slf4j.Logger;
|
||||
import org.embeddedt.modernfix.forge.load.ModWorkManagerQueue;
|
||||
import org.embeddedt.modernfix.util.TimeFormatter;
|
||||
|
|
@ -25,6 +26,7 @@ public class BootstrapMixin {
|
|||
if(!isBootstrapped) {
|
||||
LOGGER.info("ModernFix reached bootstrap stage ({} after launch)", TimeFormatter.formatNanos(ManagementFactory.getRuntimeMXBean().getUptime() * 1000L * 1000L));
|
||||
ModWorkManagerQueue.replace();
|
||||
ManifestCompactor.compactManifests();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,32 @@
|
|||
package org.embeddedt.modernfix.forge.classloading;
|
||||
|
||||
import cpw.mods.jarhandling.impl.Jar;
|
||||
import net.minecraftforge.fml.loading.LoadingModList;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
import java.util.jar.Attributes;
|
||||
|
||||
public class ManifestCompactor {
|
||||
public static void compactManifests() {
|
||||
for (var mfi : LoadingModList.get().getModFiles()) {
|
||||
if (!(mfi.getFile().getSecureJar() instanceof Jar jar)) {
|
||||
continue;
|
||||
}
|
||||
var manifest = jar.getManifest();
|
||||
if (manifest == null) {
|
||||
continue;
|
||||
}
|
||||
var entries = jar.getManifest().getEntries();
|
||||
var entryKeys = new HashSet<>(entries.keySet());
|
||||
var digests = Set.of(new Attributes.Name("SHA-256-Digest"), new Attributes.Name("SHA-384-Digest"));
|
||||
entryKeys.forEach(key -> entries.compute(key, (k, attrs) -> {
|
||||
if (attrs != null && attrs.keySet().stream().anyMatch(n -> n != null && !digests.contains(n))) {
|
||||
return attrs;
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}));
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user