From 30b110999d871ebff0fcd19789a3e8ce5b16b84f Mon Sep 17 00:00:00 2001 From: KonaeAkira Date: Sat, 12 Feb 2022 15:29:08 +0100 Subject: Add backpack preview --- .../skyblocker/mixin/HandledScreenMixin.java | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) (limited to 'src/main/java/me/xmrvizzy/skyblocker/mixin') diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/HandledScreenMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/HandledScreenMixin.java index d676dc25..1e3f31c4 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/HandledScreenMixin.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/HandledScreenMixin.java @@ -1,14 +1,15 @@ package me.xmrvizzy.skyblocker.mixin; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.skyblock.BackpackPreview; import me.xmrvizzy.skyblocker.skyblock.item.WikiLookup; -import me.xmrvizzy.skyblocker.skyblock.itemlist.ItemListWidget; import me.xmrvizzy.skyblocker.skyblock.quicknav.QuickNav; import me.xmrvizzy.skyblocker.skyblock.quicknav.QuickNavButton; import me.xmrvizzy.skyblocker.utils.Utils; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.gui.screen.ingame.HandledScreen; +import net.minecraft.client.util.math.MatrixStack; import net.minecraft.screen.slot.Slot; import net.minecraft.text.Text; import org.jetbrains.annotations.Nullable; @@ -34,13 +35,13 @@ public abstract class HandledScreenMixin extends Screen { @Inject(method = "init()V", at = @At("TAIL")) private void init(CallbackInfo ci) { - // quicknav if (Utils.isSkyblock && SkyblockerConfig.get().general.quicknav.enableQuicknav) { String screenTitle = super.getTitle().getString().trim(); List buttons = QuickNav.init(screenTitle); for (QuickNavButton button : buttons) super.addDrawableChild(button); - } + BackpackPreview.loadStorage((HandledScreen)(Object)this); + BackpackPreview.updateStorage((HandledScreen)(Object)this); } @Inject(at = @At("HEAD"), method = "keyPressed", cancellable = true) @@ -49,4 +50,17 @@ public abstract class HandledScreenMixin extends Screen { if (WikiLookup.wikiLookup.matchesKey(keyCode, scanCode)) WikiLookup.openWiki(focusedSlot); } } + + @Inject(at = @At("HEAD"), method = "drawMouseoverTooltip", cancellable = true) + public void drawMouseOverTooltip(MatrixStack matrices, int x, int y, CallbackInfo ci) { + String title = ((HandledScreen)(Object)this).getTitle().getString(); + if (Screen.hasShiftDown() && title.equals("Storage") && focusedSlot != null) { + if (BackpackPreview.renderPreview(matrices, focusedSlot.getIndex(), x, y)) ci.cancel(); + } + } + + @Inject(method = "tick", at = @At("TAIL")) + public void tick(CallbackInfo ci) { + BackpackPreview.tick(); + } } -- cgit From dc00f0e6ad5dd20eda599d2aa6c544c3b19b380a Mon Sep 17 00:00:00 2001 From: KonaeAkira Date: Sat, 12 Feb 2022 15:44:23 +0100 Subject: Fix bug where the backpack preview wouldn't update in some cases Also moved the tick() call to a more reasonable location --- src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java | 2 ++ src/main/java/me/xmrvizzy/skyblocker/mixin/HandledScreenMixin.java | 5 ----- src/main/java/me/xmrvizzy/skyblocker/skyblock/BackpackPreview.java | 6 ++++-- 3 files changed, 6 insertions(+), 7 deletions(-) (limited to 'src/main/java/me/xmrvizzy/skyblocker/mixin') diff --git a/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java b/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java index db702e81..575a87d3 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java +++ b/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java @@ -3,6 +3,7 @@ package me.xmrvizzy.skyblocker; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; import me.xmrvizzy.skyblocker.container.ContainerSolverManager; import me.xmrvizzy.skyblocker.discord.DiscordRPCManager; +import me.xmrvizzy.skyblocker.skyblock.BackpackPreview; import me.xmrvizzy.skyblocker.skyblock.dungeon.DungeonBlaze; import me.xmrvizzy.skyblocker.utils.Utils; import net.minecraft.client.MinecraftClient; @@ -30,6 +31,7 @@ public class SkyblockerMod { if (client == null) return; ticks++; if(onHypxiel()) { + BackpackPreview.tick(); if (ticks % 4 == 0) try { if (Utils.isDungeons) { diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/HandledScreenMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/HandledScreenMixin.java index 1e3f31c4..88676f08 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/HandledScreenMixin.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/HandledScreenMixin.java @@ -58,9 +58,4 @@ public abstract class HandledScreenMixin extends Screen { if (BackpackPreview.renderPreview(matrices, focusedSlot.getIndex(), x, y)) ci.cancel(); } } - - @Inject(method = "tick", at = @At("TAIL")) - public void tick(CallbackInfo ci) { - BackpackPreview.tick(); - } } diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/BackpackPreview.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/BackpackPreview.java index dae5dd70..4bf474e4 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/BackpackPreview.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/BackpackPreview.java @@ -92,12 +92,14 @@ public class BackpackPreview extends DrawableHelper { } public static void tick() { - if (++counter == 200) { + if (++counter == 100) { counter = 0; for (int i = 0; i < dirty.length; ++i) if (dirty[i]) { saveStorage(i); - dirty[i] = false; + String title = MinecraftClient.getInstance().currentScreen.getTitle().getString(); + int index = getStorageIndexFromTitle(title); + dirty[i] = i == index; } } } -- cgit