diff --git a/src/main/java/me/skymc/taboolib/TabooLib.java b/src/main/java/me/skymc/taboolib/TabooLib.java index 57f4dfa..8cb287c 100644 --- a/src/main/java/me/skymc/taboolib/TabooLib.java +++ b/src/main/java/me/skymc/taboolib/TabooLib.java @@ -23,36 +23,94 @@ public class TabooLib { } } + /** + * 获取主类对象,因 Main 名称容易造成混淆所以转移至此 + * + * @return {@link Main} + */ public static Main instance() { return (Main) Main.getInst(); } + /** + * 插件是否依赖于 TabooLib(依赖或软兼容) + * + * @param plugin 插件 + * @return boolean + */ + public static boolean isDependTabooLib(Plugin plugin) { + return plugin.getDescription().getDepend().contains("TabooLib") || plugin.getDescription().getSoftDepend().contains("TabooLib"); + } + + /** + * 是否为 Spigot 核心,因 TabooLib 可在 BungeeCord 上运行所以添加此方法 + * + * @return boolean + */ public static boolean isSpigot() { return spigot; } + /** + * 获取 TabooLib 插件版本 + * + * @return double + */ + public static double getPluginVersion() { + return NumberUtils.getDouble(Main.getInst().getDescription().getVersion()); + } + + /** + * 获取服务端版本 + * + * @return String + */ + public static String getVersion() { + return Bukkit.getServer().getClass().getPackage().getName().replace(".", ",").split(",")[3]; + } + + /** + * 获取服务端版本数字 + * + * @return int + */ + public static int getVersionNumber() { + return getVerint(); + } + + /** + * 重置服务器序列号 + */ + public static void resetServerUID() { + DataUtils.getPluginData("TabooLibrary", null).set("serverUID", UUID.randomUUID().toString()); + } + + /** + * 是否为 debug 模式 + * + * @return boolean + */ public static boolean isDebug() { return Main.getInst().getConfig().getBoolean("DEBUG"); } + /** + * 发送 debug 信息 + * + * @param plugin 插件名 + * @param args 内容 + */ public static void debug(Plugin plugin, String... args) { if (Main.getInst().getConfig().getBoolean("DEBUG")) { Arrays.stream(args).forEach(var -> Bukkit.getConsoleSender().sendMessage(ChatColor.DARK_RED + "[TabooLib - DEBUG][" + plugin.getName() + "] " + ChatColor.RED + var)); } } - public static double getPluginVersion() { - return NumberUtils.getDouble(Main.getInst().getDescription().getVersion()); - } - - public static String getVersion() { - return Bukkit.getServer().getClass().getPackage().getName().replace(".", ",").split(",")[3]; - } - - public static int getVersionNumber() { - return getVerint(); - } - + /** + * 获取服务器序列号 + * + * @return String + */ public static String getServerUID() { if (!DataUtils.getPluginData("TabooLibrary", null).contains("serverUID")) { DataUtils.getPluginData("TabooLibrary", null).set("serverUID", UUID.randomUUID().toString()); @@ -60,10 +118,6 @@ public class TabooLib { return DataUtils.getPluginData("TabooLibrary", null).getString("serverUID"); } - public static void resetServerUID() { - DataUtils.getPluginData("TabooLibrary", null).set("serverUID", UUID.randomUUID().toString()); - } - @Deprecated public static int getVerint() { String version = getVersion(); diff --git a/src/main/java/me/skymc/taboolib/TabooLibLoader.java b/src/main/java/me/skymc/taboolib/TabooLibLoader.java index e753457..57a1176 100644 --- a/src/main/java/me/skymc/taboolib/TabooLibLoader.java +++ b/src/main/java/me/skymc/taboolib/TabooLibLoader.java @@ -34,7 +34,6 @@ class TabooLibLoader { static void register() { registerListener(); - registerCommands(); registerMetrics(); } @@ -96,14 +95,6 @@ class TabooLibLoader { TabooLibDatabase.init(); } - /** - * 载入插件命令 - */ - static void registerCommands() { - Bukkit.getPluginCommand("language2").setExecutor(new Language2Command()); - Bukkit.getPluginCommand("taboolibrarymodule").setExecutor(new TLMCommands()); - } - /** * 载入插件监听 */ diff --git a/src/main/java/me/skymc/taboolib/commands/builder/SimpleCommandBuilder.java b/src/main/java/me/skymc/taboolib/commands/builder/SimpleCommandBuilder.java new file mode 100644 index 0000000..656cb56 --- /dev/null +++ b/src/main/java/me/skymc/taboolib/commands/builder/SimpleCommandBuilder.java @@ -0,0 +1,93 @@ +package me.skymc.taboolib.commands.builder; + +import com.google.common.base.Preconditions; +import me.skymc.taboolib.commands.builder.type.CompleterCommand; +import me.skymc.taboolib.commands.builder.type.CompleterTab; +import me.skymc.taboolib.commands.internal.TCommandHandler; +import me.skymc.taboolib.string.ArrayUtils; +import org.bukkit.Bukkit; +import org.bukkit.command.*; +import org.bukkit.plugin.Plugin; + +import java.util.ArrayList; +import java.util.List; + +/** + * @Author sky + * @Since 2018-08-27 8:42 + * @BuilderLevel 1.0 + */ +public class SimpleCommandBuilder { + + private final String command; + private final Plugin plugin; + private String description; + private String usage; + private List aliases; + private String permission; + private String permissionMessage; + private CompleterCommand completerCommand; + private CompleterTab completerTab; + + SimpleCommandBuilder(String command, Plugin plugin) { + this.command = command; + this.plugin = plugin; + this.description = ""; + this.usage = "/" + command; + this.aliases = new ArrayList<>(); + } + + public static SimpleCommandBuilder create(String command, Plugin plugin) { + return new SimpleCommandBuilder(command, plugin); + } + + public SimpleCommandBuilder description(String description) { + this.description = description; + return this; + } + + public SimpleCommandBuilder usage(String usage) { + this.usage = usage; + return this; + } + + public SimpleCommandBuilder aliases(String... aliases) { + this.aliases = ArrayUtils.asList(aliases); + return this; + } + + public SimpleCommandBuilder permission(String permission) { + this.permission = permission; + return this; + } + + public SimpleCommandBuilder permissionMessage(String permissionMessage) { + this.permissionMessage = permissionMessage; + return this; + } + + public SimpleCommandBuilder execute(CompleterCommand completerCommand) { + this.completerCommand = completerCommand; + return this; + } + + public SimpleCommandBuilder tab(CompleterTab completerTab) { + this.completerTab = completerTab; + return this; + } + + public SimpleCommandBuilder build() { + Preconditions.checkNotNull(completerCommand, "缺少 \"CompleterCommand\" 部分"); + TCommandHandler.registerPluginCommand( + plugin, + command, + description, + usage, + aliases, + permission, + permissionMessage, + (sender, command, s, args) -> completerCommand.execute(sender, args), + (sender, command, s, args) -> completerTab.execute(sender, args)); + return this; + } +} diff --git a/src/main/java/me/skymc/taboolib/commands/builder/type/CompleterCommand.java b/src/main/java/me/skymc/taboolib/commands/builder/type/CompleterCommand.java new file mode 100644 index 0000000..c152b75 --- /dev/null +++ b/src/main/java/me/skymc/taboolib/commands/builder/type/CompleterCommand.java @@ -0,0 +1,14 @@ +package me.skymc.taboolib.commands.builder.type; + +import org.bukkit.command.CommandSender; + +/** + * 为了防止与 CommandExecutor 混淆所以名称改为 CompleterCommand + * + * @author sky + */ +public interface CompleterCommand { + + boolean execute(CommandSender sender, String[] args); + +} \ No newline at end of file diff --git a/src/main/java/me/skymc/taboolib/commands/builder/type/CompleterTab.java b/src/main/java/me/skymc/taboolib/commands/builder/type/CompleterTab.java new file mode 100644 index 0000000..edd6f08 --- /dev/null +++ b/src/main/java/me/skymc/taboolib/commands/builder/type/CompleterTab.java @@ -0,0 +1,16 @@ +package me.skymc.taboolib.commands.builder.type; + +import org.bukkit.command.CommandSender; + +import java.util.List; + +/** + * 为了防止与 TabExecutor 混淆所以名称改为 CompleterTab + * + * @author sky + */ +public interface CompleterTab { + + List execute(CommandSender sender, String[] args); + +} \ No newline at end of file diff --git a/src/main/java/me/skymc/taboolib/commands/internal/TCommandHandler.java b/src/main/java/me/skymc/taboolib/commands/internal/TCommandHandler.java index 16579ae..af86500 100644 --- a/src/main/java/me/skymc/taboolib/commands/internal/TCommandHandler.java +++ b/src/main/java/me/skymc/taboolib/commands/internal/TCommandHandler.java @@ -54,20 +54,20 @@ public class TCommandHandler implements Listener { return registerPluginCommand(plugin, command, "", "/" + command, new ArrayList<>(), null, null, commandExecutor, null); } - public static boolean registerPluginCommand(Plugin plugin, String command, CommandExecutor commandExecutor, TabExecutor tabExecutor) { - return registerPluginCommand(plugin, command, "", "/" + command, new ArrayList<>(), null, null, commandExecutor, tabExecutor); + public static boolean registerPluginCommand(Plugin plugin, String command, CommandExecutor commandExecutor, TabCompleter tabCompleter) { + return registerPluginCommand(plugin, command, "", "/" + command, new ArrayList<>(), null, null, commandExecutor, tabCompleter); } - public static boolean registerPluginCommand(Plugin plugin, String command, String description, CommandExecutor commandExecutor, TabExecutor tabExecutor) { - return registerPluginCommand(plugin, command, description, "/" + command, new ArrayList<>(), null, null, commandExecutor, tabExecutor); + public static boolean registerPluginCommand(Plugin plugin, String command, String description, CommandExecutor commandExecutor, TabCompleter tabCompleter) { + return registerPluginCommand(plugin, command, description, "/" + command, new ArrayList<>(), null, null, commandExecutor, tabCompleter); } - public static boolean registerPluginCommand(Plugin plugin, String command, String description, String usage, CommandExecutor commandExecutor, TabExecutor tabExecutor) { - return registerPluginCommand(plugin, command, description, usage, new ArrayList<>(), null, null, commandExecutor, tabExecutor); + public static boolean registerPluginCommand(Plugin plugin, String command, String description, String usage, CommandExecutor commandExecutor, TabCompleter tabCompleter) { + return registerPluginCommand(plugin, command, description, usage, new ArrayList<>(), null, null, commandExecutor, tabCompleter); } - public static boolean registerPluginCommand(Plugin plugin, String command, String description, String usage, List aliases, CommandExecutor commandExecutor, TabExecutor tabExecutor) { - return registerPluginCommand(plugin, command, description, usage, aliases, null, null, commandExecutor, tabExecutor); + public static boolean registerPluginCommand(Plugin plugin, String command, String description, String usage, List aliases, CommandExecutor commandExecutor, TabCompleter tabCompleter) { + return registerPluginCommand(plugin, command, description, usage, aliases, null, null, commandExecutor, tabCompleter); } /** @@ -81,16 +81,16 @@ public class TCommandHandler implements Listener { * @param permission 权限 * @param permissionMessage 权限提示 * @param commandExecutor 命令执行器 - * @param tabExecutor 补全执行器 + * @param tabCompleter 补全执行器 * @return 注册结果(boolean) */ - public static boolean registerPluginCommand(Plugin plugin, String command, String description, String usage, List aliases, String permission, String permissionMessage, CommandExecutor commandExecutor, TabExecutor tabExecutor) { + public static boolean registerPluginCommand(Plugin plugin, String command, String description, String usage, List aliases, String permission, String permissionMessage, CommandExecutor commandExecutor, TabCompleter tabCompleter) { try { Constructor constructor = PluginCommand.class.getDeclaredConstructor(String.class, Plugin.class); constructor.setAccessible(true); PluginCommand pluginCommand = constructor.newInstance(command, plugin); pluginCommand.setExecutor(commandExecutor); - pluginCommand.setTabCompleter(tabExecutor); + pluginCommand.setTabCompleter(tabCompleter); ReflectionUtils.setValue(pluginCommand, pluginCommand.getClass().getSuperclass(), true, "description", description); ReflectionUtils.setValue(pluginCommand, pluginCommand.getClass().getSuperclass(), true, "usageMessage", usage); ReflectionUtils.setValue(pluginCommand, pluginCommand.getClass().getSuperclass(), true, "aliases", aliases); @@ -134,12 +134,10 @@ public class TCommandHandler implements Listener { */ public static void registerCommands() { for (Plugin plugin : Bukkit.getPluginManager().getPlugins()) { - if (plugin.equals(TabooLib.instance()) || plugin.getDescription().getDepend().contains("TabooLib")) { - try { - registerCommand(plugin); - } catch (Exception e) { - e.printStackTrace(); - } + try { + registerCommand(plugin); + } catch (Exception e) { + e.printStackTrace(); } } } @@ -150,6 +148,9 @@ public class TCommandHandler implements Listener { * @param plugin 插件 */ public static void registerCommand(Plugin plugin) { + if (!(plugin.equals(TabooLib.instance()) || TabooLib.isDependTabooLib(plugin))) { + return; + } for (Class pluginClass : FileUtils.getClasses(plugin)) { if (BaseMainCommand.class.isAssignableFrom(pluginClass) && pluginClass.isAnnotationPresent(TCommand.class)) { TCommand tCommand = (TCommand) pluginClass.getAnnotation(TCommand.class); diff --git a/src/main/java/me/skymc/taboolib/commands/language/Language2Command.java b/src/main/java/me/skymc/taboolib/commands/language/Language2Command.java index f07b808..f21c1f5 100644 --- a/src/main/java/me/skymc/taboolib/commands/language/Language2Command.java +++ b/src/main/java/me/skymc/taboolib/commands/language/Language2Command.java @@ -2,11 +2,12 @@ package me.skymc.taboolib.commands.language; import com.ilummc.tlib.resources.TLocale; import me.skymc.taboolib.Main; +import me.skymc.taboolib.TabooLib; +import me.skymc.taboolib.commands.builder.SimpleCommandBuilder; +import me.skymc.taboolib.object.Instantiable; import me.skymc.taboolib.string.language2.Language2Value; import org.bukkit.Bukkit; import org.bukkit.Material; -import org.bukkit.command.Command; -import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @@ -14,18 +15,23 @@ import org.bukkit.entity.Player; * @author sky * @since 2018年2月13日 下午5:11:01 */ -public class Language2Command implements CommandExecutor { +@Instantiable("Language2Command") +public class Language2Command { - @Override - public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { - if (args.length == 0) { - TLocale.sendTo(sender, "COMMANDS.LANGUAGE2.HELP", label); - } else if ("reload".equalsIgnoreCase(args[0])) { - reload(sender); - } else if ("send".equalsIgnoreCase(args[0])) { - send(sender, args); - } - return true; + public Language2Command() { + SimpleCommandBuilder.create("language2", TabooLib.instance()) + .aliases("lang2") + .permission("taboolib.admin") + .execute((sender, args) -> { + if (args.length == 0) { + TLocale.sendTo(sender, "COMMANDS.LANGUAGE2.HELP", "langauge2"); + } else if ("reload".equalsIgnoreCase(args[0])) { + reload(sender); + } else if ("send".equalsIgnoreCase(args[0])) { + send(sender, args); + } + return true; + }).build(); } private void send(CommandSender sender, String[] args) { diff --git a/src/main/java/me/skymc/taboolib/listener/TListenerHandler.java b/src/main/java/me/skymc/taboolib/listener/TListenerHandler.java index 100e8ba..b46fdf8 100644 --- a/src/main/java/me/skymc/taboolib/listener/TListenerHandler.java +++ b/src/main/java/me/skymc/taboolib/listener/TListenerHandler.java @@ -28,12 +28,10 @@ public class TListenerHandler implements Listener { */ public static void setupListeners() { for (Plugin plugin : Bukkit.getPluginManager().getPlugins()) { - if (plugin.equals(TabooLib.instance()) || plugin.getDescription().getDepend().contains("TabooLib")) { - try { - setupListener(plugin); - } catch (Exception e) { - e.printStackTrace(); - } + try { + setupListener(plugin); + } catch (Exception e) { + e.printStackTrace(); } } } @@ -45,6 +43,9 @@ public class TListenerHandler implements Listener { * @param plugin 插件 */ public static void setupListener(Plugin plugin) { + if (!(plugin.equals(TabooLib.instance()) || TabooLib.isDependTabooLib(plugin))) { + return; + } List classes = FileUtils.getClasses(plugin); for (Class pluginClass : classes) { if (Listener.class.isAssignableFrom(pluginClass) && pluginClass.isAnnotationPresent(TListener.class)) { diff --git a/src/main/java/me/skymc/taboolib/mysql/builder/SQLTable.java b/src/main/java/me/skymc/taboolib/mysql/builder/SQLTable.java index ed2e5f5..22b0b91 100644 --- a/src/main/java/me/skymc/taboolib/mysql/builder/SQLTable.java +++ b/src/main/java/me/skymc/taboolib/mysql/builder/SQLTable.java @@ -5,6 +5,8 @@ import me.skymc.taboolib.mysql.builder.query.RunnableQuery; import me.skymc.taboolib.mysql.builder.query.RunnableUpdate; import me.skymc.taboolib.string.ArrayUtils; +import javax.sql.DataSource; +import java.sql.Connection; import java.util.Arrays; /** @@ -52,6 +54,18 @@ public class SQLTable { return Strings.replaceWithOrder("truncate table `{0}`", tableName); } + public RunnableUpdate executeInsert(String values) { + return executeUpdate("insert into " + tableName + " values(" + values + ")"); + } + + public RunnableQuery executeSelect(String where) { + return executeQuery("select * from " + tableName + " where " + where); + } + + public RunnableUpdate executeUpdate(String where, String update) { + return executeUpdate("update " + tableName + " set " + update + " where " + where); + } + public RunnableUpdate executeUpdate(String query) { return new RunnableUpdate(query); } diff --git a/src/main/java/me/skymc/taboolib/object/InstanceHandler.java b/src/main/java/me/skymc/taboolib/object/InstanceHandler.java new file mode 100644 index 0000000..b07d69f --- /dev/null +++ b/src/main/java/me/skymc/taboolib/object/InstanceHandler.java @@ -0,0 +1,83 @@ +package me.skymc.taboolib.object; + +import com.ilummc.tlib.util.Ref; +import me.skymc.taboolib.TabooLib; +import me.skymc.taboolib.fileutils.FileUtils; +import me.skymc.taboolib.listener.TListener; +import org.bukkit.Bukkit; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.server.PluginDisableEvent; +import org.bukkit.event.server.PluginEnableEvent; +import org.bukkit.plugin.Plugin; + +import java.util.Optional; +import java.util.concurrent.ConcurrentHashMap; + +/** + * @Author sky + * @Since 2018-08-27 10:04 + */ +@TListener +public class InstanceHandler implements Listener { + + private static ConcurrentHashMap instance = new ConcurrentHashMap<>(); + + public InstanceHandler() { + loadInstantiable(); + } + + @EventHandler + public void onEnable(PluginEnableEvent e) { + loadInstantiable(e.getPlugin()); + } + + @EventHandler + public void onDisable(PluginDisableEvent e) { + clear(e.getPlugin()); + } + + public static void clear(Plugin plugin) { + instance.entrySet().stream().filter(entry -> Ref.getCallerPlugin(entry.getValue().getClass()).equals(plugin)).forEach(entry -> instance.remove(entry.getKey())); + } + + public static void loadInstantiable() { + for (Plugin plugin : Bukkit.getPluginManager().getPlugins()) { + try { + loadInstantiable(plugin); + } catch (Exception e) { + e.printStackTrace(); + } + } + } + + public static void loadInstantiable(Plugin plugin) { + if (!(plugin.equals(TabooLib.instance()) || TabooLib.isDependTabooLib(plugin))) { + return; + } + for (Class pluginClass : FileUtils.getClasses(plugin)) { + if (pluginClass.isAnnotationPresent(Instantiable.class)) { + Instantiable instantiable = (Instantiable) pluginClass.getAnnotation(Instantiable.class); + try { + instance.put(instantiable.value(), pluginClass.newInstance()); + } catch (Exception e) { + e.printStackTrace(); + } + } + } + } + + // ********************************* + // + // Getter and Setter + // + // ********************************* + + public static ConcurrentHashMap getInstance() { + return instance; + } + + public static Optional getInstance(String name) { + return Optional.ofNullable(instance.get(name)); + } +} diff --git a/src/main/java/me/skymc/taboolib/object/Instantiable.java b/src/main/java/me/skymc/taboolib/object/Instantiable.java new file mode 100644 index 0000000..fb7e32e --- /dev/null +++ b/src/main/java/me/skymc/taboolib/object/Instantiable.java @@ -0,0 +1,18 @@ +package me.skymc.taboolib.object; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * @Author sky + * @Since 2018-08-27 10:04 + */ +@Target(ElementType.TYPE) +@Retention(RetentionPolicy.RUNTIME) +public @interface Instantiable { + + String value(); + +} diff --git a/src/main/java/me/skymc/tlm/command/TLMCommands.java b/src/main/java/me/skymc/tlm/command/TLMCommands.java index 5ef1819..99b6393 100644 --- a/src/main/java/me/skymc/tlm/command/TLMCommands.java +++ b/src/main/java/me/skymc/tlm/command/TLMCommands.java @@ -1,63 +1,68 @@ package me.skymc.tlm.command; +import me.skymc.taboolib.TabooLib; +import me.skymc.taboolib.commands.builder.SimpleCommandBuilder; +import me.skymc.taboolib.object.Instantiable; import me.skymc.tlm.TLM; import me.skymc.tlm.command.sub.TLMInvCommand; import me.skymc.tlm.command.sub.TLMKitCommand; import me.skymc.tlm.command.sub.TLMListCommand; import me.skymc.tlm.command.sub.TLMReloadCommand; -import org.bukkit.command.Command; -import org.bukkit.command.CommandExecutor; -import org.bukkit.command.CommandSender; /** * @author sky * @since 2018年2月18日 上午12:02:08 */ -public class TLMCommands implements CommandExecutor { +@Instantiable("TLMCommands") +public class TLMCommands { - @Override - public boolean onCommand(CommandSender sender, Command arg1, String arg2, String[] args) { - if (args.length == 0 || "help".equalsIgnoreCase(args[0])) { - if (sender.hasPermission("taboolib.admin")) { - TLM.getInst().getLanguage().get("COMMAND-HELP").send(sender); - } else { - TLM.getInst().getLanguage().get("NOPERMISSION-HELP").send(sender); - } - } + public TLMCommands() { + SimpleCommandBuilder.create("taboolibrarymodule", TabooLib.instance()) + .aliases("tlm") + .permission("tlm.use") + .execute((sender, args) -> { + if (args.length == 0 || "help".equalsIgnoreCase(args[0])) { + if (sender.hasPermission("taboolib.admin")) { + TLM.getInst().getLanguage().get("COMMAND-HELP").send(sender); + } else { + TLM.getInst().getLanguage().get("NOPERMISSION-HELP").send(sender); + } + } - // 重载 - else if ("reload".equalsIgnoreCase(args[0])) { - if (sender.hasPermission("taboolib.admin")) { - new TLMReloadCommand(sender, args); - } else { - TLM.getInst().getLanguage().get("NOPERMISSION-RELOAD").send(sender); - } - } + // 重载 + else if ("reload".equalsIgnoreCase(args[0])) { + if (sender.hasPermission("taboolib.admin")) { + new TLMReloadCommand(sender, args); + } else { + TLM.getInst().getLanguage().get("NOPERMISSION-RELOAD").send(sender); + } + } - // 列出 - else if ("list".equalsIgnoreCase(args[0])) { - if (sender.hasPermission("taboolib.admin")) { - new TLMListCommand(sender, args); - } else { - TLM.getInst().getLanguage().get("NOPERMISSION-LIST").send(sender); - } - } + // 列出 + else if ("list".equalsIgnoreCase(args[0])) { + if (sender.hasPermission("taboolib.admin")) { + new TLMListCommand(sender, args); + } else { + TLM.getInst().getLanguage().get("NOPERMISSION-LIST").send(sender); + } + } - // InventorySave 模块 - else if ("inv".equalsIgnoreCase(args[0])) { - if (sender.hasPermission("taboolib.admin")) { - new TLMInvCommand(sender, args); - } else { - TLM.getInst().getLanguage().get("NOPERMISSION-INV").send(sender); - } - } + // InventorySave 模块 + else if ("inv".equalsIgnoreCase(args[0])) { + if (sender.hasPermission("taboolib.admin")) { + new TLMInvCommand(sender, args); + } else { + TLM.getInst().getLanguage().get("NOPERMISSION-INV").send(sender); + } + } - // Kit 模块 - else if ("kit".equalsIgnoreCase(args[0])) { - new TLMKitCommand(sender, args); - } else { - TLM.getInst().getLanguage().get("COMMAND-ERROR").send(sender); - } - return true; + // Kit 模块 + else if ("kit".equalsIgnoreCase(args[0])) { + new TLMKitCommand(sender, args); + } else { + TLM.getInst().getLanguage().get("COMMAND-ERROR").send(sender); + } + return true; + }).build(); } } diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index c3521d8..611eebb 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -4,12 +4,4 @@ version: ${project.version} author: [lzzelAliz, 坏黑] depend: [Vault] -softdepend: [PlaceholderAPI, Skript, MassiveLag] - -# 两个命令删除预定 -commands: - language2: - aliases: [lang2] - permission: taboolib.admin - taboolibrarymodule: - aliases: [tlm] \ No newline at end of file +softdepend: [PlaceholderAPI, Skript, MassiveLag] \ No newline at end of file