diff --git a/common/src/main/java/org/embeddedt/modernfix/common/mixin/perf/compact_mojang_registries/VanillaRegistriesMixin.java b/common/src/main/java/org/embeddedt/modernfix/common/mixin/perf/compact_mojang_registries/VanillaRegistriesMixin.java new file mode 100644 index 00000000..97fdcc91 --- /dev/null +++ b/common/src/main/java/org/embeddedt/modernfix/common/mixin/perf/compact_mojang_registries/VanillaRegistriesMixin.java @@ -0,0 +1,22 @@ +package org.embeddedt.modernfix.common.mixin.perf.compact_mojang_registries; + +import com.llamalad7.mixinextras.injector.wrapmethod.WrapMethod; +import com.llamalad7.mixinextras.injector.wrapoperation.Operation; +import net.minecraft.core.HolderLookup; +import net.minecraft.data.registries.VanillaRegistries; +import org.spongepowered.asm.mixin.Mixin; + +@Mixin(VanillaRegistries.class) +public class VanillaRegistriesMixin { + private static HolderLookup.Provider STATIC_PROVIDER; + + @WrapMethod(method = "createLookup") + private static HolderLookup.Provider modernfix$memoizeLookup(Operation original) { + synchronized (VanillaRegistries.class) { + if (STATIC_PROVIDER == null) { + STATIC_PROVIDER = original.call(); + } + return STATIC_PROVIDER; + } + } +}