diff options
| author | ninjaguardian <110734253+ninjaguardian@users.noreply.github.com> | 2025-07-19 11:33:03 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-07-19 12:33:03 -0400 |
| commit | 98a27aa905ff1675455b826245da2be1e15ac8ef (patch) | |
| tree | 3e783f59c6f738617d038bbb37e67a4a6a9e9915 /src/main/java/de | |
| parent | 66e1905eebd6e4506827b72b0f7c4882e077a40d (diff) | |
| download | Skyblocker-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.java | 15 | ||||
| -rw-r--r-- | src/main/java/de/hysky/skyblocker/skyblock/quicknav/QuickNavButton.java | 10 |
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(); |
