From 095b9c3277b0c82a4d9b400ba96d60934a7064af Mon Sep 17 00:00:00 2001 From: embeddedt <42941056+embeddedt@users.noreply.github.com> Date: Wed, 5 Jul 2023 14:47:17 -0400 Subject: [PATCH] Revamp mod warning system, also warn about FerriteCore missing --- .../core/config/ModernFixEarlyConfig.java | 1 + .../assets/modernfix/lang/en_us.json | 2 ++ .../modernfix/forge/init/ModernFixForge.java | 28 +++++++++++++------ 3 files changed, 22 insertions(+), 9 deletions(-) diff --git a/common/src/main/java/org/embeddedt/modernfix/core/config/ModernFixEarlyConfig.java b/common/src/main/java/org/embeddedt/modernfix/core/config/ModernFixEarlyConfig.java index a2af7938..fa0783ea 100644 --- a/common/src/main/java/org/embeddedt/modernfix/core/config/ModernFixEarlyConfig.java +++ b/common/src/main/java/org/embeddedt/modernfix/core/config/ModernFixEarlyConfig.java @@ -166,6 +166,7 @@ public class ModernFixEarlyConfig { .put("mixin.perf.faster_item_rendering", false) .put("mixin.feature.spam_thread_dump", false) .put("mixin.feature.snapshot_easter_egg", true) + .put("mixin.feature.warn_missing_perf_mods", true) .put("mixin.feature.spark_profile_launch", false) .put("mixin.perf.blast_search_trees", shouldReplaceSearchTrees) .put("mixin.devenv", isDevEnv) diff --git a/common/src/main/resources/assets/modernfix/lang/en_us.json b/common/src/main/resources/assets/modernfix/lang/en_us.json index 5e4fb72d..061363ff 100644 --- a/common/src/main/resources/assets/modernfix/lang/en_us.json +++ b/common/src/main/resources/assets/modernfix/lang/en_us.json @@ -3,6 +3,8 @@ "key.modernfix.config": "Open config screen", "modernfix.jei_load": "Loading JEI, this may take a while", "modernfix.no_lazydfu": "LazyDFU is not installed. If Minecraft needs to update game data from an older version, there may be noticeable lag.", + "modernfix.no_ferritecore": "FerriteCore is not installed. Memory usage will be very high.", + "modernfix.perf_mod_warning": "It is recommended to install the mods, but the warning(s) can be disabled in the ModernFix config.", "modernfix.config": "ModernFix mixin config", "modernfix.config.done_restart": "Done (restart required)", "modernfix.option.on": "on", diff --git a/forge/src/main/java/org/embeddedt/modernfix/forge/init/ModernFixForge.java b/forge/src/main/java/org/embeddedt/modernfix/forge/init/ModernFixForge.java index e1b1f46e..093158e5 100644 --- a/forge/src/main/java/org/embeddedt/modernfix/forge/init/ModernFixForge.java +++ b/forge/src/main/java/org/embeddedt/modernfix/forge/init/ModernFixForge.java @@ -1,5 +1,6 @@ package org.embeddedt.modernfix.forge.init; +import com.google.common.collect.ImmutableList; import net.minecraft.world.item.Item; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.common.MinecraftForge; @@ -20,6 +21,7 @@ import net.minecraftforge.fml.server.ServerLifecycleHooks; import net.minecraftforge.registries.ForgeRegistries; import org.apache.commons.lang3.tuple.Pair; import org.embeddedt.modernfix.ModernFix; +import org.embeddedt.modernfix.core.ModernFixMixinPlugin; import org.embeddedt.modernfix.forge.classloading.ClassLoadHack; import org.embeddedt.modernfix.forge.classloading.ModFileScanDataDeduplicator; import org.embeddedt.modernfix.forge.ModernFixConfig; @@ -29,6 +31,8 @@ import org.embeddedt.modernfix.forge.packet.PacketHandler; import org.embeddedt.modernfix.forge.registry.ObjectHolderClearer; import org.embeddedt.modernfix.forge.util.KubeUtil; +import java.util.List; + @Mod(ModernFix.MODID) public class ModernFixForge { private static ModernFix commonMod; @@ -68,19 +72,25 @@ public class ModernFixForge { } } - private static boolean dfuModPresent() { - for(String modId : new String[] { "lazydfu", "datafixerslayer" }) { - if(ModList.get().isLoaded(modId)) - return true; - } - return !FMLLoader.isProduction(); - } + private static final List, String>> MOD_WARNINGS = ImmutableList.of( + Pair.of(ImmutableList.of("lazydfu", "datafixerslayer"), "modernfix.no_lazydfu"), + Pair.of(ImmutableList.of("ferritecore"), "modernfix.no_ferritecore") + ); @SubscribeEvent public void commonSetup(FMLCommonSetupEvent event) { - if(!dfuModPresent()) { + if(ModernFixMixinPlugin.instance.isOptionEnabled("feature.warn_missing_perf_mods.Warnings")) { event.enqueueWork(() -> { - ModLoader.get().addWarning(new ModLoadingWarning(ModLoadingContext.get().getActiveContainer().getModInfo(), ModLoadingStage.COMMON_SETUP, "modernfix.no_lazydfu")); + boolean atLeastOneWarning = false; + for(Pair, String> warning : MOD_WARNINGS) { + boolean isPresent = !FMLLoader.isProduction() || warning.getLeft().stream().anyMatch(name -> ModList.get().isLoaded(name)); + if(!isPresent) { + atLeastOneWarning = true; + ModLoader.get().addWarning(new ModLoadingWarning(ModLoadingContext.get().getActiveContainer().getModInfo(), ModLoadingStage.COMMON_SETUP, warning.getRight())); + } + } + if(atLeastOneWarning) + ModLoader.get().addWarning(new ModLoadingWarning(ModLoadingContext.get().getActiveContainer().getModInfo(), ModLoadingStage.COMMON_SETUP, "modernfix.perf_mod_warning")); }); } ObjectHolderClearer.clearThrowables();