From eb492044918512df0dec2ac15169a37bd593e8c4 Mon Sep 17 00:00:00 2001 From: Rime <81419447+Emirlol@users.noreply.github.com> Date: Sat, 16 Nov 2024 22:37:11 +0300 Subject: Fix slot text not rendering when multiple adders add to same slot (#1046) --- .../skyblocker/skyblock/item/slottext/SlotTextManager.java | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'src/main/java') 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 da1dc6fe..a34b873a 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 @@ -9,6 +9,7 @@ import de.hysky.skyblocker.skyblock.item.slottext.adders.*; import de.hysky.skyblocker.skyblock.profileviewer.ProfileViewerScreen; import de.hysky.skyblocker.utils.Utils; import de.hysky.skyblocker.utils.container.SlotTextAdder; +import it.unimi.dsi.fastutil.objects.ObjectArrayList; import net.fabricmc.fabric.api.client.keybinding.v1.KeyBindingHelper; import net.fabricmc.fabric.api.client.screen.v1.ScreenEvents; import net.fabricmc.fabric.api.client.screen.v1.ScreenKeyboardEvents; @@ -93,17 +94,17 @@ public class SlotTextManager { * The returned text is rendered on top of the slot. The text will be scaled if it doesn't fit in the slot, * but 3 characters should be seen as the maximum to keep it readable and in place as it tends to move around when scaled. * - * @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. + * @implNote The order of the adders remains the same as they were added to the {@link SlotTextManager#adders} array. + * It is the implementors' duty to ensure they do not add slot text to the same location as other adders on the same slot. */ @NotNull public static List getText(@Nullable Slot slot, @NotNull ItemStack stack, int slotId) { - if (currentScreenAdders.isEmpty() || !isEnabled()) return List.of(); + List text = new ObjectArrayList<>(); + if (currentScreenAdders.isEmpty() || !isEnabled()) return text; for (SlotTextAdder adder : currentScreenAdders) { - List text = adder.getText(slot, stack, slotId); - if (!text.isEmpty()) return text; + text.addAll(adder.getText(slot, stack, slotId)); } - return List.of(); + return text; } public static void renderSlotText(DrawContext context, TextRenderer textRenderer, @NotNull Slot slot) { -- cgit