From 06878c69e4a0c36a618dbd3461ed59b4c146f8ec Mon Sep 17 00:00:00 2001 From: embeddedt <42941056+embeddedt@users.noreply.github.com> Date: Sun, 19 May 2024 15:16:49 -0400 Subject: [PATCH 1/2] Disable biome container compression when WorldEdit is installed --- .../embeddedt/modernfix/core/config/ModernFixEarlyConfig.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/src/main/java/org/embeddedt/modernfix/core/config/ModernFixEarlyConfig.java b/common/src/main/java/org/embeddedt/modernfix/core/config/ModernFixEarlyConfig.java index 08a8e66a..5a18501c 100644 --- a/common/src/main/java/org/embeddedt/modernfix/core/config/ModernFixEarlyConfig.java +++ b/common/src/main/java/org/embeddedt/modernfix/core/config/ModernFixEarlyConfig.java @@ -214,7 +214,7 @@ public class ModernFixEarlyConfig { /* Mod compat */ disableIfModPresent("mixin.perf.thread_priorities", "smoothboot", "threadtweak"); disableIfModPresent("mixin.perf.boost_worker_count", "smoothboot", "threadtweak"); - disableIfModPresent("mixin.perf.compress_biome_container", "chocolate", "betterendforge" ,"skyblockbuilder", "modern_beta"); + disableIfModPresent("mixin.perf.compress_biome_container", "chocolate", "betterendforge" ,"skyblockbuilder", "modern_beta", "worldedit"); disableIfModPresent("mixin.bugfix.mc218112", "performant"); disableIfModPresent("mixin.bugfix.remove_block_chunkloading", "performant"); disableIfModPresent("mixin.bugfix.paper_chunk_patches", "c2me"); From 1728de0f1678ced73076e61406ec29e0bc425b22 Mon Sep 17 00:00:00 2001 From: embeddedt <42941056+embeddedt@users.noreply.github.com> Date: Sun, 26 May 2024 15:58:37 -0400 Subject: [PATCH 2/2] Fix CME in BiomeDictionary.Type Thanks @Asek3 for noticing this --- .../BiomeDictionaryTypeMixin.java | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 forge/src/main/java/org/embeddedt/modernfix/forge/mixin/bugfix/biome_dictionary_cme/BiomeDictionaryTypeMixin.java diff --git a/forge/src/main/java/org/embeddedt/modernfix/forge/mixin/bugfix/biome_dictionary_cme/BiomeDictionaryTypeMixin.java b/forge/src/main/java/org/embeddedt/modernfix/forge/mixin/bugfix/biome_dictionary_cme/BiomeDictionaryTypeMixin.java new file mode 100644 index 00000000..cb5039c5 --- /dev/null +++ b/forge/src/main/java/org/embeddedt/modernfix/forge/mixin/bugfix/biome_dictionary_cme/BiomeDictionaryTypeMixin.java @@ -0,0 +1,30 @@ +package org.embeddedt.modernfix.forge.mixin.bugfix.biome_dictionary_cme; + +import net.minecraftforge.common.BiomeDictionary; +import org.objectweb.asm.Opcodes; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Mutable; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +import java.util.Map; +import java.util.concurrent.ConcurrentSkipListMap; + +@Mixin(value = BiomeDictionary.Type.class, remap = false) +public class BiomeDictionaryTypeMixin { + @Shadow + @Mutable + @Final + private static Map byName; + + /** + * @author embeddedt + * @reason Biome types are created concurrently so the backing map needs to be thread-safe + */ + @Redirect(method = "", at = @At(value = "FIELD", target = "Lnet/minecraftforge/common/BiomeDictionary$Type;byName:Ljava/util/Map;", opcode = Opcodes.PUTSTATIC)) + private static void useConcurrentMap(Map treeMap) { + byName = new ConcurrentSkipListMap<>(); + } +}