aboutsummaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
authorRime <81419447+Emirlol@users.noreply.github.com>2024-06-04 00:48:44 +0300
committerRime <81419447+Emirlol@users.noreply.github.com>2024-06-08 04:13:47 +0300
commitc170b563895d1aa97b0d9f18aebb685ba02ad9a6 (patch)
treeba74d20987e4d209456a7e5b41d3ba73e68dc68a /src/main
parentd5a5fc05b8d7f73c16b069d45396e55e4d0b3efa (diff)
downloadSkyblocker-c170b563895d1aa97b0d9f18aebb685ba02ad9a6.tar.gz
Skyblocker-c170b563895d1aa97b0d9f18aebb685ba02ad9a6.tar.bz2
Skyblocker-c170b563895d1aa97b0d9f18aebb685ba02ad9a6.zip
Add text position for slot text
Will be configurable later on
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/de/hysky/skyblocker/mixins/HandledScreenMixin.java34
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/slottext/PositionedText.java21
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/slottext/SlotTextAdder.java27
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/slottext/SlotTextManager.java16
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/slottext/TextPosition.java8
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/CatacombsLevelAdder.java31
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/EnchantmentLevelAdder.java17
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/MinionLevelAdder.java15
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/PetLevelAdder.java13
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/SkillLevelAdder.java15
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/SkyblockLevelAdder.java15
11 files changed, 141 insertions, 71 deletions
diff --git a/src/main/java/de/hysky/skyblocker/mixins/HandledScreenMixin.java b/src/main/java/de/hysky/skyblocker/mixins/HandledScreenMixin.java
index 8533ddfa..1758026a 100644
--- a/src/main/java/de/hysky/skyblocker/mixins/HandledScreenMixin.java
+++ b/src/main/java/de/hysky/skyblocker/mixins/HandledScreenMixin.java
@@ -14,6 +14,7 @@ import de.hysky.skyblocker.skyblock.garden.VisitorHelper;
import de.hysky.skyblocker.skyblock.item.ItemProtection;
import de.hysky.skyblocker.skyblock.item.ItemRarityBackgrounds;
import de.hysky.skyblocker.skyblock.item.WikiLookup;
+import de.hysky.skyblocker.skyblock.item.slottext.PositionedText;
import de.hysky.skyblocker.skyblock.item.slottext.SlotTextManager;
import de.hysky.skyblocker.skyblock.item.tooltip.BackpackPreview;
import de.hysky.skyblocker.skyblock.item.tooltip.CompactorDeletorPreview;
@@ -314,16 +315,31 @@ 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) {
- Text text = SlotTextManager.getText(slot);
- if (text == null) return;
+ List<PositionedText> textList = SlotTextManager.getText(slot);
+ if (textList.isEmpty()) return;
MatrixStack matrices = context.getMatrices();
- matrices.push();
- matrices.translate(0.0f, 0.0f, 200.0f);
- int length = textRenderer.getWidth(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 16x16.
+
+ for (PositionedText positionedText : textList) {
+ matrices.push();
+ matrices.translate(0.0f, 0.0f, 200.0f);
+ int length = textRenderer.getWidth(positionedText.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 (positionedText.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 + 1.5f + 1f) * length / 16.0f) - slot.y, 0.0f);
+ }
+ } else {
+ switch (positionedText.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 + 1.5f, 0.0f);
+ case BOTTOM_RIGHT -> matrices.translate(16f - length, 16f - textRenderer.fontHeight + 1.5f, 0.0f);
+ }
+ }
+ context.drawText(textRenderer, positionedText.text(), slot.x, slot.y, 0xFFFFFF, true);
+ matrices.pop();
}
- context.drawText(textRenderer, text, length > 16 ? (int) (slot.x * length / 16f) : slot.x, length > 16 ? (int) ((slot.y + 9) * length / 16f) + 1 : slot.y + 9, 0xFFFFFF, true);
- matrices.pop();
}
}
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/PositionedText.java b/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/PositionedText.java
new file mode 100644
index 00000000..4738038a
--- /dev/null
+++ b/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/PositionedText.java
@@ -0,0 +1,21 @@
+package de.hysky.skyblocker.skyblock.item.slottext;
+
+import net.minecraft.text.Text;
+
+public record PositionedText(Text text, TextPosition position) {
+ public static PositionedText BOTTOM_LEFT(Text text) {
+ return new PositionedText(text, TextPosition.BOTTOM_LEFT);
+ }
+
+ public static PositionedText BOTTOM_RIGHT(Text text) {
+ return new PositionedText(text, TextPosition.BOTTOM_RIGHT);
+ }
+
+ public static PositionedText TOP_LEFT(Text text) {
+ return new PositionedText(text, TextPosition.TOP_LEFT);
+ }
+
+ public static PositionedText TOP_RIGHT(Text text) {
+ return new PositionedText(text, TextPosition.TOP_RIGHT);
+ }
+}
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/SlotTextAdder.java b/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/SlotTextAdder.java
index 8db4cde5..71659430 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/SlotTextAdder.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/SlotTextAdder.java
@@ -2,9 +2,10 @@ package de.hysky.skyblocker.skyblock.item.slottext;
import de.hysky.skyblocker.skyblock.ChestValue;
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.Pattern;
/**
@@ -16,18 +17,28 @@ public abstract class SlotTextAdder {
* @implNote Don't end your regex with a {@code $} as {@link ChestValue} appends text to the end of the title,
* so the regex will stop matching if the player uses it.
*/
- public final Pattern titlePattern;
+ public final @Nullable Pattern titlePattern;
- protected SlotTextAdder(String titlePattern) {
+ /**
+ * Utility constructor that will compile the given string into a pattern.
+ *
+ * @see #SlotTextAdder(Pattern)
+ */
+ protected SlotTextAdder(@NotNull String titlePattern) {
this(Pattern.compile(titlePattern));
}
- protected SlotTextAdder(Pattern titlePattern) {
+ /**
+ * Creates a SlotTextAdder that will be applied to screens with titles that match the given pattern.
+ *
+ * @param titlePattern The pattern to match the screen title against.
+ */
+ protected SlotTextAdder(@NotNull Pattern titlePattern) {
this.titlePattern = titlePattern;
}
/**
- * Creates a SlotTextRenderer that will be applied to all screens.
+ * Creates a SlotTextAdder that will be applied to all screens.
*/
protected SlotTextAdder() {
this.titlePattern = null;
@@ -36,10 +47,10 @@ public abstract class SlotTextAdder {
/**
* 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.
*
- * @return The text to be rendered. Return null if no text should be rendered.
+ * @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.
* So, limit your text to 3 characters (or roughly less than 20 width) if you want it to not look horrible.
*/
- @Nullable
- public abstract Text getText(Slot slot);
+ public abstract @NotNull List<PositionedText> getText(Slot 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 710d780c..c7ca2ea6 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,10 +5,10 @@ import net.fabricmc.fabric.api.client.screen.v1.ScreenEvents;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.client.gui.screen.ingame.HandledScreen;
import net.minecraft.screen.slot.Slot;
-import net.minecraft.text.Text;
-import org.jetbrains.annotations.Nullable;
+import org.jetbrains.annotations.NotNull;
import java.util.ArrayList;
+import java.util.List;
public class SlotTextManager {
private static final SlotTextAdder[] adders = new SlotTextAdder[]{
@@ -51,13 +51,13 @@ public class SlotTextManager {
* @implNote Only the first adder that returns a non-null text will be used.
* The order of the adders remains the same as they were added to the {@link SlotTextManager#adders} array.
*/
- @Nullable
- public static Text getText(Slot slot) {
- if (currentScreenAdders.isEmpty()) return null;
+ @NotNull
+ public static List<PositionedText> getText(Slot slot) {
+ if (currentScreenAdders.isEmpty()) return List.of();
for (SlotTextAdder adder : currentScreenAdders) {
- Text text = adder.getText(slot);
- if (text != null) return text;
+ List<PositionedText> text = adder.getText(slot);
+ if (!text.isEmpty()) return text;
}
- return null;
+ return List.of();
}
}
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/TextPosition.java b/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/TextPosition.java
new file mode 100644
index 00000000..052b228d
--- /dev/null
+++ b/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/TextPosition.java
@@ -0,0 +1,8 @@
+package de.hysky.skyblocker.skyblock.item.slottext;
+
+public enum TextPosition {
+ TOP_LEFT,
+ TOP_RIGHT,
+ BOTTOM_LEFT,
+ BOTTOM_RIGHT
+}
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 00a96f1a..90aa5d3e 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
@@ -1,12 +1,15 @@
package de.hysky.skyblocker.skyblock.item.slottext.adders;
+import de.hysky.skyblocker.skyblock.item.slottext.PositionedText;
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;
+import org.jetbrains.annotations.NotNull;
+
+import java.util.List;
//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.
@@ -20,18 +23,18 @@ public class CatacombsLevelAdder {
}
@Override
- public @Nullable Text getText(Slot slot) {
+ public @NotNull List<PositionedText> 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);
+ if (lastIndex == -1) return List.of(PositionedText.BOTTOM_LEFT(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);
+ if (!NumberUtils.isDigits(level)) return List.of(); //Sanity check, just in case.
+ return List.of(PositionedText.BOTTOM_RIGHT(Text.literal(level).formatted(Formatting.RED)));
}
default -> {
- return null;
+ return List.of();
}
}
}
@@ -44,15 +47,15 @@ public class CatacombsLevelAdder {
}
@Override
- public @Nullable Text getText(Slot slot) {
+ public @NotNull List<PositionedText> 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);
+ if (!NumberUtils.isDigits(level)) return List.of();
+ return List.of(PositionedText.BOTTOM_LEFT(Text.literal(level).formatted(Formatting.RED)));
}
default -> {
- return null;
+ return List.of();
}
}
}
@@ -65,15 +68,15 @@ public class CatacombsLevelAdder {
}
@Override
- public @Nullable Text getText(Slot slot) {
+ public @NotNull List<PositionedText> 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);
+ if (!NumberUtils.isDigits(level)) return List.of();
+ return List.of(PositionedText.BOTTOM_LEFT(Text.literal(level).formatted(Formatting.RED)));
}
default -> {
- return null;
+ 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 44b12a7e..46be2a7f 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
@@ -1,5 +1,6 @@
package de.hysky.skyblocker.skyblock.item.slottext.adders;
+import de.hysky.skyblocker.skyblock.item.slottext.PositionedText;
import de.hysky.skyblocker.skyblock.item.slottext.SlotTextAdder;
import de.hysky.skyblocker.utils.ItemUtils;
import de.hysky.skyblocker.utils.RomanNumerals;
@@ -8,7 +9,7 @@ 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.Nullable;
+import org.jetbrains.annotations.NotNull;
import java.util.List;
@@ -18,20 +19,20 @@ public class EnchantmentLevelAdder extends SlotTextAdder {
}
@Override
- public @Nullable Text getText(Slot slot) {
+ public @NotNull List<PositionedText> getText(Slot slot) {
final ItemStack itemStack = slot.getStack();
- if (!itemStack.isOf(Items.ENCHANTED_BOOK)) return null;
+ if (!itemStack.isOf(Items.ENCHANTED_BOOK)) return List.of();
String name = itemStack.getName().getString();
if (name.equals("Enchanted Book")) {
List<Text> lore = ItemUtils.getLore(itemStack);
- if (lore.isEmpty()) return null;
+ if (lore.isEmpty()) return List.of();
int level = getEnchantLevelFromString(lore.getFirst().getString());
- if (level == 0) return null;
- return Text.literal(String.valueOf(level)).formatted(Formatting.GREEN);
+ if (level == 0) return List.of();
+ return List.of(PositionedText.BOTTOM_LEFT(Text.literal(String.valueOf(level)).formatted(Formatting.GREEN)));
} else { //In bazaar, the books have the enchantment name in the name
int level = getEnchantLevelFromString(name);
- if (level == 0) return null;
- return Text.literal(String.valueOf(level)).formatted(Formatting.GREEN);
+ if (level == 0) return List.of();
+ return List.of(PositionedText.BOTTOM_LEFT(Text.literal(String.valueOf(level)).formatted(Formatting.GREEN)));
}
}
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 3a27c022..95e6beb8 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
@@ -1,5 +1,6 @@
package de.hysky.skyblocker.skyblock.item.slottext.adders;
+import de.hysky.skyblocker.skyblock.item.slottext.PositionedText;
import de.hysky.skyblocker.skyblock.item.slottext.SlotTextAdder;
import de.hysky.skyblocker.utils.RomanNumerals;
import net.minecraft.item.ItemStack;
@@ -7,7 +8,9 @@ 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.Nullable;
+import org.jetbrains.annotations.NotNull;
+
+import java.util.List;
public class MinionLevelAdder extends SlotTextAdder {
public MinionLevelAdder() {
@@ -15,14 +18,14 @@ public class MinionLevelAdder extends SlotTextAdder {
}
@Override
- public @Nullable Text getText(Slot slot) {
+ public @NotNull List<PositionedText> getText(Slot slot) {
ItemStack itemStack = slot.getStack();
- if (!itemStack.isOf(Items.PLAYER_HEAD)) return null;
+ if (!itemStack.isOf(Items.PLAYER_HEAD)) return List.of();
String name = itemStack.getName().getString();
- if (!name.contains("Minion")) return null;
+ if (!name.contains("Minion")) return List.of();
String romanNumeral = name.substring(name.lastIndexOf(' ') + 1); //+1 because we don't need the space itself
int level = RomanNumerals.romanToDecimal(romanNumeral);
- if (level == 0) return null;
- return Text.literal(String.valueOf(level)).formatted(Formatting.DARK_PURPLE);
+ if (level == 0) return List.of();
+ return List.of(PositionedText.TOP_RIGHT(Text.literal(String.valueOf(level)).formatted(Formatting.DARK_PURPLE)));
}
}
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 c4632d8e..9c3eef08 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
@@ -1,5 +1,6 @@
package de.hysky.skyblocker.skyblock.item.slottext.adders;
+import de.hysky.skyblocker.skyblock.item.slottext.PositionedText;
import de.hysky.skyblocker.skyblock.item.slottext.SlotTextAdder;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
@@ -7,7 +8,9 @@ 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;
+import org.jetbrains.annotations.NotNull;
+
+import java.util.List;
public class PetLevelAdder extends SlotTextAdder {
public PetLevelAdder() {
@@ -15,11 +18,11 @@ public class PetLevelAdder extends SlotTextAdder {
}
@Override
- public @Nullable Text getText(Slot slot) {
+ public @NotNull List<PositionedText> getText(Slot slot) {
ItemStack itemStack = slot.getStack();
- if (!itemStack.isOf(Items.PLAYER_HEAD)) return null;
+ if (!itemStack.isOf(Items.PLAYER_HEAD)) return List.of();
String level = CatacombsLevelAdder.getBracketedLevelFromName(itemStack);
- if (!NumberUtils.isDigits(level)) return null;
- return Text.literal(level).formatted(Formatting.GOLD);
+ if (!NumberUtils.isDigits(level)) return List.of();
+ return List.of(PositionedText.TOP_LEFT(Text.literal(level).formatted(Formatting.GOLD)));
}
}
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 03f9fbd0..b84de4d3 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
@@ -1,11 +1,14 @@
package de.hysky.skyblocker.skyblock.item.slottext.adders;
+import de.hysky.skyblocker.skyblock.item.slottext.PositionedText;
import de.hysky.skyblocker.skyblock.item.slottext.SlotTextAdder;
import de.hysky.skyblocker.utils.RomanNumerals;
import net.minecraft.screen.slot.Slot;
import net.minecraft.text.Text;
import net.minecraft.util.Formatting;
-import org.jetbrains.annotations.Nullable;
+import org.jetbrains.annotations.NotNull;
+
+import java.util.List;
public class SkillLevelAdder extends SlotTextAdder {
public SkillLevelAdder() {
@@ -13,18 +16,18 @@ public class SkillLevelAdder extends SlotTextAdder {
}
@Override
- public @Nullable Text getText(Slot slot) {
+ public @NotNull List<PositionedText> getText(Slot slot) {
switch (slot.id) {
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();
int lastIndex = name.lastIndexOf(' ');
- if (lastIndex == -1) return Text.literal("0").formatted(Formatting.LIGHT_PURPLE); //Skills without any levels don't display any roman numerals. Probably because 0 doesn't exist.
+ if (lastIndex == -1) return List.of(PositionedText.BOTTOM_LEFT(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
- if (!RomanNumerals.isValidRomanNumeral(romanNumeral)) return null;
- return Text.literal(String.valueOf(RomanNumerals.romanToDecimal(romanNumeral))).formatted(Formatting.LIGHT_PURPLE);
+ if (!RomanNumerals.isValidRomanNumeral(romanNumeral)) return List.of();
+ return List.of(PositionedText.BOTTOM_LEFT(Text.literal(String.valueOf(RomanNumerals.romanToDecimal(romanNumeral))).formatted(Formatting.LIGHT_PURPLE)));
}
default -> {
- return null;
+ return List.of();
}
}
}
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 bab88372..f1e9f52c 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
@@ -1,11 +1,12 @@
package de.hysky.skyblocker.skyblock.item.slottext.adders;
+import de.hysky.skyblocker.skyblock.item.slottext.PositionedText;
import de.hysky.skyblocker.skyblock.item.slottext.SlotTextAdder;
import de.hysky.skyblocker.utils.ItemUtils;
import net.minecraft.screen.slot.Slot;
import net.minecraft.text.Text;
import org.apache.commons.lang3.math.NumberUtils;
-import org.jetbrains.annotations.Nullable;
+import org.jetbrains.annotations.NotNull;
import java.util.List;
@@ -15,14 +16,14 @@ public class SkyblockLevelAdder extends SlotTextAdder {
}
@Override
- public @Nullable Text getText(Slot slot) {
- if (slot.getIndex() != 22) return null;
+ public @NotNull List<PositionedText> getText(Slot slot) {
+ if (slot.getIndex() != 22) return List.of();
List<Text> lore = ItemUtils.getLore(slot.getStack());
- if (lore.isEmpty()) return null;
+ if (lore.isEmpty()) return List.of();
List<Text> siblings = lore.getFirst().getSiblings();
- if (siblings.size() < 3) return null;
+ if (siblings.size() < 3) return List.of();
Text levelText = siblings.get(2); //The 3rd child is the level text itself
- if (!NumberUtils.isDigits(levelText.getString())) return null;
- return levelText;
+ if (!NumberUtils.isDigits(levelText.getString())) return List.of();
+ return List.of(PositionedText.BOTTOM_LEFT(levelText));
}
}