aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/de
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/de')
-rw-r--r--src/main/java/de/hysky/skyblocker/config/categories/HelperCategory.java10
-rw-r--r--src/main/java/de/hysky/skyblocker/config/configs/HelperConfig.java3
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/bazaar/BazaarHelper.java49
3 files changed, 55 insertions, 7 deletions
diff --git a/src/main/java/de/hysky/skyblocker/config/categories/HelperCategory.java b/src/main/java/de/hysky/skyblocker/config/categories/HelperCategory.java
index 12547018..fd373f73 100644
--- a/src/main/java/de/hysky/skyblocker/config/categories/HelperCategory.java
+++ b/src/main/java/de/hysky/skyblocker/config/categories/HelperCategory.java
@@ -2,6 +2,7 @@ package de.hysky.skyblocker.config.categories;
import de.hysky.skyblocker.config.ConfigUtils;
import de.hysky.skyblocker.config.SkyblockerConfig;
+import de.hysky.skyblocker.skyblock.bazaar.BazaarHelper;
import de.hysky.skyblocker.utils.waypoint.Waypoint;
import dev.isxander.yacl3.api.ConfigCategory;
import dev.isxander.yacl3.api.Option;
@@ -210,6 +211,15 @@ public class HelperCategory {
newValue -> config.helpers.bazaar.enableBazaarHelper = newValue)
.controller(ConfigUtils::createBooleanController)
.build())
+ .option(Option.<BazaarHelper.HighlightingScheme>createBuilder()
+ .name(Text.translatable("skyblocker.config.helpers.bazaar.highlightingScheme"))
+ .description(OptionDescription.of(Text.translatable("skyblocker.config.helpers.bazaar.highlightingScheme.@Tooltip")))
+ .binding(defaults.helpers.bazaar.highlightingScheme,
+ () -> config.helpers.bazaar.highlightingScheme,
+ newValue -> config.helpers.bazaar.highlightingScheme = newValue)
+ .controller(ConfigUtils::createEnumCyclingListController)
+ .build()
+ )
.build())
.build();
diff --git a/src/main/java/de/hysky/skyblocker/config/configs/HelperConfig.java b/src/main/java/de/hysky/skyblocker/config/configs/HelperConfig.java
index 6ddb1a74..f805d69f 100644
--- a/src/main/java/de/hysky/skyblocker/config/configs/HelperConfig.java
+++ b/src/main/java/de/hysky/skyblocker/config/configs/HelperConfig.java
@@ -1,5 +1,6 @@
package de.hysky.skyblocker.config.configs;
+import de.hysky.skyblocker.skyblock.bazaar.BazaarHelper;
import de.hysky.skyblocker.utils.waypoint.Waypoint;
import dev.isxander.yacl3.config.v2.api.SerialEntry;
@@ -98,5 +99,7 @@ public class HelperConfig {
public static class Bazaar {
@SerialEntry
public boolean enableBazaarHelper = true;
+ @SerialEntry
+ public BazaarHelper.HighlightingScheme highlightingScheme = BazaarHelper.HighlightingScheme.ORDER_TYPE;
}
}
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/bazaar/BazaarHelper.java b/src/main/java/de/hysky/skyblocker/skyblock/bazaar/BazaarHelper.java
index c9a4b732..8a9a7aa3 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/bazaar/BazaarHelper.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/bazaar/BazaarHelper.java
@@ -6,6 +6,9 @@ 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 net.minecraft.util.Formatting;
+import org.apache.commons.lang3.math.NumberUtils;
import java.util.ArrayList;
import java.util.List;
@@ -14,6 +17,7 @@ import java.util.regex.Pattern;
public class BazaarHelper extends ContainerSolver {
private static final Pattern ORDER_PATTERN = Pattern.compile("You have [\\d,]+ (items|coins) to claim!");
+ private static final Pattern FILLED_PATTERN = Pattern.compile("Filled: \\S+ \\(?([\\d.]+)%\\)?!?");
public BazaarHelper() {
super("Your Bazaar Orders");
@@ -27,20 +31,51 @@ public class BazaarHelper extends ContainerSolver {
@Override
protected List<ColorHighlight> getColors(String[] groups, Int2ObjectMap<ItemStack> slots) {
ArrayList<ColorHighlight> highlights = new ArrayList<>();
- for (int slot = 0; slot < slots.size(); slot++) {
+ // Skip the first and last 10 slots as those are always glass panes.
+ for (int slot = 10; slot < slots.size() - 10; slot++) {
+ ItemStack item = slots.get(slot);
+ if (item.isEmpty() || item.isOf(Items.BLACK_STAINED_GLASS_PANE)) continue;
if (ItemUtils.getLoreLineIf(slots.get(slot), str -> str.equals("Expired!")) != null) {
highlights.add(ColorHighlight.red(slot));
continue;
}
-
- Matcher matcher = ItemUtils.getLoreLineIfMatch(slots.get(slot), ORDER_PATTERN);
- if (matcher != null) {
- switch (matcher.group(1)) {
- case "items" -> highlights.add(new ColorHighlight(slot, 0x7000AA00));
- case "coins" -> highlights.add(new ColorHighlight(slot, 0x70FFAA00));
+ switch (SkyblockerConfigManager.get().helpers.bazaar.highlightingScheme) {
+ case ORDER_TYPE -> {
+ Matcher matcher = ItemUtils.getLoreLineIfMatch(slots.get(slot), ORDER_PATTERN);
+ if (matcher != null) {
+ switch (matcher.group(1)) {
+ case "items" -> highlights.add(new ColorHighlight(slot, Formatting.DARK_GREEN.getColorValue() & 0x70000000));
+ case "coins" -> highlights.add(new ColorHighlight(slot, Formatting.GOLD.getColorValue() & 0x70000000));
+ }
+ }
+ }
+ case FULFILLMENT -> {
+ Matcher matcher = ItemUtils.getLoreLineIfMatch(slots.get(slot), FILLED_PATTERN);
+ if (matcher != null) {
+ int filled = NumberUtils.toInt(matcher.group(1));
+ if (filled < 100) {
+ highlights.add(ColorHighlight.yellow(slot));
+ } else if (filled == 100) {
+ highlights.add(ColorHighlight.green(slot));
+ }
+ }
}
}
}
+
return highlights;
}
+
+ public enum HighlightingScheme {
+ ORDER_TYPE,
+ FULFILLMENT;
+
+ @Override
+ public String toString() {
+ return switch (this) {
+ case ORDER_TYPE -> "Order Type";
+ case FULFILLMENT -> "Fulfillment";
+ };
+ }
+ }
}