New command sys for /discord & inv link
This commit is contained in:
parent
c8680ae92c
commit
55c61cef98
7 changed files with 132 additions and 162 deletions
|
@ -10,8 +10,8 @@ import buttondevteam.discordplugin.listeners.MCListener;
|
||||||
import buttondevteam.discordplugin.mcchat.MCChatPrivate;
|
import buttondevteam.discordplugin.mcchat.MCChatPrivate;
|
||||||
import buttondevteam.discordplugin.mcchat.MCChatUtils;
|
import buttondevteam.discordplugin.mcchat.MCChatUtils;
|
||||||
import buttondevteam.discordplugin.mcchat.MinecraftChatModule;
|
import buttondevteam.discordplugin.mcchat.MinecraftChatModule;
|
||||||
|
import buttondevteam.discordplugin.mccommands.DiscordMCCommand;
|
||||||
import buttondevteam.discordplugin.mccommands.DiscordMCCommandBase;
|
import buttondevteam.discordplugin.mccommands.DiscordMCCommandBase;
|
||||||
import buttondevteam.discordplugin.mccommands.ResetMCCommand;
|
|
||||||
import buttondevteam.discordplugin.role.GameRoleModule;
|
import buttondevteam.discordplugin.role.GameRoleModule;
|
||||||
import buttondevteam.lib.TBMCCoreAPI;
|
import buttondevteam.lib.TBMCCoreAPI;
|
||||||
import buttondevteam.lib.architecture.ButtonPlugin;
|
import buttondevteam.lib.architecture.ButtonPlugin;
|
||||||
|
@ -160,7 +160,7 @@ public class DiscordPlugin extends ButtonPlugin implements IListener<ReadyEvent>
|
||||||
getManager().registerCommand(new HelpCommand());
|
getManager().registerCommand(new HelpCommand());
|
||||||
getManager().registerCommand(new DebugCommand());
|
getManager().registerCommand(new DebugCommand());
|
||||||
getManager().registerCommand(new ConnectCommand());
|
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)
|
ChromaBot.getInstance().sendMessageCustomAsWell("", new EmbedBuilder().withColor(Color.CYAN)
|
||||||
.withTitle("Discord plugin restarted - chat connected.").build(), ChannelconBroadcast.RESTART); //Really important to note the chat, hmm
|
.withTitle("Discord plugin restarted - chat connected.").build(), ChannelconBroadcast.RESTART); //Really important to note the chat, hmm
|
||||||
else if (getConfig().getBoolean("serverup", false)) {
|
else if (getConfig().getBoolean("serverup", false)) {
|
||||||
|
@ -174,7 +174,7 @@ public class DiscordPlugin extends ButtonPlugin implements IListener<ReadyEvent>
|
||||||
ChromaBot.getInstance().sendMessageCustomAsWell("", new EmbedBuilder().withColor(Color.GREEN)
|
ChromaBot.getInstance().sendMessageCustomAsWell("", new EmbedBuilder().withColor(Color.GREEN)
|
||||||
.withTitle("Server started - chat connected.").build(), ChannelconBroadcast.RESTART);
|
.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);
|
getConfig().set("serverup", true);
|
||||||
saveConfig();
|
saveConfig();
|
||||||
|
@ -193,7 +193,7 @@ public class DiscordPlugin extends ButtonPlugin implements IListener<ReadyEvent>
|
||||||
for (IListener<?> listener : CommonListeners.getListeners())
|
for (IListener<?> listener : CommonListeners.getListeners())
|
||||||
dc.getDispatcher().registerListener(listener);
|
dc.getDispatcher().registerListener(listener);
|
||||||
TBMCCoreAPI.RegisterEventsForExceptions(new MCListener(), this);
|
TBMCCoreAPI.RegisterEventsForExceptions(new MCListener(), this);
|
||||||
TBMCChatAPI.AddCommands(this, DiscordMCCommandBase.class);
|
getCommand2MC().registerCommand(new DiscordMCCommand());
|
||||||
TBMCCoreAPI.RegisterUserClass(DiscordPlayer.class);
|
TBMCCoreAPI.RegisterUserClass(DiscordPlayer.class);
|
||||||
ChromaGamerBase.addConverter(sender -> Optional.ofNullable(sender instanceof DiscordSenderBase
|
ChromaGamerBase.addConverter(sender -> Optional.ofNullable(sender instanceof DiscordSenderBase
|
||||||
? ((DiscordSenderBase) sender).getChromaUser() : null));
|
? ((DiscordSenderBase) sender).getChromaUser() : null));
|
||||||
|
@ -212,7 +212,7 @@ public class DiscordPlugin extends ButtonPlugin implements IListener<ReadyEvent>
|
||||||
public void pluginPreDisable() {
|
public void pluginPreDisable() {
|
||||||
if (ChromaBot.getInstance() == null) return; //Failed to load
|
if (ChromaBot.getInstance() == null) return; //Failed to load
|
||||||
EmbedObject embed;
|
EmbedObject embed;
|
||||||
if (ResetMCCommand.resetting)
|
if (DiscordMCCommand.resetting)
|
||||||
embed = new EmbedBuilder().withColor(Color.ORANGE).withTitle("Discord plugin restarting").build();
|
embed = new EmbedBuilder().withColor(Color.ORANGE).withTitle("Discord plugin restarting").build();
|
||||||
else
|
else
|
||||||
embed = new EmbedBuilder().withColor(Restart ? Color.ORANGE : Color.RED)
|
embed = new EmbedBuilder().withColor(Restart ? Color.ORANGE : Color.RED)
|
||||||
|
|
|
@ -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 <MCname>§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;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -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 <MCname>§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;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -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 <MCname>§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 <MCname>§r in the " + DPUtils.botmention() + " channel on Discord", //
|
||||||
|
};
|
||||||
|
default:
|
||||||
|
return super.getHelpText(method, ann);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -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."
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -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." //
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -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
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in a new issue