diff --git a/src/main/java/com/extendedclip/deluxemenus/command/subcommand/MetaCommand.java b/src/main/java/com/extendedclip/deluxemenus/command/subcommand/MetaCommand.java index c046d442..631aa206 100644 --- a/src/main/java/com/extendedclip/deluxemenus/command/subcommand/MetaCommand.java +++ b/src/main/java/com/extendedclip/deluxemenus/command/subcommand/MetaCommand.java @@ -33,6 +33,7 @@ public class MetaCommand extends SubCommand { private static final List SUB_COMMANDS = List.of("list", "show", "set", "remove", "add", "subtract", "switch"); + private static final String META_COMMAND = "deluxemenus.meta"; public MetaCommand(@NotNull final DeluxeMenus plugin) { super(plugin); @@ -45,7 +46,7 @@ public MetaCommand(@NotNull final DeluxeMenus plugin) { @Override public void execute(@NotNull final CommandSender sender, @NotNull final List arguments) { - if (!sender.isOp()) { + if (!sender.hasPermission(META_COMMAND)) { plugin.sms(sender, Messages.NO_PERMISSION); return; } @@ -151,7 +152,7 @@ public void execute(@NotNull final CommandSender sender, @NotNull final List onTabComplete(@NotNull final CommandSender sender, @NotNull final List arguments) { - if (!sender.isOp() || !VersionHelper.IS_PDC_VERSION || plugin.getPersistentMetaHandler() == null) { + if (!sender.hasPermission(META_COMMAND) || !VersionHelper.IS_PDC_VERSION || plugin.getPersistentMetaHandler() == null) { return null; } diff --git a/src/main/java/com/extendedclip/deluxemenus/config/DeluxeMenusConfig.java b/src/main/java/com/extendedclip/deluxemenus/config/DeluxeMenusConfig.java index c7a6fbbc..1002a2fc 100644 --- a/src/main/java/com/extendedclip/deluxemenus/config/DeluxeMenusConfig.java +++ b/src/main/java/com/extendedclip/deluxemenus/config/DeluxeMenusConfig.java @@ -564,6 +564,7 @@ public void loadMenu(FileConfiguration c, String key, boolean mainConfig, final builder.parsePlaceholdersInArguments(c.getBoolean(pre + "arguments_support_placeholders", false)); builder.parsePlaceholdersAfterArguments(c.getBoolean(pre + "parse_placeholders_after_arguments", false)); + builder.enableBypassPerm(c.getBoolean(pre + "enable_open_requirements_bypass_permissions", false)); // Don't need to register the menu since it's done in the constructor new Menu(plugin, builder.build(), items, path); diff --git a/src/main/java/com/extendedclip/deluxemenus/menu/Menu.java b/src/main/java/com/extendedclip/deluxemenus/menu/Menu.java index 278681c4..615bedf7 100644 --- a/src/main/java/com/extendedclip/deluxemenus/menu/Menu.java +++ b/src/main/java/com/extendedclip/deluxemenus/menu/Menu.java @@ -234,7 +234,7 @@ private boolean handleOpenRequirements(final @NotNull MenuHolder holder) { return true; } - if (holder.getViewer() != null && this.hasOpenBypassPerm(holder.getViewer())) { + if (holder.getViewer() != null && (this.options.enableBypassPerm() && this.hasOpenBypassPerm(holder.getViewer()))) { return true; } diff --git a/src/main/java/com/extendedclip/deluxemenus/menu/options/MenuOptions.java b/src/main/java/com/extendedclip/deluxemenus/menu/options/MenuOptions.java index 26c5b039..c5c4df0a 100644 --- a/src/main/java/com/extendedclip/deluxemenus/menu/options/MenuOptions.java +++ b/src/main/java/com/extendedclip/deluxemenus/menu/options/MenuOptions.java @@ -20,6 +20,7 @@ public class MenuOptions { private final boolean refresh; private final boolean parsePlaceholdersInArguments; private final boolean parsePlaceholdersAfterArguments; + private final boolean enableBypassPerm; private final List commands; private final boolean registerCommands; @@ -41,6 +42,7 @@ private MenuOptions(final @NotNull MenuOptionsBuilder builder) { this.refresh = builder.refresh; this.parsePlaceholdersInArguments = builder.parsePlaceholdersInArguments; this.parsePlaceholdersAfterArguments = builder.parsePlaceholdersAfterArguments; + this.enableBypassPerm = builder.enableBypassPerm; this.commands = builder.commands; this.registerCommands = builder.registerCommands; @@ -93,6 +95,10 @@ public boolean parsePlaceholdersAfterArguments() { return this.parsePlaceholdersAfterArguments; } + public boolean enableBypassPerm() { + return this.enableBypassPerm; + } + public @NotNull List<@NotNull String> commands() { return this.commands; } @@ -134,6 +140,7 @@ public boolean registerCommands() { .refresh(this.refresh) .parsePlaceholdersInArguments(this.parsePlaceholdersInArguments) .parsePlaceholdersAfterArguments(this.parsePlaceholdersAfterArguments) + .enableBypassPerm(this.enableBypassPerm) .commands(this.commands) .registerCommands(this.registerCommands) .arguments(this.arguments) @@ -155,6 +162,7 @@ public static class MenuOptionsBuilder { private boolean refresh; private boolean parsePlaceholdersInArguments = false; private boolean parsePlaceholdersAfterArguments = false; + private boolean enableBypassPerm = false; private List commands = List.of(); private boolean registerCommands = false; @@ -216,6 +224,11 @@ public MenuOptionsBuilder parsePlaceholdersAfterArguments(final boolean parsePla return this; } + public MenuOptionsBuilder enableBypassPerm(final boolean enableBypassPerm) { + this.enableBypassPerm = enableBypassPerm; + return this; + } + public MenuOptionsBuilder commands(final @NotNull List<@NotNull String> commands) { this.commands = commands; return this;