aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java86
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonChestProfit.java12
2 files changed, 73 insertions, 25 deletions
diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java
index 476af0a8..5848ed15 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java
@@ -20,7 +20,9 @@ import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource;
import net.minecraft.client.resource.language.I18n;
import net.minecraft.text.Style;
import net.minecraft.text.Text;
+import net.minecraft.util.Formatting;
import net.minecraft.util.Identifier;
+import org.eclipse.jgit.util.StringUtils;
import java.util.ArrayList;
import java.util.List;
@@ -69,16 +71,16 @@ public class SkyblockerConfig implements ConfigData {
@ConfigEntry.Gui.CollapsibleObject()
public QuickNavItem button3 = new QuickNavItem(true, new ItemData("bone"), "Pets(:? \\(\\d+\\/\\d+\\))?", "/pets");
/* REGEX Explanation
- * "Pets" : simple match on letters
- * "(?: \\(\\d+\\/\\d+\\))?" : optional match on the non-capturing group for the page in the format " ($number/$number)"
- */
+ * "Pets" : simple match on letters
+ * "(?: \\(\\d+\\/\\d+\\))?" : optional match on the non-capturing group for the page in the format " ($number/$number)"
+ */
@ConfigEntry.Category("button4")
@ConfigEntry.Gui.CollapsibleObject()
public QuickNavItem button4 = new QuickNavItem(true, new ItemData("leather_chestplate", 1, "tag:{display:{color:8991416}}"), "Wardrobe \\([12]\\/2\\)", "/wardrobe");
/* REGEX Explanation
- * "Wardrobe" : simple match on letters
- * " \\([12]\\/2\\)" : match on the page either " (1/2)" or " (2/2)"
+ * "Wardrobe" : simple match on letters
+ * " \\([12]\\/2\\)" : match on the page either " (1/2)" or " (2/2)"
*/
@ConfigEntry.Category("button5")
@@ -89,9 +91,9 @@ public class SkyblockerConfig implements ConfigData {
@ConfigEntry.Gui.CollapsibleObject()
public QuickNavItem button6 = new QuickNavItem(true, new ItemData("ender_chest"), "(?:Rift )?Storage(?: \\([12]\\/2\\))?", "/storage");
/* REGEX Explanation
- * "(?:Rift )?" : optional match on the non-capturing group "Rift "
- * "Storage" : simple match on letters
- * "(?: \\([12]\\/2\\))?" : optional match on the non-capturing group " (1/2)" or " (2/2)"
+ * "(?:Rift )?" : optional match on the non-capturing group "Rift "
+ * "Storage" : simple match on letters
+ * "(?: \\([12]\\/2\\))?" : optional match on the non-capturing group " (1/2)" or " (2/2)"
*/
@ConfigEntry.Category("button7")
@@ -204,7 +206,7 @@ public class SkyblockerConfig implements ConfigData {
@ConfigEntry.Category("itemInfoDisplay")
@ConfigEntry.Gui.CollapsibleObject
public ItemInfoDisplay itemInfoDisplay = new ItemInfoDisplay();
-
+
@ConfigEntry.Category("specialEffects")
@ConfigEntry.Gui.CollapsibleObject
public SpecialEffects specialEffects = new SpecialEffects();
@@ -424,12 +426,12 @@ public class SkyblockerConfig implements ConfigData {
}
public static class ItemInfoDisplay {
- @ConfigEntry.Gui.Tooltip
+ @ConfigEntry.Gui.Tooltip
public boolean attributeShardInfo = true;
}
-
+
public static class SpecialEffects {
- @ConfigEntry.Gui.Tooltip
+ @ConfigEntry.Gui.Tooltip
public boolean rareDungeonDropEffects = true;
}
@@ -497,14 +499,60 @@ public class SkyblockerConfig implements ConfigData {
@ConfigEntry.Gui.Tooltip()
public boolean enableDefaultWaypoints = true;
}
-
+
public static class DungeonChestProfit {
- @ConfigEntry.Gui.Tooltip
- public boolean enableProfitCalculator = true;
- @ConfigEntry.Gui.Tooltip
- public boolean includeKismet = false;
- @ConfigEntry.Gui.Tooltip
- public boolean includeEssence = true;
+ @ConfigEntry.Gui.Tooltip
+ public boolean enableProfitCalculator = true;
+ @ConfigEntry.Gui.Tooltip
+ public boolean includeKismet = false;
+ @ConfigEntry.Gui.Tooltip
+ public boolean includeEssence = true;
+ @ConfigEntry.Gui.Tooltip
+ public int neutralThreshold = 1000;
+ @ConfigEntry.Gui.EnumHandler(option = ConfigEntry.Gui.EnumHandler.EnumDisplayOption.DROPDOWN)
+ public FormattingOption neutralColor = FormattingOption.DARK_GRAY;
+ @ConfigEntry.Gui.EnumHandler(option = ConfigEntry.Gui.EnumHandler.EnumDisplayOption.DROPDOWN)
+ public FormattingOption profitColor = FormattingOption.DARK_GREEN;
+ @ConfigEntry.Gui.EnumHandler(option = ConfigEntry.Gui.EnumHandler.EnumDisplayOption.DROPDOWN)
+ public FormattingOption lossColor = FormattingOption.RED;
+ @ConfigEntry.Gui.EnumHandler(option = ConfigEntry.Gui.EnumHandler.EnumDisplayOption.DROPDOWN)
+ @ConfigEntry.Gui.Tooltip
+ public FormattingOption incompleteColor = FormattingOption.BLUE;
+ }
+
+ public enum FormattingOption {
+ BLACK(Formatting.BLACK),
+ DARK_BLUE(Formatting.DARK_BLUE),
+ DARK_GREEN(Formatting.DARK_GREEN),
+ DARK_AQUA(Formatting.DARK_AQUA),
+ DARK_RED(Formatting.DARK_RED),
+ DARK_PURPLE(Formatting.DARK_PURPLE),
+ GOLD(Formatting.GOLD),
+ GRAY(Formatting.GRAY),
+ DARK_GRAY(Formatting.DARK_GRAY),
+ BLUE(Formatting.BLUE),
+ GREEN(Formatting.GREEN),
+ AQUA(Formatting.AQUA),
+ RED(Formatting.RED),
+ LIGHT_PURPLE(Formatting.LIGHT_PURPLE),
+ YELLOW(Formatting.YELLOW),
+ WHITE(Formatting.WHITE),
+ OBFUSCATED(Formatting.OBFUSCATED),
+ BOLD(Formatting.BOLD),
+ STRIKETHROUGH(Formatting.STRIKETHROUGH),
+ UNDERLINE(Formatting.UNDERLINE),
+ ITALIC(Formatting.ITALIC),
+ RESET(Formatting.RESET);
+ public final Formatting formatting;
+
+ FormattingOption(Formatting formatting) {
+ this.formatting = formatting;
+ }
+
+ @Override
+ public String toString() {
+ return StringUtils.capitalize(formatting.getName().replaceAll("_", " "));
+ }
}
public static class LividColor {
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonChestProfit.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonChestProfit.java
index beed0cd8..b223e1a2 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonChestProfit.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonChestProfit.java
@@ -14,7 +14,6 @@ import net.minecraft.item.ItemStack;
import net.minecraft.screen.GenericContainerScreenHandler;
import net.minecraft.screen.ScreenHandlerType;
import net.minecraft.screen.slot.Slot;
-import net.minecraft.text.Style;
import net.minecraft.text.Text;
import net.minecraft.util.Formatting;
import org.apache.commons.lang3.StringUtils;
@@ -30,10 +29,6 @@ public class DungeonChestProfit {
private static final Logger LOGGER = LoggerFactory.getLogger(DungeonChestProfit.class);
private static final Pattern ESSENCE_PATTERN = Pattern.compile("(?<type>[A-Za-z]+) Essence x(?<amount>[0-9]+)");
private static final DecimalFormat FORMATTER = new DecimalFormat("#,###");
- private static final Style GRAY = Style.EMPTY.withColor(Formatting.GRAY);
- private static final Style DARK_BLUE = Style.EMPTY.withColor(Formatting.DARK_BLUE);
- private static final Style DARK_GREEN = Style.EMPTY.withColor(Formatting.DARK_GREEN);
- private static final Style DARK_RED = Style.EMPTY.withColor(Formatting.DARK_RED);
public static void init() {
ScreenEvents.AFTER_INIT.register((client, screen, scaledWidth, scaledHeight) -> ScreenEvents.afterTick(screen).register(screen1 -> {
@@ -163,6 +158,11 @@ public class DungeonChestProfit {
}
private static Text getProfitText(int profit, boolean hasIncompleteData) {
- return (profit == 0) ? Text.literal(" " + FORMATTER.format(profit)).setStyle(hasIncompleteData ? DARK_BLUE : GRAY) : (profit > 0) ? Text.literal(" +" + FORMATTER.format(profit)).setStyle(hasIncompleteData ? DARK_BLUE : DARK_GREEN) : Text.literal(" " + FORMATTER.format(profit)).setStyle(hasIncompleteData ? DARK_BLUE : DARK_RED);
+ SkyblockerConfig.DungeonChestProfit config = SkyblockerConfig.get().locations.dungeons.dungeonChestProfit;
+ return getProfitText(profit, hasIncompleteData, config.neutralThreshold, config.neutralColor.formatting, config.profitColor.formatting, config.lossColor.formatting, config.incompleteColor.formatting);
+ }
+
+ static Text getProfitText(int profit, boolean hasIncompleteData, int neutralThreshold, Formatting neutralColor, Formatting profitColor, Formatting lossColor, Formatting incompleteColor) {
+ return Text.literal((profit > 0 ? " +" : " ") + FORMATTER.format(profit)).formatted(hasIncompleteData ? incompleteColor : (Math.abs(profit) < neutralThreshold) ? neutralColor : (profit > 0) ? profitColor : lossColor);
}
}