From 70c746a10e13190572cd7923154351a76b280ff5 Mon Sep 17 00:00:00 2001 From: Aaron <51387595+AzureAaron@users.noreply.github.com> Date: Thu, 1 Aug 2024 17:58:59 -0400 Subject: True HEX Colour display for the dyes in Vincent's screens --- .../skyblock/item/tooltip/TooltipManager.java | 1 + .../tooltip/adders/TrueHexDyeScreenDisplay.java | 53 ++++++++++++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/TrueHexDyeScreenDisplay.java (limited to 'src/main/java/de') diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/TooltipManager.java b/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/TooltipManager.java index 40655bd1..ce8f2b9d 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/TooltipManager.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/TooltipManager.java @@ -24,6 +24,7 @@ public class TooltipManager { private static final TooltipAdder[] adders = new TooltipAdder[]{ new LineSmoothener(), // Applies before anything else new TrueHexDisplay(), + new TrueHexDyeScreenDisplay(), new SupercraftReminder(), ChocolateFactorySolver.INSTANCE, new ReorderHelper(), diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/TrueHexDyeScreenDisplay.java b/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/TrueHexDyeScreenDisplay.java new file mode 100644 index 00000000..29b2684d --- /dev/null +++ b/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/TrueHexDyeScreenDisplay.java @@ -0,0 +1,53 @@ +package de.hysky.skyblocker.skyblock.item.tooltip.adders; + +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import org.jetbrains.annotations.Nullable; + +import de.hysky.skyblocker.skyblock.item.tooltip.SimpleTooltipAdder; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; +import net.minecraft.screen.slot.Slot; +import net.minecraft.text.Text; +import net.minecraft.util.Formatting; + +/** + * Changes the color of HEX color codes on dye items inside of Vincent. + */ +public class TrueHexDyeScreenDisplay extends SimpleTooltipAdder { + private static final Pattern DYE_SCREEN_NAMES = Pattern.compile("Dye Compendium|Dyes"); + private static final Pattern HEX_PATTERN = Pattern.compile("Hex (?#[A-Fa-f0-9]{6})"); + + public TrueHexDyeScreenDisplay() { + super(DYE_SCREEN_NAMES, Integer.MIN_VALUE); + } + + @Override + public void addToTooltip(@Nullable Slot focusedSlot, ItemStack stack, List lines) { + String name = stack.getName().getString(); + + if (stack.isOf(Items.PLAYER_HEAD) && name.endsWith("Dye")) { + for (Text line : lines) { + Matcher matcher = HEX_PATTERN.matcher(line.getString()); + + if (matcher.matches()) { + String hex = matcher.group("hex"); + List siblings = line.getSiblings(); + + siblings.clear(); + siblings.add(Text.literal("Hex ").formatted(Formatting.DARK_GRAY)); + siblings.add(Text.literal(hex).withColor(Integer.decode(hex))); + + return; + } + } + } + } + + @Override + public boolean isEnabled() { + return true; + } +} -- cgit