diff --git a/src/main/java/buttondevteam/chat/PluginMain.java b/src/main/java/buttondevteam/chat/PluginMain.java
index 80a59d2..9e3d783 100644
--- a/src/main/java/buttondevteam/chat/PluginMain.java
+++ b/src/main/java/buttondevteam/chat/PluginMain.java
@@ -16,7 +16,9 @@ import org.htmlcleaner.HtmlCleaner;
import org.htmlcleaner.TagNode;
import buttondevteam.chat.commands.CommandCaller;
+import buttondevteam.chat.commands.YeehawCommand;
import buttondevteam.lib.TBMCCoreAPI;
+import buttondevteam.lib.chat.TBMCChatAPI;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
@@ -66,7 +68,7 @@ public class PluginMain extends JavaPlugin { // Translated to Java: 2015.07.15.
Instance = this;
getServer().getPluginManager().registerEvents(new PlayerListener(), this);
- CommandCaller.RegisterChatCommands(this);
+ TBMCChatAPI.AddCommands(this, YeehawCommand.class);
Console = this.getServer().getConsoleSender();
LoadFiles(false);
@@ -101,6 +103,7 @@ public class PluginMain extends JavaPlugin { // Translated to Java: 2015.07.15.
};
t = new Thread(r);
t.start();
+ Bukkit.getScheduler().runTaskLater(this, () -> CommandCaller.RegisterCommands(), 0);
}
public Boolean stop = false;
diff --git a/src/main/java/buttondevteam/chat/TBMCChatAPI.java b/src/main/java/buttondevteam/chat/TBMCChatAPI.java
deleted file mode 100644
index bbb1e2b..0000000
--- a/src/main/java/buttondevteam/chat/TBMCChatAPI.java
+++ /dev/null
@@ -1,56 +0,0 @@
-package buttondevteam.chat;
-
-import org.bukkit.plugin.java.JavaPlugin;
-
-import buttondevteam.chat.commands.CommandCaller;
-import buttondevteam.chat.commands.TBMCCommandBase;
-import buttondevteam.chat.commands.ucmds.admin.PlayerInfoCommand;
-
-public class TBMCChatAPI {
-
- /**
- *
- * This method adds a plugin's commands to help and sets their executor.
- *
- *
- * The command must be registered in the caller plugin's plugin.yml.
- * Otherwise the plugin will output a messsage to console.
- *
- *
- * @param plugin
- * The caller plugin
- * @param acmdclass
- * A command's class to get the package name for commands. The
- * provided class's package and subpackages are scanned for
- * commands.
- */
- public void AddCommands(JavaPlugin plugin, Class extends TBMCCommandBase> acmdclass) {
- CommandCaller.AddCommands(plugin, acmdclass); // TODO: Make it scan for all "buttondevteam" packages
- }
-
- /**
- *
- * Add player information for {@link PlayerInfoCommand}. Only mods can see
- * the given information.
- *
- *
- * @param player
- * @param infoline
- */
- public void AddPlayerInfoForMods(ChatPlayer player, String infoline) {
- // TODO
- }
-
- /**
- *
- * Add player information for hover text at {@link ChatProcessing}. Every
- * online player can see the given information.
- *
- *
- * @param player
- * @param infoline
- */
- public void AddPlayerInfoForHover(ChatPlayer player, String infoline) {
- // TODO
- }
-}
diff --git a/src/main/java/buttondevteam/chat/commands/ChatonlyCommand.java b/src/main/java/buttondevteam/chat/commands/ChatonlyCommand.java
index 30e3d7f..0536ef6 100644
--- a/src/main/java/buttondevteam/chat/commands/ChatonlyCommand.java
+++ b/src/main/java/buttondevteam/chat/commands/ChatonlyCommand.java
@@ -5,6 +5,7 @@ import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import buttondevteam.chat.ChatPlayer;
+import buttondevteam.lib.chat.TBMCCommandBase;
public final class ChatonlyCommand extends TBMCCommandBase {
diff --git a/src/main/java/buttondevteam/chat/commands/CommandCaller.java b/src/main/java/buttondevteam/chat/commands/CommandCaller.java
index 2bb04af..72ba5fb 100644
--- a/src/main/java/buttondevteam/chat/commands/CommandCaller.java
+++ b/src/main/java/buttondevteam/chat/commands/CommandCaller.java
@@ -1,11 +1,7 @@
package buttondevteam.chat.commands;
-import java.lang.reflect.Modifier;
import java.util.ArrayList;
import java.util.Arrays;
-import java.util.HashMap;
-import java.util.Set;
-
import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
@@ -13,58 +9,29 @@ import org.bukkit.command.CommandSender;
import org.bukkit.command.PluginCommand;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
-import org.reflections.Reflections;
-import org.reflections.scanners.SubTypesScanner;
-import org.reflections.util.ClasspathHelper;
-import org.reflections.util.ConfigurationBuilder;
-
import buttondevteam.chat.PluginMain;
import buttondevteam.discordplugin.TBMCDiscordAPI;
+import buttondevteam.lib.chat.TBMCChatAPI;
+import buttondevteam.lib.chat.TBMCCommandBase;
public class CommandCaller implements CommandExecutor {
private CommandCaller() {
}
- private static HashMap commands = new HashMap();
-
- public static HashMap GetCommands() {
- return commands;
- }
-
private static CommandCaller instance;
- public static void RegisterChatCommands(PluginMain plugin) {
- AddCommands(plugin, TBMCCommandBase.class);
- }
-
- public static void AddCommands(JavaPlugin plugin, Class extends TBMCCommandBase> acmdclass) {
- plugin.getLogger().info("Registering commands for " + plugin.getName());
+ public static void RegisterCommands() {
if (instance == null)
instance = new CommandCaller();
- Reflections rf = new Reflections(
- new ConfigurationBuilder().setUrls(ClasspathHelper.forClassLoader(plugin.getClass().getClassLoader()))
- .addClassLoader(plugin.getClass().getClassLoader()).addScanners(new SubTypesScanner())
- .filterInputsBy((String pkg) -> pkg.contains(acmdclass.getPackage().getName())));
- Set> cmds = rf.getSubTypesOf(TBMCCommandBase.class);
- for (Class extends TBMCCommandBase> cmd : cmds) {
- try {
- if (Modifier.isAbstract(cmd.getModifiers()))
- continue;
- TBMCCommandBase c = cmd.newInstance();
- commands.put(c.GetCommandPath(), c);
- if (!c.GetCommandPath().contains("/")) // Top-level command
- {
- PluginCommand pc = plugin.getCommand(c.GetCommandPath());
- if (pc == null)
- new Exception("Can't find top-level command: " + c.GetCommandPath()).printStackTrace();
- else
- pc.setExecutor(instance);
- }
- } catch (InstantiationException e) {
- e.printStackTrace();
- } catch (IllegalAccessException e) {
- e.printStackTrace();
+ for (TBMCCommandBase c : TBMCChatAPI.GetCommands().values()) {
+ if (!c.GetCommandPath().contains("/")) // Top-level command
+ {
+ PluginCommand pc = ((JavaPlugin) c.getPlugin()).getCommand(c.GetCommandPath());
+ if (pc == null)
+ new Exception("Can't find top-level command: " + c.GetCommandPath()).printStackTrace();
+ else
+ pc.setExecutor(instance);
}
}
}
@@ -74,12 +41,12 @@ public class CommandCaller implements CommandExecutor {
String path = command.getName();
for (String arg : args)
path += "/" + arg;
- TBMCCommandBase cmd = commands.get(path);
+ TBMCCommandBase cmd = TBMCChatAPI.GetCommands().get(path);
int argc = 0;
while (cmd == null && path.contains("/")) {
path = path.substring(0, path.lastIndexOf('/'));
argc++;
- cmd = commands.get(path);
+ cmd = TBMCChatAPI.GetCommands().get(path);
}
if (cmd == null) {
sender.sendMessage("§cInternal error: Command not registered to CommandCaller");
@@ -109,7 +76,7 @@ public class CommandCaller implements CommandExecutor {
public static String[] GetSubCommands(TBMCCommandBase command) {
ArrayList cmds = new ArrayList();
cmds.add("§6---- Subcommands ----");
- for (TBMCCommandBase cmd : CommandCaller.GetCommands().values()) {
+ for (TBMCCommandBase cmd : TBMCChatAPI.GetCommands().values()) {
if (cmd.GetCommandPath().startsWith(command.GetCommandPath() + "/")) {
int ind = cmd.GetCommandPath().indexOf('/', command.GetCommandPath().length() + 2);
if (ind >= 0)
diff --git a/src/main/java/buttondevteam/chat/commands/MWikiCommand.java b/src/main/java/buttondevteam/chat/commands/MWikiCommand.java
index 8139889..49406d7 100644
--- a/src/main/java/buttondevteam/chat/commands/MWikiCommand.java
+++ b/src/main/java/buttondevteam/chat/commands/MWikiCommand.java
@@ -2,6 +2,8 @@ package buttondevteam.chat.commands;
import org.bukkit.command.CommandSender;
+import buttondevteam.lib.chat.TBMCCommandBase;
+
public class MWikiCommand extends TBMCCommandBase {
@Override
diff --git a/src/main/java/buttondevteam/chat/commands/OOCCommand.java b/src/main/java/buttondevteam/chat/commands/OOCCommand.java
index d3292ba..0950427 100644
--- a/src/main/java/buttondevteam/chat/commands/OOCCommand.java
+++ b/src/main/java/buttondevteam/chat/commands/OOCCommand.java
@@ -4,6 +4,7 @@ import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import buttondevteam.chat.ChatPlayer;
+import buttondevteam.lib.chat.TBMCCommandBase;
public final class OOCCommand extends TBMCCommandBase {
diff --git a/src/main/java/buttondevteam/chat/commands/TBMCCommandBase.java b/src/main/java/buttondevteam/chat/commands/TBMCCommandBase.java
deleted file mode 100644
index a6040b9..0000000
--- a/src/main/java/buttondevteam/chat/commands/TBMCCommandBase.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package buttondevteam.chat.commands;
-
-import org.bukkit.command.CommandSender;
-
-public abstract class TBMCCommandBase {
-
- public TBMCCommandBase() {
- }
-
- public abstract String[] GetHelpText(String alias);
-
- public abstract boolean OnCommand(CommandSender sender, String alias, String[] args);
-
- public abstract String GetCommandPath();
-
- public abstract boolean GetPlayerOnly();
-
- public abstract boolean GetModOnly();
-}
diff --git a/src/main/java/buttondevteam/chat/commands/UnlolCommand.java b/src/main/java/buttondevteam/chat/commands/UnlolCommand.java
index 28df0c3..fa79fd2 100644
--- a/src/main/java/buttondevteam/chat/commands/UnlolCommand.java
+++ b/src/main/java/buttondevteam/chat/commands/UnlolCommand.java
@@ -7,6 +7,7 @@ import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
import buttondevteam.chat.PluginMain;
+import buttondevteam.lib.chat.TBMCCommandBase;
public final class UnlolCommand extends TBMCCommandBase {
diff --git a/src/main/java/buttondevteam/chat/commands/YeehawCommand.java b/src/main/java/buttondevteam/chat/commands/YeehawCommand.java
index 7a32336..2abecee 100644
--- a/src/main/java/buttondevteam/chat/commands/YeehawCommand.java
+++ b/src/main/java/buttondevteam/chat/commands/YeehawCommand.java
@@ -4,6 +4,7 @@ import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import buttondevteam.chat.PluginMain;
+import buttondevteam.lib.chat.TBMCCommandBase;
public class YeehawCommand extends TBMCCommandBase {
diff --git a/src/main/java/buttondevteam/chat/commands/appendtext/AppendTextCommandBase.java b/src/main/java/buttondevteam/chat/commands/appendtext/AppendTextCommandBase.java
index 4929278..497058c 100644
--- a/src/main/java/buttondevteam/chat/commands/appendtext/AppendTextCommandBase.java
+++ b/src/main/java/buttondevteam/chat/commands/appendtext/AppendTextCommandBase.java
@@ -3,7 +3,7 @@ package buttondevteam.chat.commands.appendtext;
import org.bukkit.command.CommandSender;
import buttondevteam.chat.ChatProcessing;
-import buttondevteam.chat.commands.TBMCCommandBase;
+import buttondevteam.lib.chat.TBMCCommandBase;
public abstract class AppendTextCommandBase extends TBMCCommandBase {
diff --git a/src/main/java/buttondevteam/chat/commands/ucmds/HelpCommand.java b/src/main/java/buttondevteam/chat/commands/ucmds/HelpCommand.java
index fb51cd7..d7205af 100644
--- a/src/main/java/buttondevteam/chat/commands/ucmds/HelpCommand.java
+++ b/src/main/java/buttondevteam/chat/commands/ucmds/HelpCommand.java
@@ -4,8 +4,8 @@ import java.util.ArrayList;
import org.bukkit.command.CommandSender;
-import buttondevteam.chat.commands.CommandCaller;
-import buttondevteam.chat.commands.TBMCCommandBase;
+import buttondevteam.lib.chat.TBMCChatAPI;
+import buttondevteam.lib.chat.TBMCCommandBase;
public final class HelpCommand extends UCommandBase {
@@ -32,7 +32,7 @@ public final class HelpCommand extends UCommandBase {
else if (args[0].equalsIgnoreCase("commands")) {
ArrayList text = new ArrayList();
text.add("§6---- Command list ----");
- for (TBMCCommandBase cmd : CommandCaller.GetCommands().values())
+ for (TBMCCommandBase cmd : TBMCChatAPI.GetCommands().values())
if (!cmd.GetCommandPath().contains("/"))
text.add("/" + cmd.GetCommandPath());
sender.sendMessage(text.toArray(new String[text.size()]));
@@ -55,7 +55,7 @@ public final class HelpCommand extends UCommandBase {
String path = args[0];
for (int i = 1; i < args.length; i++)
path += "/" + args[i];
- TBMCCommandBase cmd = CommandCaller.GetCommands().get(path);
+ TBMCCommandBase cmd = TBMCChatAPI.GetCommands().get(path);
if (cmd == null)
sender.sendMessage(new String[] { "§cError: Command not found: " + path.replace('/', ' '),
"Usage example: /u accept --> /u help u accept" });
diff --git a/src/main/java/buttondevteam/chat/commands/ucmds/UCommand.java b/src/main/java/buttondevteam/chat/commands/ucmds/UCommand.java
index 2b720ba..b750efb 100644
--- a/src/main/java/buttondevteam/chat/commands/ucmds/UCommand.java
+++ b/src/main/java/buttondevteam/chat/commands/ucmds/UCommand.java
@@ -3,7 +3,7 @@ package buttondevteam.chat.commands.ucmds;
import org.bukkit.command.CommandSender;
import buttondevteam.chat.commands.CommandCaller;
-import buttondevteam.chat.commands.TBMCCommandBase;
+import buttondevteam.lib.chat.TBMCCommandBase;
public final class UCommand extends TBMCCommandBase {
diff --git a/src/main/java/buttondevteam/chat/commands/ucmds/UCommandBase.java b/src/main/java/buttondevteam/chat/commands/ucmds/UCommandBase.java
index 271c924..3dc0d47 100644
--- a/src/main/java/buttondevteam/chat/commands/ucmds/UCommandBase.java
+++ b/src/main/java/buttondevteam/chat/commands/ucmds/UCommandBase.java
@@ -1,6 +1,6 @@
package buttondevteam.chat.commands.ucmds;
-import buttondevteam.chat.commands.TBMCCommandBase;
+import buttondevteam.lib.chat.TBMCCommandBase;
public abstract class UCommandBase extends TBMCCommandBase {
diff --git a/src/main/java/buttondevteam/chat/commands/ucmds/announce/AnnounceCommand.java b/src/main/java/buttondevteam/chat/commands/ucmds/announce/AnnounceCommand.java
index 0a791ee..8bfc7ac 100644
--- a/src/main/java/buttondevteam/chat/commands/ucmds/announce/AnnounceCommand.java
+++ b/src/main/java/buttondevteam/chat/commands/ucmds/announce/AnnounceCommand.java
@@ -2,8 +2,8 @@ package buttondevteam.chat.commands.ucmds.announce;
import org.bukkit.command.CommandSender;
-import buttondevteam.chat.commands.CommandCaller;
import buttondevteam.chat.commands.ucmds.UCommandBase;
+import buttondevteam.chat.commands.CommandCaller;
public class AnnounceCommand extends UCommandBase {