From 592ff84aea2ff27be935285a470926795f785ab2 Mon Sep 17 00:00:00 2001 From: Jonathan Coates Date: Sat, 7 Jan 2023 22:16:06 +0000 Subject: [PATCH] Read computer threads directly from the config object (#1295) This gives us slightly better guarantees that the config has actually been loaded. This, along with a FCAP bump, fixes this config option not doing anything on Fabric. --- gradle/libs.versions.toml | 2 +- .../computercraft/shared/computer/core/ServerContext.java | 4 ++-- .../java/dan200/computercraft/shared/config/Config.java | 2 -- .../dan200/computercraft/shared/config/ConfigSpec.java | 4 +--- .../java/dan200/computercraft/shared/ComputerCraft.java | 8 ++++---- 5 files changed, 8 insertions(+), 12 deletions(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 25778e969..eb3ca844e 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -26,7 +26,7 @@ nightConfig = "3.6.5" slf4j = "1.7.36" # Minecraft mods -forgeConfig = "5.0.3" +forgeConfig = "5.0.4" iris = "1.19.3-v1.4.6" jei = "11.3.0.262" modmenu = "5.0.1" diff --git a/projects/common/src/main/java/dan200/computercraft/shared/computer/core/ServerContext.java b/projects/common/src/main/java/dan200/computercraft/shared/computer/core/ServerContext.java index f3fb3fc2a..d2bc371bc 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/computer/core/ServerContext.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/computer/core/ServerContext.java @@ -18,7 +18,7 @@ import dan200.computercraft.impl.AbstractComputerCraftAPI; import dan200.computercraft.shared.CommonHooks; import dan200.computercraft.shared.computer.metrics.GlobalMetrics; -import dan200.computercraft.shared.config.Config; +import dan200.computercraft.shared.config.ConfigSpec; import dan200.computercraft.shared.peripheral.modem.wireless.WirelessNetwork; import dan200.computercraft.shared.util.IDAssigner; import net.minecraft.SharedConstants; @@ -69,7 +69,7 @@ private ServerContext(MinecraftServer server) { mainThread = new MainThread(); context = new ComputerContext( new Environment(server), - new ComputerThread(Config.computerThreads), + new ComputerThread(ConfigSpec.computerThreads.get()), mainThread, luaMachine ); idAssigner = new IDAssigner(storageDir.resolve("ids.json")); diff --git a/projects/common/src/main/java/dan200/computercraft/shared/config/Config.java b/projects/common/src/main/java/dan200/computercraft/shared/config/Config.java index 82241bc94..b332ea146 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/config/Config.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/config/Config.java @@ -17,8 +17,6 @@ public final class Config { public static int floppySpaceLimit = 125 * 1000; public static boolean commandRequireCreative = true; - public static int computerThreads = 1; - public static boolean enableCommandBlock = false; public static int modemRange = 64; public static int modemHighAltitudeRange = 384; diff --git a/projects/common/src/main/java/dan200/computercraft/shared/config/ConfigSpec.java b/projects/common/src/main/java/dan200/computercraft/shared/config/ConfigSpec.java index 202121190..f9a683274 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/config/ConfigSpec.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/config/ConfigSpec.java @@ -142,7 +142,7 @@ private ConfigSpec() { computers can run at once, but may induce lag. Please note that some mods may not work with a thread count higher than 1. Use with caution.""") .worldRestart() - .defineInRange("computer_threads", Config.computerThreads, 1, Integer.MAX_VALUE); + .defineInRange("computer_threads", 1, 1, Integer.MAX_VALUE); maxMainGlobalTime = builder .comment(""" @@ -342,11 +342,9 @@ private static void syncServer() { CoreConfig.maximumFilesOpen = maximumFilesOpen.get(); CoreConfig.disableLua51Features = disableLua51Features.get(); CoreConfig.defaultComputerSettings = defaultComputerSettings.get(); - Config.computerThreads = computerThreads.get(); Config.commandRequireCreative = commandRequireCreative.get(); // Execution - Config.computerThreads = computerThreads.get(); CoreConfig.maxMainGlobalTime = TimeUnit.MILLISECONDS.toNanos(maxMainGlobalTime.get()); CoreConfig.maxMainComputerTime = TimeUnit.MILLISECONDS.toNanos(maxMainComputerTime.get()); diff --git a/projects/fabric/src/main/java/dan200/computercraft/shared/ComputerCraft.java b/projects/fabric/src/main/java/dan200/computercraft/shared/ComputerCraft.java index 9bbc38690..a77039eac 100644 --- a/projects/fabric/src/main/java/dan200/computercraft/shared/ComputerCraft.java +++ b/projects/fabric/src/main/java/dan200/computercraft/shared/ComputerCraft.java @@ -23,6 +23,8 @@ import dan200.computercraft.shared.peripheral.modem.wireless.WirelessModemBlockEntity; import dan200.computercraft.shared.platform.NetworkHandler; import dan200.computercraft.shared.platform.PlatformHelper; +import fuzs.forgeconfigapiport.api.config.v2.ForgeConfigRegistry; +import fuzs.forgeconfigapiport.api.config.v2.ModConfigEvents; import net.fabricmc.fabric.api.command.v2.CommandRegistrationCallback; import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents; import net.fabricmc.fabric.api.event.lifecycle.v1.ServerTickEvents; @@ -39,8 +41,6 @@ import net.minecraft.server.packs.resources.ResourceManager; import net.minecraft.util.profiling.ProfilerFiller; import net.minecraft.world.level.block.entity.BlockEntityType; -import net.minecraftforge.api.ModLoadingContext; -import net.minecraftforge.api.fml.event.config.ModConfigEvents; import net.minecraftforge.fml.config.ModConfig; import java.util.concurrent.CompletableFuture; @@ -99,8 +99,8 @@ public static void init() { CommonHooks.onDatapackReload((name, listener) -> ResourceManagerHelper.get(PackType.SERVER_DATA).registerReloadListener(new ReloadListener(name, listener))); // Config loading - ModLoadingContext.registerConfig(ComputerCraftAPI.MOD_ID, ModConfig.Type.SERVER, ConfigSpec.serverSpec); - ModLoadingContext.registerConfig(ComputerCraftAPI.MOD_ID, ModConfig.Type.CLIENT, ConfigSpec.clientSpec); + ForgeConfigRegistry.INSTANCE.register(ComputerCraftAPI.MOD_ID, ModConfig.Type.SERVER, ConfigSpec.serverSpec); + ForgeConfigRegistry.INSTANCE.register(ComputerCraftAPI.MOD_ID, ModConfig.Type.CLIENT, ConfigSpec.clientSpec); ModConfigEvents.loading(ComputerCraftAPI.MOD_ID).register(ConfigSpec::sync); ModConfigEvents.reloading(ComputerCraftAPI.MOD_ID).register(ConfigSpec::sync);