Implement /mfrc and /mfsrc commands to reload configs on client/server respectively
This commit is contained in:
parent
c8749940f7
commit
14170ade1f
|
|
@ -3,6 +3,7 @@ package org.embeddedt.modernfix.forge.config;
|
|||
import com.electronwill.nightconfig.core.file.FileWatcher;
|
||||
import cpw.mods.modlauncher.api.LamdbaExceptionUtils;
|
||||
import net.minecraftforge.fml.common.ObfuscationReflectionHelper;
|
||||
import net.minecraftforge.fml.loading.FMLLoader;
|
||||
import org.embeddedt.modernfix.ModernFix;
|
||||
import org.embeddedt.modernfix.core.ModernFixMixinPlugin;
|
||||
import org.embeddedt.modernfix.util.CommonModUtil;
|
||||
|
|
@ -17,7 +18,6 @@ import java.util.function.Function;
|
|||
|
||||
public class NightConfigFixer {
|
||||
public static final LinkedHashSet<Runnable> configsToReload = new LinkedHashSet<>();
|
||||
private static int tickCounter = 0;
|
||||
public static void monitorFileWatcher() {
|
||||
if(!ModernFixMixinPlugin.instance.isOptionEnabled("bugfix.fix_config_crashes.NightConfigFixerMixin"))
|
||||
return;
|
||||
|
|
@ -32,17 +32,9 @@ public class NightConfigFixer {
|
|||
}, "replacing Night Config watchedFiles map");
|
||||
}
|
||||
|
||||
/**
|
||||
* Called by the render thread on the client, and the server thread on the server. Processes all the accumulated
|
||||
* file watch events.
|
||||
*/
|
||||
public static void runReloads() {
|
||||
if((tickCounter++ % 20) != 0)
|
||||
return;
|
||||
List<Runnable> runnablesToRun;
|
||||
synchronized (configsToReload) {
|
||||
if(configsToReload.isEmpty())
|
||||
return;
|
||||
runnablesToRun = new ArrayList<>(configsToReload);
|
||||
configsToReload.clear();
|
||||
}
|
||||
|
|
@ -92,6 +84,8 @@ public class NightConfigFixer {
|
|||
@Override
|
||||
public void run() {
|
||||
synchronized(configsToReload) {
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ import com.mojang.blaze3d.platform.InputConstants;
|
|||
import net.minecraft.client.KeyMapping;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.gui.components.DebugScreenOverlay;
|
||||
import net.minecraftforge.api.distmarker.Dist;
|
||||
import net.minecraftforge.client.event.ClientChatEvent;
|
||||
import net.minecraftforge.client.event.RecipesUpdatedEvent;
|
||||
import net.minecraftforge.client.event.RenderGameOverlayEvent;
|
||||
import net.minecraftforge.client.gui.ForgeIngameGui;
|
||||
|
|
@ -21,7 +21,6 @@ import net.minecraftforge.fml.common.ObfuscationReflectionHelper;
|
|||
import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent;
|
||||
import net.minecraftforge.fml.event.server.FMLServerStartedEvent;
|
||||
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
|
||||
import net.minecraftforge.fml.loading.FMLEnvironment;
|
||||
import org.embeddedt.modernfix.ModernFixClient;
|
||||
import org.embeddedt.modernfix.forge.config.NightConfigFixer;
|
||||
import org.embeddedt.modernfix.screen.ModernFixConfigScreen;
|
||||
|
|
@ -54,8 +53,15 @@ public class ModernFixClientForge {
|
|||
if(event.phase == TickEvent.Phase.START && configKey.consumeClick()) {
|
||||
Minecraft.getInstance().setScreen(new ModernFixConfigScreen(Minecraft.getInstance().screen));
|
||||
}
|
||||
if(FMLEnvironment.dist == Dist.CLIENT && event.phase == TickEvent.Phase.START && ModernFixForge.launchDone) {
|
||||
}
|
||||
|
||||
@SubscribeEvent(priority = EventPriority.LOW)
|
||||
public void onClientChat(ClientChatEvent event) {
|
||||
if(event.getMessage() != null && event.getMessage().trim().equals("/mfrc")) {
|
||||
NightConfigFixer.runReloads();
|
||||
event.setCanceled(true);
|
||||
// add it to chat history
|
||||
Minecraft.getInstance().gui.getChat().addRecentChat(event.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,12 +1,14 @@
|
|||
package org.embeddedt.modernfix.forge.init;
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.mojang.brigadier.builder.LiteralArgumentBuilder;
|
||||
import net.minecraft.commands.CommandSourceStack;
|
||||
import net.minecraft.world.item.Item;
|
||||
import net.minecraftforge.api.distmarker.Dist;
|
||||
import net.minecraftforge.common.MinecraftForge;
|
||||
import net.minecraftforge.event.OnDatapackSyncEvent;
|
||||
import net.minecraftforge.event.RegisterCommandsEvent;
|
||||
import net.minecraftforge.event.RegistryEvent;
|
||||
import net.minecraftforge.event.TickEvent;
|
||||
import net.minecraftforge.eventbus.api.EventPriority;
|
||||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||
import net.minecraftforge.fml.*;
|
||||
|
|
@ -16,7 +18,6 @@ import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
|
|||
import net.minecraftforge.fml.event.server.FMLServerStartedEvent;
|
||||
import net.minecraftforge.fml.event.server.FMLServerStoppedEvent;
|
||||
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
|
||||
import net.minecraftforge.fml.loading.FMLEnvironment;
|
||||
import net.minecraftforge.fml.loading.FMLLoader;
|
||||
import net.minecraftforge.fml.network.FMLNetworkConstants;
|
||||
import net.minecraftforge.fml.server.ServerLifecycleHooks;
|
||||
|
|
@ -24,10 +25,10 @@ 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.entity.EntityDataIDSyncHandler;
|
||||
import org.embeddedt.modernfix.forge.ModernFixConfig;
|
||||
import org.embeddedt.modernfix.forge.classloading.ClassLoadHack;
|
||||
import org.embeddedt.modernfix.forge.classloading.ModFileScanDataDeduplicator;
|
||||
import org.embeddedt.modernfix.forge.ModernFixConfig;
|
||||
import org.embeddedt.modernfix.entity.EntityDataIDSyncHandler;
|
||||
import org.embeddedt.modernfix.forge.config.ConfigFixer;
|
||||
import org.embeddedt.modernfix.forge.config.NightConfigFixer;
|
||||
import org.embeddedt.modernfix.forge.packet.PacketHandler;
|
||||
|
|
@ -59,9 +60,15 @@ public class ModernFixForge {
|
|||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public void onServerTick(TickEvent.ServerTickEvent event) {
|
||||
if(FMLEnvironment.dist == Dist.DEDICATED_SERVER && event.phase == TickEvent.Phase.END && ModernFixForge.launchDone) {
|
||||
NightConfigFixer.runReloads();
|
||||
public void onCommandRegister(RegisterCommandsEvent event) {
|
||||
// Register separate commands since redirecting doesn't work without arguments
|
||||
for(String name : new String[] { "mfrc", "mfsrc"}) {
|
||||
event.getDispatcher().register(LiteralArgumentBuilder.<CommandSourceStack>literal(name)
|
||||
.requires(source -> source.hasPermission(3))
|
||||
.executes(context -> {
|
||||
NightConfigFixer.runReloads();
|
||||
return 1;
|
||||
}));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user