diff options
author | ExternalTime <84183548+ExternalTime@users.noreply.github.com> | 2021-10-10 21:24:39 +0200 |
---|---|---|
committer | ExternalTime <84183548+ExternalTime@users.noreply.github.com> | 2021-10-10 21:38:35 +0200 |
commit | 02ccd95142a835061d97e1c6b0d7d2e382e95828 (patch) | |
tree | 09b37ba64694db6ecc63ee8ac9f328b178834848 /src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/terminal | |
parent | 9572664f807e2f545a2d4b6d9f2b4dfa0a9791c3 (diff) | |
download | Skyblocker-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.java | 58 |
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 |