aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorAaron <51387595+AzureAaron@users.noreply.github.com>2025-03-13 02:13:11 -0400
committerGitHub <noreply@github.com>2025-03-13 02:13:11 -0400
commitc89e1011fce13f700db0f0bbdafc7b960d30b455 (patch)
tree9797fbd536ea5fe292b0ff8e514a447b3ef4f9a6 /src/main/java
parente52cbc84f8d4aa5c19b0fb1223e6ceb562f88286 (diff)
downloadSkyblocker-c89e1011fce13f700db0f0bbdafc7b960d30b455.tar.gz
Skyblocker-c89e1011fce13f700db0f0bbdafc7b960d30b455.tar.bz2
Skyblocker-c89e1011fce13f700db0f0bbdafc7b960d30b455.zip
Simplify hiding world loading screens (#1209)
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/de/hysky/skyblocker/mixins/DownloadingTerrainScreenMixin.java18
-rw-r--r--src/main/java/de/hysky/skyblocker/mixins/MinecraftClientMixin.java29
-rw-r--r--src/main/java/de/hysky/skyblocker/mixins/ScreenMixin.java36
-rw-r--r--src/main/java/de/hysky/skyblocker/utils/render/gui/BasePlaceholderScreen.java19
-rw-r--r--src/main/java/de/hysky/skyblocker/utils/render/gui/JoinWorldPlaceholderScreen.java9
-rw-r--r--src/main/java/de/hysky/skyblocker/utils/render/gui/ReconfiguringPlaceholderScreen.java22
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();
- }
- }
-}