From 0062bc9bae4b2ad4e04696f7f79319935db7983e Mon Sep 17 00:00:00 2001 From: embeddedt <42941056+embeddedt@users.noreply.github.com> Date: Sat, 7 Jan 2023 13:07:06 -0500 Subject: [PATCH] Make dispenser behavior registry thread-safe --- .../DispenserBlockMixin.java | 24 +++++++++++++++++++ src/main/resources/modernfix.mixins.json | 3 ++- 2 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 src/main/java/org/embeddedt/modernfix/mixin/perf/parallel_potentially_unsafe/parallel_deferred_suppliers/DispenserBlockMixin.java diff --git a/src/main/java/org/embeddedt/modernfix/mixin/perf/parallel_potentially_unsafe/parallel_deferred_suppliers/DispenserBlockMixin.java b/src/main/java/org/embeddedt/modernfix/mixin/perf/parallel_potentially_unsafe/parallel_deferred_suppliers/DispenserBlockMixin.java new file mode 100644 index 00000000..459ad539 --- /dev/null +++ b/src/main/java/org/embeddedt/modernfix/mixin/perf/parallel_potentially_unsafe/parallel_deferred_suppliers/DispenserBlockMixin.java @@ -0,0 +1,24 @@ +package org.embeddedt.modernfix.mixin.perf.parallel_potentially_unsafe.parallel_deferred_suppliers; + +import net.minecraft.block.DispenserBlock; +import net.minecraft.dispenser.IDispenseItemBehavior; +import net.minecraft.item.Item; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +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; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +@Mixin(DispenserBlock.class) +public class DispenserBlockMixin { + @Shadow private static Map DISPENSER_REGISTRY; + + @Inject(method = "", at = @At("TAIL")) + private static void makeMapConcurrent(CallbackInfo ci) { + DISPENSER_REGISTRY = new ConcurrentHashMap<>(); + } +} diff --git a/src/main/resources/modernfix.mixins.json b/src/main/resources/modernfix.mixins.json index 6a882462..d63cdc06 100644 --- a/src/main/resources/modernfix.mixins.json +++ b/src/main/resources/modernfix.mixins.json @@ -23,7 +23,8 @@ "perf.parallel_potentially_unsafe.parallel_deferred_suppliers.EventDispatcherMixin", "perf.parallel_potentially_unsafe.parallel_blockstate_cache_rebuild.BlocksMixin", "perf.parallel_potentially_unsafe.parallel_blockstate_cache_rebuild.BlockCallbacksMixin", - "perf.parallel_potentially_unsafe.parallel_blockstate_cache_rebuild.ShapeCacheMixin" + "perf.parallel_potentially_unsafe.parallel_blockstate_cache_rebuild.ShapeCacheMixin", + "perf.parallel_potentially_unsafe.parallel_deferred_suppliers.DispenserBlockMixin" ], "client": [ "perf.skip_first_datapack_reload.MinecraftMixin",