From 44915c8a3e6490f472ee61e8fef64d14c5d53f46 Mon Sep 17 00:00:00 2001 From: Hendrix-Shen Date: Sat, 11 Mar 2023 15:28:50 +0800 Subject: [PATCH] Use `@Intrinsic` annotation to improve mod compatibility --- .../MixinDisconnectedScreen.java | 43 +++++++++++++++---- 1 file changed, 34 insertions(+), 9 deletions(-) diff --git a/src/main/java/top/hendrixshen/tweakmyclient/mixin/feature/featureAutoReconnect/MixinDisconnectedScreen.java b/src/main/java/top/hendrixshen/tweakmyclient/mixin/feature/featureAutoReconnect/MixinDisconnectedScreen.java index 2b2df3a0..51afa5cf 100644 --- a/src/main/java/top/hendrixshen/tweakmyclient/mixin/feature/featureAutoReconnect/MixinDisconnectedScreen.java +++ b/src/main/java/top/hendrixshen/tweakmyclient/mixin/feature/featureAutoReconnect/MixinDisconnectedScreen.java @@ -3,9 +3,8 @@ import net.minecraft.client.gui.screens.DisconnectedScreen; import net.minecraft.client.gui.screens.Screen; import net.minecraft.network.chat.Component; -import org.spongepowered.asm.mixin.Final; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; +import org.jetbrains.annotations.NotNull; +import org.spongepowered.asm.mixin.*; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @@ -38,22 +37,48 @@ protected MixinDisconnectedScreen(Component component) { ), cancellable = true ) - private void onInitDisconnectedScreen(CallbackInfo ci) { + private void onInitDisconnectedScreen(@NotNull CallbackInfo ci) { AutoReconnectUtil.getInstance().initDisconnectedScreen(this, this.parent, this.width, this.height, this.textHeight, this.reason); ci.cancel(); } - @Override - public void tick() { + @Dynamic + @SuppressWarnings({"MixinAnnotationTarget", "UnresolvedMixinReference", "target"}) + @Inject( + method = "tick()V", + at = @At( + value = "HEAD" + ) + ) + private void onTick(CallbackInfo ci) { AutoReconnectUtil.tickAutoReconnectButton(this.parent); } - @Override - public void renderDirtBackground(int i) { + @Dynamic + @SuppressWarnings({"MixinAnnotationTarget", "UnresolvedMixinReference", "target"}) + @Inject( + method = "renderDirtBackground(I)V", + at = @At( + value = "HEAD" + ), + cancellable = true + ) + private void onRenderDirtBackground(CallbackInfo ci) { if (Configs.expXiBao && TweakMyClientPredicate.xibaoLang.contains(TweakMyClient.getMinecraftClient().options.languageCode)) { AutoReconnectUtil.renderXibao(this); - return; + ci.cancel(); } + } + + @Intrinsic + @Override + public void tick() { + super.tick(); + } + + @Intrinsic + @Override + public void renderDirtBackground(int i) { super.renderDirtBackground(i); } }