diff --git a/pom.xml b/pom.xml index 7bf92c8f..5e8bca1e 100644 --- a/pom.xml +++ b/pom.xml @@ -835,10 +835,6 @@ com.googlecode.json-simple json-simple - - bungeecord-chat - net.md-5 - diff --git a/src/main/java/fr/xephi/authme/listener/PlayerListener.java b/src/main/java/fr/xephi/authme/listener/PlayerListener.java index 41739fd8..e435b9c2 100644 --- a/src/main/java/fr/xephi/authme/listener/PlayerListener.java +++ b/src/main/java/fr/xephi/authme/listener/PlayerListener.java @@ -495,8 +495,20 @@ public class PlayerListener implements Listener { return false; } Set whitelist = settings.getProperty(RestrictionSettings.UNRESTRICTED_INVENTORIES); + if (whitelist.isEmpty()) { + return false; + } //append a string for String whitelist - return whitelist.contains(ChatColor.stripColor(inventory.getTitle()).toLowerCase(Locale.ROOT)); + String invName = ChatColor.stripColor(inventory.getTitle()).toLowerCase(Locale.ROOT); + if (settings.getProperty(RestrictionSettings.STRICT_UNRESTRICTED_INVENTORIES_CHECK)) { + return whitelist.contains(invName); + } + for (String wl : whitelist) { + if (invName.contains(wl)) { + return true; + } + } + return false; } @EventHandler(ignoreCancelled = true, priority = EventPriority.LOWEST) diff --git a/src/main/java/fr/xephi/authme/settings/properties/RestrictionSettings.java b/src/main/java/fr/xephi/authme/settings/properties/RestrictionSettings.java index b5c0fce7..1fc8341f 100644 --- a/src/main/java/fr/xephi/authme/settings/properties/RestrictionSettings.java +++ b/src/main/java/fr/xephi/authme/settings/properties/RestrictionSettings.java @@ -205,6 +205,10 @@ public final class RestrictionSettings implements SettingsHolder { public static final Property> UNRESTRICTED_INVENTORIES = newLowercaseStringSetProperty("settings.unrestrictions.UnrestrictedInventories"); + @Comment("Should we check unrestricted inventories strictly? (Original behavior)") + public static final Property STRICT_UNRESTRICTED_INVENTORIES_CHECK = + newProperty("settings.unrestrictions.StrictUnrestrictedInventoriesCheck", true); + private RestrictionSettings() { diff --git a/src/main/java/fr/xephi/authme/util/message/MiniMessageUtils.java b/src/main/java/fr/xephi/authme/util/message/MiniMessageUtils.java index c8f59afd..5d7e6216 100644 --- a/src/main/java/fr/xephi/authme/util/message/MiniMessageUtils.java +++ b/src/main/java/fr/xephi/authme/util/message/MiniMessageUtils.java @@ -2,7 +2,9 @@ package fr.xephi.authme.util.message; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.MiniMessage; +import net.kyori.adventure.text.serializer.bungeecord.BungeeComponentSerializer; import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer; +import net.md_5.bungee.api.chat.BaseComponent; public class MiniMessageUtils { private static final MiniMessage miniMessage = MiniMessage.miniMessage(); @@ -18,6 +20,17 @@ public class MiniMessageUtils { return LegacyComponentSerializer.legacyAmpersand().serialize(component); } + /** + * Parse a MiniMessage string into a BaseComponent. + * + * @param message The message to parse. + * @return The parsed message. + */ + public static BaseComponent[] parseMiniMessageToBaseComponent(String message) { + Component component = miniMessage.deserialize(message); + return BungeeComponentSerializer.legacy().serialize(component); + } + private MiniMessageUtils() { } }