From fd04004c6135dd72d9f66903fe7a7cb5975fa041 Mon Sep 17 00:00:00 2001 From: Rime <81419447+Emirlol@users.noreply.github.com> Date: Mon, 10 Jun 2024 10:19:09 +0300 Subject: Add community shop slot text for account & profile upgrades --- .../skyblock/item/slottext/SlotTextManager.java | 3 +- .../item/slottext/adders/CommunityShopAdder.java | 60 ++++++++++++++++++++++ 2 files changed, 62 insertions(+), 1 deletion(-) create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/CommunityShopAdder.java (limited to 'src/main/java/de') 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 a4a83455..18131527 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 @@ -25,7 +25,8 @@ public class SlotTextManager { new AttributeShardAdder(), new PrehistoricEggAdder(), new PotionLevelAdder(), - new CollectionAdder() + new CollectionAdder(), + new CommunityShopAdder() }; private static final ArrayList currentScreenAdders = new ArrayList<>(); diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/CommunityShopAdder.java b/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/CommunityShopAdder.java new file mode 100644 index 00000000..5c8f7c76 --- /dev/null +++ b/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/CommunityShopAdder.java @@ -0,0 +1,60 @@ +package de.hysky.skyblocker.skyblock.item.slottext.adders; + +import de.hysky.skyblocker.skyblock.item.slottext.SlotText; +import de.hysky.skyblocker.skyblock.item.slottext.SlotTextAdder; +import de.hysky.skyblocker.utils.ItemUtils; +import de.hysky.skyblocker.utils.RomanNumerals; +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; +import org.jetbrains.annotations.NotNull; + +import java.util.List; + +public class CommunityShopAdder extends SlotTextAdder { + private static final byte CATEGORIES_START = 10; + private static final byte CATEGORIES_END = 14; //Inclusive + + public CommunityShopAdder() { + super("^Community Shop"); + } + + @Override + public @NotNull List getText(Slot slot) { + for (byte i = CATEGORIES_START; i <= CATEGORIES_END; i++) { + if (slot.inventory.getStack(i).isOf(Items.LIME_STAINED_GLASS_PANE)) { //Only the selected category has a lime stained glass pane, the others have a gray one. + return switch (i) { //This is a switch to allow adding more categories easily in the future, if we ever add more. + case 11 -> getTextForUpgradesScreen(slot); + default -> List.of(); + }; + } + } + return List.of(); + } + + private static List getTextForUpgradesScreen(Slot slot) { + final ItemStack stack = slot.getStack(); + switch (slot.id) { + case 30, 31, 32, 33, 34, 38, 39, 40, 41, 42, 43, 44 -> { + String name = stack.getName().getString(); + int lastIndex = name.lastIndexOf(' '); + String roman = name.substring(lastIndex + 1); // + 1 as we don't want the space + if (!RomanNumerals.isValidRomanNumeral(roman)) return List.of(); + + List lore = ItemUtils.getLore(stack); + if (lore.isEmpty()) return List.of(); + String lastLine = lore.getLast().getString(); + return List.of(SlotText.bottomLeft(switch (lastLine) { + case "Maxed out!" -> Text.literal("Max").withColor(0xfab387); + case "Currently upgrading!" -> Text.literal("⏰").withColor(0xf9e2af).formatted(Formatting.BOLD); + //Todo: Add the case for when the upgrade has finished and is ready to be claimed + default -> Text.literal(String.valueOf(RomanNumerals.romanToDecimal(roman))).withColor(0xcba6f7); + })); + + } + } + return List.of(); + } +} -- cgit