From 24a9b586c498f90be39c785940e9c1912d939bba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=9D=8F=E9=BB=91?= Date: Sun, 25 Nov 2018 18:16:21 +0800 Subject: [PATCH] + fixed TInject + fixed SimpleCommandBuilder --- .../me/skymc/taboolib/TabooLibLoader.java | 12 ++- .../builder/SimpleCommandBuilder.java | 76 +++++++++++++++++-- .../taboolib/common/inject/TInjectLoader.java | 16 +++- 3 files changed, 91 insertions(+), 13 deletions(-) diff --git a/src/main/java/me/skymc/taboolib/TabooLibLoader.java b/src/main/java/me/skymc/taboolib/TabooLibLoader.java index 3598311..6f6cda6 100644 --- a/src/main/java/me/skymc/taboolib/TabooLibLoader.java +++ b/src/main/java/me/skymc/taboolib/TabooLibLoader.java @@ -209,7 +209,9 @@ public class TabooLibLoader implements Listener { loaders.forEach(loader -> { try { loader.preLoad(plugin, loadClass); - } catch (Throwable ignored) { + } catch (NoClassDefFoundError ignore) { + } catch (Throwable e) { + e.printStackTrace(); } }); } @@ -218,7 +220,9 @@ public class TabooLibLoader implements Listener { loaders.forEach(loader -> { try { loader.postLoad(plugin, loadClass); - } catch (Throwable ignored) { + } catch (NoClassDefFoundError ignore) { + } catch (Throwable e) { + e.printStackTrace(); } }); } @@ -227,7 +231,9 @@ public class TabooLibLoader implements Listener { loaders.forEach(loader -> { try { loader.unload(plugin, loadClass); - } catch (Throwable ignored) { + } catch (NoClassDefFoundError ignore) { + } catch (Throwable e) { + e.printStackTrace(); } }); } diff --git a/src/main/java/me/skymc/taboolib/commands/builder/SimpleCommandBuilder.java b/src/main/java/me/skymc/taboolib/commands/builder/SimpleCommandBuilder.java index 76438ad..658d2b7 100644 --- a/src/main/java/me/skymc/taboolib/commands/builder/SimpleCommandBuilder.java +++ b/src/main/java/me/skymc/taboolib/commands/builder/SimpleCommandBuilder.java @@ -20,8 +20,8 @@ public class SimpleCommandBuilder { public static final CompleterTab EMPTY_COMPLETER_TAB = ((sender, args) -> new ArrayList<>()); public static final CompleterCommand EMPTY_COMPLETER_COMMAND = ((sender, args) -> false); - private final String command; - private final Plugin plugin; + private String command; + private Plugin plugin; private String description; private String usage; private List aliases; @@ -34,8 +34,6 @@ public class SimpleCommandBuilder { private boolean build; SimpleCommandBuilder(String command, Plugin plugin) { - Preconditions.checkNotNull(command, "command cannot not be null"); - Preconditions.checkNotNull(plugin, "plugin cannot not be null"); this.command = command; this.plugin = plugin; this.description = ""; @@ -49,6 +47,16 @@ public class SimpleCommandBuilder { return new SimpleCommandBuilder(command.toLowerCase(), plugin); } + public SimpleCommandBuilder command(String command) { + this.command = command; + return this; + } + + public SimpleCommandBuilder plugin(Plugin plugin) { + this.plugin = plugin; + return this; + } + public SimpleCommandBuilder description(String description) { this.description = description; return this; @@ -94,11 +102,9 @@ public class SimpleCommandBuilder { return this; } - public boolean isBuild() { - return build; - } - public SimpleCommandBuilder build() { + Preconditions.checkNotNull(plugin, "缺少 \"plugin\" 部分"); + Preconditions.checkNotNull(command, "缺少 \"command\" 部分"); Preconditions.checkNotNull(completerCommand, "缺少 \"CompleterCommand\" 部分"); Preconditions.checkNotNull(completerTab, "缺少 \"CompleterTab\" 部分"); if (forceRegister) { @@ -118,4 +124,58 @@ public class SimpleCommandBuilder { build = true; return this; } + + // ********************************* + // + // Getter and Setter + // + // ********************************* + + public String getCommand() { + return command; + } + + public Plugin getPlugin() { + return plugin; + } + + public String getDescription() { + return description; + } + + public String getUsage() { + return usage; + } + + public List getAliases() { + return aliases; + } + + public String getPermission() { + return permission; + } + + public String getPermissionMessage() { + return permissionMessage; + } + + public CompleterTab getCompleterTab() { + return completerTab; + } + + public CompleterCommand getCompleterCommand() { + return completerCommand; + } + + public boolean isSilence() { + return silence; + } + + public boolean isForceRegister() { + return forceRegister; + } + + public boolean isBuild() { + return build; + } } diff --git a/src/main/java/me/skymc/taboolib/common/inject/TInjectLoader.java b/src/main/java/me/skymc/taboolib/common/inject/TInjectLoader.java index 1d63581..802de72 100644 --- a/src/main/java/me/skymc/taboolib/common/inject/TInjectLoader.java +++ b/src/main/java/me/skymc/taboolib/common/inject/TInjectLoader.java @@ -2,6 +2,7 @@ package me.skymc.taboolib.common.inject; import com.google.common.collect.Maps; import com.ilummc.tlib.logger.TLogger; +import me.skymc.taboolib.TabooLib; import me.skymc.taboolib.TabooLibLoader; import me.skymc.taboolib.commands.builder.SimpleCommandBuilder; import me.skymc.taboolib.common.configuration.TConfiguration; @@ -65,6 +66,9 @@ public class TInjectLoader implements TabooLibLoader.Loader { if (builder.isBuild()) { TLogger.getGlobalLogger().error("Command was registered. (" + field.getType().getName() + ")"); } else { + if (builder.getPlugin() == null) { + builder.plugin(plugin); + } builder.build(); } } catch (Exception e) { @@ -88,8 +92,12 @@ public class TInjectLoader implements TabooLibLoader.Loader { try { declaredField.setAccessible(true); injectTypes.get(Plugin.class).run(plugin, declaredField, annotation.value()); - } catch (Exception e) { + TabooLib.debug(declaredField.getName() + " injected. (" + declaredField.getType().getName() + ")"); + } catch (Throwable e) { TLogger.getGlobalLogger().error(declaredField.getName() + " inject failed: " + e.getMessage() + " (" + declaredField.getType().getName() + ")"); + if (e.getMessage() == null) { + e.printStackTrace(); + } } } } @@ -114,8 +122,12 @@ public class TInjectLoader implements TabooLibLoader.Loader { try { declaredField.setAccessible(true); tInjectTask.run(plugin, declaredField, annotation.value()); - } catch (Exception e) { + TabooLib.debug(declaredField.getName() + " injected. (" + declaredField.getType().getName() + ")"); + } catch (Throwable e) { TLogger.getGlobalLogger().error(declaredField.getName() + " inject failed: " + e.getMessage() + " (" + declaredField.getType().getName() + ")"); + if (e.getMessage() == null) { + e.printStackTrace(); + } } } }