diff options
author | Yasin <LifeIsAParadox@users.noreply.github.com> | 2023-12-25 06:41:00 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-12-25 00:41:00 -0500 |
commit | cf1954c11258894b2e825f776d57ad12648f0f42 (patch) | |
tree | e031aaf20b97e98abe05a3e838717c7c4be35077 /src/main/java/de/hysky/skyblocker/mixin/MinecraftClientMixin.java | |
parent | dfa5076ea7ae0b6612dd45e79ce0ffeff2d51aac (diff) | |
download | Skyblocker-cf1954c11258894b2e825f776d57ad12648f0f42.tar.gz Skyblocker-cf1954c11258894b2e825f776d57ad12648f0f42.tar.bz2 Skyblocker-cf1954c11258894b2e825f776d57ad12648f0f42.zip |
remove screens when switching island (#458)
* remove some screen
* Update MinecraftClientMixin.java
* Rename parameters
---------
Co-authored-by: Aaron <51387595+AzureAaron@users.noreply.github.com>
Diffstat (limited to 'src/main/java/de/hysky/skyblocker/mixin/MinecraftClientMixin.java')
-rw-r--r-- | src/main/java/de/hysky/skyblocker/mixin/MinecraftClientMixin.java | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/main/java/de/hysky/skyblocker/mixin/MinecraftClientMixin.java b/src/main/java/de/hysky/skyblocker/mixin/MinecraftClientMixin.java index 29889c28..df0c058e 100644 --- a/src/main/java/de/hysky/skyblocker/mixin/MinecraftClientMixin.java +++ b/src/main/java/de/hysky/skyblocker/mixin/MinecraftClientMixin.java @@ -1,17 +1,30 @@ package de.hysky.skyblocker.mixin; import de.hysky.skyblocker.skyblock.item.HotbarSlotLock; +import de.hysky.skyblocker.utils.JoinWorldPlaceholderScreen; +import de.hysky.skyblocker.utils.ReconfiguringPlaceholderScreen; import de.hysky.skyblocker.utils.Utils; import net.minecraft.client.MinecraftClient; +import net.minecraft.client.gui.screen.DownloadingTerrainScreen; +import net.minecraft.client.gui.screen.ReconfiguringScreen; +import net.minecraft.client.gui.screen.Screen; +import net.minecraft.client.network.ClientPlayNetworkHandler; import net.minecraft.client.network.ClientPlayerEntity; import org.jetbrains.annotations.Nullable; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; import dev.cbyrne.betterinject.annotations.Inject; +import org.spongepowered.asm.mixin.injection.ModifyArg; +import org.spongepowered.asm.mixin.injection.ModifyVariable; @Mixin(MinecraftClient.class) public abstract class MinecraftClientMixin { + + @Shadow + @Nullable + public abstract ClientPlayNetworkHandler getNetworkHandler(); + @Shadow @Nullable public ClientPlayerEntity player; @@ -22,4 +35,22 @@ public abstract class MinecraftClientMixin { HotbarSlotLock.handleInputEvents(player); } } + + //Remove Downloading Terrain Screen and Reconfiguring Screen + @ModifyVariable(at = @At("HEAD"), method = "setScreen", ordinal = 0, argsOnly = true) + public Screen modifySetScreen(Screen screen) { + if (Utils.isOnSkyblock()) { + if (screen instanceof DownloadingTerrainScreen) { + return null; + } else if (screen instanceof ReconfiguringScreen && this.getNetworkHandler() != null) { + return new ReconfiguringPlaceholderScreen(this.getNetworkHandler().getConnection()); + } + } + return screen; + } + + @ModifyArg(method = "joinWorld", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/MinecraftClient;reset(Lnet/minecraft/client/gui/screen/Screen;)V"), index = 0) + private Screen modifyJoinWorld(Screen screen) { + return Utils.isOnSkyblock() ? new JoinWorldPlaceholderScreen() : screen; + } }
\ No newline at end of file |