aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/terminal
diff options
context:
space:
mode:
authorExternalTime <84183548+ExternalTime@users.noreply.github.com>2021-10-10 21:24:39 +0200
committerExternalTime <84183548+ExternalTime@users.noreply.github.com>2021-10-10 21:38:35 +0200
commit02ccd95142a835061d97e1c6b0d7d2e382e95828 (patch)
tree09b37ba64694db6ecc63ee8ac9f328b178834848 /src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/terminal
parent9572664f807e2f545a2d4b6d9f2b4dfa0a9791c3 (diff)
downloadSkyblocker-02ccd95142a835061d97e1c6b0d7d2e382e95828.tar.gz
Skyblocker-02ccd95142a835061d97e1c6b0d7d2e382e95828.tar.bz2
Skyblocker-02ccd95142a835061d97e1c6b0d7d2e382e95828.zip
Added solver for Click In Order terminal
Diffstat (limited to 'src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/terminal')
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/terminal/OrderTerminal.java58
1 files changed, 58 insertions, 0 deletions
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/terminal/OrderTerminal.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/terminal/OrderTerminal.java
new file mode 100644
index 00000000..c61395f4
--- /dev/null
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/terminal/OrderTerminal.java
@@ -0,0 +1,58 @@
+package me.xmrvizzy.skyblocker.skyblock.dungeon.terminal;
+
+import me.xmrvizzy.skyblocker.config.SkyblockerConfig;
+import me.xmrvizzy.skyblocker.container.ColorHighlight;
+import me.xmrvizzy.skyblocker.container.ContainerSolver;
+import net.minecraft.item.ItemStack;
+import net.minecraft.item.Items;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+
+public class OrderTerminal extends ContainerSolver {
+ private final int PANES_NUM = 14;
+ private int[] orderedSlots;
+ private int currentNum = Integer.MAX_VALUE;
+
+ public OrderTerminal() {
+ super("^Click in order!$");
+ }
+
+ @Override
+ public boolean isEnabled() {
+ orderedSlots = null;
+ currentNum = 0;
+ return SkyblockerConfig.get().locations.dungeons.terminals.solveOrder;
+ }
+
+ @Override
+ public List<ColorHighlight> getColors(String[] groups, Map<Integer, ItemStack> slots) {
+ if(orderedSlots == null && !orderSlots(slots))
+ return Collections.emptyList();
+ while(currentNum < PANES_NUM && Items.LIME_STAINED_GLASS_PANE.equals(slots.get(orderedSlots[currentNum]).getItem()))
+ currentNum++;
+ List<ColorHighlight> highlights = new ArrayList<>(3);
+ int last = Integer.min(3, PANES_NUM - currentNum);
+ for(int i = 0; i < last; i++) {
+ highlights.add(new ColorHighlight(orderedSlots[currentNum + i], (224 - 64 * i) << 24 | 64 << 16 | 96 << 8 | 255));
+ }
+ return highlights;
+ }
+
+ public boolean orderSlots(Map<Integer, ItemStack> slots) {
+ trimEdges(slots, 4);
+ orderedSlots = new int[PANES_NUM];
+ for(Map.Entry<Integer, ItemStack> slot : slots.entrySet()) {
+ if(Items.AIR.equals(slot.getValue().getItem())) {
+ orderedSlots = null;
+ return false;
+ }
+ else
+ orderedSlots[slot.getValue().getCount() - 1] = slot.getKey();
+ }
+ currentNum = 0;
+ return true;
+ }
+} \ No newline at end of file