From 418e796f36ecf569d7418e44cf75493e80bf2069 Mon Sep 17 00:00:00 2001 From: MCTian-mi <35869948+MCTian-mi@users.noreply.github.com> Date: Fri, 28 Aug 2026 22:22:35 +0800 Subject: [PATCH] tweak(perf): skip fluid registration checks for FluidStack constructors --- .../config/UTConfigTweaks.java | 5 +++++ .../universaltweaks/core/UTMixinLoader.java | 1 + .../mixin/UTUnsafeFluidStackMixin.java | 20 +++++++++++++++++++ .../tweaks/mixins.misc.unsafefluidstack.json | 7 +++++++ 4 files changed, 33 insertions(+) create mode 100644 src/main/java/mod/acgaming/universaltweaks/tweaks/misc/fluidstackconstructor/mixin/UTUnsafeFluidStackMixin.java create mode 100644 src/main/resources/mixins/tweaks/mixins.misc.unsafefluidstack.json diff --git a/src/main/java/mod/acgaming/universaltweaks/config/UTConfigTweaks.java b/src/main/java/mod/acgaming/universaltweaks/config/UTConfigTweaks.java index 8ff33476..8bfb89b7 100644 --- a/src/main/java/mod/acgaming/universaltweaks/config/UTConfigTweaks.java +++ b/src/main/java/mod/acgaming/universaltweaks/config/UTConfigTweaks.java @@ -1964,6 +1964,11 @@ public static class MiscCategory @Config.Comment("Restores feature to tilt the camera when damaged") public boolean utDamageTiltToggle = true; + @Config.RequiresMcRestart + @Config.Name("Unsafe FluidStack Constructor") + @Config.Comment("Skips the registration check for fluid in FluidStack construtcors") + public boolean utUnsafeFluidStackConstructorToggle = true; + @Config.Name("Default Difficulty") @Config.Comment("Sets the default difficulty for newly generated worlds") public EnumDifficulty utDefaultDifficulty = EnumDifficulty.NORMAL; diff --git a/src/main/java/mod/acgaming/universaltweaks/core/UTMixinLoader.java b/src/main/java/mod/acgaming/universaltweaks/core/UTMixinLoader.java index a182d55a..e27d513f 100644 --- a/src/main/java/mod/acgaming/universaltweaks/core/UTMixinLoader.java +++ b/src/main/java/mod/acgaming/universaltweaks/core/UTMixinLoader.java @@ -218,6 +218,7 @@ public class UTMixinLoader implements ILateMixinLoader if (UTConfigGeneral.MASTER_SWITCHES.utMasterSwitchTweaks) { put("mixins/tweaks/mixins.blocks.enchantmenttable.bookshelf.json", c -> c.isModPresent("bookshelf") && UTConfigTweaks.BLOCKS.utEnchantmentTableObstructionToggle); + put("mixins/tweaks/mixins.misc.unsafefluidstack.json", c -> UTConfigTweaks.MISC.utUnsafeFluidStackConstructorToggle); } } }); diff --git a/src/main/java/mod/acgaming/universaltweaks/tweaks/misc/fluidstackconstructor/mixin/UTUnsafeFluidStackMixin.java b/src/main/java/mod/acgaming/universaltweaks/tweaks/misc/fluidstackconstructor/mixin/UTUnsafeFluidStackMixin.java new file mode 100644 index 00000000..bef3ab20 --- /dev/null +++ b/src/main/java/mod/acgaming/universaltweaks/tweaks/misc/fluidstackconstructor/mixin/UTUnsafeFluidStackMixin.java @@ -0,0 +1,20 @@ +package mod.acgaming.universaltweaks.tweaks.misc.fluidstackconstructor.mixin; + +import net.minecraftforge.fluids.Fluid; +import net.minecraftforge.fluids.FluidRegistry; +import net.minecraftforge.fluids.FluidStack; + +import mod.acgaming.universaltweaks.config.UTConfigTweaks; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +@Mixin(value = FluidStack.class, remap = false) +public class UTUnsafeFluidStackMixin +{ + @Redirect(method = "(Lnet/minecraftforge/fluids/Fluid;I)V", at = @At(value = "INVOKE", target = "Lnet/minecraftforge/fluids/FluidRegistry;isFluidRegistered(Lnet/minecraftforge/fluids/Fluid;)Z")) + public boolean utUnsafeFluidStackConstructor(Fluid fluid) + { + return UTConfigTweaks.MISC.utUnsafeFluidStackConstructorToggle; + } +} diff --git a/src/main/resources/mixins/tweaks/mixins.misc.unsafefluidstack.json b/src/main/resources/mixins/tweaks/mixins.misc.unsafefluidstack.json new file mode 100644 index 00000000..f4f42fc9 --- /dev/null +++ b/src/main/resources/mixins/tweaks/mixins.misc.unsafefluidstack.json @@ -0,0 +1,7 @@ +{ + "package": "mod.acgaming.universaltweaks.tweaks.misc.fluidstackconstructor.mixin", + "refmap": "universaltweaks.refmap.json", + "minVersion": "0.8", + "compatibilityLevel": "JAVA_8", + "mixins": ["UTUnsafeFluidStackMixin"] +}