diff options
Diffstat (limited to 'src/main/java')
21 files changed, 101 insertions, 127 deletions
diff --git a/src/main/java/de/hysky/skyblocker/mixins/HandledScreenMixin.java b/src/main/java/de/hysky/skyblocker/mixins/HandledScreenMixin.java index ca1cddf8..b8e15eb5 100644 --- a/src/main/java/de/hysky/skyblocker/mixins/HandledScreenMixin.java +++ b/src/main/java/de/hysky/skyblocker/mixins/HandledScreenMixin.java @@ -14,7 +14,6 @@ import de.hysky.skyblocker.skyblock.item.ItemProtection; import de.hysky.skyblocker.skyblock.item.ItemRarityBackgrounds; import de.hysky.skyblocker.skyblock.item.MuseumItemCache; import de.hysky.skyblocker.skyblock.item.WikiLookup; -import de.hysky.skyblocker.skyblock.item.slottext.SlotText; import de.hysky.skyblocker.skyblock.item.slottext.SlotTextManager; import de.hysky.skyblocker.skyblock.item.tooltip.BackpackPreview; import de.hysky.skyblocker.skyblock.item.tooltip.CompactorDeletorPreview; @@ -26,7 +25,6 @@ import de.hysky.skyblocker.utils.container.AbstractContainerSolver; import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.gui.screen.ingame.HandledScreen; -import net.minecraft.client.util.math.MatrixStack; import net.minecraft.inventory.SimpleInventory; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -335,31 +333,8 @@ public abstract class HandledScreenMixin<T extends ScreenHandler> extends Screen @Inject(method = "drawSlot", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/DrawContext;drawItemInSlot(Lnet/minecraft/client/font/TextRenderer;Lnet/minecraft/item/ItemStack;IILjava/lang/String;)V")) private void skyblocker$drawSlotText(DrawContext context, Slot slot, CallbackInfo ci) { - List<SlotText> textList = SlotTextManager.getText(slot); - if (textList.isEmpty()) return; - MatrixStack matrices = context.getMatrices(); - - for (SlotText slotText : textList) { - matrices.push(); - matrices.translate(0.0f, 0.0f, 200.0f); - int length = textRenderer.getWidth(slotText.text()); - if (length > 16) { - matrices.scale(16.0f / length, 16.0f / length, 1.0f); //Make them fit in the slot. FYI, a slot is sized 16×16. - final float x = (slot.x * length / 16.0f) - slot.x; //Save in a variable to not recalculate - switch (slotText.position()) { - case TOP_LEFT, TOP_RIGHT -> matrices.translate(x, (slot.y * length / 16.0f) - slot.y, 0.0f); - case BOTTOM_LEFT, BOTTOM_RIGHT -> matrices.translate(x, ((slot.y + 16f - textRenderer.fontHeight + 2f + 0.7f) * length / 16.0f) - slot.y, 0.0f); - } - } else { - switch (slotText.position()) { - case TOP_LEFT -> { /*Do Nothing*/ } - case TOP_RIGHT -> matrices.translate(16f - length, 0.0f, 0.0f); - case BOTTOM_LEFT -> matrices.translate(0.0f, 16f - textRenderer.fontHeight + 2f, 0.0f); - case BOTTOM_RIGHT -> matrices.translate(16f - length, 16f - textRenderer.fontHeight + 2f, 0.0f); - } - } - context.drawText(textRenderer, slotText.text(), slot.x, slot.y, 0xFFFFFF, true); - matrices.pop(); + if (Utils.isOnSkyblock()) { + SlotTextManager.renderSlotText(context, textRenderer, slot); } } } 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 fe38e340..a13bc28a 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 @@ -5,7 +5,11 @@ import de.hysky.skyblocker.skyblock.item.slottext.adders.*; import de.hysky.skyblocker.utils.Utils; import de.hysky.skyblocker.utils.container.AbstractSlotTextAdder; import net.fabricmc.fabric.api.client.screen.v1.ScreenEvents; +import net.minecraft.client.font.TextRenderer; +import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.screen.ingame.HandledScreen; +import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.item.ItemStack; import net.minecraft.screen.slot.Slot; import org.jetbrains.annotations.NotNull; @@ -65,12 +69,44 @@ public class SlotTextManager { * The order of the adders remains the same as they were added to the {@link SlotTextManager#adders} array. */ @NotNull - public static List<SlotText> getText(Slot slot) { + public static List<SlotText> getText(@NotNull ItemStack itemStack, int slotId) { if (currentScreenAdders.isEmpty()) return List.of(); for (AbstractSlotTextAdder adder : currentScreenAdders) { - List<SlotText> text = adder.getText(slot); + List<SlotText> text = adder.getText(itemStack, slotId); if (!text.isEmpty()) return text; } return List.of(); } + + public static void renderSlotText(DrawContext context, TextRenderer textRenderer, Slot slot) { + renderSlotText(context, textRenderer, slot.getStack(), slot.id, slot.x, slot.y); + } + + public static void renderSlotText(DrawContext context, TextRenderer textRenderer, ItemStack itemStack, int slotId, int x, int y) { + List<SlotText> textList = SlotTextManager.getText(itemStack, slotId); + if (textList.isEmpty()) return; + MatrixStack matrices = context.getMatrices(); + + for (SlotText slotText : textList) { + matrices.push(); + matrices.translate(0.0f, 0.0f, 200.0f); + int length = textRenderer.getWidth(slotText.text()); + if (length > 16) { + matrices.scale(16f / length, 16f / length, 1.0f); + switch (slotText.position()) { + case TOP_LEFT, TOP_RIGHT -> matrices.translate(x * length / 16f - x, (y * length / 16.0f) - y, 0.0f); + case BOTTOM_LEFT, BOTTOM_RIGHT -> matrices.translate(x * length / 16f - x, ((y + 16f - textRenderer.fontHeight + 2f + 0.7f) * length / 16.0f) - y, 0.0f); + } + } else { + switch (slotText.position()) { + case TOP_LEFT -> { /*Do Nothing*/ } + case TOP_RIGHT -> matrices.translate(16f - length, 0.0f, 0.0f); + case BOTTOM_LEFT -> matrices.translate(0.0f, 16f - textRenderer.fontHeight + 2f, 0.0f); + case BOTTOM_RIGHT -> matrices.translate(16f - length, 16f - textRenderer.fontHeight + 2f, 0.0f); + } + } + context.drawText(textRenderer, slotText.text(), x, y, 0xFFFFFF, true); + matrices.pop(); + } + } } diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/AttributeShardAdder.java b/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/AttributeShardAdder.java index eac0a7f0..33259172 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/AttributeShardAdder.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/AttributeShardAdder.java @@ -8,9 +8,7 @@ import it.unimi.dsi.fastutil.objects.Object2ObjectMap; import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NbtCompound; -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; @@ -70,8 +68,7 @@ public class AttributeShardAdder extends SlotTextAdder { } @Override - public @NotNull List<SlotText> getText(Slot slot) { - final ItemStack stack = slot.getStack(); + public @NotNull List<SlotText> getText(@NotNull ItemStack stack, int slotId) { NbtCompound customData = ItemUtils.getCustomData(stack); if (!ItemUtils.getItemId(stack).equals("ATTRIBUTE_SHARD")) return List.of(); 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 index 6c99ebf9..f4066313 100644 --- 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 @@ -4,7 +4,6 @@ import de.hysky.skyblocker.skyblock.item.slottext.SlotText; import de.hysky.skyblocker.skyblock.item.slottext.SlotTextAdder; import de.hysky.skyblocker.utils.RomanNumerals; 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; @@ -27,10 +26,10 @@ public class CatacombsLevelAdder { } @Override - public @NotNull List<SlotText> getText(Slot slot) { - switch (slot.id) { + public @NotNull List<SlotText> getText(@NotNull ItemStack itemStack, int slotId) { + switch (slotId) { case 12, 29, 30, 31, 32, 33 -> { - Matcher matcher = LEVEL_PATTERN.matcher(slot.getStack().getName().getString()); + Matcher matcher = LEVEL_PATTERN.matcher(itemStack.getName().getString()); if (!matcher.matches()) return List.of(); String arabic = matcher.group("arabic"); String roman = matcher.group("roman"); @@ -60,10 +59,10 @@ public class CatacombsLevelAdder { } @Override - public @NotNull List<SlotText> getText(Slot slot) { - switch (slot.id) { + public @NotNull List<SlotText> getText(@NotNull ItemStack itemStack, int slotId) { + switch (slotId) { case 11, 12, 13, 14, 15 -> { - String level = getBracketedLevelFromName(slot.getStack()); + String level = getBracketedLevelFromName(itemStack); if (!NumberUtils.isDigits(level)) return List.of(); return List.of(SlotText.bottomLeft(Text.literal(level).withColor(0xFFDDC1))); } @@ -81,10 +80,10 @@ public class CatacombsLevelAdder { } @Override - public @NotNull List<SlotText> getText(Slot slot) { - switch (slot.id) { + public @NotNull List<SlotText> getText(@NotNull ItemStack itemStack, int slotId) { + switch (slotId) { case 29, 30, 31, 32, 33 -> { - String level = getBracketedLevelFromName(slot.getStack()); + String level = getBracketedLevelFromName(itemStack); if (!NumberUtils.isDigits(level)) return List.of(); return List.of(SlotText.bottomLeft(Text.literal(level).withColor(0xFFDDC1))); } diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/CollectionAdder.java b/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/CollectionAdder.java index d6ced22a..016f20b4 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/CollectionAdder.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/CollectionAdder.java @@ -5,7 +5,6 @@ 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.screen.slot.Slot; import net.minecraft.text.Text; import org.jetbrains.annotations.NotNull; @@ -21,8 +20,7 @@ public class CollectionAdder extends SlotTextAdder { } @Override - public @NotNull List<SlotText> getText(Slot slot) { - final ItemStack stack = slot.getStack(); + public @NotNull List<SlotText> getText(@NotNull ItemStack stack, int slotId) { Matcher matcher = COLLECTION.matcher(stack.getName().getString()); if (matcher.matches()) { int level = RomanNumerals.romanToDecimal(matcher.group("level")); 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 index d94d6405..924900e8 100644 --- 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 @@ -6,7 +6,6 @@ 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; @@ -16,28 +15,27 @@ import java.util.List; public class CommunityShopAdder extends SlotTextAdder { private static final byte CATEGORIES_START = 10; private static final byte CATEGORIES_END = 14; //Inclusive + private static byte currentScreen = -1; // 0 = city projects, 1 = upgrades, 2 = booster cookie, 3 = bits shop, 4 = fire sales, any other number = invalid public CommunityShopAdder() { super("^Community Shop"); } @Override - public @NotNull List<SlotText> 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(); - }; - } + public @NotNull List<SlotText> getText(@NotNull ItemStack itemStack, int slotId) { + if (slotId >= CATEGORIES_START && slotId <= CATEGORIES_END && itemStack.isOf(Items.LIME_STAINED_GLASS_PANE)) { //Only the selected category has a lime stained glass pane, the others have a gray one. + currentScreen = (byte) (slotId - CATEGORIES_START); + return List.of(); } - return List.of(); + return switch (currentScreen) { //This is a switch statement to allow easily adding other categories in the future. + case 1 -> getTextForUpgradesScreen(itemStack, slotId); + default -> List.of(); + }; } - private static List<SlotText> getTextForUpgradesScreen(Slot slot) { - final ItemStack stack = slot.getStack(); - switch (slot.id) { - case 30, 31, 32, 33, 34, 38, 39, 40, 41, 42, 43, 44 -> { + private static List<SlotText> getTextForUpgradesScreen(ItemStack stack, int slotId) { + switch (slotId) { + 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 @@ -52,9 +50,10 @@ public class CommunityShopAdder extends SlotTextAdder { case "Click to claim!" -> Text.literal("✅").withColor(0xa6e3a1).formatted(Formatting.BOLD); default -> Text.literal(String.valueOf(RomanNumerals.romanToDecimal(roman))).withColor(0xcba6f7); })); - + } + default -> { + return List.of(); } } - return List.of(); } } diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/EnchantmentLevelAdder.java b/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/EnchantmentLevelAdder.java index 5530035d..2c6fe4e4 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/EnchantmentLevelAdder.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/EnchantmentLevelAdder.java @@ -8,9 +8,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.item.Items; import net.minecraft.nbt.NbtCompound; import net.minecraft.nbt.NbtElement; -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; @@ -21,8 +19,7 @@ public class EnchantmentLevelAdder extends SlotTextAdder { } @Override - public @NotNull List<SlotText> getText(Slot slot) { - final ItemStack itemStack = slot.getStack(); + public @NotNull List<SlotText> getText(@NotNull ItemStack itemStack, int slotId) { if (!itemStack.isOf(Items.ENCHANTED_BOOK)) return List.of(); String name = itemStack.getName().getString(); if (name.equals("Enchanted Book")) { diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/EssenceShopAdder.java b/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/EssenceShopAdder.java index 65574a5a..1a3e889e 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/EssenceShopAdder.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/EssenceShopAdder.java @@ -5,7 +5,6 @@ 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.screen.slot.Slot; import net.minecraft.text.Text; import org.jetbrains.annotations.NotNull; @@ -25,9 +24,7 @@ public class EssenceShopAdder extends SlotTextAdder { } @Override - public @NotNull List<SlotText> getText(Slot slot) { - final ItemStack stack = slot.getStack(); - + public @NotNull List<SlotText> getText(@NotNull ItemStack stack, int slotId) { Matcher essenceLevelMatcher = ESSENCELEVEL.matcher(stack.getName().getString()); Matcher essenceAmountMatcher = ItemUtils.getLoreLineIfMatch(stack, ESSENCE); diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/MinionLevelAdder.java b/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/MinionLevelAdder.java index fc46f153..ee4bd356 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/MinionLevelAdder.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/MinionLevelAdder.java @@ -5,9 +5,7 @@ import de.hysky.skyblocker.skyblock.item.slottext.SlotTextAdder; 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; @@ -21,8 +19,7 @@ public class MinionLevelAdder extends SlotTextAdder { } @Override - public @NotNull List<SlotText> getText(Slot slot) { - ItemStack itemStack = slot.getStack(); + public @NotNull List<SlotText> getText(@NotNull ItemStack itemStack, int slotId) { if (!itemStack.isOf(Items.PLAYER_HEAD)) return List.of(); Matcher matcher = MINION_PATTERN.matcher(itemStack.getName().getString()); if (!matcher.matches()) return List.of(); 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 3049cd3f..27ed7aa0 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 @@ -5,7 +5,6 @@ import de.hysky.skyblocker.skyblock.item.slottext.SlotTextAdder; 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; @@ -18,8 +17,7 @@ public class PetLevelAdder extends SlotTextAdder { } @Override - public @NotNull List<SlotText> getText(Slot slot) { - ItemStack itemStack = slot.getStack(); + public @NotNull List<SlotText> getText(@NotNull ItemStack itemStack, int slotId) { if (!itemStack.isOf(Items.PLAYER_HEAD)) return List.of(); String level = CatacombsLevelAdder.getBracketedLevelFromName(itemStack); if (!NumberUtils.isDigits(level) || "100".equals(level) || "200".equals(level)) return List.of(); diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/PotionLevelAdder.java b/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/PotionLevelAdder.java index 1c3ef4bc..94d1b8c0 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/PotionLevelAdder.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/PotionLevelAdder.java @@ -6,7 +6,6 @@ import de.hysky.skyblocker.utils.ItemUtils; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NbtCompound; import net.minecraft.nbt.NbtElement; -import net.minecraft.screen.slot.Slot; import net.minecraft.text.Text; import org.jetbrains.annotations.NotNull; @@ -14,13 +13,12 @@ import java.util.List; public class PotionLevelAdder extends SlotTextAdder { @Override - public @NotNull List<SlotText> getText(Slot slot) { - final ItemStack stack = slot.getStack(); + public @NotNull List<SlotText> getText(@NotNull ItemStack stack, int slotId) { NbtCompound customData = ItemUtils.getCustomData(stack); String title = stack.getName().getString(); if (customData.contains("potion_level", NbtElement.INT_TYPE) && !title.contains("Healer Class") && !title.contains("Class Passives")) { if (title.contains("Healer Level ")){ - String level = title.replaceAll("[^0-9]", ""); + String level = title.replaceAll("\\D", ""); return List.of(SlotText.bottomRight(Text.literal(level).withColor(0xFFFFFF))); } else { int level = customData.getInt("potion_level"); 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 0bb37165..0f3d6b24 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 @@ -4,7 +4,6 @@ import de.hysky.skyblocker.skyblock.item.slottext.SlotText; import de.hysky.skyblocker.skyblock.item.slottext.SlotTextAdder; import de.hysky.skyblocker.utils.ItemUtils; import net.minecraft.item.ItemStack; -import net.minecraft.screen.slot.Slot; import net.minecraft.text.Text; import org.jetbrains.annotations.NotNull; @@ -20,18 +19,13 @@ public class PowerStonesGuideAdder extends SlotTextAdder { } @Override - public @NotNull List<SlotText> getText(Slot slot) { - final ItemStack stack = slot.getStack(); - + public @NotNull List<SlotText> getText(@NotNull ItemStack stack, int slotId) { Matcher match = ItemUtils.getLoreLineIfMatch(stack, LEARNED); if (match == null) return List.of(); String symbol = match.group("symbol"); - Text text; - if (symbol.equals("✖")) { - text = Text.literal("✖").withColor(0xFF7276); - } else { - text = Text.literal("✔").withColor(0x90ee90); - } + Text text = symbol.equals("✖") + ? Text.literal("✖").withColor(0xFF7276) + : Text.literal("✔").withColor(0x90ee90); return List.of(SlotText.bottomRight(text)); } diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/PrehistoricEggAdder.java b/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/PrehistoricEggAdder.java index ce29297e..63cb4bd8 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/PrehistoricEggAdder.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/PrehistoricEggAdder.java @@ -7,9 +7,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.item.Items; import net.minecraft.nbt.NbtCompound; import net.minecraft.nbt.NbtElement; -import net.minecraft.screen.slot.Slot; import net.minecraft.text.Text; -import net.minecraft.util.Formatting; import org.apache.commons.lang3.StringUtils; import org.jetbrains.annotations.NotNull; @@ -17,18 +15,17 @@ import java.util.List; public class PrehistoricEggAdder extends SlotTextAdder { @Override - public @NotNull List<SlotText> getText(Slot slot) { - final ItemStack stack = slot.getStack(); + public @NotNull List<SlotText> getText(@NotNull ItemStack stack, int slotId) { if (!stack.isOf(Items.PLAYER_HEAD) || !StringUtils.equals(stack.getSkyblockId(), "PREHISTORIC_EGG")) return List.of(); NbtCompound nbt = ItemUtils.getCustomData(stack); if (!nbt.contains("blocks_walked", NbtElement.INT_TYPE)) return List.of(); int walked = nbt.getInt("blocks_walked"); - String walkedstr; - if (walked < 1000) walkedstr = String.valueOf(walked); - else if (walked < 10000) walkedstr = String.format("%.1fk", walked/1000.0f); - else walkedstr = walked / 1000 + "k"; + String walkedStr; + if (walked < 1000) walkedStr = String.valueOf(walked); + else if (walked < 10000) walkedStr = String.format("%.1fk", walked/1000.0f); + else walkedStr = walked / 1000 + "k"; - return List.of(SlotText.bottomLeft(Text.literal(walkedstr).withColor(0xFFDDC1))); + return List.of(SlotText.bottomLeft(Text.literal(walkedStr).withColor(0xFFDDC1))); } } diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/RancherBootsSpeedAdder.java b/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/RancherBootsSpeedAdder.java index 7de5a5be..4762c0fd 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/RancherBootsSpeedAdder.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/RancherBootsSpeedAdder.java @@ -5,9 +5,7 @@ import de.hysky.skyblocker.skyblock.item.slottext.SlotTextAdder; 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 net.minecraft.util.Formatting; import org.apache.commons.lang3.StringUtils; import org.jetbrains.annotations.NotNull; @@ -23,11 +21,10 @@ public class RancherBootsSpeedAdder extends SlotTextAdder { } @Override - public @NotNull List<SlotText> getText(Slot slot) { - final ItemStack itemStack = slot.getStack(); + public @NotNull List<SlotText> getText(@NotNull ItemStack itemStack, int slotId) { // V null-safe equals. if (!itemStack.isOf(Items.LEATHER_BOOTS) && !StringUtils.equals(itemStack.getSkyblockId(), "RANCHERS_BOOTS")) return List.of(); - Matcher matcher = ItemUtils.getLoreLineIfMatch(slot.getStack(), SPEED_PATTERN); + Matcher matcher = ItemUtils.getLoreLineIfMatch(itemStack, SPEED_PATTERN); if (matcher == null) return List.of(); String speed = matcher.group(2); if (speed == null) speed = matcher.group(1); //2nd group only matches when the speed cap is set to a number beyond the player's actual speed cap. diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/SkillLevelAdder.java b/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/SkillLevelAdder.java index 18dbd2f7..541e2058 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/SkillLevelAdder.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/SkillLevelAdder.java @@ -5,7 +5,6 @@ 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.screen.slot.Slot; import net.minecraft.text.Text; import net.minecraft.util.Formatting; import org.jetbrains.annotations.NotNull; @@ -18,11 +17,10 @@ public class SkillLevelAdder extends SlotTextAdder { } @Override - public @NotNull List<SlotText> getText(Slot slot) { - switch (slot.id) { + public @NotNull List<SlotText> getText(@NotNull ItemStack stack, int slotId) { + switch (slotId) { case 19, 20, 21, 22, 23, 24, 25, 29, 30, 31, 32 -> { //These are the slots that contain the skill items. Note that they aren't continuous, as there are 2 rows. - String name = slot.getStack().getName().getString(); - final ItemStack stack = slot.getStack(); + String name = stack.getName().getString(); int lastIndex = name.lastIndexOf(' '); if (lastIndex == -1) return List.of(SlotText.bottomLeft(Text.literal("0").formatted(Formatting.LIGHT_PURPLE))); //Skills without any levels don't display any roman numerals. Probably because 0 doesn't exist. String romanNumeral = name.substring(lastIndex + 1); //+1 because we don't need the space itself diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/SkyblockLevelAdder.java b/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/SkyblockLevelAdder.java index 0fc07922..e64dce1f 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/SkyblockLevelAdder.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/SkyblockLevelAdder.java @@ -3,7 +3,7 @@ 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 net.minecraft.screen.slot.Slot; +import net.minecraft.item.ItemStack; import net.minecraft.text.Text; import org.apache.commons.lang3.math.NumberUtils; import org.jetbrains.annotations.NotNull; @@ -16,9 +16,9 @@ public class SkyblockLevelAdder extends SlotTextAdder { } @Override - public @NotNull List<SlotText> getText(Slot slot) { - if (slot.getIndex() != 22) return List.of(); - List<Text> lore = ItemUtils.getLore(slot.getStack()); + public @NotNull List<SlotText> getText(@NotNull ItemStack itemStack, int slotId) { + if (slotId != 22) return List.of(); + List<Text> lore = ItemUtils.getLore(itemStack); if (lore.isEmpty()) return List.of(); List<Text> siblings = lore.getFirst().getSiblings(); if (siblings.size() < 3) return List.of(); diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/StatsTuningAdder.java b/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/StatsTuningAdder.java index 3079d8f2..45c53fd0 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/StatsTuningAdder.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/StatsTuningAdder.java @@ -4,7 +4,6 @@ import de.hysky.skyblocker.skyblock.item.slottext.SlotText; import de.hysky.skyblocker.skyblock.item.slottext.SlotTextAdder; import de.hysky.skyblocker.utils.ItemUtils; import net.minecraft.item.ItemStack; -import net.minecraft.screen.slot.Slot; import net.minecraft.text.Text; import org.jetbrains.annotations.NotNull; @@ -21,9 +20,7 @@ public class StatsTuningAdder extends SlotTextAdder { } @Override - public @NotNull List<SlotText> getText(Slot slot) { - final ItemStack stack = slot.getStack(); - + public @NotNull List<SlotText> getText(@NotNull ItemStack stack, int slotId) { Matcher statMatcher = ItemUtils.getLoreLineIfMatch(stack, STATHAS); Matcher unassignedMatcher = ItemUtils.getLoreLineIfMatch(stack, UNASSIGNEDPOINTS); diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/YourEssenceAdder.java b/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/YourEssenceAdder.java index ec1bd561..f68b36a8 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/YourEssenceAdder.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/YourEssenceAdder.java @@ -4,7 +4,6 @@ import de.hysky.skyblocker.skyblock.item.slottext.SlotText; import de.hysky.skyblocker.skyblock.item.slottext.SlotTextAdder; import de.hysky.skyblocker.utils.ItemUtils; import net.minecraft.item.ItemStack; -import net.minecraft.screen.slot.Slot; import net.minecraft.text.Text; import org.jetbrains.annotations.NotNull; @@ -22,8 +21,7 @@ public class YourEssenceAdder extends SlotTextAdder { } @Override - public @NotNull List<SlotText> getText(Slot slot) { - final ItemStack stack = slot.getStack(); + public @NotNull List<SlotText> getText(@NotNull ItemStack stack, int slotId) { String name = stack.getName().getString(); if (name.contains("Essence")) { List<Text> lore = ItemUtils.getLore(stack); diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/BackpackPreview.java b/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/BackpackPreview.java index cad1eaab..b3017baf 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/BackpackPreview.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/BackpackPreview.java @@ -7,6 +7,7 @@ import de.hysky.skyblocker.SkyblockerMod; import de.hysky.skyblocker.config.SkyblockerConfigManager; import de.hysky.skyblocker.skyblock.item.ItemProtection; import de.hysky.skyblocker.skyblock.item.ItemRarityBackgrounds; +import de.hysky.skyblocker.skyblock.item.slottext.SlotTextManager; import de.hysky.skyblocker.utils.ItemUtils; import de.hysky.skyblocker.utils.Utils; import net.fabricmc.fabric.api.client.screen.v1.ScreenEvents; @@ -15,7 +16,6 @@ import net.minecraft.client.font.TextRenderer; import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.gui.screen.ingame.HandledScreen; -import net.minecraft.client.network.ClientPlayNetworkHandler; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.inventory.Inventory; import net.minecraft.inventory.SimpleInventory; @@ -50,6 +50,8 @@ public class BackpackPreview { private static final Storage[] storages = new Storage[STORAGE_SIZE]; + private BackpackPreview() {} + /** * The profile id of the currently loaded backpack preview. */ @@ -119,7 +121,7 @@ public class BackpackPreview { writer.write(new StringNbtWriter().apply(Storage.CODEC.encodeStart(getOps(), storages[index]).getOrThrow())); storages[index].markClean(); } catch (Exception e) { - LOGGER.error("Failed to save backpack preview file: {}", storageFile.getFileName().toString(), e); + LOGGER.error("Failed to save backpack preview file: {}", storageFile.getFileName(), e); } } @@ -171,6 +173,7 @@ public class BackpackPreview { context.drawItem(currentStack, itemX, itemY); context.drawItemInSlot(textRenderer, currentStack, itemX, itemY); + SlotTextManager.renderSlotText(context, textRenderer, currentStack, i, itemX, itemY); } matrices.pop(); diff --git a/src/main/java/de/hysky/skyblocker/utils/container/AbstractContainerSolver.java b/src/main/java/de/hysky/skyblocker/utils/container/AbstractContainerSolver.java index 38bc32dd..d4c52212 100644 --- a/src/main/java/de/hysky/skyblocker/utils/container/AbstractContainerSolver.java +++ b/src/main/java/de/hysky/skyblocker/utils/container/AbstractContainerSolver.java @@ -9,7 +9,6 @@ import net.minecraft.item.ItemStack; import java.util.List; public interface AbstractContainerSolver extends AbstractContainerMatcher { - List<ColorHighlight> getColors(Int2ObjectMap<ItemStack> slots); default void start(GenericContainerScreen screen) {} diff --git a/src/main/java/de/hysky/skyblocker/utils/container/AbstractSlotTextAdder.java b/src/main/java/de/hysky/skyblocker/utils/container/AbstractSlotTextAdder.java index 4034e88d..fce3fcf5 100644 --- a/src/main/java/de/hysky/skyblocker/utils/container/AbstractSlotTextAdder.java +++ b/src/main/java/de/hysky/skyblocker/utils/container/AbstractSlotTextAdder.java @@ -1,7 +1,7 @@ package de.hysky.skyblocker.utils.container; import de.hysky.skyblocker.skyblock.item.slottext.SlotText; -import net.minecraft.screen.slot.Slot; +import net.minecraft.item.ItemStack; import org.jetbrains.annotations.NotNull; import java.util.List; @@ -9,7 +9,7 @@ import java.util.List; public interface AbstractSlotTextAdder extends AbstractContainerMatcher { /** - * This method will be called for each rendered slot. Consider using a switch statement on {@link Slot#id} if you wish to add different text to different slots. + * This method will be called for each rendered slot. Consider using a switch statement on {@code slotId} if you wish to limit the text to specific slots. * * @return A list of positioned text to be rendered. Return {@link List#of()} if no text should be rendered. * @implNote By minecraft's design, scaled text inexplicably moves around. @@ -17,5 +17,5 @@ public interface AbstractSlotTextAdder extends AbstractContainerMatcher { * So, limit your text to 3 characters (or roughly less than 20 width) if you want it to not look horrible. */ @NotNull - List<SlotText> getText(Slot slot); + List<SlotText> getText(@NotNull ItemStack itemStack, int slotId); } |