aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/de/hysky/skyblocker/skyblock/dungeon
diff options
context:
space:
mode:
authorKevin <92656833+kevinthegreat1@users.noreply.github.com>2024-07-26 01:27:12 +0800
committerGitHub <noreply@github.com>2024-07-26 01:27:12 +0800
commit55349c543a4b0fcbf9cbb86e0c1b7c0abd790b8c (patch)
treec0da1abbc72c6cce7d796e7a7655a8203fb916f2 /src/main/java/de/hysky/skyblocker/skyblock/dungeon
parent7f91ba452475397e7a6d6f2ecf671408778bb9dd (diff)
parenteb2ac7c20ca00da5c8998aad291584b76186ec5f (diff)
downloadSkyblocker-55349c543a4b0fcbf9cbb86e0c1b7c0abd790b8c.tar.gz
Skyblocker-55349c543a4b0fcbf9cbb86e0c1b7c0abd790b8c.tar.bz2
Skyblocker-55349c543a4b0fcbf9cbb86e0c1b7c0abd790b8c.zip
Merge pull request #788 from Emirlol/container-matcher-refactor
Refactor container matcher implementations into interfaces
Diffstat (limited to 'src/main/java/de/hysky/skyblocker/skyblock/dungeon')
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/dungeon/CroesusHelper.java9
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/dungeon/CroesusProfit.java15
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/dungeon/terminal/ColorTerminal.java15
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/dungeon/terminal/LightsOnTerminal.java14
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/dungeon/terminal/OrderTerminal.java18
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/dungeon/terminal/StartsWithTerminal.java15
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/dungeon/terminal/TerminalSolver.java1
7 files changed, 42 insertions, 45 deletions
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/dungeon/CroesusHelper.java b/src/main/java/de/hysky/skyblocker/skyblock/dungeon/CroesusHelper.java
index d317a2e8..1a0aa347 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/dungeon/CroesusHelper.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/dungeon/CroesusHelper.java
@@ -3,7 +3,7 @@ package de.hysky.skyblocker.skyblock.dungeon;
import de.hysky.skyblocker.config.SkyblockerConfigManager;
import de.hysky.skyblocker.utils.ItemUtils;
import de.hysky.skyblocker.utils.render.gui.ColorHighlight;
-import de.hysky.skyblocker.utils.render.gui.ContainerSolver;
+import de.hysky.skyblocker.utils.container.SimpleContainerSolver;
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
import net.minecraft.component.DataComponentTypes;
import net.minecraft.item.ItemStack;
@@ -11,19 +11,18 @@ import net.minecraft.item.ItemStack;
import java.util.ArrayList;
import java.util.List;
-public class CroesusHelper extends ContainerSolver {
-
+public class CroesusHelper extends SimpleContainerSolver {
public CroesusHelper() {
super("^Croesus$");
}
@Override
- protected boolean isEnabled() {
+ public boolean isEnabled() {
return SkyblockerConfigManager.get().dungeons.croesusHelper;
}
@Override
- protected List<ColorHighlight> getColors(String[] groups, Int2ObjectMap<ItemStack> slots) {
+ public List<ColorHighlight> getColors(Int2ObjectMap<ItemStack> slots) {
List<ColorHighlight> highlights = new ArrayList<>();
for (Int2ObjectMap.Entry<ItemStack> entry : slots.int2ObjectEntrySet()) {
ItemStack stack = entry.getValue();
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/dungeon/CroesusProfit.java b/src/main/java/de/hysky/skyblocker/skyblock/dungeon/CroesusProfit.java
index 0f459c9d..82acc3f2 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/dungeon/CroesusProfit.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/dungeon/CroesusProfit.java
@@ -1,16 +1,13 @@
package de.hysky.skyblocker.skyblock.dungeon;
-import com.google.gson.JsonObject;
import de.hysky.skyblocker.config.SkyblockerConfigManager;
-import de.hysky.skyblocker.skyblock.item.tooltip.TooltipInfoType;
import de.hysky.skyblocker.utils.ItemUtils;
import de.hysky.skyblocker.utils.render.gui.ColorHighlight;
-import de.hysky.skyblocker.utils.render.gui.ContainerSolver;
+import de.hysky.skyblocker.utils.container.SimpleContainerSolver;
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
import net.minecraft.item.ItemStack;
import net.minecraft.text.Text;
import net.minecraft.util.Util;
-
import org.jetbrains.annotations.NotNull;
import java.util.ArrayList;
@@ -20,19 +17,19 @@ import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-public class CroesusProfit extends ContainerSolver {
- private static final Pattern ESSENCE_PATTERN = Pattern.compile("(?<type>[A-Za-z]+) Essence x(?<amount>[0-9]+)");
+public class CroesusProfit extends SimpleContainerSolver {
+ private static final Pattern ESSENCE_PATTERN = Pattern.compile("(?<type>[A-Za-z]+) Essence x(?<amount>\\d+)");
public CroesusProfit() {
super(".*Catacombs - Floor.*");
}
@Override
- protected boolean isEnabled() {
+ public boolean isEnabled() {
return SkyblockerConfigManager.get().dungeons.dungeonChestProfit.croesusProfit;
}
@Override
- protected List<ColorHighlight> getColors(String[] groups, Int2ObjectMap<ItemStack> slots) {
+ public List<ColorHighlight> getColors(Int2ObjectMap<ItemStack> slots) {
List<ColorHighlight> highlights = new ArrayList<>();
ItemStack bestChest = null, secondBestChest = null;
double bestValue = 0, secondBestValue = 0; // If negative value of chest - it is out of the question
@@ -82,7 +79,7 @@ public class CroesusProfit extends ContainerSolver {
} else if (lineString.isEmpty()) {
processingContents = false;
} else if (lineString.contains("Coins") && !processingContents) {
- chestPrice = Integer.parseInt(lineString.replaceAll(",", "").replaceAll("\\D", ""));
+ chestPrice = Integer.parseInt(lineString.replace(",", "").replaceAll("\\D", ""));
}
if (processingContents) {
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/dungeon/terminal/ColorTerminal.java b/src/main/java/de/hysky/skyblocker/skyblock/dungeon/terminal/ColorTerminal.java
index 7a966b48..6cbb86ec 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/dungeon/terminal/ColorTerminal.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/dungeon/terminal/ColorTerminal.java
@@ -1,8 +1,9 @@
package de.hysky.skyblocker.skyblock.dungeon.terminal;
import de.hysky.skyblocker.config.SkyblockerConfigManager;
+import de.hysky.skyblocker.utils.container.ContainerSolver;
+import de.hysky.skyblocker.utils.container.SimpleContainerSolver;
import de.hysky.skyblocker.utils.render.gui.ColorHighlight;
-import de.hysky.skyblocker.utils.render.gui.ContainerSolver;
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
@@ -16,7 +17,7 @@ import org.slf4j.LoggerFactory;
import java.util.*;
-public final class ColorTerminal extends ContainerSolver implements TerminalSolver {
+public final class ColorTerminal extends SimpleContainerSolver implements TerminalSolver {
private static final Logger LOGGER = LoggerFactory.getLogger(ColorTerminal.class.getName());
private static final Map<String, DyeColor> colorFromName;
private DyeColor targetColor;
@@ -27,20 +28,20 @@ public final class ColorTerminal extends ContainerSolver implements TerminalSolv
}
@Override
- protected boolean isEnabled() {
+ public boolean isEnabled() {
targetColor = null;
return SkyblockerConfigManager.get().dungeons.terminals.solveColor;
}
@Override
- protected List<ColorHighlight> getColors(String[] groups, Int2ObjectMap<ItemStack> slots) {
- trimEdges(slots, 6);
+ public List<ColorHighlight> getColors(Int2ObjectMap<ItemStack> slots) {
+ ContainerSolver.trimEdges(slots, 6);
List<ColorHighlight> highlights = new ArrayList<>();
String colorString = groups[0];
if (targetColor == null) {
targetColor = colorFromName.get(colorString);
if (targetColor == null) {
- LOGGER.error("[Skyblocker] Couldn't find dye color corresponding to \"" + colorString + "\"");
+ LOGGER.error("[Skyblocker] Couldn't find dye color corresponding to \"{}\"", colorString);
return Collections.emptyList();
}
}
@@ -54,7 +55,7 @@ public final class ColorTerminal extends ContainerSolver implements TerminalSolv
}
@Override
- protected boolean onClickSlot(int slot, ItemStack stack, int screenId, String[] groups) {
+ public boolean onClickSlot(int slot, ItemStack stack, int screenId) {
if (stack.hasGlint() || !targetColor.equals(itemColor.get(stack.getItem()))) {
return shouldBlockIncorrectClicks();
}
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/dungeon/terminal/LightsOnTerminal.java b/src/main/java/de/hysky/skyblocker/skyblock/dungeon/terminal/LightsOnTerminal.java
index 4975b90b..741a2f9b 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/dungeon/terminal/LightsOnTerminal.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/dungeon/terminal/LightsOnTerminal.java
@@ -1,19 +1,19 @@
package de.hysky.skyblocker.skyblock.dungeon.terminal;
-import java.util.List;
-
+import de.hysky.skyblocker.utils.container.SimpleContainerSolver;
import de.hysky.skyblocker.utils.render.gui.ColorHighlight;
-import de.hysky.skyblocker.utils.render.gui.ContainerSolver;
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
+import java.util.List;
+
/**
* The terminal where you change all the panes that are red to green.
*
* This doesn't solve the terminal because you don't need a solver for it, but rather to simply allow for click blocking.
*/
-public final class LightsOnTerminal extends ContainerSolver implements TerminalSolver {
+public final class LightsOnTerminal extends SimpleContainerSolver implements TerminalSolver {
private static final List<ColorHighlight> EMPTY = List.of();
public LightsOnTerminal() {
@@ -21,17 +21,17 @@ public final class LightsOnTerminal extends ContainerSolver implements TerminalS
}
@Override
- protected boolean isEnabled() {
+ public boolean isEnabled() {
return shouldBlockIncorrectClicks();
}
@Override
- protected List<ColorHighlight> getColors(String[] groups, Int2ObjectMap<ItemStack> slots) {
+ public List<ColorHighlight> getColors(Int2ObjectMap<ItemStack> slots) {
return EMPTY;
}
@Override
- protected boolean onClickSlot(int slot, ItemStack stack, int screenId, String[] groups) {
+ public boolean onClickSlot(int slot, ItemStack stack, int screenId) {
return stack.isOf(Items.LIME_STAINED_GLASS_PANE);
}
}
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/dungeon/terminal/OrderTerminal.java b/src/main/java/de/hysky/skyblocker/skyblock/dungeon/terminal/OrderTerminal.java
index ae145993..507389c6 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/dungeon/terminal/OrderTerminal.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/dungeon/terminal/OrderTerminal.java
@@ -1,8 +1,9 @@
package de.hysky.skyblocker.skyblock.dungeon.terminal;
import de.hysky.skyblocker.config.SkyblockerConfigManager;
+import de.hysky.skyblocker.utils.container.ContainerSolver;
+import de.hysky.skyblocker.utils.container.SimpleContainerSolver;
import de.hysky.skyblocker.utils.render.gui.ColorHighlight;
-import de.hysky.skyblocker.utils.render.gui.ContainerSolver;
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
@@ -11,8 +12,8 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
-public final class OrderTerminal extends ContainerSolver implements TerminalSolver {
- private final int PANES_NUM = 14;
+public final class OrderTerminal extends SimpleContainerSolver implements TerminalSolver {
+ private static final int PANES_NUM = 14;
private int[] orderedSlots;
private int currentNum = Integer.MAX_VALUE;
@@ -21,14 +22,14 @@ public final class OrderTerminal extends ContainerSolver implements TerminalSolv
}
@Override
- protected boolean isEnabled() {
+ public boolean isEnabled() {
orderedSlots = null;
currentNum = 0;
return SkyblockerConfigManager.get().dungeons.terminals.solveOrder;
}
@Override
- protected List<ColorHighlight> getColors(String[] groups, Int2ObjectMap<ItemStack> slots) {
+ public List<ColorHighlight> getColors(Int2ObjectMap<ItemStack> slots) {
if(orderedSlots == null && !orderSlots(slots))
return Collections.emptyList();
while(currentNum < PANES_NUM && slots.containsKey(orderedSlots[currentNum]) && Items.LIME_STAINED_GLASS_PANE.equals(slots.get(orderedSlots[currentNum]).getItem()))
@@ -42,22 +43,21 @@ public final class OrderTerminal extends ContainerSolver implements TerminalSolv
}
public boolean orderSlots(Int2ObjectMap<ItemStack> slots) {
- trimEdges(slots, 4);
+ ContainerSolver.trimEdges(slots, 4);
orderedSlots = new int[PANES_NUM];
for(Int2ObjectMap.Entry<ItemStack> slot : slots.int2ObjectEntrySet()) {
if(Items.AIR.equals(slot.getValue().getItem())) {
orderedSlots = null;
return false;
}
- else
- orderedSlots[slot.getValue().getCount() - 1] = slot.getIntKey();
+ else orderedSlots[slot.getValue().getCount() - 1] = slot.getIntKey();
}
currentNum = 0;
return true;
}
@Override
- protected boolean onClickSlot(int slot, ItemStack stack, int screenId, String[] groups) {
+ public boolean onClickSlot(int slot, ItemStack stack, int screenId) {
if (stack == null || stack.isEmpty()) return false;
if (!stack.isOf(Items.RED_STAINED_GLASS_PANE) || stack.getCount() != currentNum + 1) {
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/dungeon/terminal/StartsWithTerminal.java b/src/main/java/de/hysky/skyblocker/skyblock/dungeon/terminal/StartsWithTerminal.java
index 8b0f1801..893e9f61 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/dungeon/terminal/StartsWithTerminal.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/dungeon/terminal/StartsWithTerminal.java
@@ -1,8 +1,9 @@
package de.hysky.skyblocker.skyblock.dungeon.terminal;
import de.hysky.skyblocker.config.SkyblockerConfigManager;
+import de.hysky.skyblocker.utils.container.ContainerSolver;
+import de.hysky.skyblocker.utils.container.SimpleContainerSolver;
import de.hysky.skyblocker.utils.render.gui.ColorHighlight;
-import de.hysky.skyblocker.utils.render.gui.ContainerSolver;
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
import it.unimi.dsi.fastutil.objects.ObjectSet;
@@ -13,7 +14,7 @@ import java.util.ArrayList;
import java.util.List;
import java.util.function.Predicate;
-public final class StartsWithTerminal extends ContainerSolver implements TerminalSolver {
+public final class StartsWithTerminal extends SimpleContainerSolver implements TerminalSolver {
private final Int2ObjectOpenHashMap<ItemState> trackedItemStates = new Int2ObjectOpenHashMap<>();
private int lastKnownScreenId = Integer.MIN_VALUE;
@@ -22,13 +23,13 @@ public final class StartsWithTerminal extends ContainerSolver implements Termina
}
@Override
- protected boolean isEnabled() {
+ public boolean isEnabled() {
return SkyblockerConfigManager.get().dungeons.terminals.solveStartsWith;
}
@Override
- protected List<ColorHighlight> getColors(String[] groups, Int2ObjectMap<ItemStack> slots) {
- trimEdges(slots, 6);
+ public List<ColorHighlight> getColors(Int2ObjectMap<ItemStack> slots) {
+ ContainerSolver.trimEdges(slots, 6);
setupState(slots);
String prefix = groups[0];
@@ -50,7 +51,7 @@ public final class StartsWithTerminal extends ContainerSolver implements Termina
}
@Override
- protected boolean onClickSlot(int slot, ItemStack stack, int screenId, String[] groups) {
+ public boolean onClickSlot(int slot, ItemStack stack, int screenId) {
//Some random glass pane was clicked or something
if (!trackedItemStates.containsKey(slot) || stack == null || stack.isEmpty()) return false;
@@ -74,7 +75,7 @@ public final class StartsWithTerminal extends ContainerSolver implements Termina
return false;
}
- //We only setup the state when all items aren't null or empty. This prevents the state from being reset due to unsent items or server lag spikes/bad TPS (fix ur servers Hypixel)
+ //We only set up the state when all items aren't null or empty. This prevents the state from being reset due to unsent items or server lag spikes/bad TPS (fix ur servers Hypixel)
private void setupState(Int2ObjectMap<ItemStack> usefulSlots) {
Predicate<Int2ObjectMap.Entry<ItemStack>> notNullOrEmpty = e -> e.getValue() != null && !e.getValue().isEmpty();
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/dungeon/terminal/TerminalSolver.java b/src/main/java/de/hysky/skyblocker/skyblock/dungeon/terminal/TerminalSolver.java
index f20c35b5..cf384f08 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/dungeon/terminal/TerminalSolver.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/dungeon/terminal/TerminalSolver.java
@@ -3,7 +3,6 @@ package de.hysky.skyblocker.skyblock.dungeon.terminal;
import de.hysky.skyblocker.config.SkyblockerConfigManager;
public sealed interface TerminalSolver permits ColorTerminal, LightsOnTerminal, OrderTerminal, StartsWithTerminal {
-
default boolean shouldBlockIncorrectClicks() {
return SkyblockerConfigManager.get().dungeons.terminals.blockIncorrectClicks;
}