diff options
| author | Rime <81419447+Emirlol@users.noreply.github.com> | 2024-06-19 18:57:43 +0300 |
|---|---|---|
| committer | Kevinthegreat <92656833+kevinthegreat1@users.noreply.github.com> | 2024-07-22 14:20:35 +0800 |
| commit | 4c398333b9802a9000cc65d50ae4a2d13f300ca8 (patch) | |
| tree | 2b2e52431ddfc7610cc0070f5e5abe3c7356a02d /src/main/java/de/hysky/skyblocker/skyblock/item/slottext | |
| parent | 6541bb6aa43a7141ac259ee34a597891d6a45689 (diff) | |
| download | Skyblocker-4c398333b9802a9000cc65d50ae4a2d13f300ca8.tar.gz Skyblocker-4c398333b9802a9000cc65d50ae4a2d13f300ca8.tar.bz2 Skyblocker-4c398333b9802a9000cc65d50ae4a2d13f300ca8.zip | |
Refactor container matcher implementations into interfaces
Diffstat (limited to 'src/main/java/de/hysky/skyblocker/skyblock/item/slottext')
| -rw-r--r-- | src/main/java/de/hysky/skyblocker/skyblock/item/slottext/SlotTextAdder.java | 23 | ||||
| -rw-r--r-- | src/main/java/de/hysky/skyblocker/skyblock/item/slottext/SlotTextManager.java | 19 |
2 files changed, 14 insertions, 28 deletions
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 71d9aa30..7ac403df 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 @@ -1,18 +1,18 @@ package de.hysky.skyblocker.skyblock.item.slottext; import de.hysky.skyblocker.config.SkyblockerConfigManager; -import de.hysky.skyblocker.utils.render.gui.AbstractContainerMatcher; -import net.minecraft.screen.slot.Slot; +import de.hysky.skyblocker.utils.container.AbstractSlotTextAdder; +import de.hysky.skyblocker.utils.container.RegexContainerMatcher; import org.intellij.lang.annotations.Language; import org.jetbrains.annotations.NotNull; -import java.util.List; import java.util.regex.Pattern; /** + * Simple implementation of a slot text adder. * Extend this class and add it to {@link SlotTextManager#adders} to add text to any arbitrary slot. */ -public abstract class SlotTextAdder extends AbstractContainerMatcher { +public abstract class SlotTextAdder extends RegexContainerMatcher implements AbstractSlotTextAdder { /** * Utility constructor that will compile the given string into a pattern. * @@ -38,20 +38,7 @@ public abstract class SlotTextAdder extends AbstractContainerMatcher { super(); } - /** - * 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 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. - */ - public abstract @NotNull List<SlotText> getText(Slot slot); - - /** - * Override this method to add conditions to enable or disable this adder. - * @return Whether this adder is enabled. - * @implNote The slot text adders only work while in skyblock, so no need to check for that again. - */ + @Override public boolean isEnabled() { return SkyblockerConfigManager.get().general.itemInfoDisplay.slotText; } 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 aa9bf939..fe38e340 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 @@ -3,8 +3,8 @@ package de.hysky.skyblocker.skyblock.item.slottext; import de.hysky.skyblocker.skyblock.bazaar.BazaarHelper; 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.gui.screen.Screen; import net.minecraft.client.gui.screen.ingame.HandledScreen; import net.minecraft.screen.slot.Slot; import org.jetbrains.annotations.NotNull; @@ -13,7 +13,7 @@ import java.util.ArrayList; import java.util.List; public class SlotTextManager { - private static final SlotTextAdder[] adders = new SlotTextAdder[]{ + private static final AbstractSlotTextAdder[] adders = new AbstractSlotTextAdder[]{ new EssenceShopAdder(), new EnchantmentLevelAdder(), new MinionLevelAdder(), @@ -34,25 +34,24 @@ public class SlotTextManager { new BazaarHelper(), new StatsTuningAdder() }; - private static final ArrayList<SlotTextAdder> currentScreenAdders = new ArrayList<>(); + private static final ArrayList<AbstractSlotTextAdder> currentScreenAdders = new ArrayList<>(); private SlotTextManager() { } public static void init() { ScreenEvents.AFTER_INIT.register((client, screen, width, height) -> { - if (screen instanceof HandledScreen<?> && Utils.isOnSkyblock()) { - onScreenChange(screen); + if (screen instanceof HandledScreen<?> handledScreen && Utils.isOnSkyblock()) { + onScreenChange(handledScreen); ScreenEvents.remove(screen).register(ignored -> currentScreenAdders.clear()); } }); } - private static void onScreenChange(Screen screen) { - final String title = screen.getTitle().getString(); - for (SlotTextAdder adder : adders) { + private static void onScreenChange(HandledScreen<?> screen) { + for (AbstractSlotTextAdder adder : adders) { if (!adder.isEnabled()) continue; - if (adder.titlePattern == null || adder.titlePattern.matcher(title).find()) { + if (adder.test(screen)) { currentScreenAdders.add(adder); } } @@ -68,7 +67,7 @@ public class SlotTextManager { @NotNull public static List<SlotText> getText(Slot slot) { if (currentScreenAdders.isEmpty()) return List.of(); - for (SlotTextAdder adder : currentScreenAdders) { + for (AbstractSlotTextAdder adder : currentScreenAdders) { List<SlotText> text = adder.getText(slot); if (!text.isEmpty()) return text; } |
