diff options
Diffstat (limited to 'src')
3 files changed, 26 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(); diff --git a/src/main/resources/skyblocker.mixins.json b/src/main/resources/skyblocker.mixins.json index aafdb12a..a149b6ec 100644 --- a/src/main/resources/skyblocker.mixins.json +++ b/src/main/resources/skyblocker.mixins.json @@ -65,6 +65,7 @@ "accessors.MessageHandlerAccessor", "accessors.MinecraftClientAccessor", "accessors.PlayerListHudAccessor", + "accessors.PopupBackgroundAccessor", "accessors.RecipeBookWidgetAccessor", "accessors.ScreenAccessor", "accessors.SlotAccessor", |
