From 33e437f8653e68aa1ac4fb679fc95871794a34bf Mon Sep 17 00:00:00 2001 From: embeddedt <42941056+embeddedt@users.noreply.github.com> Date: Wed, 26 Jul 2023 21:29:33 -0400 Subject: [PATCH] Hotfix for CoFH crash Apparently BooleanSupplier is *not* used --- .../bugfix/cofh_core_crash/FlagManagerMixin.java | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/forge/src/main/java/org/embeddedt/modernfix/forge/mixin/bugfix/cofh_core_crash/FlagManagerMixin.java b/forge/src/main/java/org/embeddedt/modernfix/forge/mixin/bugfix/cofh_core_crash/FlagManagerMixin.java index f39e12e1..058b7d2e 100644 --- a/forge/src/main/java/org/embeddedt/modernfix/forge/mixin/bugfix/cofh_core_crash/FlagManagerMixin.java +++ b/forge/src/main/java/org/embeddedt/modernfix/forge/mixin/bugfix/cofh_core_crash/FlagManagerMixin.java @@ -2,12 +2,15 @@ package org.embeddedt.modernfix.forge.mixin.bugfix.cofh_core_crash; import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; import org.embeddedt.modernfix.annotation.RequiresMod; -import org.spongepowered.asm.mixin.*; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Pseudo; +import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Coerce; import org.spongepowered.asm.mixin.injection.Redirect; -import java.util.function.BooleanSupplier; +import java.util.function.Supplier; /** * Fix getOrCreateFlag accessing the FLAGS map without synchronization by wrapping all calls to it @@ -18,15 +21,15 @@ import java.util.function.BooleanSupplier; @RequiresMod("cofh_core") public class FlagManagerMixin { @Shadow @Final - private static Object2ObjectOpenHashMap FLAGS; + private static Object2ObjectOpenHashMap> FLAGS; @Shadow - private BooleanSupplier getOrCreateFlag(String flag) { + private Supplier getOrCreateFlag(String flag) { throw new AssertionError(); } @Redirect(method = "*", at = @At(value = "INVOKE", target = "getOrCreateFlag"), require = 0) - private BooleanSupplier getFlag(@Coerce Object flagHandler, String flag) { + private Supplier getFlag(@Coerce Object flagHandler, String flag) { if(flagHandler != this) throw new AssertionError("Redirect targeted bad getOrCreateFlag invocation"); synchronized (FLAGS) {