diff options
author | Kevin <92656833+kevinthegreat1@users.noreply.github.com> | 2023-09-18 21:09:02 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-09-18 21:09:02 -0400 |
commit | 2fac34bca6e58b5ec42b04cf268fd8ab39ce1f1b (patch) | |
tree | 02d392132dd8fe58ffbfb5f5db09ce671b89fe20 /src/main/java/me | |
parent | 4689bd76f314ec24565095dc11ffcb35fa437e00 (diff) | |
download | Skyblocker-2fac34bca6e58b5ec42b04cf268fd8ab39ce1f1b.tar.gz Skyblocker-2fac34bca6e58b5ec42b04cf268fd8ab39ce1f1b.tar.bz2 Skyblocker-2fac34bca6e58b5ec42b04cf268fd8ab39ce1f1b.zip |
Add options and test (#319)
Diffstat (limited to 'src/main/java/me')
-rw-r--r-- | src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java | 86 | ||||
-rw-r--r-- | src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonChestProfit.java | 12 |
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); } } |