From 55c61cef98e6bf23a4fe53883f35145a5e247e7c Mon Sep 17 00:00:00 2001 From: NorbiPeti Date: Mon, 15 Apr 2019 15:36:48 +0200 Subject: [PATCH] New command sys for /discord & inv link --- .../discordplugin/DiscordPlugin.java | 10 +- .../mccommands/AcceptMCCommand.java | 44 ------ .../mccommands/DeclineMCCommand.java | 32 ----- .../mccommands/DiscordMCCommand.java | 127 ++++++++++++++++++ .../mccommands/ReloadMCCommand.java | 26 ---- .../mccommands/ResetMCCommand.java | 35 ----- .../mccommands/VersionMCCommand.java | 20 --- 7 files changed, 132 insertions(+), 162 deletions(-) delete mode 100755 src/main/java/buttondevteam/discordplugin/mccommands/AcceptMCCommand.java delete mode 100755 src/main/java/buttondevteam/discordplugin/mccommands/DeclineMCCommand.java create mode 100644 src/main/java/buttondevteam/discordplugin/mccommands/DiscordMCCommand.java delete mode 100644 src/main/java/buttondevteam/discordplugin/mccommands/ReloadMCCommand.java delete mode 100644 src/main/java/buttondevteam/discordplugin/mccommands/ResetMCCommand.java delete mode 100644 src/main/java/buttondevteam/discordplugin/mccommands/VersionMCCommand.java diff --git a/src/main/java/buttondevteam/discordplugin/DiscordPlugin.java b/src/main/java/buttondevteam/discordplugin/DiscordPlugin.java index 6d71070..572e52d 100755 --- a/src/main/java/buttondevteam/discordplugin/DiscordPlugin.java +++ b/src/main/java/buttondevteam/discordplugin/DiscordPlugin.java @@ -10,8 +10,8 @@ import buttondevteam.discordplugin.listeners.MCListener; import buttondevteam.discordplugin.mcchat.MCChatPrivate; import buttondevteam.discordplugin.mcchat.MCChatUtils; import buttondevteam.discordplugin.mcchat.MinecraftChatModule; +import buttondevteam.discordplugin.mccommands.DiscordMCCommand; import buttondevteam.discordplugin.mccommands.DiscordMCCommandBase; -import buttondevteam.discordplugin.mccommands.ResetMCCommand; import buttondevteam.discordplugin.role.GameRoleModule; import buttondevteam.lib.TBMCCoreAPI; import buttondevteam.lib.architecture.ButtonPlugin; @@ -160,7 +160,7 @@ public class DiscordPlugin extends ButtonPlugin implements IListener getManager().registerCommand(new HelpCommand()); getManager().registerCommand(new DebugCommand()); getManager().registerCommand(new ConnectCommand()); - if (ResetMCCommand.resetting) //These will only execute if the chat is enabled + if (DiscordMCCommand.resetting) //These will only execute if the chat is enabled ChromaBot.getInstance().sendMessageCustomAsWell("", new EmbedBuilder().withColor(Color.CYAN) .withTitle("Discord plugin restarted - chat connected.").build(), ChannelconBroadcast.RESTART); //Really important to note the chat, hmm else if (getConfig().getBoolean("serverup", false)) { @@ -174,7 +174,7 @@ public class DiscordPlugin extends ButtonPlugin implements IListener ChromaBot.getInstance().sendMessageCustomAsWell("", new EmbedBuilder().withColor(Color.GREEN) .withTitle("Server started - chat connected.").build(), ChannelconBroadcast.RESTART); - ResetMCCommand.resetting = false; //This is the last event handling this flag + DiscordMCCommand.resetting = false; //This is the last event handling this flag getConfig().set("serverup", true); saveConfig(); @@ -193,7 +193,7 @@ public class DiscordPlugin extends ButtonPlugin implements IListener for (IListener listener : CommonListeners.getListeners()) dc.getDispatcher().registerListener(listener); TBMCCoreAPI.RegisterEventsForExceptions(new MCListener(), this); - TBMCChatAPI.AddCommands(this, DiscordMCCommandBase.class); + getCommand2MC().registerCommand(new DiscordMCCommand()); TBMCCoreAPI.RegisterUserClass(DiscordPlayer.class); ChromaGamerBase.addConverter(sender -> Optional.ofNullable(sender instanceof DiscordSenderBase ? ((DiscordSenderBase) sender).getChromaUser() : null)); @@ -212,7 +212,7 @@ public class DiscordPlugin extends ButtonPlugin implements IListener public void pluginPreDisable() { if (ChromaBot.getInstance() == null) return; //Failed to load EmbedObject embed; - if (ResetMCCommand.resetting) + if (DiscordMCCommand.resetting) embed = new EmbedBuilder().withColor(Color.ORANGE).withTitle("Discord plugin restarting").build(); else embed = new EmbedBuilder().withColor(Restart ? Color.ORANGE : Color.RED) diff --git a/src/main/java/buttondevteam/discordplugin/mccommands/AcceptMCCommand.java b/src/main/java/buttondevteam/discordplugin/mccommands/AcceptMCCommand.java deleted file mode 100755 index 29ed176..0000000 --- a/src/main/java/buttondevteam/discordplugin/mccommands/AcceptMCCommand.java +++ /dev/null @@ -1,44 +0,0 @@ -package buttondevteam.discordplugin.mccommands; - -import buttondevteam.discordplugin.DPUtils; -import buttondevteam.discordplugin.DiscordPlayer; -import buttondevteam.discordplugin.commands.ConnectCommand; -import buttondevteam.discordplugin.mcchat.MCChatUtils; -import buttondevteam.lib.chat.CommandClass; -import buttondevteam.lib.player.ChromaGamerBase; -import buttondevteam.lib.player.TBMCPlayer; -import buttondevteam.lib.player.TBMCPlayerBase; -import org.bukkit.entity.Player; - -@CommandClass(modOnly = false, path = "accept") -public class AcceptMCCommand extends DiscordMCCommandBase { - - @Override - public String[] GetHelpText(String alias) { - return new String[] { // - "§6---- Accept Discord connection ----", // - "Accept a pending connection between your Discord and Minecraft account.", // - "To start the connection process, do §b/connect §r in the " + DPUtils.botmention() + " channel on Discord", // - "Usage: /" + alias + " accept" // - }; - } - - @Override - public boolean OnCommand(Player player, String alias, String[] args) { - String did = ConnectCommand.WaitingToConnect.get(player.getName()); - if (did == null) { - player.sendMessage("§cYou don't have a pending connection to Discord."); - return true; - } - DiscordPlayer dp = ChromaGamerBase.getUser(did, DiscordPlayer.class); - TBMCPlayer mcp = TBMCPlayerBase.getPlayer(player.getUniqueId(), TBMCPlayer.class); - dp.connectWith(mcp); - dp.save(); - mcp.save(); - ConnectCommand.WaitingToConnect.remove(player.getName()); - MCChatUtils.UnconnectedSenders.remove(did); //Remove all unconnected, will be recreated where needed - player.sendMessage("§bAccounts connected."); - return true; - } - -} diff --git a/src/main/java/buttondevteam/discordplugin/mccommands/DeclineMCCommand.java b/src/main/java/buttondevteam/discordplugin/mccommands/DeclineMCCommand.java deleted file mode 100755 index 813d6b9..0000000 --- a/src/main/java/buttondevteam/discordplugin/mccommands/DeclineMCCommand.java +++ /dev/null @@ -1,32 +0,0 @@ -package buttondevteam.discordplugin.mccommands; - -import buttondevteam.discordplugin.DPUtils; -import buttondevteam.discordplugin.commands.ConnectCommand; -import buttondevteam.lib.chat.CommandClass; -import org.bukkit.entity.Player; - -@CommandClass(modOnly = false, path = "decline") -public class DeclineMCCommand extends DiscordMCCommandBase { - - @Override - public String[] GetHelpText(String alias) { - return new String[] { // - "§6---- Decline Discord connection ----", // - "Decline a pending connection between your Discord and Minecraft account.", // - "To start the connection process, do §b/connect §r in the " + DPUtils.botmention() + " channel on Discord", // - "Usage: /" + alias + " decline" // - }; - } - - @Override - public boolean OnCommand(Player player, String alias, String[] args) { - String did = ConnectCommand.WaitingToConnect.remove(player.getName()); - if (did == null) { - player.sendMessage("§cYou don't have a pending connection to Discord."); - return true; - } - player.sendMessage("§bPending connection declined."); - return true; - } - -} diff --git a/src/main/java/buttondevteam/discordplugin/mccommands/DiscordMCCommand.java b/src/main/java/buttondevteam/discordplugin/mccommands/DiscordMCCommand.java new file mode 100644 index 0000000..7fa76d0 --- /dev/null +++ b/src/main/java/buttondevteam/discordplugin/mccommands/DiscordMCCommand.java @@ -0,0 +1,127 @@ +package buttondevteam.discordplugin.mccommands; + +import buttondevteam.discordplugin.DPUtils; +import buttondevteam.discordplugin.DiscordPlayer; +import buttondevteam.discordplugin.DiscordPlugin; +import buttondevteam.discordplugin.DiscordSenderBase; +import buttondevteam.discordplugin.commands.ConnectCommand; +import buttondevteam.discordplugin.commands.VersionCommand; +import buttondevteam.discordplugin.mcchat.MCChatUtils; +import buttondevteam.lib.chat.Command2; +import buttondevteam.lib.chat.Command2MCSender; +import buttondevteam.lib.chat.CommandClass; +import buttondevteam.lib.chat.ICommand2MC; +import buttondevteam.lib.player.ChromaGamerBase; +import buttondevteam.lib.player.TBMCPlayer; +import buttondevteam.lib.player.TBMCPlayerBase; +import lombok.val; +import org.bukkit.Bukkit; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +import java.lang.reflect.Method; + +@CommandClass(path = "discord", helpText = { + "Discord", + "This command allows performing Discord-related actions." +}) +public class DiscordMCCommand extends ICommand2MC { + @Command2.Subcommand + public boolean accept(Player player) { + String did = ConnectCommand.WaitingToConnect.get(player.getName()); + if (did == null) { + player.sendMessage("§cYou don't have a pending connection to Discord."); + return true; + } + DiscordPlayer dp = ChromaGamerBase.getUser(did, DiscordPlayer.class); + TBMCPlayer mcp = TBMCPlayerBase.getPlayer(player.getUniqueId(), TBMCPlayer.class); + dp.connectWith(mcp); + dp.save(); + mcp.save(); + ConnectCommand.WaitingToConnect.remove(player.getName()); + MCChatUtils.UnconnectedSenders.remove(did); //Remove all unconnected, will be recreated where needed + player.sendMessage("§bAccounts connected."); + return true; + } + + @Command2.Subcommand + public boolean decline(Player player) { + String did = ConnectCommand.WaitingToConnect.remove(player.getName()); + if (did == null) { + player.sendMessage("§cYou don't have a pending connection to Discord."); + return true; + } + player.sendMessage("§bPending connection declined."); + return true; + } + + @Command2.Subcommand(permGroup = Command2.Subcommand.MOD_GROUP, helpText = { + "Reload Discord plugin", + "Reloads the config. To apply some changes, you may need to also run /discord reset." + }) + public void reload(CommandSender sender) { + if (DiscordPlugin.plugin.tryReloadConfig()) + sender.sendMessage("§bConfig reloaded."); + else + sender.sendMessage("§cFailed to reload config."); + } + + public static boolean resetting = false; + + @Command2.Subcommand(permGroup = Command2.Subcommand.MOD_GROUP, helpText = { + "Reset ChromaBot", // + "This command disables and then enables the plugin." // + }) + public void reset(CommandSender sender) { + Bukkit.getScheduler().runTaskAsynchronously(DiscordPlugin.plugin, () -> { + resetting = true; //Turned off after sending enable message (ReadyEvent) + sender.sendMessage("§bDisabling DiscordPlugin..."); + Bukkit.getPluginManager().disablePlugin(DiscordPlugin.plugin); + if (!(sender instanceof DiscordSenderBase)) //Sending to Discord errors + sender.sendMessage("§bEnabling DiscordPlugin..."); + Bukkit.getPluginManager().enablePlugin(DiscordPlugin.plugin); + if (!(sender instanceof DiscordSenderBase)) //Sending to Discord errors + sender.sendMessage("§bReset finished!"); + }); + } + + @Command2.Subcommand(helpText = { + "Version command", + "Prints the plugin version" + }) + public void version(CommandSender sender) { + sender.sendMessage(VersionCommand.getVersion()); + } + + @Command2.Subcommand(helpText = { + "Invite", + "Shows an invite link to the server" + }) + public void invite(CommandSender sender) { + val inv=DiscordPlugin.mainServer.getExtendedInvites().stream().findAny(); //TODO: Needs manage server perms + if (!inv.isPresent()) + sender.sendMessage("§cNo invites found for the server."); + else + sender.sendMessage("§bInvite link: https://discord.gg/"+inv.get().getCode()); + } + + @Override + public String[] getHelpText(Method method, Command2.Subcommand ann) { + switch (method.getName()) { + case "accept": + return new String[]{ // + "Accept Discord connection", // + "Accept a pending connection between your Discord and Minecraft account.", // + "To start the connection process, do §b/connect §r in the " + DPUtils.botmention() + " channel on Discord", // + }; + case "decline": + return new String[]{ // + "Decline Discord connection", // + "Decline a pending connection between your Discord and Minecraft account.", // + "To start the connection process, do §b/connect §r in the " + DPUtils.botmention() + " channel on Discord", // + }; + default: + return super.getHelpText(method, ann); + } + } +} diff --git a/src/main/java/buttondevteam/discordplugin/mccommands/ReloadMCCommand.java b/src/main/java/buttondevteam/discordplugin/mccommands/ReloadMCCommand.java deleted file mode 100644 index 01433c9..0000000 --- a/src/main/java/buttondevteam/discordplugin/mccommands/ReloadMCCommand.java +++ /dev/null @@ -1,26 +0,0 @@ -package buttondevteam.discordplugin.mccommands; - -import buttondevteam.discordplugin.DiscordPlugin; -import buttondevteam.lib.chat.CommandClass; -import buttondevteam.lib.chat.TBMCCommandBase; -import org.bukkit.command.CommandSender; - -@CommandClass(path = "discord reload") -public class ReloadMCCommand extends TBMCCommandBase { - @Override - public boolean OnCommand(CommandSender sender, String alias, String[] args) { - if (DiscordPlugin.plugin.tryReloadConfig()) - sender.sendMessage("§bConfig reloaded."); //TODO: Convert to new command system - else - sender.sendMessage("§cFailed to reload config."); - return true; - } - - @Override - public String[] GetHelpText(String alias) { - return new String[]{ - "Reload", - "Reloads the config. To apply some changes, you may need to also run /discord reset." - }; - } -} diff --git a/src/main/java/buttondevteam/discordplugin/mccommands/ResetMCCommand.java b/src/main/java/buttondevteam/discordplugin/mccommands/ResetMCCommand.java deleted file mode 100644 index 1f4855f..0000000 --- a/src/main/java/buttondevteam/discordplugin/mccommands/ResetMCCommand.java +++ /dev/null @@ -1,35 +0,0 @@ -package buttondevteam.discordplugin.mccommands; - -import buttondevteam.discordplugin.DiscordPlugin; -import buttondevteam.discordplugin.DiscordSenderBase; -import buttondevteam.lib.chat.CommandClass; -import buttondevteam.lib.chat.TBMCCommandBase; -import org.bukkit.Bukkit; -import org.bukkit.command.CommandSender; - -@CommandClass(path = "discord reset", modOnly = true) -public class ResetMCCommand extends TBMCCommandBase { //Not player-only, so not using DiscordMCCommandBase - public static boolean resetting = false; - @Override - public boolean OnCommand(CommandSender sender, String s, String[] strings) { - Bukkit.getScheduler().runTaskAsynchronously(DiscordPlugin.plugin, () -> { - resetting = true; //Turned off after sending enable message (ReadyEvent) - sender.sendMessage("§bDisabling DiscordPlugin..."); - Bukkit.getPluginManager().disablePlugin(DiscordPlugin.plugin); - if (!(sender instanceof DiscordSenderBase)) //Sending to Discord errors - sender.sendMessage("§bEnabling DiscordPlugin..."); - Bukkit.getPluginManager().enablePlugin(DiscordPlugin.plugin); - if (!(sender instanceof DiscordSenderBase)) //Sending to Discord errors - sender.sendMessage("§bReset finished!"); - }); - return true; - } - - @Override - public String[] GetHelpText(String s) { - return new String[]{ // - "§6---- Reset ChromaBot ----", // - "This command disables and then enables the plugin." // - }; - } -} diff --git a/src/main/java/buttondevteam/discordplugin/mccommands/VersionMCCommand.java b/src/main/java/buttondevteam/discordplugin/mccommands/VersionMCCommand.java deleted file mode 100644 index a2cacba..0000000 --- a/src/main/java/buttondevteam/discordplugin/mccommands/VersionMCCommand.java +++ /dev/null @@ -1,20 +0,0 @@ -package buttondevteam.discordplugin.mccommands; - -import buttondevteam.discordplugin.commands.VersionCommand; -import buttondevteam.lib.chat.CommandClass; -import buttondevteam.lib.chat.TBMCCommandBase; -import org.bukkit.command.CommandSender; - -@CommandClass(path = "discord version") -public class VersionMCCommand extends TBMCCommandBase { - @Override - public boolean OnCommand(CommandSender commandSender, String s, String[] strings) { - commandSender.sendMessage(VersionCommand.getVersion()); - return true; - } - - @Override - public String[] GetHelpText(String s) { - return VersionCommand.getVersion(); //Heh - } -}