aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me/xmrvizzy/skyblocker/gui
diff options
context:
space:
mode:
authorKevin <92656833+kevinthegreat1@users.noreply.github.com>2023-06-25 17:38:47 +0800
committerGitHub <noreply@github.com>2023-06-25 17:38:47 +0800
commitdc312c8db05bc9e9cd3f4fd8c039274270a4661b (patch)
treeccbdb1078307af5d68ffdaa7b524296ae8e34085 /src/main/java/me/xmrvizzy/skyblocker/gui
parentcfc0ecf96ef179b0cac0b31e90eca6e86fe2488e (diff)
parent9da77e918acd36fa21181db43a80c6ac9429e489 (diff)
downloadSkyblocker-dc312c8db05bc9e9cd3f4fd8c039274270a4661b.tar.gz
Skyblocker-dc312c8db05bc9e9cd3f4fd8c039274270a4661b.tar.bz2
Skyblocker-dc312c8db05bc9e9cd3f4fd8c039274270a4661b.zip
Merge pull request #186 from kevinthegreat1/experiments
Experiments Solvers
Diffstat (limited to 'src/main/java/me/xmrvizzy/skyblocker/gui')
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/gui/ColorHighlight.java20
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/gui/ContainerSolver.java23
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/gui/ContainerSolverManager.java24
3 files changed, 54 insertions, 13 deletions
diff --git a/src/main/java/me/xmrvizzy/skyblocker/gui/ColorHighlight.java b/src/main/java/me/xmrvizzy/skyblocker/gui/ColorHighlight.java
index 5120ceac..4367e6e7 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/gui/ColorHighlight.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/gui/ColorHighlight.java
@@ -1,4 +1,24 @@
package me.xmrvizzy.skyblocker.gui;
public record ColorHighlight(int slot, int color) {
+ private static final int RED_HIGHLIGHT = 64 << 24 | 255 << 16;
+ private static final int YELLOW_HIGHLIGHT = 128 << 24 | 255 << 16 | 255 << 8;
+ private static final int GREEN_HIGHLIGHT = 128 << 24 | 64 << 16 | 196 << 8 | 64;
+ private static final int GRAY_HIGHLIGHT = 128 << 24 | 64 << 16 | 64 << 8 | 64;
+
+ public static ColorHighlight red(int slot) {
+ return new ColorHighlight(slot, RED_HIGHLIGHT);
+ }
+
+ public static ColorHighlight yellow(int slot) {
+ return new ColorHighlight(slot, YELLOW_HIGHLIGHT);
+ }
+
+ public static ColorHighlight green(int slot) {
+ return new ColorHighlight(slot, GREEN_HIGHLIGHT);
+ }
+
+ public static ColorHighlight gray(int slot) {
+ return new ColorHighlight(slot, GRAY_HIGHLIGHT);
+ }
} \ No newline at end of file
diff --git a/src/main/java/me/xmrvizzy/skyblocker/gui/ContainerSolver.java b/src/main/java/me/xmrvizzy/skyblocker/gui/ContainerSolver.java
index 84de64eb..c5e3cf09 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/gui/ContainerSolver.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/gui/ContainerSolver.java
@@ -1,5 +1,6 @@
package me.xmrvizzy.skyblocker.gui;
+import net.minecraft.client.gui.screen.ingame.GenericContainerScreen;
import net.minecraft.item.ItemStack;
import java.util.List;
@@ -10,23 +11,27 @@ import java.util.regex.Pattern;
* Abstract class for gui solvers. Extend this class to add a new gui solver, like terminal solvers or experiment solvers.
*/
public abstract class ContainerSolver {
- private final Pattern CONTAINER_NAME;
- protected final static int GREEN_HIGHLIGHT = 128 << 24 | 64 << 16 | 196 << 8 | 64;
- protected final static int GRAY_HIGHLIGHT = 128 << 24 | 64 << 16 | 64 << 8 | 64;
+ private final Pattern containerName;
- public ContainerSolver(String containerName) {
- CONTAINER_NAME = Pattern.compile(containerName);
+ protected ContainerSolver(String containerName) {
+ this.containerName = Pattern.compile(containerName);
}
- public abstract boolean isEnabled();
+ protected abstract boolean isEnabled();
public Pattern getName() {
- return CONTAINER_NAME;
+ return containerName;
}
- public abstract List<ColorHighlight> getColors(String[] groups, Map<Integer, ItemStack> slots);
+ protected void start(GenericContainerScreen screen) {
+ }
+
+ protected void reset() {
+ }
+
+ protected abstract List<ColorHighlight> getColors(String[] groups, Map<Integer, ItemStack> slots);
- public void trimEdges(Map<Integer, ItemStack> slots, int rows) {
+ protected void trimEdges(Map<Integer, ItemStack> slots, int rows) {
for (int i = 0; i < rows; i++) {
slots.remove(9 * i);
slots.remove(9 * i + 8);
diff --git a/src/main/java/me/xmrvizzy/skyblocker/gui/ContainerSolverManager.java b/src/main/java/me/xmrvizzy/skyblocker/gui/ContainerSolverManager.java
index 354e7e3a..0c27704d 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/gui/ContainerSolverManager.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/gui/ContainerSolverManager.java
@@ -6,6 +6,9 @@ import me.xmrvizzy.skyblocker.skyblock.dungeon.CroesusHelper;
import me.xmrvizzy.skyblocker.skyblock.dungeon.terminal.ColorTerminal;
import me.xmrvizzy.skyblocker.skyblock.dungeon.terminal.OrderTerminal;
import me.xmrvizzy.skyblocker.skyblock.dungeon.terminal.StartsWithTerminal;
+import me.xmrvizzy.skyblocker.skyblock.experiment.ChronomatronSolver;
+import me.xmrvizzy.skyblocker.skyblock.experiment.SuperpairsSolver;
+import me.xmrvizzy.skyblocker.skyblock.experiment.UltrasequencerSolver;
import me.xmrvizzy.skyblocker.utils.Utils;
import net.fabricmc.fabric.api.client.screen.v1.ScreenEvents;
import net.minecraft.client.gui.DrawContext;
@@ -36,10 +39,17 @@ public class ContainerSolverManager {
new ColorTerminal(),
new OrderTerminal(),
new StartsWithTerminal(),
- new CroesusHelper()
+ new CroesusHelper(),
+ new ChronomatronSolver(),
+ new SuperpairsSolver(),
+ new UltrasequencerSolver()
};
}
+ public ContainerSolver getCurrentSolver() {
+ return currentSolver;
+ }
+
public void init() {
ScreenEvents.BEFORE_INIT.register((client, screen, scaledWidth, scaledHeight) -> {
if (Utils.isOnSkyblock() && screen instanceof GenericContainerScreen genericContainerScreen) {
@@ -50,6 +60,7 @@ public class ContainerSolverManager {
onDraw(context, genericContainerScreen.getScreenHandler().slots.subList(0, genericContainerScreen.getScreenHandler().getRows() * 9));
matrices.pop();
});
+ ScreenEvents.remove(screen).register(screen1 -> clearScreen());
onSetScreen(genericContainerScreen);
} else {
clearScreen();
@@ -67,17 +78,22 @@ public class ContainerSolverManager {
if (matcher.matches()) {
currentSolver = solver;
groups = new String[matcher.groupCount()];
- for (int i = 0; i < groups.length; i++)
+ for (int i = 0; i < groups.length; i++) {
groups[i] = matcher.group(i + 1);
+ }
+ currentSolver.start(screen);
return;
}
}
}
- currentSolver = null;
+ clearScreen();
}
public void clearScreen() {
- currentSolver = null;
+ if (currentSolver != null) {
+ currentSolver.reset();
+ currentSolver = null;
+ }
}
public void markDirty() {