From ae11f526faa07a8b8b94351047e640c5b5c0cdec Mon Sep 17 00:00:00 2001 From: Tyler Hancock Date: Thu, 7 Mar 2024 19:34:10 -0700 Subject: [PATCH] Backport "Add a config option that prevents tips from displaying on specific screens." to 1.20.1 This addresses issue #137. This info will now be printed in the log file to help pack makers and players debug this feature. Co-Authored-By: Darkhax <2250798+Darkhax@users.noreply.github.com> --- .../java/net/darkhax/tipsmod/api/TipsAPI.java | 15 +++++++++++++-- .../java/net/darkhax/tipsmod/impl/Config.java | 3 +++ .../tipsmod/impl/resources/TipManager.java | 5 ++++- 3 files changed, 20 insertions(+), 3 deletions(-) diff --git a/common/src/main/java/net/darkhax/tipsmod/api/TipsAPI.java b/common/src/main/java/net/darkhax/tipsmod/api/TipsAPI.java index 57b334a..b382401 100644 --- a/common/src/main/java/net/darkhax/tipsmod/api/TipsAPI.java +++ b/common/src/main/java/net/darkhax/tipsmod/api/TipsAPI.java @@ -13,9 +13,10 @@ import net.minecraft.network.chat.Component; import net.minecraft.network.chat.contents.TranslatableContents; import net.minecraft.resources.ResourceLocation; - import javax.annotation.Nullable; import java.util.HashMap; +import java.util.Collection; +import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Map; @@ -45,7 +46,17 @@ public static void registerTipScreen(Class screenClass) { public static boolean canRenderOnScreen(Screen screen) { - return SCREENS.stream().anyMatch(clazz -> clazz.isInstance(screen)); + return canRenderOnScreen(screen.getClass()); + } + + public static boolean canRenderOnScreen(Class clazz) { + + return SCREENS.contains(clazz) && !TipsModCommon.CONFIG.ignoredScreens.contains(clazz.getCanonicalName()); + } + + public static Collection> getTipsScreens() { + + return Collections.unmodifiableSet(SCREENS); } @Nullable diff --git a/common/src/main/java/net/darkhax/tipsmod/impl/Config.java b/common/src/main/java/net/darkhax/tipsmod/impl/Config.java index c70b189..6a02902 100644 --- a/common/src/main/java/net/darkhax/tipsmod/impl/Config.java +++ b/common/src/main/java/net/darkhax/tipsmod/impl/Config.java @@ -43,6 +43,9 @@ public class Config { @Expose public Component defaultTitle = TipsAPI.DEFAULT_TITLE; + @Expose + public List ignoredScreens = new ArrayList<>(); + public static Config load() { File configFile = Services.PLATFORM.getConfigPath().resolve("tips.json").toFile(); diff --git a/common/src/main/java/net/darkhax/tipsmod/impl/resources/TipManager.java b/common/src/main/java/net/darkhax/tipsmod/impl/resources/TipManager.java index fab9dbd..56838a9 100644 --- a/common/src/main/java/net/darkhax/tipsmod/impl/resources/TipManager.java +++ b/common/src/main/java/net/darkhax/tipsmod/impl/resources/TipManager.java @@ -5,6 +5,7 @@ import com.google.gson.JsonObject; import com.google.gson.JsonParseException; import net.darkhax.bookshelf.api.serialization.Serializers; +import com.mojang.serialization.JsonOps; import net.darkhax.tipsmod.api.TipsAPI; import net.darkhax.tipsmod.api.resources.ITip; import net.darkhax.tipsmod.api.resources.ITipSerializer; @@ -78,6 +79,8 @@ protected void apply(Map map, ResourceManager res } }); Collections.shuffle(this.randomAccess); - Constants.LOG.debug("Loaded {} tips. Took {}ms.", this.loadedTips.size(), (double) (System.nanoTime() - startTime) / 1000000d); + Constants.LOG.info("Loaded {} tips. Took {}ms.", this.loadedTips.size(), (double) (System.nanoTime() - startTime) / 1000000d); + Constants.LOG.info("The following screens have been registered to the tips mod."); + TipsAPI.getTipsScreens().forEach(screen -> Constants.LOG.info("Screen: '{}' Enabled: '{}'", screen.getCanonicalName(), TipsAPI.canRenderOnScreen(screen))); } } \ No newline at end of file