aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me/xmrvizzy/skyblocker/gui/ContainerSolverManager.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/me/xmrvizzy/skyblocker/gui/ContainerSolverManager.java')
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/gui/ContainerSolverManager.java37
1 files changed, 27 insertions, 10 deletions
diff --git a/src/main/java/me/xmrvizzy/skyblocker/gui/ContainerSolverManager.java b/src/main/java/me/xmrvizzy/skyblocker/gui/ContainerSolverManager.java
index e4ff229d..0c27704d 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/gui/ContainerSolverManager.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/gui/ContainerSolverManager.java
@@ -6,9 +6,12 @@ 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.DrawableHelper;
+import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.gui.screen.ingame.GenericContainerScreen;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.item.ItemStack;
@@ -24,7 +27,7 @@ import java.util.regex.Pattern;
/**
* Manager class for {@link ContainerSolver}s like terminal solvers and experiment solvers. To add a new gui solver, extend {@link ContainerSolver} and register it in {@link #ContainerSolverManager()}.
*/
-public class ContainerSolverManager extends DrawableHelper {
+public class ContainerSolverManager {
private static final Pattern PLACEHOLDER_PATTERN = Pattern.compile("");
private final ContainerSolver[] solvers;
private ContainerSolver currentSolver = null;
@@ -36,19 +39,28 @@ public class ContainerSolverManager extends DrawableHelper {
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) {
- ScreenEvents.afterRender(screen).register((screen1, matrices, mouseX, mouseY, delta) -> {
+ ScreenEvents.afterRender(screen).register((screen1, context, mouseX, mouseY, delta) -> {
+ MatrixStack matrices = context.getMatrices();
matrices.push();
matrices.translate(((HandledScreenAccessor) genericContainerScreen).getX(), ((HandledScreenAccessor) genericContainerScreen).getY(), 300);
- onDraw(matrices, genericContainerScreen.getScreenHandler().slots.subList(0, genericContainerScreen.getScreenHandler().getRows() * 9));
+ onDraw(context, genericContainerScreen.getScreenHandler().slots.subList(0, genericContainerScreen.getScreenHandler().getRows() * 9));
matrices.pop();
});
+ ScreenEvents.remove(screen).register(screen1 -> clearScreen());
onSetScreen(genericContainerScreen);
} else {
clearScreen();
@@ -66,24 +78,29 @@ public class ContainerSolverManager extends DrawableHelper {
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() {
highlights = null;
}
- public void onDraw(MatrixStack matrices, List<Slot> slots) {
+ public void onDraw(DrawContext context, List<Slot> slots) {
if (currentSolver == null)
return;
if (highlights == null)
@@ -93,7 +110,7 @@ public class ContainerSolverManager extends DrawableHelper {
for (ColorHighlight highlight : highlights) {
Slot slot = slots.get(highlight.slot());
int color = highlight.color();
- fillGradient(matrices, slot.x, slot.y, slot.x + 16, slot.y + 16, color, color);
+ context.fillGradient(slot.x, slot.y, slot.x + 16, slot.y + 16, color, color);
}
RenderSystem.colorMask(true, true, true, true);
}