diff options
| author | Rime <81419447+Emirlol@users.noreply.github.com> | 2025-06-24 08:37:49 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-06-24 01:37:49 -0400 |
| commit | f5e129aa7b86063a08b742dc70cb37b353653461 (patch) | |
| tree | f8cd6c0cdba00031b1ff224ed722432d6e1b2d65 /src/main/java | |
| parent | c00df8461f20d945ea75b41e2d32005574f44415 (diff) | |
| download | Skyblocker-f5e129aa7b86063a08b742dc70cb37b353653461.tar.gz Skyblocker-f5e129aa7b86063a08b742dc70cb37b353653461.tar.bz2 Skyblocker-f5e129aa7b86063a08b742dc70cb37b353653461.zip | |
Add HOTF perk level slot text adder (#1391)
* Refactored HotmPerkLevelAdder and added HotfPerkLevelAdder
* Add HotfPerkLevelAdder to SlotTextManager
Diffstat (limited to 'src/main/java')
4 files changed, 69 insertions, 30 deletions
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 e3226005..d68f6e27 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 @@ -39,6 +39,7 @@ public class SlotTextManager { new ChoosePetLevelAdder(), new SkyblockLevelAdder(), new HotmPerkLevelAdder(), + new HotfPerkLevelAdder(), new SkillLevelAdder(), new CatacombsLevelAdder.Dungeoneering(), new CatacombsLevelAdder.DungeonClasses(), diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/HeartOfTheXAdder.java b/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/HeartOfTheXAdder.java new file mode 100644 index 00000000..f3092786 --- /dev/null +++ b/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/HeartOfTheXAdder.java @@ -0,0 +1,45 @@ +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.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.screen.slot.Slot; +import net.minecraft.text.Text; +import org.intellij.lang.annotations.Language; +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 abstract class HeartOfTheXAdder extends SimpleSlotTextAdder { + private static final Pattern LEVEL = Pattern.compile("Level (?<level>\\d+)/?(?<max>\\d+)?"); + + protected HeartOfTheXAdder(@NotNull @Language("RegExp") String titlePattern, @Nullable ConfigInformation configInformation) { + super(titlePattern, configInformation); + } + + protected abstract Item getNonLeveledItem(); + + @Override + @NotNull + public List<SlotText> getText(@Nullable Slot slot, @NotNull ItemStack stack, int slotId) { + if (slotId < 0 || slotId > 44 || stack.isOf(getNonLeveledItem())) return List.of(); + + List<Text> lore = ItemUtils.getLore(stack); + if (lore.isEmpty()) return List.of(); + + String levelLine = lore.getFirst().getString(); + Matcher matcher = LEVEL.matcher(levelLine); + if (!matcher.matches()) return List.of(); + + String level = matcher.group("level"); + // The `/<max>` part is removed when the level is max, so the group being null means it's maxed + boolean isMaxed = matcher.group("max") == null; + + return SlotText.bottomRightList(Text.literal(level).withColor(isMaxed ? SlotText.GOLD : SlotText.CREAM)); + } +}
\ No newline at end of file diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/HotfPerkLevelAdder.java b/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/HotfPerkLevelAdder.java new file mode 100644 index 00000000..3dd13f74 --- /dev/null +++ b/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/HotfPerkLevelAdder.java @@ -0,0 +1,19 @@ +package de.hysky.skyblocker.skyblock.item.slottext.adders; + +import net.minecraft.item.Item; +import net.minecraft.item.Items; + +public class HotfPerkLevelAdder extends HeartOfTheXAdder { + private static final ConfigInformation CONFIG_INFORMATION = new ConfigInformation( + "hotf_perk_level", + "skyblocker.config.uiAndVisuals.slotText.hotfPerkLevel"); + + public HotfPerkLevelAdder() { + super("^Heart of the Forest$", CONFIG_INFORMATION); + } + + @Override + protected Item getNonLeveledItem() { + return Items.PLAYER_HEAD; + } +} diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/HotmPerkLevelAdder.java b/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/HotmPerkLevelAdder.java index 4d5c6195..2c99c35f 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/HotmPerkLevelAdder.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/HotmPerkLevelAdder.java @@ -1,45 +1,19 @@ 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.Item; import net.minecraft.item.Items; -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 HotmPerkLevelAdder extends SimpleSlotTextAdder { +public class HotmPerkLevelAdder extends HeartOfTheXAdder { private static final ConfigInformation CONFIG_INFORMATION = new ConfigInformation( "hotm_perk_level", "skyblocker.config.uiAndVisuals.slotText.hotmPerkLevel"); - private static final Pattern LEVEL = Pattern.compile("Level (?<level>\\d+)/?(?<max>\\d+)?"); public HotmPerkLevelAdder() { super("^Heart of the Mountain$", CONFIG_INFORMATION); } @Override - @NotNull - public List<SlotText> getText(@Nullable Slot slot, @NotNull ItemStack stack, int slotId) { - if (slotId < 0 || slotId > 44 || stack.isOf(Items.COAL)) return List.of(); - - List<Text> lore = ItemUtils.getLore(stack); - if (lore.isEmpty()) return List.of(); - - String levelLine = lore.getFirst().getString(); - Matcher matcher = LEVEL.matcher(levelLine); - if (!matcher.matches()) return List.of(); - - String level = matcher.group("level"); - // The `/<max>` part is removed when the level is max, so the group being null means it's maxed - boolean isMaxed = matcher.group("max") == null; - - return SlotText.bottomRightList(Text.literal(level).withColor(isMaxed ? SlotText.GOLD : SlotText.CREAM)); + protected Item getNonLeveledItem() { + return Items.COAL; } } |
