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 2d56e1be..5f32b072 100644 --- a/common/src/main/resources/assets/modernfix/lang/en_us.json +++ b/common/src/main/resources/assets/modernfix/lang/en_us.json @@ -7,6 +7,7 @@ "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.message.reload_config": "Run /mfrc after changing configs on disk for them to take effect.", "modernfix.option.on": "on", "modernfix.option.off": "off", "modernfix.option.disabled": "disabled", diff --git a/forge/src/main/java/org/embeddedt/modernfix/forge/config/NightConfigFixer.java b/forge/src/main/java/org/embeddedt/modernfix/forge/config/NightConfigFixer.java index d26df346..f412dae2 100644 --- a/forge/src/main/java/org/embeddedt/modernfix/forge/config/NightConfigFixer.java +++ b/forge/src/main/java/org/embeddedt/modernfix/forge/config/NightConfigFixer.java @@ -2,6 +2,8 @@ package org.embeddedt.modernfix.forge.config; import com.electronwill.nightconfig.core.file.FileWatcher; import cpw.mods.modlauncher.api.LamdbaExceptionUtils; +import net.minecraft.client.Minecraft; +import net.minecraft.network.chat.Component; import net.minecraftforge.fml.loading.FMLLoader; import net.minecraftforge.fml.util.ObfuscationReflectionHelper; import org.embeddedt.modernfix.ModernFix; @@ -14,6 +16,7 @@ import java.util.ArrayList; import java.util.LinkedHashSet; import java.util.List; import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.TimeUnit; import java.util.function.Function; public class NightConfigFixer { @@ -48,10 +51,10 @@ public class NightConfigFixer { ModernFix.LOGGER.info("Processed {} config reloads", runnablesToRun.size()); } - private static final Class WATCHED_FILE = LamdbaExceptionUtils.uncheck(() -> Class.forName("com.electronwill.nightconfig.core.file.FileWatcher$WatchedFile")); - private static final Field CHANGE_HANDLER = ObfuscationReflectionHelper.findField(WATCHED_FILE, "changeHandler"); - static class MonitoringMap extends ConcurrentHashMap { + private static final Class WATCHED_FILE = LamdbaExceptionUtils.uncheck(() -> Class.forName("com.electronwill.nightconfig.core.file.FileWatcher$WatchedFile")); + private static final Field CHANGE_HANDLER = ObfuscationReflectionHelper.findField(WATCHED_FILE, "changeHandler"); + public MonitoringMap(ConcurrentHashMap oldMap) { super(oldMap); } @@ -71,6 +74,19 @@ public class NightConfigFixer { } } + private static long lastConfigTrigger = System.nanoTime(); + + private static void triggerConfigMessage() { + if((System.nanoTime() - lastConfigTrigger) >= TimeUnit.SECONDS.toNanos(5)) { + lastConfigTrigger = System.nanoTime(); + Minecraft.getInstance().execute(() -> { + if(Minecraft.getInstance().level != null) { + Minecraft.getInstance().gui.getChat().addMessage(Component.translatable("modernfix.message.reload_config")); + } + }); + } + } + static class MonitoringConfigTracker implements Runnable { private final Runnable configTracker; @@ -84,6 +100,8 @@ public class NightConfigFixer { @Override public void run() { synchronized(configsToReload) { + if(FMLLoader.getDist().isClient()) + triggerConfigMessage(); if(configsToReload.size() == 0) ModernFixMixinPlugin.instance.logger.info("Please use /{} to reload any changed mod config files", FMLLoader.getDist().isDedicatedServer() ? "mfsrc" : "mfrc"); configsToReload.add(configTracker);