aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/de
diff options
context:
space:
mode:
authorninjaguardian <110734253+ninjaguardian@users.noreply.github.com>2025-07-19 11:33:03 -0500
committerGitHub <noreply@github.com>2025-07-19 12:33:03 -0400
commit98a27aa905ff1675455b826245da2be1e15ac8ef (patch)
tree3e783f59c6f738617d038bbb37e67a4a6a9e9915 /src/main/java/de
parent66e1905eebd6e4506827b72b0f7c4882e077a40d (diff)
downloadSkyblocker-98a27aa905ff1675455b826245da2be1e15ac8ef.tar.gz
Skyblocker-98a27aa905ff1675455b826245da2be1e15ac8ef.tar.bz2
Skyblocker-98a27aa905ff1675455b826245da2be1e15ac8ef.zip
Make quicknav grab backgroundScreen (#1488)
* Make quicknav grab backgroundScreen * Annotate environment according to PopupScreen
Diffstat (limited to 'src/main/java/de')
-rw-r--r--src/main/java/de/hysky/skyblocker/mixins/accessors/PopupBackgroundAccessor.java15
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/quicknav/QuickNavButton.java10
2 files changed, 25 insertions, 0 deletions
diff --git a/src/main/java/de/hysky/skyblocker/mixins/accessors/PopupBackgroundAccessor.java b/src/main/java/de/hysky/skyblocker/mixins/accessors/PopupBackgroundAccessor.java
new file mode 100644
index 00000000..c4562df9
--- /dev/null
+++ b/src/main/java/de/hysky/skyblocker/mixins/accessors/PopupBackgroundAccessor.java
@@ -0,0 +1,15 @@
+package de.hysky.skyblocker.mixins.accessors;
+
+import net.fabricmc.api.EnvType;
+import net.fabricmc.api.Environment;
+import net.minecraft.client.gui.screen.PopupScreen;
+import net.minecraft.client.gui.screen.Screen;
+import org.spongepowered.asm.mixin.Mixin;
+import org.spongepowered.asm.mixin.gen.Accessor;
+
+@Environment(EnvType.CLIENT)
+@Mixin(PopupScreen.class)
+public interface PopupBackgroundAccessor {
+ @Accessor("backgroundScreen")
+ Screen getUnderlyingScreen();
+}
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/quicknav/QuickNavButton.java b/src/main/java/de/hysky/skyblocker/skyblock/quicknav/QuickNavButton.java
index 535f80a0..88a38cf5 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/quicknav/QuickNavButton.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/quicknav/QuickNavButton.java
@@ -4,12 +4,14 @@ import com.google.gson.JsonElement;
import com.mojang.serialization.JsonOps;
import de.hysky.skyblocker.SkyblockerMod;
import de.hysky.skyblocker.mixins.accessors.HandledScreenAccessor;
+import de.hysky.skyblocker.mixins.accessors.PopupBackgroundAccessor;
import de.hysky.skyblocker.utils.Constants;
import de.hysky.skyblocker.utils.scheduler.MessageScheduler;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.DrawContext;
+import net.minecraft.client.gui.screen.PopupScreen;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.client.gui.screen.ingame.GenericContainerScreen;
import net.minecraft.client.gui.screen.ingame.HandledScreen;
@@ -90,6 +92,14 @@ public class QuickNavButton extends ClickableWidget {
private void updateCoordinates() {
Screen screen = MinecraftClient.getInstance().currentScreen;
+ while (screen instanceof PopupScreen) {
+ if (!(screen instanceof PopupBackgroundAccessor popup)) {
+ throw new IllegalStateException(
+ "Current PopupScreen does not support AccessorPopupBackground"
+ );
+ }
+ screen = popup.getUnderlyingScreen();
+ }
if (screen instanceof HandledScreen<?> handledScreen) {
var accessibleScreen = (HandledScreenAccessor) handledScreen;
int x = accessibleScreen.getX();