aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorRime <81419447+Emirlol@users.noreply.github.com>2025-06-24 08:37:49 +0300
committerGitHub <noreply@github.com>2025-06-24 01:37:49 -0400
commitf5e129aa7b86063a08b742dc70cb37b353653461 (patch)
treef8cd6c0cdba00031b1ff224ed722432d6e1b2d65 /src/main/java
parentc00df8461f20d945ea75b41e2d32005574f44415 (diff)
downloadSkyblocker-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')
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/slottext/SlotTextManager.java1
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/HeartOfTheXAdder.java45
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/HotfPerkLevelAdder.java19
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/HotmPerkLevelAdder.java34
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;
}
}