From c61721e5e76aa02b6222fc47609a11c8da12aaf8 Mon Sep 17 00:00:00 2001 From: Yasin <19829407+LifeIsAParadox@users.noreply.github.com> Date: Thu, 8 May 2025 00:08:43 +0200 Subject: Add slot text for "choose pet" and "skyblock guide" (#1264) * slottext for choose pet and skyblock guide * add translation strings --- .../skyblock/item/slottext/SlotTextManager.java | 4 ++- .../item/slottext/adders/ChoosePetLevelAdder.java | 39 ++++++++++++++++++++++ .../slottext/adders/PowerStonesGuideAdder.java | 2 +- .../item/slottext/adders/SkyblockGuideAdder.java | 37 ++++++++++++++++++++ 4 files changed, 80 insertions(+), 2 deletions(-) create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/ChoosePetLevelAdder.java create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/SkyblockGuideAdder.java (limited to 'src/main/java') diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/SlotTextManager.java b/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/SlotTextManager.java index a6a03a6d..e3226005 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/SlotTextManager.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/SlotTextManager.java @@ -36,6 +36,7 @@ public class SlotTextManager { new EnchantmentLevelAdder(), new MinionLevelAdder(), new PetLevelAdder(), + new ChoosePetLevelAdder(), new SkyblockLevelAdder(), new HotmPerkLevelAdder(), new SkillLevelAdder(), @@ -55,7 +56,8 @@ public class SlotTextManager { ChocolateFactorySolver.INSTANCE, new EvolvingItemAdder(), new NewYearCakeAdder(), - WardrobeKeybinds.INSTANCE + WardrobeKeybinds.INSTANCE, + new SkyblockGuideAdder() }; private static final ArrayList currentScreenAdders = new ArrayList<>(); private static final KeyBinding keyBinding = KeyBindingHelper.registerKeyBinding(new KeyBinding("key.skyblocker.slottext", GLFW.GLFW_KEY_LEFT_ALT, "key.categories.skyblocker")); diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/ChoosePetLevelAdder.java b/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/ChoosePetLevelAdder.java new file mode 100644 index 00000000..4a1a41e9 --- /dev/null +++ b/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/ChoosePetLevelAdder.java @@ -0,0 +1,39 @@ +package de.hysky.skyblocker.skyblock.item.slottext.adders; + +import de.hysky.skyblocker.skyblock.item.slottext.SimpleSlotTextAdder; +import de.hysky.skyblocker.skyblock.item.slottext.SlotText; +import de.hysky.skyblocker.utils.ItemUtils; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; +import net.minecraft.screen.slot.Slot; +import net.minecraft.text.Text; +import org.apache.commons.lang3.math.NumberUtils; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class ChoosePetLevelAdder extends SimpleSlotTextAdder { + private static final Pattern AUTOPET_LEVEL_PATTERN = Pattern.compile("Equip: ⭐? ?\\[Lvl (\\d+)].*"); + private static final Pattern LEVEL_PATTERN = Pattern.compile("⭐? ?\\[Lvl (\\d+)].*"); + private static final ConfigInformation CONFIG_INFORMATION = new ConfigInformation( + "choose_pet_pet_level", + "skyblocker.config.uiAndVisuals.slotText.choosePetPetLevel"); + + public ChoosePetLevelAdder() {super("^Choose Pet.*", CONFIG_INFORMATION);} + + @Override + public @NotNull List getText(@Nullable Slot slot, @NotNull ItemStack stack, int slotId) { + if (slotId < 18 || slotId > 44 || !stack.isOf(Items.PLAYER_HEAD)) return List.of(); + Matcher matcher = ItemUtils.getLoreLineIfMatch(stack, AUTOPET_LEVEL_PATTERN); + if (matcher == null) { + matcher = LEVEL_PATTERN.matcher(stack.getName().getString()); + if (!matcher.matches()) return List.of(); + } + String level = matcher.group(1); + if (!NumberUtils.isDigits(level) || "100".equals(level) || "200".equals(level)) return List.of(); + return SlotText.bottomRightList(Text.literal(level).withColor(SlotText.CREAM)); + } +} diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/PowerStonesGuideAdder.java b/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/PowerStonesGuideAdder.java index 6336d532..b8cc62e5 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/PowerStonesGuideAdder.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/PowerStonesGuideAdder.java @@ -30,7 +30,7 @@ public class PowerStonesGuideAdder extends SimpleSlotTextAdder { if (match == null) return List.of(); String symbol = match.group("symbol"); Text text = symbol.equals("✖") - ? Text.literal("✖").withColor(SlotText.LIGHT_RED) + ? Text.literal("✘").withColor(SlotText.LIGHT_RED) : Text.literal("✔").withColor(SlotText.LIGHT_GREEN); return SlotText.bottomRightList(text); diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/SkyblockGuideAdder.java b/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/SkyblockGuideAdder.java new file mode 100644 index 00000000..04162c76 --- /dev/null +++ b/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/SkyblockGuideAdder.java @@ -0,0 +1,37 @@ +package de.hysky.skyblocker.skyblock.item.slottext.adders; + +import de.hysky.skyblocker.skyblock.item.slottext.SimpleSlotTextAdder; +import de.hysky.skyblocker.skyblock.item.slottext.SlotText; +import net.minecraft.item.ItemStack; +import net.minecraft.screen.slot.Slot; +import net.minecraft.text.Text; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class SkyblockGuideAdder extends SimpleSlotTextAdder { + private static final Pattern GUIDE_PATTERN = Pattern.compile("^(?[✖✔])\\s*(?.+)"); + private static final ConfigInformation CONFIG_INFORMATION = new ConfigInformation( + "skyblock_guide", + "skyblocker.config.uiAndVisuals.slotText.skyblockGuide"); + + public SkyblockGuideAdder() { + super("^(?:\\(\\d+\\/\\d+\\)\\s+)?Guide ➜ \\w+", CONFIG_INFORMATION); + } + + @Override + public @NotNull List getText(@Nullable Slot slot, @NotNull ItemStack stack, int slotId) { + if (slotId < 18 || slotId > 44) return List.of(); + Matcher match = GUIDE_PATTERN.matcher(stack.getName().getString()); + if (!match.matches()) return List.of(); + String symbol = match.group("symbol"); + Text text = symbol.equals("✖") + ? Text.literal("✘").withColor(SlotText.LIGHT_RED) + : Text.literal("✔").withColor(SlotText.LIGHT_GREEN); + + return SlotText.bottomRightList(text); + } +} -- cgit