diff options
| author | Aaron <51387595+AzureAaron@users.noreply.github.com> | 2025-03-13 02:13:11 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-03-13 02:13:11 -0400 |
| commit | c89e1011fce13f700db0f0bbdafc7b960d30b455 (patch) | |
| tree | 9797fbd536ea5fe292b0ff8e514a447b3ef4f9a6 /src/main/java | |
| parent | e52cbc84f8d4aa5c19b0fb1223e6ceb562f88286 (diff) | |
| download | Skyblocker-c89e1011fce13f700db0f0bbdafc7b960d30b455.tar.gz Skyblocker-c89e1011fce13f700db0f0bbdafc7b960d30b455.tar.bz2 Skyblocker-c89e1011fce13f700db0f0bbdafc7b960d30b455.zip | |
Simplify hiding world loading screens (#1209)
Diffstat (limited to 'src/main/java')
6 files changed, 54 insertions, 79 deletions
diff --git a/src/main/java/de/hysky/skyblocker/mixins/DownloadingTerrainScreenMixin.java b/src/main/java/de/hysky/skyblocker/mixins/DownloadingTerrainScreenMixin.java new file mode 100644 index 00000000..bea1cf91 --- /dev/null +++ b/src/main/java/de/hysky/skyblocker/mixins/DownloadingTerrainScreenMixin.java @@ -0,0 +1,18 @@ +package de.hysky.skyblocker.mixins; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +import de.hysky.skyblocker.utils.Utils; +import net.minecraft.client.gui.screen.DownloadingTerrainScreen; + +@Mixin(DownloadingTerrainScreen.class) +public class DownloadingTerrainScreenMixin { + + @Inject(method = "render", at = @At("HEAD"), cancellable = true) + private void skyblocker$hideWorldLoadingScreen(CallbackInfo ci) { + if (Utils.isOnHypixel()) ci.cancel(); + } +} diff --git a/src/main/java/de/hysky/skyblocker/mixins/MinecraftClientMixin.java b/src/main/java/de/hysky/skyblocker/mixins/MinecraftClientMixin.java index 16d771d0..69b9aa09 100644 --- a/src/main/java/de/hysky/skyblocker/mixins/MinecraftClientMixin.java +++ b/src/main/java/de/hysky/skyblocker/mixins/MinecraftClientMixin.java @@ -7,14 +7,8 @@ import de.hysky.skyblocker.skyblock.item.HotbarSlotLock; import de.hysky.skyblocker.skyblock.item.ItemProtection; import de.hysky.skyblocker.skyblock.item.SkyblockInventoryScreen; import de.hysky.skyblocker.utils.Utils; -import de.hysky.skyblocker.utils.render.gui.JoinWorldPlaceholderScreen; -import de.hysky.skyblocker.utils.render.gui.ReconfiguringPlaceholderScreen; 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.gui.screen.ingame.InventoryScreen; -import net.minecraft.client.network.ClientPlayNetworkHandler; import net.minecraft.client.network.ClientPlayerEntity; import net.minecraft.entity.player.PlayerEntity; import org.jetbrains.annotations.Nullable; @@ -22,17 +16,10 @@ import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.ModifyArg; -import org.spongepowered.asm.mixin.injection.ModifyVariable; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(MinecraftClient.class) public abstract class MinecraftClientMixin { - - @Shadow - @Nullable - public abstract ClientPlayNetworkHandler getNetworkHandler(); - @Shadow @Nullable public ClientPlayerEntity player; @@ -45,22 +32,6 @@ public abstract class MinecraftClientMixin { } } - //Remove Downloading Terrain Screen and Reconfiguring Screen - @ModifyVariable(at = @At("HEAD"), method = "setScreen", ordinal = 0, argsOnly = true) - public Screen modifySetScreen(Screen screen) { - return switch (screen) { - case DownloadingTerrainScreen _s when Utils.isOnHypixel() -> null; - case ReconfiguringScreen _s when Utils.isOnHypixel() && this.getNetworkHandler() != null -> new ReconfiguringPlaceholderScreen(this.getNetworkHandler().getConnection()); - - case null, default -> 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; - } - @WrapOperation(method = "handleInputEvents", at = @At(value = "NEW", target = "Lnet/minecraft/client/gui/screen/ingame/InventoryScreen;")) private InventoryScreen skyblocker$skyblockInventoryScreen(PlayerEntity player, Operation<InventoryScreen> original) { return Utils.isOnSkyblock() && SkyblockerConfigManager.get().uiAndVisuals.showEquipmentInInventory ? new SkyblockInventoryScreen(player) : original.call(player); diff --git a/src/main/java/de/hysky/skyblocker/mixins/ScreenMixin.java b/src/main/java/de/hysky/skyblocker/mixins/ScreenMixin.java new file mode 100644 index 00000000..31eca786 --- /dev/null +++ b/src/main/java/de/hysky/skyblocker/mixins/ScreenMixin.java @@ -0,0 +1,36 @@ +package de.hysky.skyblocker.mixins; + +import org.lwjgl.glfw.GLFW; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +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.util.InputUtil; + +@Mixin(Screen.class) +public class ScreenMixin { + @Shadow + protected MinecraftClient client; + + @Inject(method = "init(Lnet/minecraft/client/MinecraftClient;II)V", at = @At("TAIL")) + private void skyblocker$hideCursor(CallbackInfo ci) { + Object instance = (Object) this; + + if ((instance instanceof DownloadingTerrainScreen || instance instanceof ReconfiguringScreen) && Utils.isOnHypixel()) { + //Prevents the mouse from being movable while we cancel the rendering of the screen + InputUtil.setCursorParameters(this.client.getWindow().getHandle(), GLFW.GLFW_CURSOR_DISABLED, this.client.mouse.getX(), this.client.mouse.getY()); + } + } + + @Inject(method = "render", at = @At("HEAD"), cancellable = true) + private void skyblocker$hideReconfiguringScreen(CallbackInfo ci) { + if ((Object) this instanceof ReconfiguringScreen && Utils.isOnHypixel()) ci.cancel(); + } +} diff --git a/src/main/java/de/hysky/skyblocker/utils/render/gui/BasePlaceholderScreen.java b/src/main/java/de/hysky/skyblocker/utils/render/gui/BasePlaceholderScreen.java deleted file mode 100644 index 729fae42..00000000 --- a/src/main/java/de/hysky/skyblocker/utils/render/gui/BasePlaceholderScreen.java +++ /dev/null @@ -1,19 +0,0 @@ -package de.hysky.skyblocker.utils.render.gui; - -import net.minecraft.client.gui.DrawContext; -import net.minecraft.client.gui.screen.Screen; -import net.minecraft.text.Text; - -public abstract class BasePlaceholderScreen extends Screen { - public BasePlaceholderScreen(Text title) { - super(title); - } - - @Override - public void render(DrawContext context, int mouseX, int mouseY, float delta) { - } - - @Override - public void renderBackground(DrawContext context, int mouseX, int mouseY, float delta) { - } -} diff --git a/src/main/java/de/hysky/skyblocker/utils/render/gui/JoinWorldPlaceholderScreen.java b/src/main/java/de/hysky/skyblocker/utils/render/gui/JoinWorldPlaceholderScreen.java deleted file mode 100644 index f1dce2a8..00000000 --- a/src/main/java/de/hysky/skyblocker/utils/render/gui/JoinWorldPlaceholderScreen.java +++ /dev/null @@ -1,9 +0,0 @@ -package de.hysky.skyblocker.utils.render.gui; - -import net.minecraft.text.Text; - -public final class JoinWorldPlaceholderScreen extends BasePlaceholderScreen { - public JoinWorldPlaceholderScreen() { - super(Text.translatable("connect.joining")); - } -} diff --git a/src/main/java/de/hysky/skyblocker/utils/render/gui/ReconfiguringPlaceholderScreen.java b/src/main/java/de/hysky/skyblocker/utils/render/gui/ReconfiguringPlaceholderScreen.java deleted file mode 100644 index 8780acbe..00000000 --- a/src/main/java/de/hysky/skyblocker/utils/render/gui/ReconfiguringPlaceholderScreen.java +++ /dev/null @@ -1,22 +0,0 @@ -package de.hysky.skyblocker.utils.render.gui; - -import net.minecraft.network.ClientConnection; -import net.minecraft.text.Text; - -public final class ReconfiguringPlaceholderScreen extends BasePlaceholderScreen { - private final ClientConnection connection; - - public ReconfiguringPlaceholderScreen(final ClientConnection connection) { - super(Text.translatable("connect.reconfiguring")); - this.connection = connection; - } - - @Override - public void tick() { - if (this.connection.isOpen()) { - this.connection.tick(); - } else { - this.connection.handleDisconnection(); - } - } -} |
