diff --git a/plugin/src/main/java/me/libraryaddict/disguise/commands/libsdisguises/LDReload.java b/plugin/src/main/java/me/libraryaddict/disguise/commands/libsdisguises/LDReload.java index e70ceb3e..609a9266 100644 --- a/plugin/src/main/java/me/libraryaddict/disguise/commands/libsdisguises/LDReload.java +++ b/plugin/src/main/java/me/libraryaddict/disguise/commands/libsdisguises/LDReload.java @@ -1,6 +1,7 @@ package me.libraryaddict.disguise.commands.libsdisguises; import me.libraryaddict.disguise.DisguiseConfig; +import me.libraryaddict.disguise.utilities.parser.DisguisePermissions; import me.libraryaddict.disguise.utilities.sounds.SoundManager; import me.libraryaddict.disguise.utilities.translations.LibsMsg; import org.bukkit.command.CommandSender; @@ -26,6 +27,7 @@ public class LDReload implements LDCommand { public void onCommand(CommandSender sender, String[] args) { DisguiseConfig.loadConfig(); new SoundManager().load(); + DisguisePermissions.onReload(); LibsMsg.RELOADED_CONFIG.send(sender); } diff --git a/plugin/src/main/java/me/libraryaddict/disguise/utilities/parser/DisguiseParser.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/parser/DisguiseParser.java index 5e113401..27873466 100644 --- a/plugin/src/main/java/me/libraryaddict/disguise/utilities/parser/DisguiseParser.java +++ b/plugin/src/main/java/me/libraryaddict/disguise/utilities/parser/DisguiseParser.java @@ -402,7 +402,7 @@ public class DisguiseParser { * Get perms for the node. Returns a hashmap of allowed disguisetypes and their options */ public static DisguisePermissions getPermissions(CommandSender sender, String commandName) { - return new DisguisePermissions(sender, commandName); + return DisguisePermissions.getPermissions(sender, commandName); } private static boolean isInteger(String string) { @@ -600,7 +600,7 @@ public class DisguiseParser { params = DisguiseParser.parsePlaceholders(params, target, target); } - DisguiseParser.callMethods(Bukkit.getConsoleSender(), disguise, new DisguisePermissions(Bukkit.getConsoleSender(), "disguise"), + DisguiseParser.callMethods(Bukkit.getConsoleSender(), disguise, DisguisePermissions.getPermissions(Bukkit.getConsoleSender(), "sender"), new DisguisePerm(disguise.getType()), new ArrayList<>(), params, "Disguise"); } @@ -621,7 +621,8 @@ public class DisguiseParser { } public static Disguise parseDisguise(CommandSender sender, Entity target, String disguise) throws Throwable { - return parseDisguise(sender, target, "disguise", DisguiseUtilities.split(disguise), new DisguisePermissions(Bukkit.getConsoleSender(), "disguise")); + return parseDisguise(sender, target, "disguise", DisguiseUtilities.split(disguise), + DisguisePermissions.getPermissions(Bukkit.getConsoleSender(), "disguise")); } /** diff --git a/plugin/src/main/java/me/libraryaddict/disguise/utilities/parser/DisguisePerm.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/parser/DisguisePerm.java index 684af548..85ff4dbb 100644 --- a/plugin/src/main/java/me/libraryaddict/disguise/utilities/parser/DisguisePerm.java +++ b/plugin/src/main/java/me/libraryaddict/disguise/utilities/parser/DisguisePerm.java @@ -5,6 +5,7 @@ import me.libraryaddict.disguise.disguisetypes.DisguiseType; import me.libraryaddict.disguise.disguisetypes.FlagWatcher; import org.bukkit.entity.EntityType; +import java.util.Locale; import java.util.Objects; /** @@ -14,19 +15,19 @@ public class DisguisePerm { private final DisguiseType disguiseType; private String permName; @Getter - private String regexedName; + private final String regexedName; private boolean customDisguise; public DisguisePerm(DisguiseType disguiseType) { this.disguiseType = disguiseType; - regexedName = toReadable().replaceAll("[ |_]", "").toLowerCase(); + regexedName = toReadable().replaceAll("[ |_]", "").toLowerCase(Locale.ROOT); } public DisguisePerm(DisguiseType disguiseType, String disguisePerm) { - this.disguiseType = disguiseType; + this.disguiseType = disguiseType; permName = disguisePerm; customDisguise = true; - regexedName = toReadable().replaceAll("[ |_]", "").toLowerCase(); + regexedName = toReadable().replaceAll("[ |_]", "").toLowerCase(Locale.ROOT); } public boolean isCustomDisguise() { diff --git a/plugin/src/main/java/me/libraryaddict/disguise/utilities/parser/DisguisePermissions.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/parser/DisguisePermissions.java index d73be8ba..1bddc06f 100644 --- a/plugin/src/main/java/me/libraryaddict/disguise/utilities/parser/DisguisePermissions.java +++ b/plugin/src/main/java/me/libraryaddict/disguise/utilities/parser/DisguisePermissions.java @@ -2,6 +2,7 @@ package me.libraryaddict.disguise.utilities.parser; import me.libraryaddict.disguise.DisguiseConfig; import me.libraryaddict.disguise.disguisetypes.DisguiseType; +import org.bukkit.Bukkit; import org.bukkit.entity.Ageable; import org.bukkit.entity.Animals; import org.bukkit.entity.Monster; @@ -108,6 +109,7 @@ public class DisguisePermissions { * List of PermissionStorage that the permission holder is able to use */ private final List disguises = new ArrayList<>(); + private final static Map CONSOLE_PERMISSIONS = new HashMap<>(); /** * @param permissionHolder The permissions to check @@ -115,6 +117,22 @@ public class DisguisePermissions { */ public DisguisePermissions(Permissible permissionHolder, String commandName) { loadPermissions(permissionHolder, commandName.toLowerCase(Locale.ENGLISH)); + + if (permissionHolder == Bukkit.getConsoleSender()) { + CONSOLE_PERMISSIONS.put(commandName, this); + } + } + + public static DisguisePermissions getPermissions(Permissible permissionHolder, String commandName) { + if (permissionHolder == Bukkit.getConsoleSender() && CONSOLE_PERMISSIONS.containsKey(commandName)) { + return CONSOLE_PERMISSIONS.get(commandName); + } + + return new DisguisePermissions(permissionHolder, commandName); + } + + public static void onReload() { + CONSOLE_PERMISSIONS.clear(); } /**