aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/de/hysky/skyblocker/utils
diff options
context:
space:
mode:
authorAaron <51387595+AzureAaron@users.noreply.github.com>2024-04-26 16:03:24 -0400
committerAaron <51387595+AzureAaron@users.noreply.github.com>2024-04-26 16:23:22 -0400
commit625b6b92e338f79e7b4f3a90a656d2f3e997f912 (patch)
tree01328b7f74795a9744592bcdb29877ed297168ad /src/main/java/de/hysky/skyblocker/utils
parent4b06954d6db941e9bf663b1da5e8d65c5209e8f7 (diff)
downloadSkyblocker-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.java2
-rw-r--r--src/main/java/de/hysky/skyblocker/utils/render/gui/ContainerSolverManager.java10
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);
}
}