aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java')
-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();