aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/de/hysky/skyblocker/skyblock/item/slottext
diff options
context:
space:
mode:
authorRime <81419447+Emirlol@users.noreply.github.com>2024-06-19 18:57:43 +0300
committerKevinthegreat <92656833+kevinthegreat1@users.noreply.github.com>2024-07-22 14:20:35 +0800
commit4c398333b9802a9000cc65d50ae4a2d13f300ca8 (patch)
tree2b2e52431ddfc7610cc0070f5e5abe3c7356a02d /src/main/java/de/hysky/skyblocker/skyblock/item/slottext
parent6541bb6aa43a7141ac259ee34a597891d6a45689 (diff)
downloadSkyblocker-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.java23
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/slottext/SlotTextManager.java19
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;
}