Moved some command stuff
It took a while
This commit is contained in:
parent
4d5c3db239
commit
caa63f7912
14 changed files with 32 additions and 131 deletions
|
@ -16,7 +16,9 @@ import org.htmlcleaner.HtmlCleaner;
|
||||||
import org.htmlcleaner.TagNode;
|
import org.htmlcleaner.TagNode;
|
||||||
|
|
||||||
import buttondevteam.chat.commands.CommandCaller;
|
import buttondevteam.chat.commands.CommandCaller;
|
||||||
|
import buttondevteam.chat.commands.YeehawCommand;
|
||||||
import buttondevteam.lib.TBMCCoreAPI;
|
import buttondevteam.lib.TBMCCoreAPI;
|
||||||
|
import buttondevteam.lib.chat.TBMCChatAPI;
|
||||||
|
|
||||||
import com.google.gson.JsonArray;
|
import com.google.gson.JsonArray;
|
||||||
import com.google.gson.JsonObject;
|
import com.google.gson.JsonObject;
|
||||||
|
@ -66,7 +68,7 @@ public class PluginMain extends JavaPlugin { // Translated to Java: 2015.07.15.
|
||||||
Instance = this;
|
Instance = this;
|
||||||
|
|
||||||
getServer().getPluginManager().registerEvents(new PlayerListener(), this);
|
getServer().getPluginManager().registerEvents(new PlayerListener(), this);
|
||||||
CommandCaller.RegisterChatCommands(this);
|
TBMCChatAPI.AddCommands(this, YeehawCommand.class);
|
||||||
Console = this.getServer().getConsoleSender();
|
Console = this.getServer().getConsoleSender();
|
||||||
LoadFiles(false);
|
LoadFiles(false);
|
||||||
|
|
||||||
|
@ -101,6 +103,7 @@ public class PluginMain extends JavaPlugin { // Translated to Java: 2015.07.15.
|
||||||
};
|
};
|
||||||
t = new Thread(r);
|
t = new Thread(r);
|
||||||
t.start();
|
t.start();
|
||||||
|
Bukkit.getScheduler().runTaskLater(this, () -> CommandCaller.RegisterCommands(), 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Boolean stop = false;
|
public Boolean stop = false;
|
||||||
|
|
|
@ -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 {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* <p>
|
|
||||||
* This method adds a plugin's commands to help and sets their executor.
|
|
||||||
* </p>
|
|
||||||
* <p>
|
|
||||||
* The <u>command must be registered</u> in the caller plugin's plugin.yml.
|
|
||||||
* Otherwise the plugin will output a messsage to console.
|
|
||||||
* </p>
|
|
||||||
*
|
|
||||||
* @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
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* <p>
|
|
||||||
* Add player information for {@link PlayerInfoCommand}. Only mods can see
|
|
||||||
* the given information.
|
|
||||||
* </p>
|
|
||||||
*
|
|
||||||
* @param player
|
|
||||||
* @param infoline
|
|
||||||
*/
|
|
||||||
public void AddPlayerInfoForMods(ChatPlayer player, String infoline) {
|
|
||||||
// TODO
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* <p>
|
|
||||||
* Add player information for hover text at {@link ChatProcessing}. Every
|
|
||||||
* online player can see the given information.
|
|
||||||
* </p>
|
|
||||||
*
|
|
||||||
* @param player
|
|
||||||
* @param infoline
|
|
||||||
*/
|
|
||||||
public void AddPlayerInfoForHover(ChatPlayer player, String infoline) {
|
|
||||||
// TODO
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -5,6 +5,7 @@ import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
import buttondevteam.chat.ChatPlayer;
|
import buttondevteam.chat.ChatPlayer;
|
||||||
|
import buttondevteam.lib.chat.TBMCCommandBase;
|
||||||
|
|
||||||
public final class ChatonlyCommand extends TBMCCommandBase {
|
public final class ChatonlyCommand extends TBMCCommandBase {
|
||||||
|
|
||||||
|
|
|
@ -1,11 +1,7 @@
|
||||||
package buttondevteam.chat.commands;
|
package buttondevteam.chat.commands;
|
||||||
|
|
||||||
import java.lang.reflect.Modifier;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.command.Command;
|
import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.CommandExecutor;
|
import org.bukkit.command.CommandExecutor;
|
||||||
|
@ -13,59 +9,30 @@ import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.command.PluginCommand;
|
import org.bukkit.command.PluginCommand;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
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.chat.PluginMain;
|
||||||
import buttondevteam.discordplugin.TBMCDiscordAPI;
|
import buttondevteam.discordplugin.TBMCDiscordAPI;
|
||||||
|
import buttondevteam.lib.chat.TBMCChatAPI;
|
||||||
|
import buttondevteam.lib.chat.TBMCCommandBase;
|
||||||
|
|
||||||
public class CommandCaller implements CommandExecutor {
|
public class CommandCaller implements CommandExecutor {
|
||||||
|
|
||||||
private CommandCaller() {
|
private CommandCaller() {
|
||||||
}
|
}
|
||||||
|
|
||||||
private static HashMap<String, TBMCCommandBase> commands = new HashMap<String, TBMCCommandBase>();
|
|
||||||
|
|
||||||
public static HashMap<String, TBMCCommandBase> GetCommands() {
|
|
||||||
return commands;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static CommandCaller instance;
|
private static CommandCaller instance;
|
||||||
|
|
||||||
public static void RegisterChatCommands(PluginMain plugin) {
|
public static void RegisterCommands() {
|
||||||
AddCommands(plugin, TBMCCommandBase.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void AddCommands(JavaPlugin plugin, Class<? extends TBMCCommandBase> acmdclass) {
|
|
||||||
plugin.getLogger().info("Registering commands for " + plugin.getName());
|
|
||||||
if (instance == null)
|
if (instance == null)
|
||||||
instance = new CommandCaller();
|
instance = new CommandCaller();
|
||||||
Reflections rf = new Reflections(
|
for (TBMCCommandBase c : TBMCChatAPI.GetCommands().values()) {
|
||||||
new ConfigurationBuilder().setUrls(ClasspathHelper.forClassLoader(plugin.getClass().getClassLoader()))
|
|
||||||
.addClassLoader(plugin.getClass().getClassLoader()).addScanners(new SubTypesScanner())
|
|
||||||
.filterInputsBy((String pkg) -> pkg.contains(acmdclass.getPackage().getName())));
|
|
||||||
Set<Class<? extends TBMCCommandBase>> 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
|
if (!c.GetCommandPath().contains("/")) // Top-level command
|
||||||
{
|
{
|
||||||
PluginCommand pc = plugin.getCommand(c.GetCommandPath());
|
PluginCommand pc = ((JavaPlugin) c.getPlugin()).getCommand(c.GetCommandPath());
|
||||||
if (pc == null)
|
if (pc == null)
|
||||||
new Exception("Can't find top-level command: " + c.GetCommandPath()).printStackTrace();
|
new Exception("Can't find top-level command: " + c.GetCommandPath()).printStackTrace();
|
||||||
else
|
else
|
||||||
pc.setExecutor(instance);
|
pc.setExecutor(instance);
|
||||||
}
|
}
|
||||||
} catch (InstantiationException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
} catch (IllegalAccessException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -74,12 +41,12 @@ public class CommandCaller implements CommandExecutor {
|
||||||
String path = command.getName();
|
String path = command.getName();
|
||||||
for (String arg : args)
|
for (String arg : args)
|
||||||
path += "/" + arg;
|
path += "/" + arg;
|
||||||
TBMCCommandBase cmd = commands.get(path);
|
TBMCCommandBase cmd = TBMCChatAPI.GetCommands().get(path);
|
||||||
int argc = 0;
|
int argc = 0;
|
||||||
while (cmd == null && path.contains("/")) {
|
while (cmd == null && path.contains("/")) {
|
||||||
path = path.substring(0, path.lastIndexOf('/'));
|
path = path.substring(0, path.lastIndexOf('/'));
|
||||||
argc++;
|
argc++;
|
||||||
cmd = commands.get(path);
|
cmd = TBMCChatAPI.GetCommands().get(path);
|
||||||
}
|
}
|
||||||
if (cmd == null) {
|
if (cmd == null) {
|
||||||
sender.sendMessage("§cInternal error: Command not registered to CommandCaller");
|
sender.sendMessage("§cInternal error: Command not registered to CommandCaller");
|
||||||
|
@ -109,7 +76,7 @@ public class CommandCaller implements CommandExecutor {
|
||||||
public static String[] GetSubCommands(TBMCCommandBase command) {
|
public static String[] GetSubCommands(TBMCCommandBase command) {
|
||||||
ArrayList<String> cmds = new ArrayList<String>();
|
ArrayList<String> cmds = new ArrayList<String>();
|
||||||
cmds.add("§6---- Subcommands ----");
|
cmds.add("§6---- Subcommands ----");
|
||||||
for (TBMCCommandBase cmd : CommandCaller.GetCommands().values()) {
|
for (TBMCCommandBase cmd : TBMCChatAPI.GetCommands().values()) {
|
||||||
if (cmd.GetCommandPath().startsWith(command.GetCommandPath() + "/")) {
|
if (cmd.GetCommandPath().startsWith(command.GetCommandPath() + "/")) {
|
||||||
int ind = cmd.GetCommandPath().indexOf('/', command.GetCommandPath().length() + 2);
|
int ind = cmd.GetCommandPath().indexOf('/', command.GetCommandPath().length() + 2);
|
||||||
if (ind >= 0)
|
if (ind >= 0)
|
||||||
|
|
|
@ -2,6 +2,8 @@ package buttondevteam.chat.commands;
|
||||||
|
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
|
|
||||||
|
import buttondevteam.lib.chat.TBMCCommandBase;
|
||||||
|
|
||||||
public class MWikiCommand extends TBMCCommandBase {
|
public class MWikiCommand extends TBMCCommandBase {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -4,6 +4,7 @@ import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
import buttondevteam.chat.ChatPlayer;
|
import buttondevteam.chat.ChatPlayer;
|
||||||
|
import buttondevteam.lib.chat.TBMCCommandBase;
|
||||||
|
|
||||||
public final class OOCCommand extends TBMCCommandBase {
|
public final class OOCCommand extends TBMCCommandBase {
|
||||||
|
|
||||||
|
|
|
@ -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();
|
|
||||||
}
|
|
|
@ -7,6 +7,7 @@ import org.bukkit.potion.PotionEffect;
|
||||||
import org.bukkit.potion.PotionEffectType;
|
import org.bukkit.potion.PotionEffectType;
|
||||||
|
|
||||||
import buttondevteam.chat.PluginMain;
|
import buttondevteam.chat.PluginMain;
|
||||||
|
import buttondevteam.lib.chat.TBMCCommandBase;
|
||||||
|
|
||||||
public final class UnlolCommand extends TBMCCommandBase {
|
public final class UnlolCommand extends TBMCCommandBase {
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,7 @@ import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
import buttondevteam.chat.PluginMain;
|
import buttondevteam.chat.PluginMain;
|
||||||
|
import buttondevteam.lib.chat.TBMCCommandBase;
|
||||||
|
|
||||||
public class YeehawCommand extends TBMCCommandBase {
|
public class YeehawCommand extends TBMCCommandBase {
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,7 @@ package buttondevteam.chat.commands.appendtext;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
|
|
||||||
import buttondevteam.chat.ChatProcessing;
|
import buttondevteam.chat.ChatProcessing;
|
||||||
import buttondevteam.chat.commands.TBMCCommandBase;
|
import buttondevteam.lib.chat.TBMCCommandBase;
|
||||||
|
|
||||||
public abstract class AppendTextCommandBase extends TBMCCommandBase {
|
public abstract class AppendTextCommandBase extends TBMCCommandBase {
|
||||||
|
|
||||||
|
|
|
@ -4,8 +4,8 @@ import java.util.ArrayList;
|
||||||
|
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
|
|
||||||
import buttondevteam.chat.commands.CommandCaller;
|
import buttondevteam.lib.chat.TBMCChatAPI;
|
||||||
import buttondevteam.chat.commands.TBMCCommandBase;
|
import buttondevteam.lib.chat.TBMCCommandBase;
|
||||||
|
|
||||||
public final class HelpCommand extends UCommandBase {
|
public final class HelpCommand extends UCommandBase {
|
||||||
|
|
||||||
|
@ -32,7 +32,7 @@ public final class HelpCommand extends UCommandBase {
|
||||||
else if (args[0].equalsIgnoreCase("commands")) {
|
else if (args[0].equalsIgnoreCase("commands")) {
|
||||||
ArrayList<String> text = new ArrayList<String>();
|
ArrayList<String> text = new ArrayList<String>();
|
||||||
text.add("§6---- Command list ----");
|
text.add("§6---- Command list ----");
|
||||||
for (TBMCCommandBase cmd : CommandCaller.GetCommands().values())
|
for (TBMCCommandBase cmd : TBMCChatAPI.GetCommands().values())
|
||||||
if (!cmd.GetCommandPath().contains("/"))
|
if (!cmd.GetCommandPath().contains("/"))
|
||||||
text.add("/" + cmd.GetCommandPath());
|
text.add("/" + cmd.GetCommandPath());
|
||||||
sender.sendMessage(text.toArray(new String[text.size()]));
|
sender.sendMessage(text.toArray(new String[text.size()]));
|
||||||
|
@ -55,7 +55,7 @@ public final class HelpCommand extends UCommandBase {
|
||||||
String path = args[0];
|
String path = args[0];
|
||||||
for (int i = 1; i < args.length; i++)
|
for (int i = 1; i < args.length; i++)
|
||||||
path += "/" + args[i];
|
path += "/" + args[i];
|
||||||
TBMCCommandBase cmd = CommandCaller.GetCommands().get(path);
|
TBMCCommandBase cmd = TBMCChatAPI.GetCommands().get(path);
|
||||||
if (cmd == null)
|
if (cmd == null)
|
||||||
sender.sendMessage(new String[] { "§cError: Command not found: " + path.replace('/', ' '),
|
sender.sendMessage(new String[] { "§cError: Command not found: " + path.replace('/', ' '),
|
||||||
"Usage example: /u accept --> /u help u accept" });
|
"Usage example: /u accept --> /u help u accept" });
|
||||||
|
|
|
@ -3,7 +3,7 @@ package buttondevteam.chat.commands.ucmds;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
|
|
||||||
import buttondevteam.chat.commands.CommandCaller;
|
import buttondevteam.chat.commands.CommandCaller;
|
||||||
import buttondevteam.chat.commands.TBMCCommandBase;
|
import buttondevteam.lib.chat.TBMCCommandBase;
|
||||||
|
|
||||||
public final class UCommand extends TBMCCommandBase {
|
public final class UCommand extends TBMCCommandBase {
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
package buttondevteam.chat.commands.ucmds;
|
package buttondevteam.chat.commands.ucmds;
|
||||||
|
|
||||||
import buttondevteam.chat.commands.TBMCCommandBase;
|
import buttondevteam.lib.chat.TBMCCommandBase;
|
||||||
|
|
||||||
public abstract class UCommandBase extends TBMCCommandBase {
|
public abstract class UCommandBase extends TBMCCommandBase {
|
||||||
|
|
||||||
|
|
|
@ -2,8 +2,8 @@ package buttondevteam.chat.commands.ucmds.announce;
|
||||||
|
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
|
|
||||||
import buttondevteam.chat.commands.CommandCaller;
|
|
||||||
import buttondevteam.chat.commands.ucmds.UCommandBase;
|
import buttondevteam.chat.commands.ucmds.UCommandBase;
|
||||||
|
import buttondevteam.chat.commands.CommandCaller;
|
||||||
|
|
||||||
public class AnnounceCommand extends UCommandBase {
|
public class AnnounceCommand extends UCommandBase {
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue