From 3e56aacb4e340a646d8a97a28c6430622ed1e451 Mon Sep 17 00:00:00 2001
From: HaHaWTH <102713261+HaHaWTH@users.noreply.github.com>
Date: Mon, 3 Jun 2024 00:21:03 +0800
Subject: [PATCH] Improved inventory whitelist check & prepare for better
MiniMessage support
---
pom.xml | 4 ----
.../fr/xephi/authme/listener/PlayerListener.java | 14 +++++++++++++-
.../settings/properties/RestrictionSettings.java | 4 ++++
.../authme/util/message/MiniMessageUtils.java | 13 +++++++++++++
4 files changed, 30 insertions(+), 5 deletions(-)
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() {
}
}