From f939840841c183b80537ca75a564e864353084e5 Mon Sep 17 00:00:00 2001 From: Integer Limit <103940576+IntegerLimit@users.noreply.github.com> Date: Thu, 2 Jan 2025 23:36:06 +1100 Subject: [PATCH] GrS Reload Command Variants --- dependencies.gradle | 16 +++- gradle.properties | 2 +- .../java/com/nomiceu/nomilabs/NomiLabs.java | 6 ++ .../nomilabs/command/LabsReloadCommand.java | 84 +++++++++++++++++++ .../nomilabs/command/SimpleCommand.java | 58 +++++++++++++ .../integration/jei/SavedJEIValues.java | 8 ++ .../nomilabs/mixin/jei/JeiStarterMixin.java | 40 +++++++++ .../network/LabsFastReloadMessage.java | 40 +++++++++ .../network/LabsLangReloadMessage.java | 43 ++++++++++ .../nomilabs/network/LabsNetworkHandler.java | 4 + .../network/LabsNoJeiReloadMessage.java | 29 +++++++ .../network/MainThreadMessageHandler.java | 26 ++++++ 12 files changed, 353 insertions(+), 3 deletions(-) create mode 100644 src/main/java/com/nomiceu/nomilabs/command/LabsReloadCommand.java create mode 100644 src/main/java/com/nomiceu/nomilabs/command/SimpleCommand.java create mode 100644 src/main/java/com/nomiceu/nomilabs/integration/jei/SavedJEIValues.java create mode 100644 src/main/java/com/nomiceu/nomilabs/network/LabsFastReloadMessage.java create mode 100644 src/main/java/com/nomiceu/nomilabs/network/LabsLangReloadMessage.java create mode 100644 src/main/java/com/nomiceu/nomilabs/network/LabsNoJeiReloadMessage.java create mode 100644 src/main/java/com/nomiceu/nomilabs/network/MainThreadMessageHandler.java diff --git a/dependencies.gradle b/dependencies.gradle index b1a3c3e2..ca6278d1 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -42,7 +42,9 @@ dependencies { // CCL, CT dep for GT (from GTCEu Maven) // Included to allow compiling of certain Draconic Evolution Mixin Classes, and as transitive deps - implementation ("codechicken:codechickenlib:3.2.3.358") // Version 3.2.3.358 + implementation ("codechicken:codechickenlib:3.2.3.358") { + transitive = false + } // Version 3.2.3.358 // GT and GCYM, pretty much the 'core' of this coremod (from GTCEu Maven) // GT Has Mixins! CHECK MIXINS FOR COMPAT AFTER UPDATING! @@ -62,7 +64,17 @@ dependencies { } // Version 1.1.3 // Config Anytime (from Cleanroom Maven) - implementation ('com.cleanroommc:configanytime:3.0') // Version 3.0 + implementation ('com.cleanroommc:configanytime:3.0') { + transitive = false + } // Version 3.0 + + // Had Enough Items + implementation ('mezz:jei:4.26.2') { + transitive = false + } // Version 4.26.2 + + // The One Probe + implementation rfg.deobf('curse.maven:top-245211:2667280') // Version 1.4.28 /* -------------------------------- Compile Time Only Deps -------------------------------- */ diff --git a/gradle.properties b/gradle.properties index 35b532c6..93b20fd8 100644 --- a/gradle.properties +++ b/gradle.properties @@ -84,7 +84,7 @@ includeWellKnownRepositories = true # Adds JEI and TheOneProbe to your development environment. Adds them as 'implementation', meaning they will # be available at compiletime and runtime for your mod (in-game and in-code). # Overrides the above setting to be always true, as these repositories are needed to fetch the mods -includeCommonDevEnvMods = true +includeCommonDevEnvMods = false # If enabled, you may use 'shadowCompile' for dependencies. They will be integrated in your jar. It is your diff --git a/src/main/java/com/nomiceu/nomilabs/NomiLabs.java b/src/main/java/com/nomiceu/nomilabs/NomiLabs.java index 372e06c1..a09b2774 100644 --- a/src/main/java/com/nomiceu/nomilabs/NomiLabs.java +++ b/src/main/java/com/nomiceu/nomilabs/NomiLabs.java @@ -10,6 +10,7 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import com.nomiceu.nomilabs.command.LabsReloadCommand; import com.nomiceu.nomilabs.config.LabsConfig; import com.nomiceu.nomilabs.event.ClientProxy; import com.nomiceu.nomilabs.event.CommonProxy; @@ -81,6 +82,11 @@ public void loadComplete(FMLLoadCompleteEvent event) { CommonProxy.loadComplete(); } + @EventHandler + public void serverLoad(FMLServerStartingEvent event) { + event.registerServerCommand(new LabsReloadCommand()); + } + @EventHandler public void serverStopped(FMLServerStoppedEvent event) { DataFixerHandler.close(); diff --git a/src/main/java/com/nomiceu/nomilabs/command/LabsReloadCommand.java b/src/main/java/com/nomiceu/nomilabs/command/LabsReloadCommand.java new file mode 100644 index 00000000..b80a5e8b --- /dev/null +++ b/src/main/java/com/nomiceu/nomilabs/command/LabsReloadCommand.java @@ -0,0 +1,84 @@ +package com.nomiceu.nomilabs.command; + +import java.util.List; + +import net.minecraft.command.ICommandSender; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.server.MinecraftServer; +import net.minecraft.util.text.TextComponentString; +import net.minecraftforge.fml.common.network.simpleimpl.IMessage; +import net.minecraftforge.server.command.CommandTreeBase; + +import org.jetbrains.annotations.NotNull; + +import com.cleanroommc.groovyscript.GroovyScript; +import com.cleanroommc.groovyscript.api.GroovyLog; +import com.cleanroommc.groovyscript.sandbox.LoadStage; +import com.google.common.collect.ImmutableList; +import com.nomiceu.nomilabs.network.LabsFastReloadMessage; +import com.nomiceu.nomilabs.network.LabsLangReloadMessage; +import com.nomiceu.nomilabs.network.LabsNetworkHandler; +import com.nomiceu.nomilabs.network.LabsNoJeiReloadMessage; + +/** + * Provides three variations to the GroovyScript reload command: + *
+ * Also allows for 'fast' reloading of JEI, reusing the existing Ingredient Filter, Search Trees and Bookmarks Data.
*/
@Mixin(value = JeiStarter.class, remap = false)
public class JeiStarterMixin {
+ @SuppressWarnings("rawtypes")
+ @Redirect(method = "start",
+ at = @At(value = "INVOKE",
+ target = "Lmezz/jei/ingredients/IngredientListElementFactory;createBaseList(Lmezz/jei/api/ingredients/IIngredientRegistry;Lmezz/jei/startup/IModIdHelper;)Lnet/minecraft/util/NonNullList;"),
+ require = 1)
+ private NonNullList