From e2aaedd657d97ce119ea815e9f7827a0eb831483 Mon Sep 17 00:00:00 2001 From: dima_dencep Date: Thu, 30 May 2024 00:22:04 +0700 Subject: [PATCH] Fix hide loading overlay --- .../mods/rrls/mixins/LoadingOverlayMixin.java | 4 +++ .../rrls/mixins/MinecraftClientMixin.java | 34 +++++++++++++++++++ 2 files changed, 38 insertions(+) diff --git a/common/src/main/java/org/redlance/dima_dencep/mods/rrls/mixins/LoadingOverlayMixin.java b/common/src/main/java/org/redlance/dima_dencep/mods/rrls/mixins/LoadingOverlayMixin.java index 2d6fa5a..30043fe 100644 --- a/common/src/main/java/org/redlance/dima_dencep/mods/rrls/mixins/LoadingOverlayMixin.java +++ b/common/src/main/java/org/redlance/dima_dencep/mods/rrls/mixins/LoadingOverlayMixin.java @@ -54,6 +54,10 @@ private static int replaceAlpha(int color, int alpha) { ) ) private void rrls$init(Minecraft client, ReloadInstance reload, Consumer> onFinish, boolean fadeIn, CallbackInfo ci) { + if (client.screen == null && ConfigExpectPlatform.forceClose()) { + client.setScreen(null); // set TitleScreen + } + rrls$setState(OverlayHelper.lookupState(client.screen, fadeIn)); } diff --git a/common/src/main/java/org/redlance/dima_dencep/mods/rrls/mixins/MinecraftClientMixin.java b/common/src/main/java/org/redlance/dima_dencep/mods/rrls/mixins/MinecraftClientMixin.java index 77da4b3..0bad16d 100644 --- a/common/src/main/java/org/redlance/dima_dencep/mods/rrls/mixins/MinecraftClientMixin.java +++ b/common/src/main/java/org/redlance/dima_dencep/mods/rrls/mixins/MinecraftClientMixin.java @@ -10,7 +10,10 @@ package org.redlance.dima_dencep.mods.rrls.mixins; +import com.llamalad7.mixinextras.injector.v2.WrapWithCondition; import net.minecraft.client.ResourceLoadStateTracker; +import net.minecraft.client.multiplayer.MultiPlayerGameMode; +import net.minecraft.client.player.LocalPlayer; import org.redlance.dima_dencep.mods.rrls.config.DoubleLoad; import org.redlance.dima_dencep.mods.rrls.ConfigExpectPlatform; import org.redlance.dima_dencep.mods.rrls.Rrls; @@ -139,4 +142,35 @@ public abstract class MinecraftClientMixin { return original; } + + @WrapOperation( + method = { + "handleKeybinds", + "continueAttack" + }, + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/client/player/LocalPlayer;isUsingItem()Z" + ) + ) + public boolean rrls$fixIsUsingItemNPE(LocalPlayer instance, Operation original) { + if (instance == null) { + return false; + } + + return original.call(instance); + } + + @WrapWithCondition( + method = { + "continueAttack" + }, + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/client/multiplayer/MultiPlayerGameMode;stopDestroyBlock()V" + ) + ) + public boolean rrls$fixStopDestroyBlockNPE(MultiPlayerGameMode instance) { + return instance != null; + } }