From 181065c2159783f5769eac45a4a57bc65775ef2c Mon Sep 17 00:00:00 2001 From: Colonel-Sandvich <21989418+Colonel-Sandvich@users.noreply.github.com> Date: Fri, 4 Oct 2024 09:09:11 +0100 Subject: [PATCH 1/2] Add `SINE_TABLE` as mutable shadow, add two options to resolve issue --- .../mixin/math/sine_lut/MixinMathHelper.java | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/main/java/me/jellysquid/mods/lithium/mixin/math/sine_lut/MixinMathHelper.java b/src/main/java/me/jellysquid/mods/lithium/mixin/math/sine_lut/MixinMathHelper.java index 828ffe77d..36ed7c714 100644 --- a/src/main/java/me/jellysquid/mods/lithium/mixin/math/sine_lut/MixinMathHelper.java +++ b/src/main/java/me/jellysquid/mods/lithium/mixin/math/sine_lut/MixinMathHelper.java @@ -1,12 +1,35 @@ package me.jellysquid.mods.lithium.mixin.math.sine_lut; import me.jellysquid.mods.lithium.common.util.math.CompactSineLUT; +import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents; import net.minecraft.util.math.MathHelper; + import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Mutable; import org.spongepowered.asm.mixin.Overwrite; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(MathHelper.class) public class MixinMathHelper { + @Shadow + @Mutable + public static float[] SINE_TABLE; + + @Inject(method = "", at = @At("RETURN")) + private static void onClassInit(CallbackInfo ci) { + new CompactSineLUT(); // Force class initialisation + MixinMathHelper.SINE_TABLE = null; + } + + static { + ServerLifecycleEvents.SERVER_STARTING.register((server) -> { + MixinMathHelper.SINE_TABLE = null; + }); + } + /** * @author jellysquid3 * @reason use an optimized implementation From 39118dbffb09254ec6c30845674446ea1d1434e4 Mon Sep 17 00:00:00 2001 From: Colonel-Sandvich <21989418+Colonel-Sandvich@users.noreply.github.com> Date: Fri, 4 Oct 2024 17:22:39 +0100 Subject: [PATCH 2/2] Remove server lifecycle callback, make field private --- .../lithium/mixin/math/sine_lut/MixinMathHelper.java | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/src/main/java/me/jellysquid/mods/lithium/mixin/math/sine_lut/MixinMathHelper.java b/src/main/java/me/jellysquid/mods/lithium/mixin/math/sine_lut/MixinMathHelper.java index 36ed7c714..f6d718b52 100644 --- a/src/main/java/me/jellysquid/mods/lithium/mixin/math/sine_lut/MixinMathHelper.java +++ b/src/main/java/me/jellysquid/mods/lithium/mixin/math/sine_lut/MixinMathHelper.java @@ -1,7 +1,6 @@ package me.jellysquid.mods.lithium.mixin.math.sine_lut; import me.jellysquid.mods.lithium.common.util.math.CompactSineLUT; -import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents; import net.minecraft.util.math.MathHelper; import org.spongepowered.asm.mixin.Mixin; @@ -16,7 +15,7 @@ public class MixinMathHelper { @Shadow @Mutable - public static float[] SINE_TABLE; + private static float[] SINE_TABLE; @Inject(method = "", at = @At("RETURN")) private static void onClassInit(CallbackInfo ci) { @@ -24,12 +23,6 @@ private static void onClassInit(CallbackInfo ci) { MixinMathHelper.SINE_TABLE = null; } - static { - ServerLifecycleEvents.SERVER_STARTING.register((server) -> { - MixinMathHelper.SINE_TABLE = null; - }); - } - /** * @author jellysquid3 * @reason use an optimized implementation