From 01d91c0acd0e8b494578d63683088e6f1d67509f Mon Sep 17 00:00:00 2001 From: kuba6000 Date: Thu, 18 Aug 2022 00:12:14 +0200 Subject: Cache Mob Handler map --- src/main/java/kubatech/api/utils/ModUtils.java | 29 +++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) (limited to 'src/main/java/kubatech/api/utils/ModUtils.java') diff --git a/src/main/java/kubatech/api/utils/ModUtils.java b/src/main/java/kubatech/api/utils/ModUtils.java index 0f598dcfa8..447796ddbf 100644 --- a/src/main/java/kubatech/api/utils/ModUtils.java +++ b/src/main/java/kubatech/api/utils/ModUtils.java @@ -20,9 +20,11 @@ package kubatech.api.utils; import cpw.mods.fml.common.Loader; -import java.util.AbstractMap; -import java.util.HashMap; -import java.util.Map; +import cpw.mods.fml.common.ModContainer; +import java.nio.charset.StandardCharsets; +import java.security.MessageDigest; +import java.util.*; +import javax.xml.bind.DatatypeConverter; import net.minecraft.launchwrapper.Launch; public class ModUtils { @@ -47,4 +49,25 @@ public class ModUtils { .orElse(emptyEntry) .getValue(); } + + private static String modListVersion = null; + + public static String getModListVersion() { + if (modListVersion != null) return modListVersion; + ArrayList modlist = (ArrayList) + ((ArrayList) Loader.instance().getActiveModList()).clone(); + String sortedList = modlist.stream() + .filter(m -> m.getMod() != null) + .sorted(Comparator.comparing(ModContainer::getModId)) + .collect(String::new, (a, b) -> a += b.getModId() + b.getVersion(), (a, b) -> a += ", " + b); + try { + MessageDigest md = MessageDigest.getInstance("MD5"); + modListVersion = DatatypeConverter.printHexBinary(md.digest(sortedList.getBytes(StandardCharsets.UTF_8))) + .toUpperCase(); + return modListVersion; + } catch (Exception e) { + modListVersion = sortedList; + return sortedList; + } + } } -- cgit From 32f6632ffc1ed4c91a02146e5653a28089a33556 Mon Sep 17 00:00:00 2001 From: kuba6000 Date: Thu, 18 Aug 2022 00:52:22 +0200 Subject: Fix --- src/main/java/kubatech/api/utils/ModUtils.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'src/main/java/kubatech/api/utils/ModUtils.java') diff --git a/src/main/java/kubatech/api/utils/ModUtils.java b/src/main/java/kubatech/api/utils/ModUtils.java index 447796ddbf..53f0086e25 100644 --- a/src/main/java/kubatech/api/utils/ModUtils.java +++ b/src/main/java/kubatech/api/utils/ModUtils.java @@ -59,7 +59,11 @@ public class ModUtils { String sortedList = modlist.stream() .filter(m -> m.getMod() != null) .sorted(Comparator.comparing(ModContainer::getModId)) - .collect(String::new, (a, b) -> a += b.getModId() + b.getVersion(), (a, b) -> a += ", " + b); + .collect( + StringBuilder::new, + (a, b) -> a.append(b.getModId()).append(b.getVersion()), + (a, b) -> a.append(", ").append(b)) + .toString(); try { MessageDigest md = MessageDigest.getInstance("MD5"); modListVersion = DatatypeConverter.printHexBinary(md.digest(sortedList.getBytes(StandardCharsets.UTF_8))) -- cgit