From 47f52fbb1fc47d3d3ce855b20c882901219bb67a Mon Sep 17 00:00:00 2001 From: PikaMug <2267126+PikaMug@users.noreply.github.com> Date: Sat, 22 Jan 2022 18:42:06 -0500 Subject: [PATCH] Add filter to suppress misleading errors --- core/pom.xml | 7 ++- .../main/java/me/blackvein/quests/Quests.java | 11 ++-- .../convo/quests/objectives/NpcsPrompt.java | 7 ++- .../quests/logging/QuestsLog4JFilter.java | 57 +++++++++++++++++++ 4 files changed, 74 insertions(+), 8 deletions(-) create mode 100644 core/src/main/java/me/blackvein/quests/logging/QuestsLog4JFilter.java diff --git a/core/pom.xml b/core/pom.xml index 7b46fbfb4..e595e0865 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -160,7 +160,12 @@ org.slf4j slf4j-simple - 1.7.32 + 1.7.33 + + + org.apache.logging.log4j + log4j-core + 2.17.1 me.blackvein.quests diff --git a/core/src/main/java/me/blackvein/quests/Quests.java b/core/src/main/java/me/blackvein/quests/Quests.java index 50078d507..ee77f6441 100644 --- a/core/src/main/java/me/blackvein/quests/Quests.java +++ b/core/src/main/java/me/blackvein/quests/Quests.java @@ -15,14 +15,14 @@ package me.blackvein.quests; import com.codisimus.plugins.phatloots.PhatLootsAPI; import com.gmail.nossr50.datatypes.skills.SkillType; import com.herocraftonline.heroes.characters.classes.HeroClass; -import me.blackvein.quests.actions.IAction; -import me.blackvein.quests.actions.ActionFactory; import me.blackvein.quests.actions.Action; +import me.blackvein.quests.actions.ActionFactory; import me.blackvein.quests.actions.BukkitActionFactory; -import me.blackvein.quests.conditions.Condition; +import me.blackvein.quests.actions.IAction; import me.blackvein.quests.conditions.BukkitConditionFactory; -import me.blackvein.quests.conditions.ICondition; +import me.blackvein.quests.conditions.Condition; import me.blackvein.quests.conditions.ConditionFactory; +import me.blackvein.quests.conditions.ICondition; import me.blackvein.quests.config.ISettings; import me.blackvein.quests.convo.misc.MiscStringPrompt; import me.blackvein.quests.convo.misc.NpcOfferQuestPrompt; @@ -44,6 +44,7 @@ import me.blackvein.quests.listeners.NpcListener; import me.blackvein.quests.listeners.PartiesListener; import me.blackvein.quests.listeners.PlayerListener; import me.blackvein.quests.listeners.UniteListener; +import me.blackvein.quests.logging.QuestsLog4JFilter; import me.blackvein.quests.module.ICustomObjective; import me.blackvein.quests.player.IQuester; import me.blackvein.quests.quests.BukkitQuestFactory; @@ -72,6 +73,7 @@ import net.citizensnpcs.api.CitizensAPI; import net.citizensnpcs.api.npc.NPC; import net.md_5.bungee.api.chat.ClickEvent; import net.md_5.bungee.api.chat.TextComponent; +import org.apache.logging.log4j.LogManager; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.Color; @@ -271,6 +273,7 @@ public class Quests extends JavaPlugin implements QuestsAPI { }); // 12 - Delay loading of Quests, Actions and modules + ((org.apache.logging.log4j.core.Logger) LogManager.getRootLogger()).addFilter(new QuestsLog4JFilter()); delayLoadQuestInfo(); } diff --git a/core/src/main/java/me/blackvein/quests/convo/quests/objectives/NpcsPrompt.java b/core/src/main/java/me/blackvein/quests/convo/quests/objectives/NpcsPrompt.java index 1308cb416..8e5f77560 100644 --- a/core/src/main/java/me/blackvein/quests/convo/quests/objectives/NpcsPrompt.java +++ b/core/src/main/java/me/blackvein/quests/convo/quests/objectives/NpcsPrompt.java @@ -300,9 +300,10 @@ public class NpcsPrompt extends QuestsEditorNumericPrompt { = (List) context.getSessionData(pref + CK.S_DELIVERY_NPCS); if (deliveryNpcs != null) { for (final int i : deliveryNpcs) { - text.append(")\n").append(ChatColor.GRAY).append(" - ").append(ChatColor.AQUA).append(i) - .append(" (").append(plugin.getDependencies().getCitizens().getNPCRegistry() - .getById(i).getName()); + text.append("\n").append(ChatColor.GRAY).append(" - ").append(ChatColor.AQUA).append(i) + .append(ChatColor.GRAY).append(" (").append(ChatColor.AQUA) + .append(plugin.getDependencies().getCitizens().getNPCRegistry() + .getById(i).getName()).append(ChatColor.GRAY).append(")"); } } return text.toString(); diff --git a/core/src/main/java/me/blackvein/quests/logging/QuestsLog4JFilter.java b/core/src/main/java/me/blackvein/quests/logging/QuestsLog4JFilter.java new file mode 100644 index 000000000..deef9c61c --- /dev/null +++ b/core/src/main/java/me/blackvein/quests/logging/QuestsLog4JFilter.java @@ -0,0 +1,57 @@ +package me.blackvein.quests.logging; + +import org.apache.logging.log4j.Level; +import org.apache.logging.log4j.Marker; +import org.apache.logging.log4j.core.LogEvent; +import org.apache.logging.log4j.core.Logger; +import org.apache.logging.log4j.core.filter.AbstractFilter; +import org.apache.logging.log4j.message.Message; + +public class QuestsLog4JFilter extends AbstractFilter { + + private static final long serialVersionUID = -5594073755007974514L; + + /** + * Validates a message and returns the {@link Result} value + * depending on whether the message contains undesirable data. + * + * @param message The message to filter for + * + * @return Result of DENY or NUETRAL + */ + private static Result validateMessage(String message) { + if (message == null) { + return Result.NEUTRAL; + } + // Paper outputs errors when dependencies for module events are missing + return message.contains("Plugin Quests") ? Result.DENY : Result.NEUTRAL; + } + + @Override + public Result filter(LogEvent event) { + if (event == null) { + return Result.NEUTRAL; + } + + return validateMessage(event.getMessage().getFormattedMessage()); + } + + @Override + public Result filter(Logger logger, Level level, Marker marker, Message msg, Throwable t) { + return validateMessage(msg.getFormattedMessage()); + } + + @Override + public Result filter(Logger logger, Level level, Marker marker, String msg, Object... params) { + return validateMessage(msg); + } + + @Override + public Result filter(Logger logger, Level level, Marker marker, Object msg, Throwable t) { + if (msg == null) { + return Result.NEUTRAL; + } + + return validateMessage(msg.toString()); + } +}