diff options
author | Rime <81419447+Emirlol@users.noreply.github.com> | 2024-05-31 22:04:21 +0300 |
---|---|---|
committer | Rime <81419447+Emirlol@users.noreply.github.com> | 2024-06-08 04:13:47 +0300 |
commit | d923b643f6753fc83e8cc21e1837211f65c43e73 (patch) | |
tree | 33dfa81c9a8a06cc515f626a88f8f29070b550f2 /src/main/java | |
parent | a74e944f417b14ae73d59cf3ca9e35508726a5bf (diff) | |
download | Skyblocker-d923b643f6753fc83e8cc21e1837211f65c43e73.tar.gz Skyblocker-d923b643f6753fc83e8cc21e1837211f65c43e73.tar.bz2 Skyblocker-d923b643f6753fc83e8cc21e1837211f65c43e73.zip |
Add catacombs level slot text
Diffstat (limited to 'src/main/java')
3 files changed, 94 insertions, 5 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 d23e0739..710d780c 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 @@ -16,7 +16,10 @@ public class SlotTextManager { new MinionLevelAdder(), new PetLevelAdder(), new SkyblockLevelAdder(), - new SkillLevelAdder() + new SkillLevelAdder(), + new CatacombsLevelAdder.Dungeoneering(), + new CatacombsLevelAdder.DungeonClasses(), + new CatacombsLevelAdder.ReadyUp() }; private static final ArrayList<SlotTextAdder> currentScreenAdders = new ArrayList<>(); diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/CatacombsLevelAdder.java b/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/CatacombsLevelAdder.java new file mode 100644 index 00000000..00a96f1a --- /dev/null +++ b/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/CatacombsLevelAdder.java @@ -0,0 +1,89 @@ +package de.hysky.skyblocker.skyblock.item.slottext.adders; + +import de.hysky.skyblocker.skyblock.item.slottext.SlotTextAdder; +import net.minecraft.item.ItemStack; +import net.minecraft.screen.slot.Slot; +import net.minecraft.text.Text; +import net.minecraft.util.Formatting; +import org.apache.commons.lang3.math.NumberUtils; +import org.jetbrains.annotations.Nullable; + +//This class is split into 3 inner classes as there are multiple screens for showing catacombs levels, each with different slot ids or different style of showing the level. +//It's still kept in 1 main class for organization purposes. +public class CatacombsLevelAdder { + private CatacombsLevelAdder() { + } + + public static class Dungeoneering extends SlotTextAdder { + public Dungeoneering() { + super("^Dungeoneering"); + } + + @Override + public @Nullable Text getText(Slot slot) { + switch (slot.id) { + case 12, 29, 30, 31, 32, 33 -> { + String name = slot.getStack().getName().getString(); + int lastIndex = name.lastIndexOf(' '); + if (lastIndex == -1) return Text.literal("0").formatted(Formatting.RED); + String level = name.substring(lastIndex + 1); + if (!NumberUtils.isDigits(level)) return null; //Sanity check, just in case. + return Text.literal(level).formatted(Formatting.RED); + } + default -> { + return null; + } + } + } + } + + public static class DungeonClasses extends SlotTextAdder { + + public DungeonClasses() { + super("^Dungeon Classes"); //Applies to both screens as they are same in both the placement and the style of the level text. + } + + @Override + public @Nullable Text getText(Slot slot) { + switch (slot.id) { + case 11, 12, 13, 14, 15 -> { + String level = getBracketedLevelFromName(slot.getStack()); + if (!NumberUtils.isDigits(level)) return null; + return Text.literal(level).formatted(Formatting.RED); + } + default -> { + return null; + } + } + } + } + + public static class ReadyUp extends SlotTextAdder { + + public ReadyUp() { + super("^Ready Up"); + } + + @Override + public @Nullable Text getText(Slot slot) { + switch (slot.id) { + case 29, 30, 31, 32, 33 -> { + String level = getBracketedLevelFromName(slot.getStack()); + if (!NumberUtils.isDigits(level)) return null; + return Text.literal(level).formatted(Formatting.RED); + } + default -> { + return null; + } + } + } + } + + public static String getBracketedLevelFromName(ItemStack itemStack) { + String name = itemStack.getName().getString(); + if (!name.startsWith("[Lvl ")) return null; + int index = name.indexOf(']'); + if (index == -1) return null; + return name.substring(5, index); + } +} diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/PetLevelAdder.java b/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/PetLevelAdder.java index 7e384888..c4632d8e 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/PetLevelAdder.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/PetLevelAdder.java @@ -18,10 +18,7 @@ public class PetLevelAdder extends SlotTextAdder { public @Nullable Text getText(Slot slot) { ItemStack itemStack = slot.getStack(); if (!itemStack.isOf(Items.PLAYER_HEAD)) return null; - Text name = itemStack.getName(); - String nameStr = name.getString(); - if (!nameStr.startsWith("[Lvl ")) return null; - String level = nameStr.substring(5, nameStr.indexOf(']')); + String level = CatacombsLevelAdder.getBracketedLevelFromName(itemStack); if (!NumberUtils.isDigits(level)) return null; return Text.literal(level).formatted(Formatting.GOLD); } |