aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/de/hysky
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/de/hysky')
-rw-r--r--src/main/java/de/hysky/skyblocker/mixins/HandledScreenMixin.java29
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/slottext/SlotTextManager.java40
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/AttributeShardAdder.java5
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/CatacombsLevelAdder.java19
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/CollectionAdder.java4
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/CommunityShopAdder.java31
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/EnchantmentLevelAdder.java5
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/EssenceShopAdder.java5
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/MinionLevelAdder.java5
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/PetLevelAdder.java4
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/PotionLevelAdder.java6
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/PowerStonesGuideAdder.java14
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/PrehistoricEggAdder.java15
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/RancherBootsSpeedAdder.java7
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/SkillLevelAdder.java8
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/SkyblockLevelAdder.java8
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/StatsTuningAdder.java5
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/YourEssenceAdder.java4
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/BackpackPreview.java7
-rw-r--r--src/main/java/de/hysky/skyblocker/utils/container/AbstractContainerSolver.java1
-rw-r--r--src/main/java/de/hysky/skyblocker/utils/container/AbstractSlotTextAdder.java6
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);
}