From 058ff6c1410ec568bb58b2ae9c64ea07b3d0845f Mon Sep 17 00:00:00 2001 From: sky Date: Sun, 26 Apr 2020 15:21:45 +0800 Subject: [PATCH] Update --- .../module/command/TCommandHandler.java | 19 ++++++++++++++- .../module/command/base/BaseCommand.java | 4 ++++ .../module/command/lite/CommandBuilder.java | 23 +++++++++++++++++++ 3 files changed, 45 insertions(+), 1 deletion(-) diff --git a/src/main/scala/io/izzel/taboolib/module/command/TCommandHandler.java b/src/main/scala/io/izzel/taboolib/module/command/TCommandHandler.java index 7eda42e..0683402 100644 --- a/src/main/scala/io/izzel/taboolib/module/command/TCommandHandler.java +++ b/src/main/scala/io/izzel/taboolib/module/command/TCommandHandler.java @@ -2,15 +2,17 @@ package io.izzel.taboolib.module.command; import io.izzel.taboolib.TabooLibAPI; import io.izzel.taboolib.module.command.base.BaseCommand; -import io.izzel.taboolib.module.locale.TLocale; import io.izzel.taboolib.module.command.base.BaseMainCommand; import io.izzel.taboolib.module.inject.TFunction; import io.izzel.taboolib.module.lite.SimpleReflection; +import io.izzel.taboolib.module.locale.TLocale; import io.izzel.taboolib.util.ArrayUtil; import io.izzel.taboolib.util.Files; import io.izzel.taboolib.util.Reflection; import org.bukkit.Bukkit; import org.bukkit.command.*; +import org.bukkit.permissions.Permission; +import org.bukkit.permissions.PermissionDefault; import org.bukkit.plugin.Plugin; import org.bukkit.plugin.SimplePluginManager; @@ -110,6 +112,21 @@ public class TCommandHandler { */ public static BaseMainCommand registerCommand(BaseCommand tCommand, String command, BaseMainCommand baseMainCommand, Plugin plugin) { if (Bukkit.getPluginCommand(command) == null) { + String permission = tCommand.permission(); + if (tCommand.permissionDefault() == PermissionDefault.TRUE || tCommand.permissionDefault() == PermissionDefault.NOT_OP) { + if (permission == null || permission.isEmpty()) { + permission = plugin.getName().toLowerCase() + ".command.use"; + } + if (Bukkit.getPluginManager().getPermission(permission) != null) { + try { + Permission p = new Permission(permission, tCommand.permissionDefault()); + Bukkit.getPluginManager().addPermission(p); + Bukkit.getPluginManager().recalculatePermissionDefaults(p); + } catch (Throwable t) { + t.printStackTrace(); + } + } + } registerPluginCommand( plugin, command, diff --git a/src/main/scala/io/izzel/taboolib/module/command/base/BaseCommand.java b/src/main/scala/io/izzel/taboolib/module/command/base/BaseCommand.java index 9bac631..1085f04 100644 --- a/src/main/scala/io/izzel/taboolib/module/command/base/BaseCommand.java +++ b/src/main/scala/io/izzel/taboolib/module/command/base/BaseCommand.java @@ -1,5 +1,7 @@ package io.izzel.taboolib.module.command.base; +import org.bukkit.permissions.PermissionDefault; + import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @@ -24,4 +26,6 @@ public @interface BaseCommand { String usage() default ""; String[] aliases() default {}; + + PermissionDefault permissionDefault() default PermissionDefault.OP; } \ No newline at end of file diff --git a/src/main/scala/io/izzel/taboolib/module/command/lite/CommandBuilder.java b/src/main/scala/io/izzel/taboolib/module/command/lite/CommandBuilder.java index a19188d..19ccfb5 100644 --- a/src/main/scala/io/izzel/taboolib/module/command/lite/CommandBuilder.java +++ b/src/main/scala/io/izzel/taboolib/module/command/lite/CommandBuilder.java @@ -5,6 +5,9 @@ import io.izzel.taboolib.TabooLib; import io.izzel.taboolib.module.command.TCommandHandler; import io.izzel.taboolib.util.ArrayUtil; import io.izzel.taboolib.util.Ref; +import org.bukkit.Bukkit; +import org.bukkit.permissions.Permission; +import org.bukkit.permissions.PermissionDefault; import org.bukkit.plugin.Plugin; import java.util.ArrayList; @@ -33,6 +36,7 @@ public class CommandBuilder { private boolean forceRegister; private boolean build; private boolean simpleMode; + private PermissionDefault permissionDefault = PermissionDefault.OP; CommandBuilder(String command, Plugin plugin) { this.command = command; @@ -87,6 +91,11 @@ public class CommandBuilder { return this; } + public CommandBuilder permissionDefault(PermissionDefault permissionDefault) { + this.permissionDefault = permissionDefault; + return this; + } + public CommandBuilder execute(CompleterCommand completerCommand) { this.completerCommand = completerCommand; return this; @@ -109,6 +118,20 @@ public class CommandBuilder { if (forceRegister) { TCommandHandler.getKnownCommands().remove(command); } + if (permissionDefault == PermissionDefault.TRUE || permissionDefault == PermissionDefault.NOT_OP) { + if (permission == null) { + permission = plugin.getName().toLowerCase() + ".command.use"; + } + if (Bukkit.getPluginManager().getPermission(permission) != null) { + try { + Permission p = new Permission(permission, permissionDefault); + Bukkit.getPluginManager().addPermission(p); + Bukkit.getPluginManager().recalculatePermissionDefaults(p); + } catch (Throwable t) { + t.printStackTrace(); + } + } + } TCommandHandler.registerPluginCommand( plugin, command,