Improved inventory whitelist check & prepare for better MiniMessage support

This commit is contained in:
HaHaWTH 2024-06-03 00:21:03 +08:00
parent 41d04c7604
commit 3e56aacb4e
4 changed files with 30 additions and 5 deletions

View File

@ -835,10 +835,6 @@
<groupId>com.googlecode.json-simple</groupId> <groupId>com.googlecode.json-simple</groupId>
<artifactId>json-simple</artifactId> <artifactId>json-simple</artifactId>
</exclusion> </exclusion>
<exclusion>
<artifactId>bungeecord-chat</artifactId>
<groupId>net.md-5</groupId>
</exclusion>
</exclusions> </exclusions>
</dependency> </dependency>
<!-- Keep in sync with spigot 1.19 --> <!-- Keep in sync with spigot 1.19 -->

View File

@ -495,8 +495,20 @@ public class PlayerListener implements Listener {
return false; return false;
} }
Set<String> whitelist = settings.getProperty(RestrictionSettings.UNRESTRICTED_INVENTORIES); Set<String> whitelist = settings.getProperty(RestrictionSettings.UNRESTRICTED_INVENTORIES);
if (whitelist.isEmpty()) {
return false;
}
//append a string for String whitelist //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) @EventHandler(ignoreCancelled = true, priority = EventPriority.LOWEST)

View File

@ -205,6 +205,10 @@ public final class RestrictionSettings implements SettingsHolder {
public static final Property<Set<String>> UNRESTRICTED_INVENTORIES = public static final Property<Set<String>> UNRESTRICTED_INVENTORIES =
newLowercaseStringSetProperty("settings.unrestrictions.UnrestrictedInventories"); newLowercaseStringSetProperty("settings.unrestrictions.UnrestrictedInventories");
@Comment("Should we check unrestricted inventories strictly? (Original behavior)")
public static final Property<Boolean> STRICT_UNRESTRICTED_INVENTORIES_CHECK =
newProperty("settings.unrestrictions.StrictUnrestrictedInventoriesCheck", true);
private RestrictionSettings() { private RestrictionSettings() {

View File

@ -2,7 +2,9 @@ package fr.xephi.authme.util.message;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.minimessage.MiniMessage; 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.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
import net.md_5.bungee.api.chat.BaseComponent;
public class MiniMessageUtils { public class MiniMessageUtils {
private static final MiniMessage miniMessage = MiniMessage.miniMessage(); private static final MiniMessage miniMessage = MiniMessage.miniMessage();
@ -18,6 +20,17 @@ public class MiniMessageUtils {
return LegacyComponentSerializer.legacyAmpersand().serialize(component); 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() { private MiniMessageUtils() {
} }
} }