diff --git a/forge/src/main/java/org/embeddedt/modernfix/forge/mixin/perf/forge_registry_lambda/RegistryDelegateMixin.java b/forge/src/main/java/org/embeddedt/modernfix/forge/mixin/perf/forge_registry_lambda/RegistryDelegateMixin.java new file mode 100644 index 00000000..918b5a30 --- /dev/null +++ b/forge/src/main/java/org/embeddedt/modernfix/forge/mixin/perf/forge_registry_lambda/RegistryDelegateMixin.java @@ -0,0 +1,25 @@ +package org.embeddedt.modernfix.forge.mixin.perf.forge_registry_lambda; + +import net.minecraft.resources.ResourceLocation; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Overwrite; +import org.spongepowered.asm.mixin.Shadow; + +@Mixin(targets = {"net/minecraftforge/registries/RegistryDelegate"}) +public class RegistryDelegateMixin { + @Shadow private ResourceLocation name; + + /** + * @author embeddedt + * @reason avoid allocation in hashCode() + */ + @Overwrite(remap = false) + public int hashCode() { + ResourceLocation name = this.name; + if(name != null) { + return name.hashCode(); + } else { + return 0; + } + } +}