From 99dd2eb4e024c6b5d6355eef342af63649d9fb08 Mon Sep 17 00:00:00 2001 From: Rime <81419447+Emirlol@users.noreply.github.com> Date: Fri, 21 Jun 2024 07:43:33 +0300 Subject: Rename AbstractContainerMatcher and its extending interfaces to remove the `Abstract` prefix and rename simple implementations with a `Simple` prefix --- .../skyblocker/utils/container/ContainerMatcher.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 src/main/java/de/hysky/skyblocker/utils/container/ContainerMatcher.java (limited to 'src/main/java/de/hysky/skyblocker/utils/container/ContainerMatcher.java') diff --git a/src/main/java/de/hysky/skyblocker/utils/container/ContainerMatcher.java b/src/main/java/de/hysky/skyblocker/utils/container/ContainerMatcher.java new file mode 100644 index 00000000..52418f22 --- /dev/null +++ b/src/main/java/de/hysky/skyblocker/utils/container/ContainerMatcher.java @@ -0,0 +1,17 @@ +package de.hysky.skyblocker.utils.container; + +import net.minecraft.client.gui.screen.ingame.HandledScreen; +import org.jetbrains.annotations.NotNull; + +public interface ContainerMatcher { + /** + * Tests if the given screen should be handled by this matcher. + * @return {@code true} if this matcher should apply to the given screen, {@code false} otherwise + */ + boolean test(@NotNull HandledScreen screen); + + /** + * @return {@code true} if this matcher is enabled, {@code false} otherwise + */ + boolean isEnabled(); +} -- cgit From e316a165d8f7f812afa6d3c9f2f0f576fd1e6f93 Mon Sep 17 00:00:00 2001 From: Rime <81419447+Emirlol@users.noreply.github.com> Date: Wed, 10 Jul 2024 17:37:05 +0300 Subject: Change tooltip manager to allow adding tooltips on non-handled screens --- .../de/hysky/skyblocker/skyblock/item/tooltip/TooltipManager.java | 8 +++----- .../de/hysky/skyblocker/utils/container/ContainerMatcher.java | 4 ++-- .../hysky/skyblocker/utils/container/RegexContainerMatcher.java | 4 ++-- 3 files changed, 7 insertions(+), 9 deletions(-) (limited to 'src/main/java/de/hysky/skyblocker/utils/container/ContainerMatcher.java') diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/TooltipManager.java b/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/TooltipManager.java index e89a1995..ad4e181d 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/TooltipManager.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/TooltipManager.java @@ -4,12 +4,12 @@ import de.hysky.skyblocker.mixins.accessors.HandledScreenAccessor; import de.hysky.skyblocker.skyblock.bazaar.ReorderHelper; import de.hysky.skyblocker.skyblock.chocolatefactory.ChocolateFactorySolver; import de.hysky.skyblocker.skyblock.item.tooltip.adders.*; -import de.hysky.skyblocker.skyblock.item.tooltip.adders.CraftPriceTooltip; import de.hysky.skyblocker.utils.Utils; import de.hysky.skyblocker.utils.container.TooltipAdder; import net.fabricmc.fabric.api.client.item.v1.ItemTooltipCallback; import net.fabricmc.fabric.api.client.screen.v1.ScreenEvents; import net.minecraft.client.MinecraftClient; +import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.gui.screen.ingame.HandledScreen; import net.minecraft.item.ItemStack; import net.minecraft.screen.slot.Slot; @@ -53,14 +53,12 @@ public class TooltipManager { } }); ScreenEvents.AFTER_INIT.register((client, screen, width, height) -> { - if (screen instanceof HandledScreen handledScreen) { - onScreenChange(handledScreen); - } + onScreenChange(screen); ScreenEvents.remove(screen).register(ignored -> currentScreenAdders.clear()); }); } - private static void onScreenChange(HandledScreen screen) { + private static void onScreenChange(Screen screen) { currentScreenAdders.clear(); for (TooltipAdder adder : adders) { if (adder.isEnabled() && adder.test(screen)) { diff --git a/src/main/java/de/hysky/skyblocker/utils/container/ContainerMatcher.java b/src/main/java/de/hysky/skyblocker/utils/container/ContainerMatcher.java index 52418f22..61d3821e 100644 --- a/src/main/java/de/hysky/skyblocker/utils/container/ContainerMatcher.java +++ b/src/main/java/de/hysky/skyblocker/utils/container/ContainerMatcher.java @@ -1,6 +1,6 @@ package de.hysky.skyblocker.utils.container; -import net.minecraft.client.gui.screen.ingame.HandledScreen; +import net.minecraft.client.gui.screen.Screen; import org.jetbrains.annotations.NotNull; public interface ContainerMatcher { @@ -8,7 +8,7 @@ public interface ContainerMatcher { * Tests if the given screen should be handled by this matcher. * @return {@code true} if this matcher should apply to the given screen, {@code false} otherwise */ - boolean test(@NotNull HandledScreen screen); + boolean test(@NotNull Screen screen); /** * @return {@code true} if this matcher is enabled, {@code false} otherwise diff --git a/src/main/java/de/hysky/skyblocker/utils/container/RegexContainerMatcher.java b/src/main/java/de/hysky/skyblocker/utils/container/RegexContainerMatcher.java index 4df0fe1a..4f9d49ae 100644 --- a/src/main/java/de/hysky/skyblocker/utils/container/RegexContainerMatcher.java +++ b/src/main/java/de/hysky/skyblocker/utils/container/RegexContainerMatcher.java @@ -1,7 +1,7 @@ package de.hysky.skyblocker.utils.container; import de.hysky.skyblocker.skyblock.ChestValue; -import net.minecraft.client.gui.screen.ingame.HandledScreen; +import net.minecraft.client.gui.screen.Screen; import org.intellij.lang.annotations.Language; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -26,7 +26,7 @@ public abstract class RegexContainerMatcher implements ContainerMatcher { public String[] groups = null; @Override - public boolean test(@NotNull HandledScreen screen) { + public boolean test(@NotNull Screen screen) { return test(screen.getTitle().getString()); } -- cgit From 14d4abe61f1344f29a9eebb73d6a3d7004dfc2d5 Mon Sep 17 00:00:00 2001 From: Kevinthegreat <92656833+kevinthegreat1@users.noreply.github.com> Date: Mon, 22 Jul 2024 15:46:14 +0800 Subject: Code review part 1 --- .../skyblock/item/slottext/adders/CommunityShopAdder.java | 14 ++++++-------- .../skyblock/item/tooltip/adders/MuseumTooltip.java | 2 +- .../hysky/skyblocker/utils/container/ContainerMatcher.java | 5 ++++- .../hysky/skyblocker/utils/container/ContainerSolver.java | 4 +++- .../hysky/skyblocker/utils/render/gui/ContainerSolver.java | 0 .../utils/render/gui/ContainerSolverManager.java | 0 6 files changed, 14 insertions(+), 11 deletions(-) delete mode 100644 src/main/java/de/hysky/skyblocker/utils/render/gui/ContainerSolver.java delete mode 100644 src/main/java/de/hysky/skyblocker/utils/render/gui/ContainerSolverManager.java (limited to 'src/main/java/de/hysky/skyblocker/utils/container/ContainerMatcher.java') 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 65215b28..4450c0b3 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 @@ -36,26 +36,24 @@ public class CommunityShopAdder extends SimpleSlotTextAdder { } private static List getTextForUpgradesScreen(ItemStack stack, int slotId) { - switch (slotId) { + return 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 - if (!RomanNumerals.isValidRomanNumeral(roman)) return List.of(); + if (!RomanNumerals.isValidRomanNumeral(roman)) yield List.of(); List lore = ItemUtils.getLore(stack); - if (lore.isEmpty()) return List.of(); + if (lore.isEmpty()) yield List.of(); String lastLine = lore.getLast().getString(); - return List.of(SlotText.bottomLeft(switch (lastLine) { + yield List.of(SlotText.bottomLeft(switch (lastLine) { case "Maxed out!" -> Text.literal("Max").withColor(0xfab387); case "Currently upgrading!", "Click to instantly upgrade!" -> Text.literal("⏰").withColor(0xf9e2af).formatted(Formatting.BOLD); 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(); - } - } + default -> List.of(); + }; } } diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/MuseumTooltip.java b/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/MuseumTooltip.java index fcc9bd97..6a53dbdb 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/MuseumTooltip.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/MuseumTooltip.java @@ -20,7 +20,7 @@ public class MuseumTooltip extends SimpleTooltipAdder { @Override public boolean isEnabled() { - return TooltipInfoType.MOTES.isTooltipEnabled(); + return TooltipInfoType.MUSEUM.isTooltipEnabled(); } @Override diff --git a/src/main/java/de/hysky/skyblocker/utils/container/ContainerMatcher.java b/src/main/java/de/hysky/skyblocker/utils/container/ContainerMatcher.java index 61d3821e..159f399e 100644 --- a/src/main/java/de/hysky/skyblocker/utils/container/ContainerMatcher.java +++ b/src/main/java/de/hysky/skyblocker/utils/container/ContainerMatcher.java @@ -3,11 +3,14 @@ package de.hysky.skyblocker.utils.container; import net.minecraft.client.gui.screen.Screen; import org.jetbrains.annotations.NotNull; -public interface ContainerMatcher { +import java.util.function.Predicate; + +public interface ContainerMatcher extends Predicate { /** * Tests if the given screen should be handled by this matcher. * @return {@code true} if this matcher should apply to the given screen, {@code false} otherwise */ + @Override boolean test(@NotNull Screen screen); /** diff --git a/src/main/java/de/hysky/skyblocker/utils/container/ContainerSolver.java b/src/main/java/de/hysky/skyblocker/utils/container/ContainerSolver.java index f3cb400e..c6162049 100644 --- a/src/main/java/de/hysky/skyblocker/utils/container/ContainerSolver.java +++ b/src/main/java/de/hysky/skyblocker/utils/container/ContainerSolver.java @@ -1,6 +1,7 @@ package de.hysky.skyblocker.utils.container; import de.hysky.skyblocker.SkyblockerMod; +import de.hysky.skyblocker.utils.Resettable; import de.hysky.skyblocker.utils.render.gui.ColorHighlight; import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import net.minecraft.client.gui.screen.ingame.GenericContainerScreen; @@ -8,11 +9,12 @@ import net.minecraft.item.ItemStack; import java.util.List; -public interface ContainerSolver extends ContainerMatcher { +public interface ContainerSolver extends ContainerMatcher, Resettable { List getColors(Int2ObjectMap slots); default void start(GenericContainerScreen screen) {} + @Override default void reset() {} default boolean onClickSlot(int slot, ItemStack stack, int screenId) { diff --git a/src/main/java/de/hysky/skyblocker/utils/render/gui/ContainerSolver.java b/src/main/java/de/hysky/skyblocker/utils/render/gui/ContainerSolver.java deleted file mode 100644 index e69de29b..00000000 diff --git a/src/main/java/de/hysky/skyblocker/utils/render/gui/ContainerSolverManager.java b/src/main/java/de/hysky/skyblocker/utils/render/gui/ContainerSolverManager.java deleted file mode 100644 index e69de29b..00000000 -- cgit