Skip to content

Commit 095b9c3

Browse files
committed
Revamp mod warning system, also warn about FerriteCore missing
1 parent 0a26012 commit 095b9c3

File tree

3 files changed

+22
-9
lines changed

3 files changed

+22
-9
lines changed

common/src/main/java/org/embeddedt/modernfix/core/config/ModernFixEarlyConfig.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,7 @@ public DefaultSettingMapBuilder put(String key, Boolean value) {
166166
.put("mixin.perf.faster_item_rendering", false)
167167
.put("mixin.feature.spam_thread_dump", false)
168168
.put("mixin.feature.snapshot_easter_egg", true)
169+
.put("mixin.feature.warn_missing_perf_mods", true)
169170
.put("mixin.feature.spark_profile_launch", false)
170171
.put("mixin.perf.blast_search_trees", shouldReplaceSearchTrees)
171172
.put("mixin.devenv", isDevEnv)

common/src/main/resources/assets/modernfix/lang/en_us.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
"key.modernfix.config": "Open config screen",
44
"modernfix.jei_load": "Loading JEI, this may take a while",
55
"modernfix.no_lazydfu": "LazyDFU is not installed. If Minecraft needs to update game data from an older version, there may be noticeable lag.",
6+
"modernfix.no_ferritecore": "FerriteCore is not installed. Memory usage will be very high.",
7+
"modernfix.perf_mod_warning": "It is recommended to install the mods, but the warning(s) can be disabled in the ModernFix config.",
68
"modernfix.config": "ModernFix mixin config",
79
"modernfix.config.done_restart": "Done (restart required)",
810
"modernfix.option.on": "on",

forge/src/main/java/org/embeddedt/modernfix/forge/init/ModernFixForge.java

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package org.embeddedt.modernfix.forge.init;
22

3+
import com.google.common.collect.ImmutableList;
34
import net.minecraft.world.item.Item;
45
import net.minecraftforge.api.distmarker.Dist;
56
import net.minecraftforge.common.MinecraftForge;
@@ -20,6 +21,7 @@
2021
import net.minecraftforge.registries.ForgeRegistries;
2122
import org.apache.commons.lang3.tuple.Pair;
2223
import org.embeddedt.modernfix.ModernFix;
24+
import org.embeddedt.modernfix.core.ModernFixMixinPlugin;
2325
import org.embeddedt.modernfix.forge.classloading.ClassLoadHack;
2426
import org.embeddedt.modernfix.forge.classloading.ModFileScanDataDeduplicator;
2527
import org.embeddedt.modernfix.forge.ModernFixConfig;
@@ -29,6 +31,8 @@
2931
import org.embeddedt.modernfix.forge.registry.ObjectHolderClearer;
3032
import org.embeddedt.modernfix.forge.util.KubeUtil;
3133

34+
import java.util.List;
35+
3236
@Mod(ModernFix.MODID)
3337
public class ModernFixForge {
3438
private static ModernFix commonMod;
@@ -68,19 +72,25 @@ private void registerItems(RegistryEvent<Item> event) {
6872
}
6973
}
7074

71-
private static boolean dfuModPresent() {
72-
for(String modId : new String[] { "lazydfu", "datafixerslayer" }) {
73-
if(ModList.get().isLoaded(modId))
74-
return true;
75-
}
76-
return !FMLLoader.isProduction();
77-
}
75+
private static final List<Pair<List<String>, String>> MOD_WARNINGS = ImmutableList.of(
76+
Pair.of(ImmutableList.of("lazydfu", "datafixerslayer"), "modernfix.no_lazydfu"),
77+
Pair.of(ImmutableList.of("ferritecore"), "modernfix.no_ferritecore")
78+
);
7879

7980
@SubscribeEvent
8081
public void commonSetup(FMLCommonSetupEvent event) {
81-
if(!dfuModPresent()) {
82+
if(ModernFixMixinPlugin.instance.isOptionEnabled("feature.warn_missing_perf_mods.Warnings")) {
8283
event.enqueueWork(() -> {
83-
ModLoader.get().addWarning(new ModLoadingWarning(ModLoadingContext.get().getActiveContainer().getModInfo(), ModLoadingStage.COMMON_SETUP, "modernfix.no_lazydfu"));
84+
boolean atLeastOneWarning = false;
85+
for(Pair<List<String>, String> warning : MOD_WARNINGS) {
86+
boolean isPresent = !FMLLoader.isProduction() || warning.getLeft().stream().anyMatch(name -> ModList.get().isLoaded(name));
87+
if(!isPresent) {
88+
atLeastOneWarning = true;
89+
ModLoader.get().addWarning(new ModLoadingWarning(ModLoadingContext.get().getActiveContainer().getModInfo(), ModLoadingStage.COMMON_SETUP, warning.getRight()));
90+
}
91+
}
92+
if(atLeastOneWarning)
93+
ModLoader.get().addWarning(new ModLoadingWarning(ModLoadingContext.get().getActiveContainer().getModInfo(), ModLoadingStage.COMMON_SETUP, "modernfix.perf_mod_warning"));
8494
});
8595
}
8696
ObjectHolderClearer.clearThrowables();

0 commit comments

Comments
 (0)