diff options
author | Aaron <51387595+AzureAaron@users.noreply.github.com> | 2024-04-26 16:03:24 -0400 |
---|---|---|
committer | Aaron <51387595+AzureAaron@users.noreply.github.com> | 2024-04-26 16:23:22 -0400 |
commit | 625b6b92e338f79e7b4f3a90a656d2f3e997f912 (patch) | |
tree | 01328b7f74795a9744592bcdb29877ed297168ad /src/main/java/de/hysky/skyblocker/utils | |
parent | 4b06954d6db941e9bf663b1da5e8d65c5209e8f7 (diff) | |
download | Skyblocker-625b6b92e338f79e7b4f3a90a656d2f3e997f912.tar.gz Skyblocker-625b6b92e338f79e7b4f3a90a656d2f3e997f912.tar.bz2 Skyblocker-625b6b92e338f79e7b4f3a90a656d2f3e997f912.zip |
Rework terminal click marking to fix an edge case
Diffstat (limited to 'src/main/java/de/hysky/skyblocker/utils')
-rw-r--r-- | src/main/java/de/hysky/skyblocker/utils/render/gui/ContainerSolver.java | 2 | ||||
-rw-r--r-- | src/main/java/de/hysky/skyblocker/utils/render/gui/ContainerSolverManager.java | 10 |
2 files changed, 9 insertions, 3 deletions
diff --git a/src/main/java/de/hysky/skyblocker/utils/render/gui/ContainerSolver.java b/src/main/java/de/hysky/skyblocker/utils/render/gui/ContainerSolver.java index 16fa7411..e2e057b3 100644 --- a/src/main/java/de/hysky/skyblocker/utils/render/gui/ContainerSolver.java +++ b/src/main/java/de/hysky/skyblocker/utils/render/gui/ContainerSolver.java @@ -34,7 +34,7 @@ public abstract class ContainerSolver { SkyblockerMod.getInstance().containerSolverManager.markDirty(); } - protected void onClickSlot(int slot, ItemStack stack, ItemStack cursorStack, String[] groups) { + protected void onClickSlot(int slot, ItemStack stack, int screenId, String[] groups) { } protected abstract List<ColorHighlight> getColors(String[] groups, Int2ObjectMap<ItemStack> slots); diff --git a/src/main/java/de/hysky/skyblocker/utils/render/gui/ContainerSolverManager.java b/src/main/java/de/hysky/skyblocker/utils/render/gui/ContainerSolverManager.java index 40e36622..440809d9 100644 --- a/src/main/java/de/hysky/skyblocker/utils/render/gui/ContainerSolverManager.java +++ b/src/main/java/de/hysky/skyblocker/utils/render/gui/ContainerSolverManager.java @@ -36,6 +36,10 @@ public class ContainerSolverManager { private ContainerSolver currentSolver = null; private String[] groups; private List<ColorHighlight> highlights; + /** + * Useful for keeping track of a solver's state in a Screen instance, such as if Hypixel closes & reopens a screen after every click (as they do with terminals). + */ + private int screenId = 0; public ContainerSolverManager() { solvers = new ContainerSolver[]{ @@ -82,6 +86,7 @@ public class ContainerSolverManager { matcher.usePattern(solver.getName()); matcher.reset(); if (matcher.matches()) { + ++screenId; currentSolver = solver; groups = new String[matcher.groupCount()]; for (int i = 0; i < groups.length; i++) { @@ -89,6 +94,7 @@ public class ContainerSolverManager { } currentSolver.start(screen); markDirty(); + return; } } @@ -107,9 +113,9 @@ public class ContainerSolverManager { highlights = null; } - public void onSlotClick(int slot, ItemStack stack, ItemStack cursorStack) { + public void onSlotClick(int slot, ItemStack stack) { if (currentSolver != null) { - currentSolver.onClickSlot(slot, stack, cursorStack, groups); + currentSolver.onClickSlot(slot, stack, screenId, groups); } } |