From 4f401d065374a2cc713c35c5073e1ed3a8f588db Mon Sep 17 00:00:00 2001 From: Michael Pfaff Date: Fri, 6 Oct 2023 20:40:05 -0400 Subject: [PATCH] Fix lag spike upon opening inventory or crafting table for the first time --- ...rceUnconstrainedRedirectInjectionInfo.java | 26 ------------------- .../mixin/ClientPlayNetworkHandlerMixin.java | 11 ++++---- 2 files changed, 6 insertions(+), 31 deletions(-) delete mode 100644 src/main/java/dev/pfaff/recipe_nope/injector/ForceUnconstrainedRedirectInjectionInfo.java diff --git a/src/main/java/dev/pfaff/recipe_nope/injector/ForceUnconstrainedRedirectInjectionInfo.java b/src/main/java/dev/pfaff/recipe_nope/injector/ForceUnconstrainedRedirectInjectionInfo.java deleted file mode 100644 index 80509ef..0000000 --- a/src/main/java/dev/pfaff/recipe_nope/injector/ForceUnconstrainedRedirectInjectionInfo.java +++ /dev/null @@ -1,26 +0,0 @@ -package dev.pfaff.recipe_nope.injector; - -import org.objectweb.asm.tree.AnnotationNode; -import org.objectweb.asm.tree.MethodNode; -import org.spongepowered.asm.mixin.injection.Redirect; -import org.spongepowered.asm.mixin.injection.code.Injector; -import org.spongepowered.asm.mixin.injection.struct.InjectionInfo; -import org.spongepowered.asm.mixin.transformer.MixinTargetContext; - -@InjectionInfo.AnnotationType(Redirect.class) -@InjectionInfo.HandlerPrefix("redirect") -public final class ForceUnconstrainedRedirectInjectionInfo extends InjectionInfo { - public ForceUnconstrainedRedirectInjectionInfo(MixinTargetContext mixin, MethodNode method, AnnotationNode annotation) { - super(mixin, method, annotation); - } - - @Override - protected Injector parseInjector(AnnotationNode injectAnnotation) { - return new UnconstrainedRedirectInjector(this, "@Redirect"); - } - - @Override - protected String getDescription() { - return "UnconstrainedRedirector"; - } -} diff --git a/src/main/java/dev/pfaff/recipe_nope/mixin/ClientPlayNetworkHandlerMixin.java b/src/main/java/dev/pfaff/recipe_nope/mixin/ClientPlayNetworkHandlerMixin.java index 7850c75..fb12313 100644 --- a/src/main/java/dev/pfaff/recipe_nope/mixin/ClientPlayNetworkHandlerMixin.java +++ b/src/main/java/dev/pfaff/recipe_nope/mixin/ClientPlayNetworkHandlerMixin.java @@ -1,6 +1,5 @@ package dev.pfaff.recipe_nope.mixin; -import dev.pfaff.recipe_nope.injector.UnconstrainedRedirect; import net.minecraft.client.ClientRecipeBook; import net.minecraft.client.multiplayer.ClientPacketListener; import net.minecraft.world.item.crafting.Recipe; @@ -10,10 +9,12 @@ import org.spongepowered.asm.mixin.injection.Redirect; @Mixin(ClientPacketListener.class) public abstract class ClientPlayNetworkHandlerMixin { - @UnconstrainedRedirect(method = "*", at = @At(value = "NEW", target = "()Lnet/minecraft/client/ClientRecipeBook;")) - private ClientRecipeBook onGameJoin$noRecipeBook() { - return null; - } + // for some reason the exact method name does not work outside of dev environment, and using wildcard causes game + // to freeze upon opening crafting table the first time (why then and not upon world join?) + //@UnconstrainedRedirect(method = "*", at = @At(value = "NEW", target = "()Lnet/minecraft/client/ClientRecipeBook;")) + //private ClientRecipeBook onGameJoin$noRecipeBook() { + // return null; + //} @Redirect(method = "handleUpdateRecipes", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/ClientRecipeBook;setupCollections(Ljava/lang/Iterable;)V")) private void onSynchronizeRecipes$noRecipeBook(ClientRecipeBook instance, Iterable> recipes) {