From 914cd60694abfe2062da108139f84a3008ebdbbc Mon Sep 17 00:00:00 2001 From: NorbiPeti Date: Wed, 24 May 2017 13:37:12 +0200 Subject: [PATCH 01/20] Added mcchat (#12), needs testing --- .../discordplugin/DiscordPlayer.java | 5 +++ .../discordplugin/DiscordPlugin.java | 13 +++++++ .../discordplugin/commands/MCChatCommand.java | 34 +++++++++++++++++++ .../listeners/MCChatListener.java | 11 ++---- 4 files changed, 55 insertions(+), 8 deletions(-) create mode 100644 src/main/java/buttondevteam/discordplugin/commands/MCChatCommand.java diff --git a/src/main/java/buttondevteam/discordplugin/DiscordPlayer.java b/src/main/java/buttondevteam/discordplugin/DiscordPlayer.java index 5389a42..913372c 100644 --- a/src/main/java/buttondevteam/discordplugin/DiscordPlayer.java +++ b/src/main/java/buttondevteam/discordplugin/DiscordPlayer.java @@ -1,6 +1,7 @@ package buttondevteam.discordplugin; import buttondevteam.lib.player.ChromaGamerBase; +import buttondevteam.lib.player.PlayerData; import buttondevteam.lib.player.UserClass; @UserClass(foldername = "discord") @@ -15,4 +16,8 @@ public class DiscordPlayer extends ChromaGamerBase { did = plugindata.getString(getFolder() + "_id"); return did; } + + public PlayerData minecraftChat() { + return data(); + } } diff --git a/src/main/java/buttondevteam/discordplugin/DiscordPlugin.java b/src/main/java/buttondevteam/discordplugin/DiscordPlugin.java index 0478c4b..ac7687b 100644 --- a/src/main/java/buttondevteam/discordplugin/DiscordPlugin.java +++ b/src/main/java/buttondevteam/discordplugin/DiscordPlugin.java @@ -4,7 +4,10 @@ import java.awt.Color; import java.io.File; import java.nio.charset.StandardCharsets; import java.util.ArrayList; +import java.util.Calendar; import java.util.List; +import java.util.Random; + import org.bukkit.Bukkit; import org.bukkit.plugin.RegisteredServiceProvider; import org.bukkit.plugin.java.JavaPlugin; @@ -135,6 +138,16 @@ public class DiscordPlugin extends JavaPlugin implements IListener { setupProviders(); TBMCCoreAPI.SendUnsentExceptions(); TBMCCoreAPI.SendUnsentDebugMessages(); + final Calendar currentCal = Calendar.getInstance(); + final Calendar newCal = Calendar.getInstance(); + currentCal.set(currentCal.get(Calendar.YEAR), currentCal.get(Calendar.MONTH), + currentCal.get(Calendar.DAY_OF_MONTH), 4, 10); + if (currentCal.get(Calendar.DAY_OF_MONTH) % 9 == 0 && currentCal.before(newCal)) { + Random rand = new Random(); + sendMessageToChannel(dc.getChannels().get(rand.nextInt(dc.getChannels().size())), + "You could make a religion out of this"); + } + } catch (Exception e) { TBMCCoreAPI.SendException("An error occured while enabling DiscordPlugin!", e); } diff --git a/src/main/java/buttondevteam/discordplugin/commands/MCChatCommand.java b/src/main/java/buttondevteam/discordplugin/commands/MCChatCommand.java new file mode 100644 index 0000000..39f632d --- /dev/null +++ b/src/main/java/buttondevteam/discordplugin/commands/MCChatCommand.java @@ -0,0 +1,34 @@ +package buttondevteam.discordplugin.commands; + +import buttondevteam.discordplugin.DiscordPlayer; +import buttondevteam.lib.player.PlayerData; +import sx.blah.discord.handle.obj.IMessage; + +public class MCChatCommand extends DiscordCommandBase { + + @Override + public String getCommandName() { + return "mcchat"; + } + + @Override + public void run(IMessage message, String args) { + if (!message.getChannel().isPrivate()) { + message.reply("This command can only be issued while DMing the bot."); + return; + } + PlayerData mcchat = DiscordPlayer.getUser(message.getAuthor().getStringID(), DiscordPlayer.class) + .minecraftChat(); + mcchat.set(!mcchat.get()); + message.reply("Minecraft chat " + (mcchat.get() ? "enabled." : "disabled.")); + } + + @Override + public String[] getHelpText() { + return new String[] { // + "mcchat enables or disables the Minecraft chat in private messages.", // + "It can be useful if you don't want your messages to be visible, for example when talking a private channel." // + }; // TODO: Pin channel switching to indicate the current channel + } + +} diff --git a/src/main/java/buttondevteam/discordplugin/listeners/MCChatListener.java b/src/main/java/buttondevteam/discordplugin/listeners/MCChatListener.java index 119bad1..b040c5f 100644 --- a/src/main/java/buttondevteam/discordplugin/listeners/MCChatListener.java +++ b/src/main/java/buttondevteam/discordplugin/listeners/MCChatListener.java @@ -59,21 +59,15 @@ public class MCChatListener implements Listener, IListener @EventHandler public void onChatPreprocess(TBMCChatPreprocessEvent event) { int start = -1; - // System.out.println("A"); while ((start = event.getMessage().indexOf('@', start + 1)) != -1) { - // System.out.println("Start: " + start); int mid = event.getMessage().indexOf('#', start + 1); - // System.out.println("Mid: " + mid); if (mid == -1) return; int end_ = event.getMessage().indexOf(' ', mid + 1); - // System.out.println("End: " + end_); if (end_ == -1) end_ = event.getMessage().length(); final int end = end_; final int startF = start; - // System.out.println("Name: " + event.getMessage().substring(start, mid)); - // System.out.println("Disc: " + event.getMessage().substring(mid, end)); DiscordPlugin.dc.getUsersByName(event.getMessage().substring(start + 1, mid)).stream() .filter(u -> u.getDiscriminator().equals(event.getMessage().substring(mid + 1, end))).findAny() .ifPresent(user -> event.setMessage(event.getMessage().substring(0, startF) + "@" + user.getName() @@ -104,7 +98,8 @@ public class MCChatListener implements Listener, IListener public void handle(sx.blah.discord.handle.impl.events.guild.channel.message.MessageReceivedEvent event) { final IUser author = event.getMessage().getAuthor(); if (!event.getMessage().getChannel().getStringID().equals(DiscordPlugin.chatchannel.getStringID()) - /* && !(event.getMessage().getChannel().isPrivate() && privatechat) */) + && !(event.getMessage().getChannel().isPrivate() + && DiscordPlayer.getUser(author.getStringID(), DiscordPlayer.class).minecraftChat().get())) return; lastmessage = null; lastlist++; @@ -117,7 +112,7 @@ public class MCChatListener implements Listener, IListener try { DiscordPlayer dp = ChromaGamerBase.getUser(author.getStringID(), DiscordPlayer.class); final DiscordSenderBase dsender; - Player mcp = null; // Offline players can't really run commands, or can they? + Player mcp = null; // Offline players can't really run commands, or can they? No, they can't, really. final String cid; if ((cid = dp.getConnectedID(TBMCPlayer.class)) != null // Connected? && (mcp = Bukkit.getPlayer(UUID.fromString(cid))) != null) { // Execute as ingame player From cb8eeb20c22a914908bf29fe0ad4709ff69b5b74 Mon Sep 17 00:00:00 2001 From: NorbiPeti Date: Thu, 25 May 2017 14:30:55 +0200 Subject: [PATCH 02/20] Continued adding support for mcchat (#12) And added more server ready questions --- .../listeners/CommandListener.java | 26 +++---- .../listeners/MCChatListener.java | 69 +++++++++++++------ 2 files changed, 61 insertions(+), 34 deletions(-) diff --git a/src/main/java/buttondevteam/discordplugin/listeners/CommandListener.java b/src/main/java/buttondevteam/discordplugin/listeners/CommandListener.java index bc08243..9165f14 100644 --- a/src/main/java/buttondevteam/discordplugin/listeners/CommandListener.java +++ b/src/main/java/buttondevteam/discordplugin/listeners/CommandListener.java @@ -1,6 +1,7 @@ package buttondevteam.discordplugin.listeners; import java.util.ArrayList; +import java.util.Arrays; import java.util.Random; import buttondevteam.discordplugin.DiscordPlugin; @@ -17,15 +18,18 @@ public class CommandListener { "Between now and the heat-death of the universe.", // Ghostise "Soon™", "Ask again this time next month", // Ghostise "In about 3 seconds", // Nicolai - "Right after we finish coding 7 plugins",//Ali - "It'll be done tomorrow.",//Ali - "We just need to complete one tiiiny feature",//Ali - "In 18 commits",//Ali - "After we finish strangling Towny",//Ali - "When we kill every bug in the system",//Ali - "Once the server stops screaming error messages.",//Ali + "Right after we finish coding 7 plugins", // Ali + "It'll be done tomorrow.", // Ali + "We just need to complete one tiiiny feature", // Ali + "In 18 commits", // Ali + "After we finish strangling Towny", // Ali + "When we kill every bug in the system", // Ali + "Once the server stops screaming error messages.",// Ali }; + private static final String[] serverReadyQuestions = new String[] { "when will the server be open", + "when will the server be ready", "when's the server ready", "when's the server open" }; + private static final Random serverReadyRandom = new Random(); private static final ArrayList usableServerReadyStrings = new ArrayList(serverReadyStrings.length) { private static final long serialVersionUID = 2213771460909848770L; @@ -59,13 +63,9 @@ public class CommandListener { public void handle(MessageReceivedEvent event) { if (DiscordPlugin.SafeMode) return; - if (event.getMessage().getContent().toLowerCase().contains("when will the server be open?")) { + final String msglowercase = event.getMessage().getContent().toLowerCase(); + if (Arrays.stream(serverReadyQuestions).anyMatch(s -> msglowercase.contains(s))) { int next; - /* - * if (serverReadyStrings.length <= lastServerReadyStrings.size()) { next = lastServerReadyStrings.get(0); lastServerReadyStrings.clear(); } else { next = (short) serverReadyRandom - * .nextInt(serverReadyStrings.length - lastServerReadyStrings.size()); for (short i = 0; i < lastServerReadyStrings.size(); i++) { short j = lastServerReadyStrings.get(i); if - * (next == j) next++; if (next >= serverReadyStrings.length) next = 0; } lastServerReadyStrings.add(next); } - */ if (usableServerReadyStrings.size() == 0) createUsableServerReadyStrings(usableServerReadyStrings); next = usableServerReadyStrings.remove(serverReadyRandom.nextInt(usableServerReadyStrings.size())); diff --git a/src/main/java/buttondevteam/discordplugin/listeners/MCChatListener.java b/src/main/java/buttondevteam/discordplugin/listeners/MCChatListener.java index b040c5f..e08d709 100644 --- a/src/main/java/buttondevteam/discordplugin/listeners/MCChatListener.java +++ b/src/main/java/buttondevteam/discordplugin/listeners/MCChatListener.java @@ -1,8 +1,10 @@ package buttondevteam.discordplugin.listeners; +import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.UUID; +import java.util.function.Consumer; import java.util.stream.Collectors; import org.bukkit.Bukkit; import org.bukkit.entity.Player; @@ -28,8 +30,6 @@ public class MCChatListener implements Listener, IListener return; if (e.getSender() instanceof DiscordSender || e.getSender() instanceof DiscordPlayerSender) return; - if (!e.getChannel().equals(Channel.GlobalChat)) - return; synchronized (this) { final String authorPlayer = DiscordPlugin.sanitizeString(e.getSender() instanceof Player // ? ((Player) e.getSender()).getDisplayName() // @@ -40,22 +40,47 @@ public class MCChatListener implements Listener, IListener "https://minotar.net/avatar/" + ((Player) e.getSender()).getName() + "/32.png").build() : embed.build(); final long nanoTime = System.nanoTime(); - if (lastmessage == null || lastmessage.isDeleted() - || !authorPlayer.equals(lastmessage.getEmbeds().get(0).getAuthor().getName()) - || lastmsgtime / 1000000000f < nanoTime / 1000000000f - 120) { - lastmessage = DiscordPlugin.sendMessageToChannel(DiscordPlugin.chatchannel, "", embedObject); - lastmsgtime = nanoTime; - lastmsg = e.getMessage(); - } else - try { - lastmsg = embedObject.description = lastmsg + "\n" + embedObject.description; - DiscordPlugin.perform(() -> lastmessage.edit("", embedObject)); - } catch (MissingPermissionsException | DiscordException e1) { - TBMCCoreAPI.SendException("An error occured while editing chat message!", e1); - } + Consumer doit = lastmsgdata -> { + if (lastmsgdata.message == null || lastmsgdata.message.isDeleted() + || !authorPlayer.equals(lastmsgdata.message.getEmbeds().get(0).getAuthor().getName()) + || lastmsgdata.time / 1000000000f < nanoTime / 1000000000f - 120) { + lastmsgdata.message = DiscordPlugin.sendMessageToChannel(lastmsgdata.channel, + lastmsgdata.channel.isPrivate() ? e.getChannel().DisplayName : "", embedObject); + lastmsgdata.time = nanoTime; + } else + try { + lastmsgdata.content = embedObject.description = lastmsgdata.content + "\n" + + embedObject.description;// The message object doesn't get updated + final LastMsgData _lastmsgdata = lastmsgdata; + DiscordPlugin.perform(() -> _lastmsgdata.message.edit("", embedObject)); + } catch (MissingPermissionsException | DiscordException e1) { + TBMCCoreAPI.SendException("An error occured while editing chat message!", e1); + } + }; + if (e.getChannel().equals(Channel.GlobalChat)) + doit.accept(lastmsgdata); + + for (LastMsgData data : lastmsgPerUser) { + final DiscordPlayer user = DiscordPlayer.getUser(data.channel.getUsersHere().stream() + .filter(u -> u.getLongID() != u.getClient().getOurUser().getLongID()).findFirst().get() + .getStringID(), DiscordPlayer.class); + if (user.minecraftChat().get() && e.shouldSendTo()) // TODO! + doit.accept(data); + } // TODO: CHeck if user should get the message (get user from channel) } // TODO: Author URL } + private static class LastMsgData { + public IMessage message; + public long time; + public String content; + public IChannel channel; + + public LastMsgData(IChannel channel) { + this.channel = channel; + } + } + @EventHandler public void onChatPreprocess(TBMCChatPreprocessEvent event) { int start = -1; @@ -80,28 +105,30 @@ public class MCChatListener implements Listener, IListener private static final String[] UnconnectedCmds = new String[] { "list", "u", "shrug", "tableflip", "unflip", "mwiki", "yeehaw" }; - private static IMessage lastmessage = null; - private static long lastmsgtime = 0; - private static String lastmsg; + private static LastMsgData lastmsgdata = new LastMsgData(DiscordPlugin.chatchannel); private static short lastlist = 0; private static short lastlistp = 0; + /** + * Used for messages in PMs (mcchat). + */ + private static ArrayList lastmsgPerUser = new ArrayList(); public static final HashMap UnconnectedSenders = new HashMap<>(); public static final HashMap ConnectedSenders = new HashMap<>(); public static short ListC = 0; public static void resetLastMessage() { - lastmessage = null; + lastmsgdata.message = null; // Don't set the whole object to null, the player and channel information should be preserved } @Override // Discord - public void handle(sx.blah.discord.handle.impl.events.guild.channel.message.MessageReceivedEvent event) { + public void handle(MessageReceivedEvent event) { final IUser author = event.getMessage().getAuthor(); if (!event.getMessage().getChannel().getStringID().equals(DiscordPlugin.chatchannel.getStringID()) && !(event.getMessage().getChannel().isPrivate() && DiscordPlayer.getUser(author.getStringID(), DiscordPlayer.class).minecraftChat().get())) return; - lastmessage = null; + resetLastMessage(); lastlist++; if (author.isBot()) return; From 173bc40a1d7b843130e13307d100e7ce6dec7449 Mon Sep 17 00:00:00 2001 From: NorbiPeti Date: Sun, 28 May 2017 11:26:23 +0200 Subject: [PATCH 03/20] Getting sender for receiving messages too --- .../listeners/MCChatListener.java | 48 ++++++++++--------- 1 file changed, 26 insertions(+), 22 deletions(-) diff --git a/src/main/java/buttondevteam/discordplugin/listeners/MCChatListener.java b/src/main/java/buttondevteam/discordplugin/listeners/MCChatListener.java index e08d709..2ed2e17 100644 --- a/src/main/java/buttondevteam/discordplugin/listeners/MCChatListener.java +++ b/src/main/java/buttondevteam/discordplugin/listeners/MCChatListener.java @@ -61,12 +61,12 @@ public class MCChatListener implements Listener, IListener doit.accept(lastmsgdata); for (LastMsgData data : lastmsgPerUser) { - final DiscordPlayer user = DiscordPlayer.getUser(data.channel.getUsersHere().stream() - .filter(u -> u.getLongID() != u.getClient().getOurUser().getLongID()).findFirst().get() - .getStringID(), DiscordPlayer.class); - if (user.minecraftChat().get() && e.shouldSendTo()) // TODO! + final IUser iUser = data.channel.getUsersHere().stream() + .filter(u -> u.getLongID() != u.getClient().getOurUser().getLongID()).findFirst().get(); // Doesn't support group DMs + final DiscordPlayer user = DiscordPlayer.getUser(iUser.getStringID(), DiscordPlayer.class); + if (user.minecraftChat().get() && e.shouldSendTo(getSender(data.channel, iUser, user))) doit.accept(data); - } // TODO: CHeck if user should get the message (get user from channel) + } } // TODO: Author URL } @@ -138,22 +138,7 @@ public class MCChatListener implements Listener, IListener synchronized (this) { try { DiscordPlayer dp = ChromaGamerBase.getUser(author.getStringID(), DiscordPlayer.class); - final DiscordSenderBase dsender; - Player mcp = null; // Offline players can't really run commands, or can they? No, they can't, really. - final String cid; - if ((cid = dp.getConnectedID(TBMCPlayer.class)) != null // Connected? - && (mcp = Bukkit.getPlayer(UUID.fromString(cid))) != null) { // Execute as ingame player - if (!ConnectedSenders.containsKey(author.getStringID())) - ConnectedSenders.put(author.getStringID(), - new DiscordPlayerSender(author, event.getMessage().getChannel(), mcp)); - dsender = ConnectedSenders.get(author.getStringID()); - } else { - TBMCPlayer p = dp.getAs(TBMCPlayer.class); - if (!UnconnectedSenders.containsKey(author.getStringID())) - UnconnectedSenders.put(author.getStringID(), new DiscordSender(author, - event.getMessage().getChannel(), p == null ? null : p.PlayerName().get())); // Display the playername, if found - dsender = UnconnectedSenders.get(author.getStringID()); - } + final DiscordSenderBase dsender = getSender(event.getMessage().getChannel(), author, dp); for (IUser u : event.getMessage().getMentions()) { dmessage = dmessage.replace(u.mention(false), "@" + u.getName()); // TODO: IG Formatting @@ -163,7 +148,7 @@ public class MCChatListener implements Listener, IListener if (dmessage.startsWith("/")) { final String cmd = dmessage.substring(1).toLowerCase(); - if (mcp == null && !Arrays.stream(UnconnectedCmds) + if (dsender instanceof DiscordSender && !Arrays.stream(UnconnectedCmds) .anyMatch(s -> cmd.equals(s) || cmd.startsWith(s + " "))) { // Command not whitelisted DiscordPlugin.sendMessageToChannel(event.getMessage().getChannel(), // TODO @@ -209,4 +194,23 @@ public class MCChatListener implements Listener, IListener } } } + + private DiscordSenderBase getSender(IChannel channel, final IUser author, DiscordPlayer dp) { + final DiscordSenderBase dsender; + Player mcp = null; // Offline players can't really run commands, or can they? No, they can't, really. + final String cid; + if ((cid = dp.getConnectedID(TBMCPlayer.class)) != null // Connected? + && (mcp = Bukkit.getPlayer(UUID.fromString(cid))) != null) { // Execute as ingame player + if (!ConnectedSenders.containsKey(author.getStringID())) + ConnectedSenders.put(author.getStringID(), new DiscordPlayerSender(author, channel, mcp)); + dsender = ConnectedSenders.get(author.getStringID()); + } else { + TBMCPlayer p = dp.getAs(TBMCPlayer.class); + if (!UnconnectedSenders.containsKey(author.getStringID())) + UnconnectedSenders.put(author.getStringID(), + new DiscordSender(author, channel, p == null ? null : p.PlayerName().get())); // Display the playername, if found + dsender = UnconnectedSenders.get(author.getStringID()); + } + return dsender; + } } From 9abb342aa9c365f94a65bbd9659614cfd764d235 Mon Sep 17 00:00:00 2001 From: NorbiPeti Date: Sun, 28 May 2017 11:56:47 +0200 Subject: [PATCH 04/20] Fixes for mcchat --- .../discordplugin/commands/DiscordCommandBase.java | 1 + .../buttondevteam/discordplugin/commands/MCChatCommand.java | 2 +- .../discordplugin/listeners/MCChatListener.java | 6 +++--- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/main/java/buttondevteam/discordplugin/commands/DiscordCommandBase.java b/src/main/java/buttondevteam/discordplugin/commands/DiscordCommandBase.java index be80fbf..76ec6d1 100644 --- a/src/main/java/buttondevteam/discordplugin/commands/DiscordCommandBase.java +++ b/src/main/java/buttondevteam/discordplugin/commands/DiscordCommandBase.java @@ -20,6 +20,7 @@ public abstract class DiscordCommandBase { commands.put("userinfo", new UserinfoCommand()); commands.put("help", new HelpCommand()); commands.put("role", new RoleCommand()); + commands.put("mcchat", new MCChatCommand()); } public static void runCommand(String cmd, String args, IMessage message) { diff --git a/src/main/java/buttondevteam/discordplugin/commands/MCChatCommand.java b/src/main/java/buttondevteam/discordplugin/commands/MCChatCommand.java index 39f632d..f2c9b52 100644 --- a/src/main/java/buttondevteam/discordplugin/commands/MCChatCommand.java +++ b/src/main/java/buttondevteam/discordplugin/commands/MCChatCommand.java @@ -19,7 +19,7 @@ public class MCChatCommand extends DiscordCommandBase { } PlayerData mcchat = DiscordPlayer.getUser(message.getAuthor().getStringID(), DiscordPlayer.class) .minecraftChat(); - mcchat.set(!mcchat.get()); + mcchat.set(!mcchat.getOrDefault(false)); message.reply("Minecraft chat " + (mcchat.get() ? "enabled." : "disabled.")); } diff --git a/src/main/java/buttondevteam/discordplugin/listeners/MCChatListener.java b/src/main/java/buttondevteam/discordplugin/listeners/MCChatListener.java index 2ed2e17..5b07f2e 100644 --- a/src/main/java/buttondevteam/discordplugin/listeners/MCChatListener.java +++ b/src/main/java/buttondevteam/discordplugin/listeners/MCChatListener.java @@ -64,7 +64,7 @@ public class MCChatListener implements Listener, IListener final IUser iUser = data.channel.getUsersHere().stream() .filter(u -> u.getLongID() != u.getClient().getOurUser().getLongID()).findFirst().get(); // Doesn't support group DMs final DiscordPlayer user = DiscordPlayer.getUser(iUser.getStringID(), DiscordPlayer.class); - if (user.minecraftChat().get() && e.shouldSendTo(getSender(data.channel, iUser, user))) + if (user.minecraftChat().getOrDefault(false) && e.shouldSendTo(getSender(data.channel, iUser, user))) doit.accept(data); } } // TODO: Author URL @@ -125,8 +125,8 @@ public class MCChatListener implements Listener, IListener public void handle(MessageReceivedEvent event) { final IUser author = event.getMessage().getAuthor(); if (!event.getMessage().getChannel().getStringID().equals(DiscordPlugin.chatchannel.getStringID()) - && !(event.getMessage().getChannel().isPrivate() - && DiscordPlayer.getUser(author.getStringID(), DiscordPlayer.class).minecraftChat().get())) + && !(event.getMessage().getChannel().isPrivate() && DiscordPlayer + .getUser(author.getStringID(), DiscordPlayer.class).minecraftChat().getOrDefault(false))) return; resetLastMessage(); lastlist++; From c4323d33880ddfe4f406a5c4220f26082da5278e Mon Sep 17 00:00:00 2001 From: NorbiPeti Date: Wed, 31 May 2017 22:42:19 +0200 Subject: [PATCH 05/20] #32, progress with mcchat (#12) --- .../discordplugin/commands/MCChatCommand.java | 12 ++++++++---- .../discordplugin/listeners/MCChatListener.java | 8 +++++--- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/src/main/java/buttondevteam/discordplugin/commands/MCChatCommand.java b/src/main/java/buttondevteam/discordplugin/commands/MCChatCommand.java index f2c9b52..878b4ea 100644 --- a/src/main/java/buttondevteam/discordplugin/commands/MCChatCommand.java +++ b/src/main/java/buttondevteam/discordplugin/commands/MCChatCommand.java @@ -1,6 +1,7 @@ package buttondevteam.discordplugin.commands; import buttondevteam.discordplugin.DiscordPlayer; +import buttondevteam.lib.TBMCCoreAPI; import buttondevteam.lib.player.PlayerData; import sx.blah.discord.handle.obj.IMessage; @@ -17,10 +18,13 @@ public class MCChatCommand extends DiscordCommandBase { message.reply("This command can only be issued while DMing the bot."); return; } - PlayerData mcchat = DiscordPlayer.getUser(message.getAuthor().getStringID(), DiscordPlayer.class) - .minecraftChat(); - mcchat.set(!mcchat.getOrDefault(false)); - message.reply("Minecraft chat " + (mcchat.get() ? "enabled." : "disabled.")); + try (final DiscordPlayer user = DiscordPlayer.getUser(message.getAuthor().getStringID(), DiscordPlayer.class)) { + PlayerData mcchat = user.minecraftChat(); + mcchat.set(!mcchat.getOrDefault(false)); + message.reply("Minecraft chat " + (mcchat.get() ? "enabled." : "disabled.")); + } catch (Exception e) { + TBMCCoreAPI.SendException("Error while setting mcchat for user" + message.getAuthor().getName(), e); + } } @Override diff --git a/src/main/java/buttondevteam/discordplugin/listeners/MCChatListener.java b/src/main/java/buttondevteam/discordplugin/listeners/MCChatListener.java index 5b07f2e..e4332f4 100644 --- a/src/main/java/buttondevteam/discordplugin/listeners/MCChatListener.java +++ b/src/main/java/buttondevteam/discordplugin/listeners/MCChatListener.java @@ -147,11 +147,15 @@ public class MCChatListener implements Listener, IListener } if (dmessage.startsWith("/")) { + DiscordPlugin.perform(() -> { + if (!event.getMessage().isDeleted()) + event.getMessage().delete(); + }); final String cmd = dmessage.substring(1).toLowerCase(); if (dsender instanceof DiscordSender && !Arrays.stream(UnconnectedCmds) .anyMatch(s -> cmd.equals(s) || cmd.startsWith(s + " "))) { // Command not whitelisted - DiscordPlugin.sendMessageToChannel(event.getMessage().getChannel(), // TODO + dsender.sendMessage( // TODO "Sorry, you need to be online on the server and have your accounts connected, you can only access these commands:\n" + Arrays.stream(UnconnectedCmds).map(uc -> "/" + uc) .collect(Collectors.joining(", ")) @@ -170,8 +174,6 @@ public class MCChatListener implements Listener, IListener } else Bukkit.dispatchCommand(dsender, cmd); lastlistp = (short) Bukkit.getOnlinePlayers().size(); - if (!event.getMessage().isDeleted()) - event.getMessage().delete(); } else { TBMCChatAPI.SendChatMessage(Channel.GlobalChat, dsender, dmessage + (event.getMessage().getAttachments().size() > 0 ? "\n" + event.getMessage() From 1ad49dfe23d3603f44a655ab454d7ffbff26fbf0 Mon Sep 17 00:00:00 2001 From: alisolarflare Date: Fri, 9 Jun 2017 00:01:24 -0700 Subject: [PATCH 06/20] More responses --- .../discordplugin/listeners/CommandListener.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/main/java/buttondevteam/discordplugin/listeners/CommandListener.java b/src/main/java/buttondevteam/discordplugin/listeners/CommandListener.java index 9165f14..82f7ffe 100644 --- a/src/main/java/buttondevteam/discordplugin/listeners/CommandListener.java +++ b/src/main/java/buttondevteam/discordplugin/listeners/CommandListener.java @@ -25,10 +25,19 @@ public class CommandListener { "After we finish strangling Towny", // Ali "When we kill every bug in the system", // Ali "Once the server stops screaming error messages.",// Ali + "After HL3 comes out", //Ali + "It'll be ready next time you ask", //Ali }; - private static final String[] serverReadyQuestions = new String[] { "when will the server be open", - "when will the server be ready", "when's the server ready", "when's the server open" }; + private static final String[] serverReadyQuestions = new String[] { + "when will the server be open", + "when will the server be ready", + "when will the server be done", + "when will the server be complete", + "when will the server be finished", + "when's the server ready", + "when's the server open" + }; private static final Random serverReadyRandom = new Random(); private static final ArrayList usableServerReadyStrings = new ArrayList(serverReadyStrings.length) { From 6cd81a67764f46a406bf43636490839d6218697b Mon Sep 17 00:00:00 2001 From: NorbiPeti Date: Wed, 14 Jun 2017 22:10:26 +0200 Subject: [PATCH 07/20] FINISHED basic support for mcchat (#12) --- .../discordplugin/DiscordPlugin.java | 2 +- .../commands/DiscordCommandBase.java | 4 ++- .../discordplugin/commands/MCChatCommand.java | 4 ++- .../listeners/CommandListener.java | 26 +++++++++---------- .../listeners/MCChatListener.java | 10 +++---- 5 files changed, 24 insertions(+), 22 deletions(-) diff --git a/src/main/java/buttondevteam/discordplugin/DiscordPlugin.java b/src/main/java/buttondevteam/discordplugin/DiscordPlugin.java index ac7687b..f513ae3 100644 --- a/src/main/java/buttondevteam/discordplugin/DiscordPlugin.java +++ b/src/main/java/buttondevteam/discordplugin/DiscordPlugin.java @@ -247,7 +247,7 @@ public class DiscordPlugin extends JavaPlugin implements IListener { try { if (channel == chatchannel) MCChatListener.resetLastMessage(); // If this is a chat message, it'll be set again - final String content = TBMCCoreAPI.IsTestServer() && channel != chatchannel + final String content = TBMCCoreAPI.IsTestServer() && channel != chatchannel || channel == botroomchannel // Both are the same for testing ? "*The following message is from a test server*\n" + message : message; return perform( () -> embed == null ? channel.sendMessage(content) : channel.sendMessage(content, embed, false)); diff --git a/src/main/java/buttondevteam/discordplugin/commands/DiscordCommandBase.java b/src/main/java/buttondevteam/discordplugin/commands/DiscordCommandBase.java index 76ec6d1..2cfe732 100644 --- a/src/main/java/buttondevteam/discordplugin/commands/DiscordCommandBase.java +++ b/src/main/java/buttondevteam/discordplugin/commands/DiscordCommandBase.java @@ -27,7 +27,9 @@ public abstract class DiscordCommandBase { DiscordCommandBase command = commands.get(cmd); if (command == null) { DiscordPlugin.sendMessageToChannel(message.getChannel(), - "Unknown command: " + cmd + " with args: " + args + "\nDo @ChromaBot help for help"); + "Unknown command: " + cmd + " with args: " + args + "\nDo '" + + (message.getChannel().isPrivate() ? "" : message.getClient().getOurUser().mention() + " ") + + "help' for help"); return; } try { diff --git a/src/main/java/buttondevteam/discordplugin/commands/MCChatCommand.java b/src/main/java/buttondevteam/discordplugin/commands/MCChatCommand.java index 878b4ea..66294c6 100644 --- a/src/main/java/buttondevteam/discordplugin/commands/MCChatCommand.java +++ b/src/main/java/buttondevteam/discordplugin/commands/MCChatCommand.java @@ -21,7 +21,9 @@ public class MCChatCommand extends DiscordCommandBase { try (final DiscordPlayer user = DiscordPlayer.getUser(message.getAuthor().getStringID(), DiscordPlayer.class)) { PlayerData mcchat = user.minecraftChat(); mcchat.set(!mcchat.getOrDefault(false)); - message.reply("Minecraft chat " + (mcchat.get() ? "enabled." : "disabled.")); + message.reply( + "Minecraft chat " + (mcchat.get() ? "enabled. Use '" + message.getClient().getOurUser().mention() + + " mcchat' (with the mention) to disable." : "disabled.")); } catch (Exception e) { TBMCCoreAPI.SendException("Error while setting mcchat for user" + message.getAuthor().getName(), e); } diff --git a/src/main/java/buttondevteam/discordplugin/listeners/CommandListener.java b/src/main/java/buttondevteam/discordplugin/listeners/CommandListener.java index 82f7ffe..7717aac 100644 --- a/src/main/java/buttondevteam/discordplugin/listeners/CommandListener.java +++ b/src/main/java/buttondevteam/discordplugin/listeners/CommandListener.java @@ -4,6 +4,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Random; +import buttondevteam.discordplugin.DiscordPlayer; import buttondevteam.discordplugin.DiscordPlugin; import buttondevteam.discordplugin.commands.DiscordCommandBase; import sx.blah.discord.api.events.IListener; @@ -24,20 +25,14 @@ public class CommandListener { "In 18 commits", // Ali "After we finish strangling Towny", // Ali "When we kill every bug in the system", // Ali - "Once the server stops screaming error messages.",// Ali - "After HL3 comes out", //Ali - "It'll be ready next time you ask", //Ali + "Once the server stops screaming error messages.", // Ali + "After HL3 comes out", // Ali + "It'll be ready next time you ask", // Ali }; - private static final String[] serverReadyQuestions = new String[] { - "when will the server be open", - "when will the server be ready", - "when will the server be done", - "when will the server be complete", - "when will the server be finished", - "when's the server ready", - "when's the server open" - }; + private static final String[] serverReadyQuestions = new String[] { "when will the server be open", + "when will the server be ready", "when will the server be done", "when will the server be complete", + "when will the server be finished", "when's the server ready", "when's the server open" }; private static final Random serverReadyRandom = new Random(); private static final ArrayList usableServerReadyStrings = new ArrayList(serverReadyStrings.length) { @@ -65,6 +60,9 @@ public class CommandListener { return; if (channel.getStringID().equals(DiscordPlugin.chatchannel.getStringID())) return; // The chat code already handles this - Right now while testing botchannel is the same as chatchannel + if (DiscordPlayer.getUser(event.getAuthor().getStringID(), DiscordPlayer.class).minecraftChat() + .getOrDefault(false)) // Let the MCChatListener handle it + return; runCommand(event.getMessage(), true); } }, new IListener() { @@ -80,7 +78,9 @@ public class CommandListener { next = usableServerReadyStrings.remove(serverReadyRandom.nextInt(usableServerReadyStrings.size())); DiscordPlugin.sendMessageToChannel(event.getMessage().getChannel(), serverReadyStrings[next]); } - if (!event.getMessage().getChannel().isPrivate()) + if (!event.getMessage().getChannel().isPrivate() + || DiscordPlayer.getUser(event.getAuthor().getStringID(), DiscordPlayer.class).minecraftChat() + .getOrDefault(false)) return; if (event.getMessage().getAuthor().isBot()) return; diff --git a/src/main/java/buttondevteam/discordplugin/listeners/MCChatListener.java b/src/main/java/buttondevteam/discordplugin/listeners/MCChatListener.java index e4332f4..d3d3b41 100644 --- a/src/main/java/buttondevteam/discordplugin/listeners/MCChatListener.java +++ b/src/main/java/buttondevteam/discordplugin/listeners/MCChatListener.java @@ -15,7 +15,6 @@ import buttondevteam.discordplugin.*; import buttondevteam.lib.*; import buttondevteam.lib.chat.Channel; import buttondevteam.lib.chat.TBMCChatAPI; -import buttondevteam.lib.player.ChromaGamerBase; import buttondevteam.lib.player.TBMCPlayer; import sx.blah.discord.api.events.IListener; import sx.blah.discord.api.internal.json.objects.EmbedObject; @@ -124,9 +123,9 @@ public class MCChatListener implements Listener, IListener @Override // Discord public void handle(MessageReceivedEvent event) { final IUser author = event.getMessage().getAuthor(); + final DiscordPlayer user = DiscordPlayer.getUser(author.getStringID(), DiscordPlayer.class); if (!event.getMessage().getChannel().getStringID().equals(DiscordPlugin.chatchannel.getStringID()) - && !(event.getMessage().getChannel().isPrivate() && DiscordPlayer - .getUser(author.getStringID(), DiscordPlayer.class).minecraftChat().getOrDefault(false))) + && !(event.getMessage().getChannel().isPrivate() && user.minecraftChat().getOrDefault(false))) return; resetLastMessage(); lastlist++; @@ -137,8 +136,7 @@ public class MCChatListener implements Listener, IListener String dmessage = event.getMessage().getContent(); synchronized (this) { try { - DiscordPlayer dp = ChromaGamerBase.getUser(author.getStringID(), DiscordPlayer.class); - final DiscordSenderBase dsender = getSender(event.getMessage().getChannel(), author, dp); + final DiscordSenderBase dsender = getSender(event.getMessage().getChannel(), author, user); for (IUser u : event.getMessage().getMentions()) { dmessage = dmessage.replace(u.mention(false), "@" + u.getName()); // TODO: IG Formatting @@ -148,7 +146,7 @@ public class MCChatListener implements Listener, IListener if (dmessage.startsWith("/")) { DiscordPlugin.perform(() -> { - if (!event.getMessage().isDeleted()) + if (!event.getMessage().isDeleted() && !event.getChannel().isPrivate()) event.getMessage().delete(); }); final String cmd = dmessage.substring(1).toLowerCase(); From f441d39145fcd913e372a05fb0af46ee3b33793b Mon Sep 17 00:00:00 2001 From: NorbiPeti Date: Thu, 15 Jun 2017 22:14:06 +0200 Subject: [PATCH 08/20] Discord login started (OAuth2) --- pom.xml | 5 +++++ .../discordplugin/DiscordPlugin.java | 22 ++++++++++++++++++- 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index f84cb96..590e215 100644 --- a/pom.xml +++ b/pom.xml @@ -162,5 +162,10 @@ Essentials 2.13.1 + + com.github.xaanit + D4J-OAuth + master-SNAPSHOT + diff --git a/src/main/java/buttondevteam/discordplugin/DiscordPlugin.java b/src/main/java/buttondevteam/discordplugin/DiscordPlugin.java index f513ae3..4dd777f 100644 --- a/src/main/java/buttondevteam/discordplugin/DiscordPlugin.java +++ b/src/main/java/buttondevteam/discordplugin/DiscordPlugin.java @@ -13,6 +13,9 @@ import org.bukkit.plugin.RegisteredServiceProvider; import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.scheduler.BukkitTask; +import com.github.xaanit.d4j.oauth.Scope; +import com.github.xaanit.d4j.oauth.handle.IDiscordOAuth; +import com.github.xaanit.d4j.oauth.util.DiscordOAuthBuilder; import com.google.common.io.Files; import com.google.gson.*; @@ -20,6 +23,7 @@ import buttondevteam.discordplugin.listeners.*; import buttondevteam.discordplugin.mccommands.DiscordMCCommandBase; import buttondevteam.lib.TBMCCoreAPI; import buttondevteam.lib.chat.TBMCChatAPI; +import io.vertx.core.http.HttpServerOptions; import net.milkbowl.vault.permission.Permission; import sx.blah.discord.api.*; import sx.blah.discord.api.events.IListener; @@ -147,7 +151,23 @@ public class DiscordPlugin extends JavaPlugin implements IListener { sendMessageToChannel(dc.getChannels().get(rand.nextInt(dc.getChannels().size())), "You could make a religion out of this"); } - + IDiscordOAuth doa = new DiscordOAuthBuilder(dc).withClientID("226443037893591041") + .withClientSecret(getConfig().getString("appsecret")) + .withRedirectUrl("https://" + (TBMCCoreAPI.IsTestServer() ? "localhost" : "server.figytuna.com") + + ":8081/callback") + .withScopes(Scope.IDENTIFY).withHttpServerOptions(new HttpServerOptions().setPort(8081)) + .withSuccessHandler((rc, user) -> { + rc.response().headers().add("Location", + "https://" + (TBMCCoreAPI.IsTestServer() ? "localhost" : "server.figytuna.com") + + ":8080/login?type=discord"); + rc.response().close(); + }).withFailureHandler(rc -> { + rc.response().headers().add("Location", + "https://" + (TBMCCoreAPI.IsTestServer() ? "localhost" : "server.figytuna.com") + + ":8080/login?type=discord"); // TODO + rc.response().close(); + }).build(); + getLogger().info("Auth URL: " + doa.buildAuthUrl()); } catch (Exception e) { TBMCCoreAPI.SendException("An error occured while enabling DiscordPlugin!", e); } From 42bc7639bea7e5819cb55e988ef923bad56d470e Mon Sep 17 00:00:00 2001 From: alisolarflare Date: Thu, 15 Jun 2017 20:27:35 -0600 Subject: [PATCH 09/20] kek --- .../discordplugin/listeners/CommandListener.java | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/main/java/buttondevteam/discordplugin/listeners/CommandListener.java b/src/main/java/buttondevteam/discordplugin/listeners/CommandListener.java index 7717aac..f5922e7 100644 --- a/src/main/java/buttondevteam/discordplugin/listeners/CommandListener.java +++ b/src/main/java/buttondevteam/discordplugin/listeners/CommandListener.java @@ -19,15 +19,16 @@ public class CommandListener { "Between now and the heat-death of the universe.", // Ghostise "Soon™", "Ask again this time next month", // Ghostise "In about 3 seconds", // Nicolai - "Right after we finish coding 7 plugins", // Ali - "It'll be done tomorrow.", // Ali - "We just need to complete one tiiiny feature", // Ali - "In 18 commits", // Ali + "After we finish 8 plugins", // Ali + "Tomorrow.", // Ali + "After one tiiiny feature", // Ali + "Next commit", // Ali "After we finish strangling Towny", // Ali - "When we kill every bug in the system", // Ali - "Once the server stops screaming error messages.", // Ali + "When we kill every *fucking* bug", // Ali + "Once the server stops screaming.", // Ali "After HL3 comes out", // Ali - "It'll be ready next time you ask", // Ali + "Next time you ask", // Ali + "When will *you* be open?" //Ali }; private static final String[] serverReadyQuestions = new String[] { "when will the server be open", From 82c2907606d81cf389482f8c219c5e4b3849ce08 Mon Sep 17 00:00:00 2001 From: NorbiPeti Date: Fri, 16 Jun 2017 18:34:42 +0200 Subject: [PATCH 10/20] Added vampire version of the question --- .../buttondevteam/discordplugin/listeners/CommandListener.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/buttondevteam/discordplugin/listeners/CommandListener.java b/src/main/java/buttondevteam/discordplugin/listeners/CommandListener.java index f5922e7..aee7230 100644 --- a/src/main/java/buttondevteam/discordplugin/listeners/CommandListener.java +++ b/src/main/java/buttondevteam/discordplugin/listeners/CommandListener.java @@ -33,7 +33,7 @@ public class CommandListener { private static final String[] serverReadyQuestions = new String[] { "when will the server be open", "when will the server be ready", "when will the server be done", "when will the server be complete", - "when will the server be finished", "when's the server ready", "when's the server open" }; + "when will the server be finished", "when's the server ready", "when's the server open", "Vhen vill ze server be open?" }; private static final Random serverReadyRandom = new Random(); private static final ArrayList usableServerReadyStrings = new ArrayList(serverReadyStrings.length) { From 471d394a496b03775cd68b41d1d593792e407d74 Mon Sep 17 00:00:00 2001 From: NorbiPeti Date: Fri, 16 Jun 2017 23:47:09 +0200 Subject: [PATCH 11/20] Fixed redirect --- .../buttondevteam/discordplugin/DiscordPlugin.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/main/java/buttondevteam/discordplugin/DiscordPlugin.java b/src/main/java/buttondevteam/discordplugin/DiscordPlugin.java index 4dd777f..ffeadc8 100644 --- a/src/main/java/buttondevteam/discordplugin/DiscordPlugin.java +++ b/src/main/java/buttondevteam/discordplugin/DiscordPlugin.java @@ -34,6 +34,7 @@ import sx.blah.discord.util.DiscordException; import sx.blah.discord.util.EmbedBuilder; import sx.blah.discord.util.MissingPermissionsException; import sx.blah.discord.util.RateLimitException; +import sx.blah.discord.util.RequestBuffer; public class DiscordPlugin extends JavaPlugin implements IListener { private static final String SubredditURL = "https://www.reddit.com/r/ChromaGamers"; @@ -159,15 +160,21 @@ public class DiscordPlugin extends JavaPlugin implements IListener { .withSuccessHandler((rc, user) -> { rc.response().headers().add("Location", "https://" + (TBMCCoreAPI.IsTestServer() ? "localhost" : "server.figytuna.com") - + ":8080/login?type=discord"); + + ":8080/login?type=discord&" + rc.request().query()); + rc.response().setStatusCode(303); + rc.response().end("Redirecting"); rc.response().close(); }).withFailureHandler(rc -> { rc.response().headers().add("Location", "https://" + (TBMCCoreAPI.IsTestServer() ? "localhost" : "server.figytuna.com") - + ":8080/login?type=discord"); // TODO + + ":8080/login?type=discord&" + rc.request().query()); + rc.response().setStatusCode(303); + rc.response().end("Redirecting"); rc.response().close(); }).build(); getLogger().info("Auth URL: " + doa.buildAuthUrl()); + Void v = RequestBuffer.request(System.out::println).get(); // TODO: Remove + System.out.println(v); } catch (Exception e) { TBMCCoreAPI.SendException("An error occured while enabling DiscordPlugin!", e); } From 4f0c173a43f51bf906b92103615a6506a2e1278e Mon Sep 17 00:00:00 2001 From: NorbiPeti Date: Sun, 18 Jun 2017 21:35:24 +0200 Subject: [PATCH 12/20] Create .travis.yml --- .travis.yml | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..9bcf999 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,3 @@ +language: java +jdk: + - oraclejdk8 From 329c2eeaa25d2f6e631a2b3ea9bf94745b27163e Mon Sep 17 00:00:00 2001 From: NorbiPeti Date: Fri, 23 Jun 2017 13:10:21 +0200 Subject: [PATCH 13/20] Added *temporary* solution to pinned messages --- .../discordplugin/listeners/MCChatListener.java | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/main/java/buttondevteam/discordplugin/listeners/MCChatListener.java b/src/main/java/buttondevteam/discordplugin/listeners/MCChatListener.java index d3d3b41..1bc5218 100644 --- a/src/main/java/buttondevteam/discordplugin/listeners/MCChatListener.java +++ b/src/main/java/buttondevteam/discordplugin/listeners/MCChatListener.java @@ -173,10 +173,16 @@ public class MCChatListener implements Listener, IListener Bukkit.dispatchCommand(dsender, cmd); lastlistp = (short) Bukkit.getOnlinePlayers().size(); } else { - TBMCChatAPI.SendChatMessage(Channel.GlobalChat, dsender, - dmessage + (event.getMessage().getAttachments().size() > 0 ? "\n" + event.getMessage() - .getAttachments().stream().map(a -> a.getUrl()).collect(Collectors.joining("\n")) - : "")); + if (dmessage.length() == 0 && event.getMessage().getAttachments().size() == 0) + TBMCChatAPI.SendChatMessage(Channel.GlobalChat, dsender, "pinned a message on Discord."); // TODO: Not chat message + else + TBMCChatAPI + .SendChatMessage(Channel.GlobalChat, + dsender, dmessage + + (event.getMessage().getAttachments().size() > 0 + ? "\n" + event.getMessage().getAttachments().stream() + .map(a -> a.getUrl()).collect(Collectors.joining("\n")) + : "")); event.getMessage().getChannel().getMessageHistory().stream().forEach(m -> { try { final IReaction reaction = m.getReactionByUnicode(DiscordPlugin.DELIVERED_REACTION); From b7c8e9dfa66732ae9f6886e2b9e807317c5dcf53 Mon Sep 17 00:00:00 2001 From: NorbiPeti Date: Fri, 23 Jun 2017 19:36:17 +0200 Subject: [PATCH 14/20] Added check for Maven project --- .../discordplugin/listeners/AutoUpdaterListener.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/buttondevteam/discordplugin/listeners/AutoUpdaterListener.java b/src/main/java/buttondevteam/discordplugin/listeners/AutoUpdaterListener.java index 276797b..9e69f43 100644 --- a/src/main/java/buttondevteam/discordplugin/listeners/AutoUpdaterListener.java +++ b/src/main/java/buttondevteam/discordplugin/listeners/AutoUpdaterListener.java @@ -5,6 +5,7 @@ import java.util.function.Supplier; import buttondevteam.discordplugin.DiscordPlugin; import buttondevteam.discordplugin.DiscordSender; +import buttondevteam.lib.PluginUpdater; import buttondevteam.lib.TBMCCoreAPI; import sx.blah.discord.api.events.IListener; import sx.blah.discord.handle.impl.events.guild.channel.message.MessageReceivedEvent; @@ -29,13 +30,14 @@ public class AutoUpdaterListener implements IListener { String branch = title.substring(title.indexOf(':') + 1, title.indexOf(']')); String project = title.substring(title.indexOf('[') + 1, title.indexOf(':')); if ((branch.equals("master") || (TBMCCoreAPI.IsTestServer() && branch.equals("dev"))) + && PluginUpdater.isMaven(project, branch) && TBMCCoreAPI.UpdatePlugin(project, new DiscordSender(null, TBMCCoreAPI.IsTestServer() // ? DiscordPlugin.chatchannel // : DiscordPlugin.botroomchannel), branch) - && ((Supplier) () -> { // Best looking code I've ever written + && ((Supplier) () -> { try { int hi, ei, prnum; if ((hi = embed.getDescription().indexOf('#')) > -1 From a6244b7f9f169f0a5bbaa90cc43c254a350fe166 Mon Sep 17 00:00:00 2001 From: NorbiPeti Date: Fri, 30 Jun 2017 16:55:13 +0200 Subject: [PATCH 15/20] Fixed mcchat stuff and ch IDs added etc. #12 --- .../discordplugin/commands/MCChatCommand.java | 7 +++-- .../listeners/CommandListener.java | 8 +++-- .../listeners/MCChatListener.java | 29 +++++++++++++------ .../discordplugin/listeners/MCListener.java | 10 +++---- .../buttondevteam/DiscordPlugin/AppTest.java | 26 ----------------- 5 files changed, 34 insertions(+), 46 deletions(-) diff --git a/src/main/java/buttondevteam/discordplugin/commands/MCChatCommand.java b/src/main/java/buttondevteam/discordplugin/commands/MCChatCommand.java index 66294c6..a7fe4de 100644 --- a/src/main/java/buttondevteam/discordplugin/commands/MCChatCommand.java +++ b/src/main/java/buttondevteam/discordplugin/commands/MCChatCommand.java @@ -21,9 +21,10 @@ public class MCChatCommand extends DiscordCommandBase { try (final DiscordPlayer user = DiscordPlayer.getUser(message.getAuthor().getStringID(), DiscordPlayer.class)) { PlayerData mcchat = user.minecraftChat(); mcchat.set(!mcchat.getOrDefault(false)); - message.reply( - "Minecraft chat " + (mcchat.get() ? "enabled. Use '" + message.getClient().getOurUser().mention() - + " mcchat' (with the mention) to disable." : "disabled.")); + message.reply("Minecraft chat " + (mcchat.getOrDefault(false) // + ? "enabled. Use '" + message.getClient().getOurUser().mention() + + " mcchat' (with the mention) to disable." // + : "disabled.")); } catch (Exception e) { TBMCCoreAPI.SendException("Error while setting mcchat for user" + message.getAuthor().getName(), e); } diff --git a/src/main/java/buttondevteam/discordplugin/listeners/CommandListener.java b/src/main/java/buttondevteam/discordplugin/listeners/CommandListener.java index aee7230..82fa5cd 100644 --- a/src/main/java/buttondevteam/discordplugin/listeners/CommandListener.java +++ b/src/main/java/buttondevteam/discordplugin/listeners/CommandListener.java @@ -28,12 +28,13 @@ public class CommandListener { "Once the server stops screaming.", // Ali "After HL3 comes out", // Ali "Next time you ask", // Ali - "When will *you* be open?" //Ali + "When will *you* be open?" // Ali }; private static final String[] serverReadyQuestions = new String[] { "when will the server be open", "when will the server be ready", "when will the server be done", "when will the server be complete", - "when will the server be finished", "when's the server ready", "when's the server open", "Vhen vill ze server be open?" }; + "when will the server be finished", "when's the server ready", "when's the server open", + "Vhen vill ze server be open?" }; private static final Random serverReadyRandom = new Random(); private static final ArrayList usableServerReadyStrings = new ArrayList(serverReadyStrings.length) { @@ -64,6 +65,7 @@ public class CommandListener { if (DiscordPlayer.getUser(event.getAuthor().getStringID(), DiscordPlayer.class).minecraftChat() .getOrDefault(false)) // Let the MCChatListener handle it return; + event.getMessage().getChannel().setTypingStatus(true); // Fun runCommand(event.getMessage(), true); } }, new IListener() { @@ -102,7 +104,6 @@ public class CommandListener { public static boolean runCommand(IMessage message, boolean mentionedonly) { if (DiscordPlugin.SafeMode) return true; - message.getChannel().setTypingStatus(true); final StringBuilder cmdwithargs = new StringBuilder(message.getContent()); final String mention = DiscordPlugin.dc.getOurUser().mention(false); final String mentionNick = DiscordPlugin.dc.getOurUser().mention(true); @@ -114,6 +115,7 @@ public class CommandListener { message.getChannel().setTypingStatus(false); return false; } + message.getChannel().setTypingStatus(true); int index = cmdwithargs.indexOf(" "); String cmd; String args; diff --git a/src/main/java/buttondevteam/discordplugin/listeners/MCChatListener.java b/src/main/java/buttondevteam/discordplugin/listeners/MCChatListener.java index 1bc5218..c60b6c9 100644 --- a/src/main/java/buttondevteam/discordplugin/listeners/MCChatListener.java +++ b/src/main/java/buttondevteam/discordplugin/listeners/MCChatListener.java @@ -34,24 +34,26 @@ public class MCChatListener implements Listener, IListener ? ((Player) e.getSender()).getDisplayName() // : e.getSender().getName()); final EmbedBuilder embed = new EmbedBuilder().withAuthorName(authorPlayer).withDescription(e.getMessage()); - final EmbedObject embedObject = e.getSender() instanceof Player - ? embed.withAuthorIcon( - "https://minotar.net/avatar/" + ((Player) e.getSender()).getName() + "/32.png").build() - : embed.build(); + if (e.getSender() instanceof Player) + embed.withAuthorIcon("https://minotar.net/avatar/" + ((Player) e.getSender()).getName() + "/32.png"); final long nanoTime = System.nanoTime(); Consumer doit = lastmsgdata -> { + final EmbedObject embedObject = embed.build(); + String msg = lastmsgdata.channel.isPrivate() ? DiscordPlugin.sanitizeString(e.getChannel().DisplayName) + : ""; if (lastmsgdata.message == null || lastmsgdata.message.isDeleted() || !authorPlayer.equals(lastmsgdata.message.getEmbeds().get(0).getAuthor().getName()) - || lastmsgdata.time / 1000000000f < nanoTime / 1000000000f - 120) { - lastmsgdata.message = DiscordPlugin.sendMessageToChannel(lastmsgdata.channel, - lastmsgdata.channel.isPrivate() ? e.getChannel().DisplayName : "", embedObject); + || lastmsgdata.time / 1000000000f < nanoTime / 1000000000f - 120 + || !lastmsgdata.mcchannel.ID.equals(e.getChannel().ID)) { + lastmsgdata.message = DiscordPlugin.sendMessageToChannel(lastmsgdata.channel, msg, embedObject); lastmsgdata.time = nanoTime; + lastmsgdata.mcchannel = e.getChannel(); } else try { lastmsgdata.content = embedObject.description = lastmsgdata.content + "\n" + embedObject.description;// The message object doesn't get updated final LastMsgData _lastmsgdata = lastmsgdata; - DiscordPlugin.perform(() -> _lastmsgdata.message.edit("", embedObject)); + DiscordPlugin.perform(() -> _lastmsgdata.message.edit(msg, embedObject)); } catch (MissingPermissionsException | DiscordException e1) { TBMCCoreAPI.SendException("An error occured while editing chat message!", e1); } @@ -74,6 +76,7 @@ public class MCChatListener implements Listener, IListener public long time; public String content; public IChannel channel; + public Channel mcchannel; public LastMsgData(IChannel channel) { this.channel = channel; @@ -112,6 +115,14 @@ public class MCChatListener implements Listener, IListener */ private static ArrayList lastmsgPerUser = new ArrayList(); + public static boolean startPrivateMCChat(IChannel channel) { + return lastmsgPerUser.add(new LastMsgData(channel)); + } + + public static boolean stopPrivateMCChat(IChannel channel) { + return lastmsgPerUser.removeIf(lmd -> lmd.channel.getLongID() == channel.getLongID()); + } + public static final HashMap UnconnectedSenders = new HashMap<>(); public static final HashMap ConnectedSenders = new HashMap<>(); public static short ListC = 0; @@ -214,7 +225,7 @@ public class MCChatListener implements Listener, IListener TBMCPlayer p = dp.getAs(TBMCPlayer.class); if (!UnconnectedSenders.containsKey(author.getStringID())) UnconnectedSenders.put(author.getStringID(), - new DiscordSender(author, channel, p == null ? null : p.PlayerName().get())); // Display the playername, if found + new DiscordSender(author, channel, p == null ? null : p.PlayerName().getOrDefault(null))); // Display the playername, if found dsender = UnconnectedSenders.get(author.getStringID()); } return dsender; diff --git a/src/main/java/buttondevteam/discordplugin/listeners/MCListener.java b/src/main/java/buttondevteam/discordplugin/listeners/MCListener.java index 89af699..3ca03ff 100644 --- a/src/main/java/buttondevteam/discordplugin/listeners/MCListener.java +++ b/src/main/java/buttondevteam/discordplugin/listeners/MCListener.java @@ -25,22 +25,22 @@ public class MCListener implements Listener { @EventHandler public void onPlayerJoin(TBMCPlayerJoinEvent e) { final Player p = Bukkit.getPlayer(e.GetPlayer().getUUID()); - if (ConnectCommand.WaitingToConnect.containsKey(e.GetPlayer().PlayerName().get())) { - IUser user = DiscordPlugin.dc - .getUserByID(Long.parseLong(ConnectCommand.WaitingToConnect.get(e.GetPlayer().PlayerName().get()))); + if (ConnectCommand.WaitingToConnect.containsKey(e.GetPlayer().PlayerName().getOrDefault(null))) { + IUser user = DiscordPlugin.dc.getUserByID( + Long.parseLong(ConnectCommand.WaitingToConnect.get(e.GetPlayer().PlayerName().getOrDefault(null)))); p.sendMessage("§bTo connect with the Discord account @" + user.getName() + "#" + user.getDiscriminator() + " do /discord accept"); p.sendMessage("§bIf it wasn't you, do /discord decline"); } DiscordPlugin.sendMessageToChannel(DiscordPlugin.chatchannel, - e.GetPlayer().PlayerName().get() + " joined the game"); + e.GetPlayer().PlayerName().getOrDefault(null) + " joined the game"); MCChatListener.ListC = 0; } @EventHandler public void onPlayerLeave(TBMCPlayerQuitEvent e) { DiscordPlugin.sendMessageToChannel(DiscordPlugin.chatchannel, - e.GetPlayer().PlayerName().get() + " left the game"); + e.GetPlayer().PlayerName().getOrDefault(null) + " left the game"); } @EventHandler diff --git a/src/test/java/buttondevteam/DiscordPlugin/AppTest.java b/src/test/java/buttondevteam/DiscordPlugin/AppTest.java index c560777..46ad699 100644 --- a/src/test/java/buttondevteam/DiscordPlugin/AppTest.java +++ b/src/test/java/buttondevteam/DiscordPlugin/AppTest.java @@ -1,11 +1,5 @@ package buttondevteam.DiscordPlugin; -import java.util.Arrays; -import java.util.stream.Collectors; - -import org.apache.commons.lang.exception.ExceptionUtils; - -import buttondevteam.lib.TBMCCoreAPI; import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; @@ -35,26 +29,6 @@ public class AppTest extends TestCase { * Rigourous Test :-) */ public void testApp() { - /*String sourcemessage = "Test message"; - Exception e = new Exception("Test exception"); - StringBuilder sb = TBMCCoreAPI.IsTestServer() ? new StringBuilder() - : new StringBuilder("Coder role").append("\n"); - sb.append(sourcemessage).append("\n"); - sb.append("```").append("\n"); - String stackTrace = Arrays.stream(ExceptionUtils.getStackTrace(e).split("\\n")) - .filter(s -> !(s.contains("\tat ") && ( // - s.contains("java.util") // - || s.contains("java.lang") // - || s.contains("net.minecraft.server") // - || s.contains("sun.reflect") // - || s.contains("org.bukkit") // - ))).collect(Collectors.joining("\n")); - if (stackTrace.length() > 1800) - stackTrace = stackTrace.substring(0, 1800); - sb.append(stackTrace).append("\n"); - sb.append("```"); - System.out.println(sb.toString()); - assertTrue(sb.toString().contains("Coder role"));*/ assertTrue(true); } } From 6dd21b03c145d607b8daf6dcf236efa961c229fc Mon Sep 17 00:00:00 2001 From: NorbiPeti Date: Fri, 30 Jun 2017 18:29:21 +0200 Subject: [PATCH 16/20] Applied changes and a fix --- .../discordplugin/DiscordPlayer.java | 2 +- .../discordplugin/commands/MCChatCommand.java | 6 ++++-- .../discordplugin/listeners/CommandListener.java | 8 +++----- .../discordplugin/listeners/MCChatListener.java | 15 ++++++--------- .../discordplugin/listeners/MCListener.java | 10 +++++----- 5 files changed, 19 insertions(+), 22 deletions(-) diff --git a/src/main/java/buttondevteam/discordplugin/DiscordPlayer.java b/src/main/java/buttondevteam/discordplugin/DiscordPlayer.java index 913372c..48d957a 100644 --- a/src/main/java/buttondevteam/discordplugin/DiscordPlayer.java +++ b/src/main/java/buttondevteam/discordplugin/DiscordPlayer.java @@ -18,6 +18,6 @@ public class DiscordPlayer extends ChromaGamerBase { } public PlayerData minecraftChat() { - return data(); + return data(false); } } diff --git a/src/main/java/buttondevteam/discordplugin/commands/MCChatCommand.java b/src/main/java/buttondevteam/discordplugin/commands/MCChatCommand.java index a7fe4de..e25092c 100644 --- a/src/main/java/buttondevteam/discordplugin/commands/MCChatCommand.java +++ b/src/main/java/buttondevteam/discordplugin/commands/MCChatCommand.java @@ -1,6 +1,7 @@ package buttondevteam.discordplugin.commands; import buttondevteam.discordplugin.DiscordPlayer; +import buttondevteam.discordplugin.listeners.MCChatListener; import buttondevteam.lib.TBMCCoreAPI; import buttondevteam.lib.player.PlayerData; import sx.blah.discord.handle.obj.IMessage; @@ -20,8 +21,9 @@ public class MCChatCommand extends DiscordCommandBase { } try (final DiscordPlayer user = DiscordPlayer.getUser(message.getAuthor().getStringID(), DiscordPlayer.class)) { PlayerData mcchat = user.minecraftChat(); - mcchat.set(!mcchat.getOrDefault(false)); - message.reply("Minecraft chat " + (mcchat.getOrDefault(false) // + mcchat.set(!mcchat.get()); + MCChatListener.privateMCChat(message.getChannel(), mcchat.get()); + message.reply("Minecraft chat " + (mcchat.get() // ? "enabled. Use '" + message.getClient().getOurUser().mention() + " mcchat' (with the mention) to disable." // : "disabled.")); diff --git a/src/main/java/buttondevteam/discordplugin/listeners/CommandListener.java b/src/main/java/buttondevteam/discordplugin/listeners/CommandListener.java index 82fa5cd..247b09e 100644 --- a/src/main/java/buttondevteam/discordplugin/listeners/CommandListener.java +++ b/src/main/java/buttondevteam/discordplugin/listeners/CommandListener.java @@ -62,8 +62,7 @@ public class CommandListener { return; if (channel.getStringID().equals(DiscordPlugin.chatchannel.getStringID())) return; // The chat code already handles this - Right now while testing botchannel is the same as chatchannel - if (DiscordPlayer.getUser(event.getAuthor().getStringID(), DiscordPlayer.class).minecraftChat() - .getOrDefault(false)) // Let the MCChatListener handle it + if (DiscordPlayer.getUser(event.getAuthor().getStringID(), DiscordPlayer.class).minecraftChat().get()) // Let the MCChatListener handle it return; event.getMessage().getChannel().setTypingStatus(true); // Fun runCommand(event.getMessage(), true); @@ -81,9 +80,8 @@ public class CommandListener { next = usableServerReadyStrings.remove(serverReadyRandom.nextInt(usableServerReadyStrings.size())); DiscordPlugin.sendMessageToChannel(event.getMessage().getChannel(), serverReadyStrings[next]); } - if (!event.getMessage().getChannel().isPrivate() - || DiscordPlayer.getUser(event.getAuthor().getStringID(), DiscordPlayer.class).minecraftChat() - .getOrDefault(false)) + if (!event.getMessage().getChannel().isPrivate() || DiscordPlayer + .getUser(event.getAuthor().getStringID(), DiscordPlayer.class).minecraftChat().get()) return; if (event.getMessage().getAuthor().isBot()) return; diff --git a/src/main/java/buttondevteam/discordplugin/listeners/MCChatListener.java b/src/main/java/buttondevteam/discordplugin/listeners/MCChatListener.java index c60b6c9..cc6e495 100644 --- a/src/main/java/buttondevteam/discordplugin/listeners/MCChatListener.java +++ b/src/main/java/buttondevteam/discordplugin/listeners/MCChatListener.java @@ -65,7 +65,7 @@ public class MCChatListener implements Listener, IListener final IUser iUser = data.channel.getUsersHere().stream() .filter(u -> u.getLongID() != u.getClient().getOurUser().getLongID()).findFirst().get(); // Doesn't support group DMs final DiscordPlayer user = DiscordPlayer.getUser(iUser.getStringID(), DiscordPlayer.class); - if (user.minecraftChat().getOrDefault(false) && e.shouldSendTo(getSender(data.channel, iUser, user))) + if (user.minecraftChat().get() && e.shouldSendTo(getSender(data.channel, iUser, user))) doit.accept(data); } } // TODO: Author URL @@ -115,12 +115,9 @@ public class MCChatListener implements Listener, IListener */ private static ArrayList lastmsgPerUser = new ArrayList(); - public static boolean startPrivateMCChat(IChannel channel) { - return lastmsgPerUser.add(new LastMsgData(channel)); - } - - public static boolean stopPrivateMCChat(IChannel channel) { - return lastmsgPerUser.removeIf(lmd -> lmd.channel.getLongID() == channel.getLongID()); + public static boolean privateMCChat(IChannel channel, boolean start) { + return start ? lastmsgPerUser.add(new LastMsgData(channel)) + : lastmsgPerUser.removeIf(lmd -> lmd.channel.getLongID() == channel.getLongID()); } public static final HashMap UnconnectedSenders = new HashMap<>(); @@ -136,7 +133,7 @@ public class MCChatListener implements Listener, IListener final IUser author = event.getMessage().getAuthor(); final DiscordPlayer user = DiscordPlayer.getUser(author.getStringID(), DiscordPlayer.class); if (!event.getMessage().getChannel().getStringID().equals(DiscordPlugin.chatchannel.getStringID()) - && !(event.getMessage().getChannel().isPrivate() && user.minecraftChat().getOrDefault(false))) + && !(event.getMessage().getChannel().isPrivate() && user.minecraftChat().get())) return; resetLastMessage(); lastlist++; @@ -225,7 +222,7 @@ public class MCChatListener implements Listener, IListener TBMCPlayer p = dp.getAs(TBMCPlayer.class); if (!UnconnectedSenders.containsKey(author.getStringID())) UnconnectedSenders.put(author.getStringID(), - new DiscordSender(author, channel, p == null ? null : p.PlayerName().getOrDefault(null))); // Display the playername, if found + new DiscordSender(author, channel, p == null ? null : p.PlayerName().get())); // Display the playername, if found dsender = UnconnectedSenders.get(author.getStringID()); } return dsender; diff --git a/src/main/java/buttondevteam/discordplugin/listeners/MCListener.java b/src/main/java/buttondevteam/discordplugin/listeners/MCListener.java index 3ca03ff..89af699 100644 --- a/src/main/java/buttondevteam/discordplugin/listeners/MCListener.java +++ b/src/main/java/buttondevteam/discordplugin/listeners/MCListener.java @@ -25,22 +25,22 @@ public class MCListener implements Listener { @EventHandler public void onPlayerJoin(TBMCPlayerJoinEvent e) { final Player p = Bukkit.getPlayer(e.GetPlayer().getUUID()); - if (ConnectCommand.WaitingToConnect.containsKey(e.GetPlayer().PlayerName().getOrDefault(null))) { - IUser user = DiscordPlugin.dc.getUserByID( - Long.parseLong(ConnectCommand.WaitingToConnect.get(e.GetPlayer().PlayerName().getOrDefault(null)))); + if (ConnectCommand.WaitingToConnect.containsKey(e.GetPlayer().PlayerName().get())) { + IUser user = DiscordPlugin.dc + .getUserByID(Long.parseLong(ConnectCommand.WaitingToConnect.get(e.GetPlayer().PlayerName().get()))); p.sendMessage("§bTo connect with the Discord account @" + user.getName() + "#" + user.getDiscriminator() + " do /discord accept"); p.sendMessage("§bIf it wasn't you, do /discord decline"); } DiscordPlugin.sendMessageToChannel(DiscordPlugin.chatchannel, - e.GetPlayer().PlayerName().getOrDefault(null) + " joined the game"); + e.GetPlayer().PlayerName().get() + " joined the game"); MCChatListener.ListC = 0; } @EventHandler public void onPlayerLeave(TBMCPlayerQuitEvent e) { DiscordPlugin.sendMessageToChannel(DiscordPlugin.chatchannel, - e.GetPlayer().PlayerName().getOrDefault(null) + " left the game"); + e.GetPlayer().PlayerName().get() + " left the game"); } @EventHandler From 92e7e6abc4cbd3fd8a5bd32dbd7a3c4e050d9ef4 Mon Sep 17 00:00:00 2001 From: NorbiPeti Date: Sat, 1 Jul 2017 01:31:31 +0200 Subject: [PATCH 17/20] Updated autouppdater, colorized chat & test check Also using RequestBuffer... --- .../discordplugin/DiscordPlugin.java | 59 ++++++---------- .../listeners/AutoUpdaterListener.java | 69 ++++--------------- .../listeners/CommandListener.java | 4 +- .../listeners/MCChatListener.java | 5 +- 4 files changed, 42 insertions(+), 95 deletions(-) diff --git a/src/main/java/buttondevteam/discordplugin/DiscordPlugin.java b/src/main/java/buttondevteam/discordplugin/DiscordPlugin.java index ffeadc8..0d269bc 100644 --- a/src/main/java/buttondevteam/discordplugin/DiscordPlugin.java +++ b/src/main/java/buttondevteam/discordplugin/DiscordPlugin.java @@ -13,9 +13,6 @@ import org.bukkit.plugin.RegisteredServiceProvider; import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.scheduler.BukkitTask; -import com.github.xaanit.d4j.oauth.Scope; -import com.github.xaanit.d4j.oauth.handle.IDiscordOAuth; -import com.github.xaanit.d4j.oauth.util.DiscordOAuthBuilder; import com.google.common.io.Files; import com.google.gson.*; @@ -23,18 +20,15 @@ import buttondevteam.discordplugin.listeners.*; import buttondevteam.discordplugin.mccommands.DiscordMCCommandBase; import buttondevteam.lib.TBMCCoreAPI; import buttondevteam.lib.chat.TBMCChatAPI; -import io.vertx.core.http.HttpServerOptions; import net.milkbowl.vault.permission.Permission; import sx.blah.discord.api.*; import sx.blah.discord.api.events.IListener; import sx.blah.discord.api.internal.json.objects.EmbedObject; import sx.blah.discord.handle.impl.events.ReadyEvent; import sx.blah.discord.handle.obj.*; -import sx.blah.discord.util.DiscordException; -import sx.blah.discord.util.EmbedBuilder; -import sx.blah.discord.util.MissingPermissionsException; -import sx.blah.discord.util.RateLimitException; -import sx.blah.discord.util.RequestBuffer; +import sx.blah.discord.util.*; +import sx.blah.discord.util.RequestBuffer.IVoidRequest; +import sx.blah.discord.util.RequestBuffer.RequestFuture; public class DiscordPlugin extends JavaPlugin implements IListener { private static final String SubredditURL = "https://www.reddit.com/r/ChromaGamers"; @@ -134,25 +128,27 @@ public class DiscordPlugin extends JavaPlugin implements IListener { MCChatListener mcchat = new MCChatListener(); dc.getDispatcher().registerListener(mcchat); TBMCCoreAPI.RegisterEventsForExceptions(mcchat, this); - dc.getDispatcher().registerListener(new AutoUpdaterListener()); + TBMCCoreAPI.RegisterEventsForExceptions(new AutoUpdaterListener(), this); Bukkit.getPluginManager().registerEvents(new ExceptionListener(), this); TBMCCoreAPI.RegisterEventsForExceptions(new MCListener(), this); TBMCChatAPI.AddCommands(this, DiscordMCCommandBase.class); TBMCCoreAPI.RegisterUserClass(DiscordPlayer.class); - new Thread(() -> AnnouncementGetterThreadMethod()).start(); + new Thread(this::AnnouncementGetterThreadMethod).start(); setupProviders(); TBMCCoreAPI.SendUnsentExceptions(); TBMCCoreAPI.SendUnsentDebugMessages(); - final Calendar currentCal = Calendar.getInstance(); - final Calendar newCal = Calendar.getInstance(); - currentCal.set(currentCal.get(Calendar.YEAR), currentCal.get(Calendar.MONTH), - currentCal.get(Calendar.DAY_OF_MONTH), 4, 10); - if (currentCal.get(Calendar.DAY_OF_MONTH) % 9 == 0 && currentCal.before(newCal)) { - Random rand = new Random(); - sendMessageToChannel(dc.getChannels().get(rand.nextInt(dc.getChannels().size())), - "You could make a religion out of this"); + if (!TBMCCoreAPI.IsTestServer()) { + final Calendar currentCal = Calendar.getInstance(); + final Calendar newCal = Calendar.getInstance(); + currentCal.set(currentCal.get(Calendar.YEAR), currentCal.get(Calendar.MONTH), + currentCal.get(Calendar.DAY_OF_MONTH), 4, 10); + if (currentCal.get(Calendar.DAY_OF_MONTH) % 9 == 0 && currentCal.before(newCal)) { + Random rand = new Random(); + sendMessageToChannel(dc.getChannels().get(rand.nextInt(dc.getChannels().size())), + "You could make a religion out of this"); + } } - IDiscordOAuth doa = new DiscordOAuthBuilder(dc).withClientID("226443037893591041") + /*IDiscordOAuth doa = new DiscordOAuthBuilder(dc).withClientID("226443037893591041") .withClientSecret(getConfig().getString("appsecret")) .withRedirectUrl("https://" + (TBMCCoreAPI.IsTestServer() ? "localhost" : "server.figytuna.com") + ":8081/callback") @@ -172,9 +168,7 @@ public class DiscordPlugin extends JavaPlugin implements IListener { rc.response().end("Redirecting"); rc.response().close(); }).build(); - getLogger().info("Auth URL: " + doa.buildAuthUrl()); - Void v = RequestBuffer.request(System.out::println).get(); // TODO: Remove - System.out.println(v); + getLogger().info("Auth URL: " + doa.buildAuthUrl());*/ } catch (Exception e) { TBMCCoreAPI.SendException("An error occured while enabling DiscordPlugin!", e); } @@ -343,19 +337,10 @@ public class DiscordPlugin extends JavaPlugin implements IListener { /** * Performs Discord actions, retrying when ratelimited. */ - public static void perform(DiscordRunnable action) throws DiscordException, MissingPermissionsException { - for (int i = 0; i < 20; i++) - try { - if (SafeMode) - return; - action.run(); - return; // Gotta escape that loop - } catch (RateLimitException e) { - try { - Thread.sleep(e.getRetryDelay() > 0 ? e.getRetryDelay() : 10); - } catch (InterruptedException e1) { - e1.printStackTrace(); - } - } + public static RequestFuture perform(IVoidRequest action) + throws DiscordException, MissingPermissionsException { + if (SafeMode) + return null; + return RequestBuffer.request(action); // Let the pros handle this } } diff --git a/src/main/java/buttondevteam/discordplugin/listeners/AutoUpdaterListener.java b/src/main/java/buttondevteam/discordplugin/listeners/AutoUpdaterListener.java index 9e69f43..e302e8d 100644 --- a/src/main/java/buttondevteam/discordplugin/listeners/AutoUpdaterListener.java +++ b/src/main/java/buttondevteam/discordplugin/listeners/AutoUpdaterListener.java @@ -1,67 +1,24 @@ package buttondevteam.discordplugin.listeners; -import java.awt.Color; -import java.util.function.Supplier; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; import buttondevteam.discordplugin.DiscordPlugin; -import buttondevteam.discordplugin.DiscordSender; import buttondevteam.lib.PluginUpdater; import buttondevteam.lib.TBMCCoreAPI; -import sx.blah.discord.api.events.IListener; -import sx.blah.discord.handle.impl.events.guild.channel.message.MessageReceivedEvent; -import sx.blah.discord.handle.obj.IEmbed; -import sx.blah.discord.util.EmbedBuilder; -public class AutoUpdaterListener implements IListener { - @Override - public void handle(MessageReceivedEvent event) { +public class AutoUpdaterListener implements Listener { + @EventHandler + public void handle(PluginUpdater.UpdatedEvent event) { if (DiscordPlugin.SafeMode) return; - if (!event.getMessage().getChannel().getStringID().equals(DiscordPlugin.officechannel.getStringID())) - return; - if (239123781401051138L != event.getMessage().getWebhookLongID()) - return; - if (event.getMessage().getEmbeds().size() == 0) - return; - final IEmbed embed = event.getMessage().getEmbeds().get(0); - final String title = embed.getTitle(); - if (!title.contains("new commit")) - return; - String branch = title.substring(title.indexOf(':') + 1, title.indexOf(']')); - String project = title.substring(title.indexOf('[') + 1, title.indexOf(':')); - if ((branch.equals("master") || (TBMCCoreAPI.IsTestServer() && branch.equals("dev"))) - && PluginUpdater.isMaven(project, branch) - && TBMCCoreAPI.UpdatePlugin(project, - new DiscordSender(null, - TBMCCoreAPI.IsTestServer() // - ? DiscordPlugin.chatchannel // - : DiscordPlugin.botroomchannel), - branch) - && ((Supplier) () -> { - try { - int hi, ei, prnum; - if ((hi = embed.getDescription().indexOf('#')) > -1 - && ((ei = embed.getDescription().indexOf(' ', hi + 1)) > -1 - || (ei = embed.getDescription().indexOf(".", hi + 1)) > -1 - || (ei = embed.getDescription().length()) > -1) - && (prnum = Integer.parseInt(embed.getDescription().substring(hi + 1, ei))) > -1) - DiscordPlugin.sendMessageToChannel(DiscordPlugin.updatechannel, "", - new EmbedBuilder().withColor(Color.WHITE).withTitle("Update details") - .withUrl("https://github.com/TBMCPlugins/" + project + "/pull/" + prnum) - .build()); - else - throw new Exception("No PR found"); - } catch (Exception e) { - DiscordPlugin.sendMessageToChannel(DiscordPlugin.updatechannel, "", - new EmbedBuilder().withColor(Color.WHITE).withTitle("Update details:") - .withDescription(embed.getDescription() + " (" + e.getMessage() + ")").build()); - } - return true; - }).get() && (!TBMCCoreAPI.IsTestServer() || !branch.equals("master"))) - try { - DiscordPlugin.perform(() -> event.getMessage().addReaction(DiscordPlugin.DELIVERED_REACTION)); - } catch (Exception e) { - TBMCCoreAPI.SendException("An error occured while reacting to plugin update!", e); - } + try { + DiscordPlugin.perform(() -> DiscordPlugin.officechannel.getMessageHistory(10).stream() + .filter(m -> m.getWebhookLongID() == 239123781401051138L && m.getEmbeds().get(0).getTitle() + .contains(event.getData().get("repository").getAsJsonObject().get("name").getAsString())) + .findFirst().get().addReaction(DiscordPlugin.DELIVERED_REACTION)); + } catch (Exception e) { + TBMCCoreAPI.SendException("An error occured while reacting to plugin update!", e); + } } } diff --git a/src/main/java/buttondevteam/discordplugin/listeners/CommandListener.java b/src/main/java/buttondevteam/discordplugin/listeners/CommandListener.java index 247b09e..f0006b3 100644 --- a/src/main/java/buttondevteam/discordplugin/listeners/CommandListener.java +++ b/src/main/java/buttondevteam/discordplugin/listeners/CommandListener.java @@ -7,6 +7,7 @@ import java.util.Random; import buttondevteam.discordplugin.DiscordPlayer; import buttondevteam.discordplugin.DiscordPlugin; import buttondevteam.discordplugin.commands.DiscordCommandBase; +import buttondevteam.lib.TBMCCoreAPI; import sx.blah.discord.api.events.IListener; import sx.blah.discord.handle.impl.events.guild.channel.message.MentionEvent; import sx.blah.discord.handle.impl.events.guild.channel.message.MessageReceivedEvent; @@ -73,7 +74,8 @@ public class CommandListener { if (DiscordPlugin.SafeMode) return; final String msglowercase = event.getMessage().getContent().toLowerCase(); - if (Arrays.stream(serverReadyQuestions).anyMatch(s -> msglowercase.contains(s))) { + if (!TBMCCoreAPI.IsTestServer() + && Arrays.stream(serverReadyQuestions).anyMatch(s -> msglowercase.contains(s))) { int next; if (usableServerReadyStrings.size() == 0) createUsableServerReadyStrings(usableServerReadyStrings); diff --git a/src/main/java/buttondevteam/discordplugin/listeners/MCChatListener.java b/src/main/java/buttondevteam/discordplugin/listeners/MCChatListener.java index cc6e495..e859846 100644 --- a/src/main/java/buttondevteam/discordplugin/listeners/MCChatListener.java +++ b/src/main/java/buttondevteam/discordplugin/listeners/MCChatListener.java @@ -1,5 +1,6 @@ package buttondevteam.discordplugin.listeners; +import java.awt.Color; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; @@ -33,7 +34,9 @@ public class MCChatListener implements Listener, IListener final String authorPlayer = DiscordPlugin.sanitizeString(e.getSender() instanceof Player // ? ((Player) e.getSender()).getDisplayName() // : e.getSender().getName()); - final EmbedBuilder embed = new EmbedBuilder().withAuthorName(authorPlayer).withDescription(e.getMessage()); + final EmbedBuilder embed = new EmbedBuilder().withAuthorName(authorPlayer).withDescription(e.getMessage()) + .withColor(new Color(e.getChannel().color.getRed(), e.getChannel().color.getGreen(), + e.getChannel().color.getBlue())); if (e.getSender() instanceof Player) embed.withAuthorIcon("https://minotar.net/avatar/" + ((Player) e.getSender()).getName() + "/32.png"); final long nanoTime = System.nanoTime(); From 39bbeafe6babf32651c88604de4752187edb4111 Mon Sep 17 00:00:00 2001 From: NorbiPeti Date: Mon, 3 Jul 2017 23:45:14 +0200 Subject: [PATCH 18/20] Added Lombok, started fake player --- pom.xml | 15 +- .../discordplugin/DiscordConnectedPlayer.java | 1854 +++++++++++++++++ .../discordplugin/DiscordPlayerSender.java | 1502 +------------ .../discordplugin/DiscordPlugin.java | 55 +- .../discordplugin/DiscordSender.java | 9 +- .../playerfaker/DiscordEntity.java | 317 +++ .../playerfaker/DiscordHumanEntity.java | 205 ++ .../playerfaker/DiscordLivingEntity.java | 303 +++ 8 files changed, 2720 insertions(+), 1540 deletions(-) create mode 100644 src/main/java/buttondevteam/discordplugin/DiscordConnectedPlayer.java create mode 100644 src/main/java/buttondevteam/discordplugin/playerfaker/DiscordEntity.java create mode 100644 src/main/java/buttondevteam/discordplugin/playerfaker/DiscordHumanEntity.java create mode 100644 src/main/java/buttondevteam/discordplugin/playerfaker/DiscordLivingEntity.java diff --git a/pom.xml b/pom.xml index 590e215..340f0f8 100644 --- a/pom.xml +++ b/pom.xml @@ -117,6 +117,10 @@ Essentials http://repo.ess3.net/content/repositories/essrel/ + + projectlombok.org + http://projectlombok.org/mavenrepo + @@ -129,7 +133,7 @@ org.spigotmc spigot-api - 1.11-R0.1-SNAPSHOT + 1.12-R0.1-SNAPSHOT provided @@ -154,7 +158,7 @@ com.github.milkbowl VaultAPI - master-SNAPSHOT + master-SNAPSHOT provided @@ -167,5 +171,12 @@ D4J-OAuth master-SNAPSHOT + + + org.projectlombok + lombok + 1.16.16 + provided + diff --git a/src/main/java/buttondevteam/discordplugin/DiscordConnectedPlayer.java b/src/main/java/buttondevteam/discordplugin/DiscordConnectedPlayer.java new file mode 100644 index 0000000..0ac9e14 --- /dev/null +++ b/src/main/java/buttondevteam/discordplugin/DiscordConnectedPlayer.java @@ -0,0 +1,1854 @@ +package buttondevteam.discordplugin; + +import java.net.InetSocketAddress; +import java.util.Collection; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.UUID; + +import org.bukkit.Achievement; +import org.bukkit.Effect; +import org.bukkit.EntityEffect; +import org.bukkit.GameMode; +import org.bukkit.Instrument; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.Note; +import org.bukkit.Particle; +import org.bukkit.Server; +import org.bukkit.Sound; +import org.bukkit.SoundCategory; +import org.bukkit.Statistic; +import org.bukkit.WeatherType; +import org.bukkit.World; +import org.bukkit.advancement.Advancement; +import org.bukkit.advancement.AdvancementProgress; +import org.bukkit.attribute.Attribute; +import org.bukkit.attribute.AttributeInstance; +import org.bukkit.block.Block; +import org.bukkit.block.PistonMoveReaction; +import org.bukkit.conversations.Conversation; +import org.bukkit.conversations.ConversationAbandonedEvent; +import org.bukkit.entity.Entity; +import org.bukkit.entity.EntityType; +import org.bukkit.entity.Player; +import org.bukkit.entity.Projectile; +import org.bukkit.entity.Villager; +import org.bukkit.event.entity.EntityDamageEvent; +import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause; +import org.bukkit.inventory.EntityEquipment; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.InventoryView; +import org.bukkit.inventory.InventoryView.Property; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.MainHand; +import org.bukkit.inventory.Merchant; +import org.bukkit.inventory.PlayerInventory; +import org.bukkit.map.MapView; +import org.bukkit.metadata.MetadataValue; +import org.bukkit.permissions.Permission; +import org.bukkit.permissions.PermissionAttachment; +import org.bukkit.permissions.PermissionAttachmentInfo; +import org.bukkit.plugin.Plugin; +import org.bukkit.potion.PotionEffect; +import org.bukkit.potion.PotionEffectType; +import org.bukkit.scoreboard.Scoreboard; +import org.bukkit.util.Vector; + +public class DiscordConnectedPlayer implements Player { + + @Override + public void closeInventory() { + } + + @Override + public int getCooldown(Material arg0) { + return 0; + } + + @Override + public Inventory getEnderChest() { + // TODO Auto-generated method stub + return null; + } + + @Override + public int getExpToLevel() { + // TODO Auto-generated method stub + return 0; + } + + @Override + public GameMode getGameMode() { + // TODO Auto-generated method stub + return null; + } + + @Override + public PlayerInventory getInventory() { + // TODO Auto-generated method stub + return null; + } + + @Override + public ItemStack getItemInHand() { + // TODO Auto-generated method stub + return null; + } + + @Override + public ItemStack getItemOnCursor() { + // TODO Auto-generated method stub + return null; + } + + @Override + public MainHand getMainHand() { + // TODO Auto-generated method stub + return null; + } + + @Override + public String getName() { + // TODO Auto-generated method stub + return null; + } + + @Override + public InventoryView getOpenInventory() { + // TODO Auto-generated method stub + return null; + } + + @Override + public Entity getShoulderEntityLeft() { + // TODO Auto-generated method stub + return null; + } + + @Override + public Entity getShoulderEntityRight() { + // TODO Auto-generated method stub + return null; + } + + @Override + public int getSleepTicks() { + // TODO Auto-generated method stub + return 0; + } + + @Override + public boolean hasCooldown(Material arg0) { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean isBlocking() { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean isHandRaised() { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean isSleeping() { + // TODO Auto-generated method stub + return false; + } + + @Override + public InventoryView openEnchanting(Location arg0, boolean arg1) { + // TODO Auto-generated method stub + return null; + } + + @Override + public InventoryView openInventory(Inventory arg0) { + // TODO Auto-generated method stub + return null; + } + + @Override + public void openInventory(InventoryView arg0) { + // TODO Auto-generated method stub + + } + + @Override + public InventoryView openMerchant(Villager arg0, boolean arg1) { + // TODO Auto-generated method stub + return null; + } + + @Override + public InventoryView openMerchant(Merchant arg0, boolean arg1) { + // TODO Auto-generated method stub + return null; + } + + @Override + public InventoryView openWorkbench(Location arg0, boolean arg1) { + // TODO Auto-generated method stub + return null; + } + + @Override + public void setCooldown(Material arg0, int arg1) { + // TODO Auto-generated method stub + + } + + @Override + public void setGameMode(GameMode arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setItemInHand(ItemStack arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setItemOnCursor(ItemStack arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setShoulderEntityLeft(Entity arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setShoulderEntityRight(Entity arg0) { + // TODO Auto-generated method stub + + } + + @Override + public boolean setWindowProperty(Property arg0, int arg1) { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean addPotionEffect(PotionEffect arg0) { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean addPotionEffect(PotionEffect arg0, boolean arg1) { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean addPotionEffects(Collection arg0) { + // TODO Auto-generated method stub + return false; + } + + @Override + public Collection getActivePotionEffects() { + // TODO Auto-generated method stub + return null; + } + + @Override + public boolean getCanPickupItems() { + // TODO Auto-generated method stub + return false; + } + + @Override + public EntityEquipment getEquipment() { + // TODO Auto-generated method stub + return null; + } + + @Override + public double getEyeHeight() { + // TODO Auto-generated method stub + return 0; + } + + @Override + public double getEyeHeight(boolean arg0) { + // TODO Auto-generated method stub + return 0; + } + + @Override + public Location getEyeLocation() { + // TODO Auto-generated method stub + return null; + } + + @Override + public Player getKiller() { + // TODO Auto-generated method stub + return null; + } + + @Override + public double getLastDamage() { + // TODO Auto-generated method stub + return 0; + } + + @Override + public List getLastTwoTargetBlocks(HashSet arg0, int arg1) { + // TODO Auto-generated method stub + return null; + } + + @Override + public List getLastTwoTargetBlocks(Set arg0, int arg1) { + // TODO Auto-generated method stub + return null; + } + + @Override + public Entity getLeashHolder() throws IllegalStateException { + // TODO Auto-generated method stub + return null; + } + + @Override + public List getLineOfSight(Set arg0, int arg1) { + // TODO Auto-generated method stub + return null; + } + + @Override + public int getMaximumAir() { + // TODO Auto-generated method stub + return 0; + } + + @Override + public int getMaximumNoDamageTicks() { + // TODO Auto-generated method stub + return 0; + } + + @Override + public int getNoDamageTicks() { + // TODO Auto-generated method stub + return 0; + } + + @Override + public PotionEffect getPotionEffect(PotionEffectType arg0) { + // TODO Auto-generated method stub + return null; + } + + @Override + public int getRemainingAir() { + // TODO Auto-generated method stub + return 0; + } + + @Override + public boolean getRemoveWhenFarAway() { + // TODO Auto-generated method stub + return false; + } + + @Override + public Block getTargetBlock(HashSet arg0, int arg1) { + // TODO Auto-generated method stub + return null; + } + + @Override + public Block getTargetBlock(Set arg0, int arg1) { + // TODO Auto-generated method stub + return null; + } + + @Override + public boolean hasAI() { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean hasLineOfSight(Entity arg0) { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean hasPotionEffect(PotionEffectType arg0) { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean isCollidable() { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean isGliding() { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean isLeashed() { + // TODO Auto-generated method stub + return false; + } + + @Override + public void removePotionEffect(PotionEffectType arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setAI(boolean arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setCanPickupItems(boolean arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setCollidable(boolean arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setGliding(boolean arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setLastDamage(double arg0) { + // TODO Auto-generated method stub + + } + + @Override + public boolean setLeashHolder(Entity arg0) { + // TODO Auto-generated method stub + return false; + } + + @Override + public void setMaximumAir(int arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setMaximumNoDamageTicks(int arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setNoDamageTicks(int arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setRemainingAir(int arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setRemoveWhenFarAway(boolean arg0) { + // TODO Auto-generated method stub + + } + + @Override + public AttributeInstance getAttribute(Attribute arg0) { + // TODO Auto-generated method stub + return null; + } + + @Override + public boolean addPassenger(Entity arg0) { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean addScoreboardTag(String arg0) { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean eject() { + // TODO Auto-generated method stub + return false; + } + + @Override + public int getEntityId() { + // TODO Auto-generated method stub + return 0; + } + + @Override + public float getFallDistance() { + // TODO Auto-generated method stub + return 0; + } + + @Override + public int getFireTicks() { + // TODO Auto-generated method stub + return 0; + } + + @Override + public double getHeight() { + // TODO Auto-generated method stub + return 0; + } + + @Override + public EntityDamageEvent getLastDamageCause() { + // TODO Auto-generated method stub + return null; + } + + @Override + public Location getLocation() { + // TODO Auto-generated method stub + return null; + } + + @Override + public Location getLocation(Location arg0) { + // TODO Auto-generated method stub + return null; + } + + @Override + public int getMaxFireTicks() { + // TODO Auto-generated method stub + return 0; + } + + @Override + public List getNearbyEntities(double arg0, double arg1, double arg2) { + // TODO Auto-generated method stub + return null; + } + + @Override + public Entity getPassenger() { + // TODO Auto-generated method stub + return null; + } + + @Override + public List getPassengers() { + // TODO Auto-generated method stub + return null; + } + + @Override + public PistonMoveReaction getPistonMoveReaction() { + // TODO Auto-generated method stub + return null; + } + + @Override + public int getPortalCooldown() { + // TODO Auto-generated method stub + return 0; + } + + @Override + public Set getScoreboardTags() { + // TODO Auto-generated method stub + return null; + } + + @Override + public Server getServer() { + // TODO Auto-generated method stub + return null; + } + + @Override + public int getTicksLived() { + // TODO Auto-generated method stub + return 0; + } + + @Override + public EntityType getType() { + // TODO Auto-generated method stub + return null; + } + + @Override + public UUID getUniqueId() { + // TODO Auto-generated method stub + return null; + } + + @Override + public Entity getVehicle() { + // TODO Auto-generated method stub + return null; + } + + @Override + public Vector getVelocity() { + // TODO Auto-generated method stub + return null; + } + + @Override + public double getWidth() { + // TODO Auto-generated method stub + return 0; + } + + @Override + public World getWorld() { + // TODO Auto-generated method stub + return null; + } + + @Override + public boolean hasGravity() { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean isCustomNameVisible() { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean isDead() { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean isEmpty() { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean isGlowing() { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean isInsideVehicle() { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean isInvulnerable() { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean isOnGround() { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean isSilent() { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean isValid() { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean leaveVehicle() { + // TODO Auto-generated method stub + return false; + } + + @Override + public void playEffect(EntityEffect arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void remove() { + // TODO Auto-generated method stub + + } + + @Override + public boolean removePassenger(Entity arg0) { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean removeScoreboardTag(String arg0) { + // TODO Auto-generated method stub + return false; + } + + @Override + public void setCustomNameVisible(boolean arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setFallDistance(float arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setFireTicks(int arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setGlowing(boolean arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setGravity(boolean arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setInvulnerable(boolean arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setLastDamageCause(EntityDamageEvent arg0) { + // TODO Auto-generated method stub + + } + + @Override + public boolean setPassenger(Entity arg0) { + // TODO Auto-generated method stub + return false; + } + + @Override + public void setPortalCooldown(int arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setSilent(boolean arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setTicksLived(int arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setVelocity(Vector arg0) { + // TODO Auto-generated method stub + + } + + @Override + public boolean teleport(Location arg0) { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean teleport(Entity arg0) { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean teleport(Location arg0, TeleportCause arg1) { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean teleport(Entity arg0, TeleportCause arg1) { + // TODO Auto-generated method stub + return false; + } + + @Override + public List getMetadata(String arg0) { + // TODO Auto-generated method stub + return null; + } + + @Override + public boolean hasMetadata(String arg0) { + // TODO Auto-generated method stub + return false; + } + + @Override + public void removeMetadata(String arg0, Plugin arg1) { + // TODO Auto-generated method stub + + } + + @Override + public void setMetadata(String arg0, MetadataValue arg1) { + // TODO Auto-generated method stub + + } + + @Override + public void sendMessage(String arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void sendMessage(String[] arg0) { + // TODO Auto-generated method stub + + } + + @Override + public PermissionAttachment addAttachment(Plugin arg0) { + // TODO Auto-generated method stub + return null; + } + + @Override + public PermissionAttachment addAttachment(Plugin arg0, int arg1) { + // TODO Auto-generated method stub + return null; + } + + @Override + public PermissionAttachment addAttachment(Plugin arg0, String arg1, boolean arg2) { + // TODO Auto-generated method stub + return null; + } + + @Override + public PermissionAttachment addAttachment(Plugin arg0, String arg1, boolean arg2, int arg3) { + // TODO Auto-generated method stub + return null; + } + + @Override + public Set getEffectivePermissions() { + // TODO Auto-generated method stub + return null; + } + + @Override + public boolean hasPermission(String arg0) { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean hasPermission(Permission arg0) { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean isPermissionSet(String arg0) { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean isPermissionSet(Permission arg0) { + // TODO Auto-generated method stub + return false; + } + + @Override + public void recalculatePermissions() { + // TODO Auto-generated method stub + + } + + @Override + public void removeAttachment(PermissionAttachment arg0) { + // TODO Auto-generated method stub + + } + + @Override + public boolean isOp() { + // TODO Auto-generated method stub + return false; + } + + @Override + public void setOp(boolean arg0) { + // TODO Auto-generated method stub + + } + + @Override + public String getCustomName() { + // TODO Auto-generated method stub + return null; + } + + @Override + public void setCustomName(String arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void damage(double arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void damage(double arg0, Entity arg1) { + // TODO Auto-generated method stub + + } + + @Override + public double getHealth() { + // TODO Auto-generated method stub + return 0; + } + + @Override + public double getMaxHealth() { + // TODO Auto-generated method stub + return 0; + } + + @Override + public void resetMaxHealth() { + // TODO Auto-generated method stub + + } + + @Override + public void setHealth(double arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setMaxHealth(double arg0) { + // TODO Auto-generated method stub + + } + + @Override + public T launchProjectile(Class arg0) { + // TODO Auto-generated method stub + return null; + } + + @Override + public T launchProjectile(Class arg0, Vector arg1) { + // TODO Auto-generated method stub + return null; + } + + @Override + public void abandonConversation(Conversation arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void abandonConversation(Conversation arg0, ConversationAbandonedEvent arg1) { + // TODO Auto-generated method stub + + } + + @Override + public void acceptConversationInput(String arg0) { + // TODO Auto-generated method stub + + } + + @Override + public boolean beginConversation(Conversation arg0) { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean isConversing() { + // TODO Auto-generated method stub + return false; + } + + @Override + public long getFirstPlayed() { + // TODO Auto-generated method stub + return 0; + } + + @Override + public long getLastPlayed() { + // TODO Auto-generated method stub + return 0; + } + + @Override + public Player getPlayer() { + // TODO Auto-generated method stub + return null; + } + + @Override + public boolean hasPlayedBefore() { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean isBanned() { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean isOnline() { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean isWhitelisted() { + // TODO Auto-generated method stub + return false; + } + + @Override + public void setWhitelisted(boolean arg0) { + // TODO Auto-generated method stub + + } + + @Override + public Map serialize() { + // TODO Auto-generated method stub + return null; + } + + @Override + public Set getListeningPluginChannels() { + // TODO Auto-generated method stub + return null; + } + + @Override + public void sendPluginMessage(Plugin arg0, String arg1, byte[] arg2) { + // TODO Auto-generated method stub + + } + + @Override + public void awardAchievement(Achievement arg0) { + // TODO Auto-generated method stub + + } + + @Override + public boolean canSee(Player arg0) { + // TODO Auto-generated method stub + return false; + } + + @Override + public void chat(String arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void decrementStatistic(Statistic arg0) throws IllegalArgumentException { + // TODO Auto-generated method stub + + } + + @Override + public void decrementStatistic(Statistic arg0, int arg1) throws IllegalArgumentException { + // TODO Auto-generated method stub + + } + + @Override + public void decrementStatistic(Statistic arg0, Material arg1) throws IllegalArgumentException { + // TODO Auto-generated method stub + + } + + @Override + public void decrementStatistic(Statistic arg0, EntityType arg1) throws IllegalArgumentException { + // TODO Auto-generated method stub + + } + + @Override + public void decrementStatistic(Statistic arg0, Material arg1, int arg2) throws IllegalArgumentException { + // TODO Auto-generated method stub + + } + + @Override + public void decrementStatistic(Statistic arg0, EntityType arg1, int arg2) { + // TODO Auto-generated method stub + + } + + @Override + public InetSocketAddress getAddress() { + // TODO Auto-generated method stub + return null; + } + + @Override + public AdvancementProgress getAdvancementProgress(Advancement arg0) { + // TODO Auto-generated method stub + return null; + } + + @Override + public boolean getAllowFlight() { + // TODO Auto-generated method stub + return false; + } + + @Override + public Location getBedSpawnLocation() { + // TODO Auto-generated method stub + return null; + } + + @Override + public Location getCompassTarget() { + // TODO Auto-generated method stub + return null; + } + + @Override + public String getDisplayName() { + // TODO Auto-generated method stub + return null; + } + + @Override + public float getExhaustion() { + // TODO Auto-generated method stub + return 0; + } + + @Override + public float getExp() { + // TODO Auto-generated method stub + return 0; + } + + @Override + public float getFlySpeed() { + // TODO Auto-generated method stub + return 0; + } + + @Override + public int getFoodLevel() { + // TODO Auto-generated method stub + return 0; + } + + @Override + public double getHealthScale() { + // TODO Auto-generated method stub + return 0; + } + + @Override + public int getLevel() { + // TODO Auto-generated method stub + return 0; + } + + @Override + public String getLocale() { + // TODO Auto-generated method stub + return null; + } + + @Override + public String getPlayerListName() { + // TODO Auto-generated method stub + return null; + } + + @Override + public long getPlayerTime() { + // TODO Auto-generated method stub + return 0; + } + + @Override + public long getPlayerTimeOffset() { + // TODO Auto-generated method stub + return 0; + } + + @Override + public WeatherType getPlayerWeather() { + // TODO Auto-generated method stub + return null; + } + + @Override + public float getSaturation() { + // TODO Auto-generated method stub + return 0; + } + + @Override + public Scoreboard getScoreboard() { + // TODO Auto-generated method stub + return null; + } + + @Override + public Entity getSpectatorTarget() { + // TODO Auto-generated method stub + return null; + } + + @Override + public int getStatistic(Statistic arg0) throws IllegalArgumentException { + // TODO Auto-generated method stub + return 0; + } + + @Override + public int getStatistic(Statistic arg0, Material arg1) throws IllegalArgumentException { + // TODO Auto-generated method stub + return 0; + } + + @Override + public int getStatistic(Statistic arg0, EntityType arg1) throws IllegalArgumentException { + // TODO Auto-generated method stub + return 0; + } + + @Override + public int getTotalExperience() { + // TODO Auto-generated method stub + return 0; + } + + @Override + public float getWalkSpeed() { + // TODO Auto-generated method stub + return 0; + } + + @Override + public void giveExp(int arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void giveExpLevels(int arg0) { + // TODO Auto-generated method stub + + } + + @Override + public boolean hasAchievement(Achievement arg0) { + // TODO Auto-generated method stub + return false; + } + + @Override + public void hidePlayer(Player arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void incrementStatistic(Statistic arg0) throws IllegalArgumentException { + // TODO Auto-generated method stub + + } + + @Override + public void incrementStatistic(Statistic arg0, int arg1) throws IllegalArgumentException { + // TODO Auto-generated method stub + + } + + @Override + public void incrementStatistic(Statistic arg0, Material arg1) throws IllegalArgumentException { + // TODO Auto-generated method stub + + } + + @Override + public void incrementStatistic(Statistic arg0, EntityType arg1) throws IllegalArgumentException { + // TODO Auto-generated method stub + + } + + @Override + public void incrementStatistic(Statistic arg0, Material arg1, int arg2) throws IllegalArgumentException { + // TODO Auto-generated method stub + + } + + @Override + public void incrementStatistic(Statistic arg0, EntityType arg1, int arg2) throws IllegalArgumentException { + // TODO Auto-generated method stub + + } + + @Override + public boolean isFlying() { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean isHealthScaled() { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean isPlayerTimeRelative() { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean isSleepingIgnored() { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean isSneaking() { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean isSprinting() { + // TODO Auto-generated method stub + return false; + } + + @Override + public void kickPlayer(String arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void loadData() { + // TODO Auto-generated method stub + + } + + @Override + public boolean performCommand(String arg0) { + // TODO Auto-generated method stub + return false; + } + + @Override + public void playEffect(Location arg0, Effect arg1, int arg2) { + // TODO Auto-generated method stub + + } + + @Override + public void playEffect(Location arg0, Effect arg1, T arg2) { + // TODO Auto-generated method stub + + } + + @Override + public void playNote(Location arg0, byte arg1, byte arg2) { + // TODO Auto-generated method stub + + } + + @Override + public void playNote(Location arg0, Instrument arg1, Note arg2) { + // TODO Auto-generated method stub + + } + + @Override + public void playSound(Location arg0, Sound arg1, float arg2, float arg3) { + // TODO Auto-generated method stub + + } + + @Override + public void playSound(Location arg0, String arg1, float arg2, float arg3) { + // TODO Auto-generated method stub + + } + + @Override + public void playSound(Location arg0, Sound arg1, SoundCategory arg2, float arg3, float arg4) { + // TODO Auto-generated method stub + + } + + @Override + public void playSound(Location arg0, String arg1, SoundCategory arg2, float arg3, float arg4) { + // TODO Auto-generated method stub + + } + + @Override + public void removeAchievement(Achievement arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void resetPlayerTime() { + // TODO Auto-generated method stub + + } + + @Override + public void resetPlayerWeather() { + // TODO Auto-generated method stub + + } + + @Override + public void resetTitle() { + // TODO Auto-generated method stub + + } + + @Override + public void saveData() { + // TODO Auto-generated method stub + + } + + @Override + public void sendBlockChange(Location arg0, Material arg1, byte arg2) { + // TODO Auto-generated method stub + + } + + @Override + public void sendBlockChange(Location arg0, int arg1, byte arg2) { + // TODO Auto-generated method stub + + } + + @Override + public boolean sendChunkChange(Location arg0, int arg1, int arg2, int arg3, byte[] arg4) { + // TODO Auto-generated method stub + return false; + } + + @Override + public void sendMap(MapView arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void sendRawMessage(String arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void sendSignChange(Location arg0, String[] arg1) throws IllegalArgumentException { + // TODO Auto-generated method stub + + } + + @Override + public void sendTitle(String arg0, String arg1) { + // TODO Auto-generated method stub + + } + + @Override + public void sendTitle(String arg0, String arg1, int arg2, int arg3, int arg4) { + // TODO Auto-generated method stub + + } + + @Override + public void setAllowFlight(boolean arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setBedSpawnLocation(Location arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setBedSpawnLocation(Location arg0, boolean arg1) { + // TODO Auto-generated method stub + + } + + @Override + public void setCompassTarget(Location arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setDisplayName(String arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setExhaustion(float arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setExp(float arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setFlySpeed(float arg0) throws IllegalArgumentException { + // TODO Auto-generated method stub + + } + + @Override + public void setFlying(boolean arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setFoodLevel(int arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setHealthScale(double arg0) throws IllegalArgumentException { + // TODO Auto-generated method stub + + } + + @Override + public void setHealthScaled(boolean arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setLevel(int arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setPlayerListName(String arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setPlayerTime(long arg0, boolean arg1) { + // TODO Auto-generated method stub + + } + + @Override + public void setPlayerWeather(WeatherType arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setResourcePack(String arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setResourcePack(String arg0, byte[] arg1) { + // TODO Auto-generated method stub + + } + + @Override + public void setSaturation(float arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setScoreboard(Scoreboard arg0) throws IllegalArgumentException, IllegalStateException { + // TODO Auto-generated method stub + + } + + @Override + public void setSleepingIgnored(boolean arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setSneaking(boolean arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setSpectatorTarget(Entity arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setSprinting(boolean arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setStatistic(Statistic arg0, int arg1) throws IllegalArgumentException { + // TODO Auto-generated method stub + + } + + @Override + public void setStatistic(Statistic arg0, Material arg1, int arg2) throws IllegalArgumentException { + // TODO Auto-generated method stub + + } + + @Override + public void setStatistic(Statistic arg0, EntityType arg1, int arg2) { + // TODO Auto-generated method stub + + } + + @Override + public void setTexturePack(String arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setTotalExperience(int arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void setWalkSpeed(float arg0) throws IllegalArgumentException { + // TODO Auto-generated method stub + + } + + @Override + public void showPlayer(Player arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void spawnParticle(Particle arg0, Location arg1, int arg2) { + // TODO Auto-generated method stub + + } + + @Override + public void spawnParticle(Particle arg0, Location arg1, int arg2, T arg3) { + // TODO Auto-generated method stub + + } + + @Override + public void spawnParticle(Particle arg0, double arg1, double arg2, double arg3, int arg4) { + // TODO Auto-generated method stub + + } + + @Override + public void spawnParticle(Particle arg0, double arg1, double arg2, double arg3, int arg4, T arg5) { + // TODO Auto-generated method stub + + } + + @Override + public void spawnParticle(Particle arg0, Location arg1, int arg2, double arg3, double arg4, double arg5) { + // TODO Auto-generated method stub + + } + + @Override + public void spawnParticle(Particle arg0, Location arg1, int arg2, double arg3, double arg4, double arg5, + T arg6) { + // TODO Auto-generated method stub + + } + + @Override + public void spawnParticle(Particle arg0, Location arg1, int arg2, double arg3, double arg4, double arg5, + double arg6) { + // TODO Auto-generated method stub + + } + + @Override + public void spawnParticle(Particle arg0, double arg1, double arg2, double arg3, int arg4, double arg5, double arg6, + double arg7) { + // TODO Auto-generated method stub + + } + + @Override + public void spawnParticle(Particle arg0, Location arg1, int arg2, double arg3, double arg4, double arg5, + double arg6, T arg7) { + // TODO Auto-generated method stub + + } + + @Override + public void spawnParticle(Particle arg0, double arg1, double arg2, double arg3, int arg4, double arg5, + double arg6, double arg7, T arg8) { + // TODO Auto-generated method stub + + } + + @Override + public void spawnParticle(Particle arg0, double arg1, double arg2, double arg3, int arg4, double arg5, double arg6, + double arg7, double arg8) { + // TODO Auto-generated method stub + + } + + @Override + public void spawnParticle(Particle arg0, double arg1, double arg2, double arg3, int arg4, double arg5, + double arg6, double arg7, double arg8, T arg9) { + // TODO Auto-generated method stub + + } + + @Override + public void stopSound(Sound arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void stopSound(String arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void stopSound(Sound arg0, SoundCategory arg1) { + // TODO Auto-generated method stub + + } + + @Override + public void stopSound(String arg0, SoundCategory arg1) { + // TODO Auto-generated method stub + + } + + @Override + public void updateInventory() { + // TODO Auto-generated method stub + + } + + @Override + public Spigot spigot() { + // TODO Auto-generated method stub + return null; + } + +} diff --git a/src/main/java/buttondevteam/discordplugin/DiscordPlayerSender.java b/src/main/java/buttondevteam/discordplugin/DiscordPlayerSender.java index de9caea..6dc64af 100644 --- a/src/main/java/buttondevteam/discordplugin/DiscordPlayerSender.java +++ b/src/main/java/buttondevteam/discordplugin/DiscordPlayerSender.java @@ -1,33 +1,15 @@ package buttondevteam.discordplugin; -import java.net.InetSocketAddress; -import java.util.*; -import org.bukkit.*; -import org.bukkit.attribute.Attribute; -import org.bukkit.attribute.AttributeInstance; -import org.bukkit.block.Block; -import org.bukkit.conversations.Conversation; -import org.bukkit.conversations.ConversationAbandonedEvent; import org.bukkit.entity.*; -import org.bukkit.event.entity.EntityDamageEvent; -import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause; -import org.bukkit.inventory.*; -import org.bukkit.inventory.InventoryView.Property; -import org.bukkit.map.MapView; -import org.bukkit.metadata.MetadataValue; -import org.bukkit.permissions.*; -import org.bukkit.plugin.Plugin; -import org.bukkit.potion.PotionEffect; -import org.bukkit.potion.PotionEffectType; -import org.bukkit.scoreboard.Scoreboard; +import org.bukkit.projectiles.ProjectileSource; import org.bukkit.util.Vector; +import lombok.experimental.Delegate; import sx.blah.discord.handle.obj.IChannel; import sx.blah.discord.handle.obj.IUser; -@SuppressWarnings("deprecation") public class DiscordPlayerSender extends DiscordSenderBase implements Player { - private Player player; + private @Delegate(excludes = ProjectileSource.class) Player player; public DiscordPlayerSender(IUser user, IChannel channel, Player player) { super(user, channel); @@ -35,1482 +17,12 @@ public class DiscordPlayerSender extends DiscordSenderBase implements Player { } @Override - public boolean isPermissionSet(String name) { - return player.isPermissionSet(name); + public T launchProjectile(Class arg0) { + return player.launchProjectile(arg0); } @Override - public boolean isPermissionSet(Permission perm) { - return this.player.isPermissionSet(perm); - } - - @Override - public boolean hasPermission(String name) { - return player.hasPermission(name); - } - - @Override - public boolean hasPermission(Permission perm) { - return this.player.hasPermission(perm); - } - - @Override - public PermissionAttachment addAttachment(Plugin plugin, String name, boolean value) { - return player.addAttachment(plugin, name, value); - } - - @Override - public PermissionAttachment addAttachment(Plugin plugin) { - return player.addAttachment(plugin); - } - - @Override - public PermissionAttachment addAttachment(Plugin plugin, String name, boolean value, int ticks) { - return player.addAttachment(plugin, name, value, ticks); - } - - @Override - public PermissionAttachment addAttachment(Plugin plugin, int ticks) { - return player.addAttachment(plugin, ticks); - } - - @Override - public void removeAttachment(PermissionAttachment attachment) { - player.removeAttachment(attachment); - } - - @Override - public void recalculatePermissions() { - player.recalculatePermissions(); - } - - @Override - public Set getEffectivePermissions() { - return player.getEffectivePermissions(); - } - - @Override - public boolean isOp() { - return player.isOp(); - } - - @Override - public void setOp(boolean value) { - player.setOp(value); - } - - @Override - public Server getServer() { - return Bukkit.getServer(); - } - - @Override - public String getName() { - return player.getName(); - } - - // Find: " (\w+)\(\) \{\s+\/\/ TO\DO Auto-generated method stub\s+return null;" - Replace: " $1() { return player.$1();" - @Override - public String getDisplayName() { - return player.getDisplayName(); - } - - // Find: " (\w+)\((\w+) (\w+)\) \{\s+\/\/ TO\DO Auto-generated method stub\s" - Replace: " $1($2 $3) { player.$1($3);" - @Override - public void setDisplayName(String name) { - player.setDisplayName(name); - } - - @Override - public String getPlayerListName() { - return player.getPlayerListName(); - } - - @Override - public void setPlayerListName(String name) { - player.setPlayerListName(name); - } - - @Override - public void setCompassTarget(Location loc) { - player.setCompassTarget(loc); - } - - @Override - public Location getCompassTarget() { - return player.getCompassTarget(); - } - - @Override - public InetSocketAddress getAddress() { - return player.getAddress(); - } - - @Override - public void sendRawMessage(String message) { - player.sendRawMessage(message); - } - - @Override - public void kickPlayer(String message) { - player.kickPlayer(message); - } - - @Override - public void chat(String msg) { - player.chat(msg); - } - - @Override - public boolean performCommand(String command) { - return player.performCommand(command); - } - - // Find: " (\w+)\(\) \{\s+\/\/ TO\DO Auto-generated method stub\s+return false;" - Replace: " $1() { return player.$1();" - @Override - public boolean isSneaking() { - return player.isSneaking(); - } - - @Override - public void setSneaking(boolean sneak) { - player.setSneaking(sneak); - } - - @Override - public boolean isSprinting() { - return player.isSprinting(); - } - - @Override - public void setSprinting(boolean sprinting) { - player.setSprinting(sprinting); - } - - @Override - public void saveData() { - player.saveData(); - } - - @Override - public void loadData() { - player.loadData(); - } - - @Override - public void setSleepingIgnored(boolean isSleeping) { - player.setSleepingIgnored(isSleeping); - } - - @Override - public boolean isSleepingIgnored() { - return player.isSleepingIgnored(); - } - - // Find: " (\w+)\((\w+) (\w+), (\w+) (\w+), (\w+) (\w+)\) \{\s+\/\/ TO\DO Auto-generated method stub\s" - Replace: " $1($2 $3, $4 $5, $6 $7) { player.$1($3, $5, $7);" - @Override - public void playNote(Location loc, byte instrument, byte note) { - player.playNote(loc, instrument, note); - } - - @Override - public void playNote(Location loc, Instrument instrument, Note note) { - player.playNote(loc, instrument, note); - } - - // Find: " (\w+)\((\w+) (\w+), (\w+) (\w+), (\w+) (\w+), (\w+) (\w+)\) \{\s+\/\/ TO\DO Auto-generated method stub\s" - Replace: " $1($2 $3, $4 $5, $6 $7, $8 $9) { player.$1($3, $5, $7, $9);" - @Override - public void playSound(Location location, Sound sound, float volume, float pitch) { - player.playSound(location, sound, volume, pitch); - } - - @Override - public void playSound(Location location, String sound, float volume, float pitch) { - player.playSound(location, sound, volume, pitch); - } - - // Find: " (\w+)\((\w+) (\w+), (\w+) (\w+), (\w+) (\w+), (\w+) (\w+), (\w+) (\w+)\) \{\s+\/\/ TO\DO Auto-generated method stub\s" - Replace: " $1($2 $3, $4 $5, $6 $7, $8 $9, $10 $11) { - // player.$1($3, $5, $7, $9, $11);" - @Override - public void playSound(Location location, Sound sound, SoundCategory category, float volume, float pitch) { - player.playSound(location, sound, category, volume, pitch); - } - - @Override - public void playSound(Location location, String sound, SoundCategory category, float volume, float pitch) { - player.playSound(location, sound, category, volume, pitch); - } - - @Override - public void stopSound(Sound sound) { - player.stopSound(sound); - } - - @Override - public void stopSound(String sound) { - player.stopSound(sound); - } - - @Override - public void stopSound(Sound sound, SoundCategory category) { - player.stopSound(sound, category); - } - - @Override - public void stopSound(String sound, SoundCategory category) { - player.stopSound(sound, category); - } - - @Override - public void playEffect(Location loc, Effect effect, int data) { - player.playEffect(loc, effect, data); - } - - @Override - public void playEffect(Location loc, Effect effect, T data) { - player.playEffect(loc, effect, data); - } - - @Override - public void sendBlockChange(Location loc, Material material, byte data) { - player.sendBlockChange(loc, material, data); - } - - // Find: " (\w+)\((\w+) (\w+), (\w+) (\w+), (\w+) (\w+), (\w+) (\w+), (\w+) (\w+), (\w+) (\w+)\) \{\s+\/\/ TO\DO Auto-generated method stub\s" - Replace: " $1($2 $3, $4 $5, $6 $7, $8 $9, $10 $11, - // $12 $13) { player.$1($3, $5, $7, $9, $11, $13);" - - @Override - public boolean sendChunkChange(Location loc, int sx, int sy, int sz, byte[] data) { - return player.sendChunkChange(loc, sx, sy, sz, data); - } - - @Override - public void sendBlockChange(Location loc, int material, byte data) { - player.sendBlockChange(loc, material, data); - } - - @Override - public void sendSignChange(Location loc, String[] lines) throws IllegalArgumentException { - player.sendSignChange(loc, lines); - } - - @Override - public void sendMap(MapView map) { - player.sendMap(map); - } - - // Find: " (\w+)\(\) \{\s+\/\/ TO\DO Auto-generated method stub\s" - Replace: " $1() { player.$1();" - @Override - public void updateInventory() { - player.updateInventory(); - } - - @Override - public void awardAchievement(Achievement achievement) { - player.awardAchievement(achievement); - } - - @Override - public void removeAchievement(Achievement achievement) { - player.removeAchievement(achievement); - } - - @Override - public boolean hasAchievement(Achievement achievement) { - return player.hasAchievement(achievement); - } - - @Override - public void incrementStatistic(Statistic statistic) throws IllegalArgumentException { - player.incrementStatistic(statistic); - } - - @Override - public void decrementStatistic(Statistic statistic) throws IllegalArgumentException { - player.decrementStatistic(statistic); - } - - // Find: " (\w+)\((\w+) (\w+), (\w+) (\w+)\)(.+)\{\s+\/\/ TO\DO Auto-generated method stub\s" - Replace: " $1($2 $3, $4 $5) $6 { player.$1($3, $5);" - @Override - public void incrementStatistic(Statistic statistic, int amount) throws IllegalArgumentException { - player.incrementStatistic(statistic, amount); - } - - @Override - public void decrementStatistic(Statistic statistic, int amount) throws IllegalArgumentException { - player.decrementStatistic(statistic, amount); - } - - @Override - public void setStatistic(Statistic statistic, int newValue) throws IllegalArgumentException { - player.setStatistic(statistic, newValue); - } - - @Override - public int getStatistic(Statistic statistic) throws IllegalArgumentException { - return player.getStatistic(statistic); - } - - @Override - public void incrementStatistic(Statistic statistic, Material material) throws IllegalArgumentException { - player.incrementStatistic(statistic, material); - } - - @Override - public void decrementStatistic(Statistic statistic, Material material) throws IllegalArgumentException { - player.decrementStatistic(statistic, material); - } - - @Override - public int getStatistic(Statistic statistic, Material material) throws IllegalArgumentException { - return player.getStatistic(statistic, material); - } - - // Find: " (\w+)\((\w+) (\w+), (\w+) (\w+), (\w+) (\w+)\)(.+)\{\s+\/\/ TO\DO Auto-generated method stub\s" - Replace: " $1($2 $3, $4 $5, $6 $7) $8 { player.$1($3, $5, $7);" - @Override - public void incrementStatistic(Statistic statistic, Material material, int amount) throws IllegalArgumentException { - player.incrementStatistic(statistic, material, amount); - } - - @Override - public void decrementStatistic(Statistic statistic, Material material, int amount) throws IllegalArgumentException { - player.decrementStatistic(statistic, material, amount); - } - - @Override - public void setStatistic(Statistic statistic, Material material, int newValue) throws IllegalArgumentException { - player.setStatistic(statistic, material, newValue); - } - - @Override - public void incrementStatistic(Statistic statistic, EntityType entityType) throws IllegalArgumentException { - player.incrementStatistic(statistic, entityType); - } - - @Override - public void decrementStatistic(Statistic statistic, EntityType entityType) throws IllegalArgumentException { - player.decrementStatistic(statistic, entityType); - } - - @Override - public int getStatistic(Statistic statistic, EntityType entityType) throws IllegalArgumentException { - return player.getStatistic(statistic, entityType); - } - - @Override - public void incrementStatistic(Statistic statistic, EntityType entityType, int amount) - throws IllegalArgumentException { - player.incrementStatistic(statistic, entityType, amount); - } - - @Override - public void decrementStatistic(Statistic statistic, EntityType entityType, int amount) { - player.decrementStatistic(statistic, entityType, amount); - } - - @Override - public void setStatistic(Statistic statistic, EntityType entityType, int newValue) { - player.setStatistic(statistic, entityType, newValue); - } - - /** - * Find: " (\w+)\((\w+) (\w+), (\w+) (\w+)\) \{\s+\/\/ TO\DO Auto-generated method stub\s" - Replace: " $1($2 $3, $4 $5) { player.$1($3, $5);" - */ - @Override - public void setPlayerTime(long time, boolean relative) { - player.setPlayerTime(time, relative); - } - - @Override - public long getPlayerTime() { - return player.getPlayerTime(); - } - - @Override - public long getPlayerTimeOffset() { - return player.getPlayerTimeOffset(); - } - - @Override - public boolean isPlayerTimeRelative() { - return player.isPlayerTimeRelative(); - } - - @Override - public void resetPlayerTime() { - player.resetPlayerTime(); - } - - @Override - public void setPlayerWeather(WeatherType type) { - player.setPlayerWeather(type); - } - - @Override - public WeatherType getPlayerWeather() { - return player.getPlayerWeather(); - } - - @Override - public void resetPlayerWeather() { - player.resetPlayerWeather(); - } - - @Override - public void giveExp(int amount) { - player.giveExp(amount); - } - - @Override - public void giveExpLevels(int amount) { - player.giveExpLevels(amount); - } - - @Override - public float getExp() { - return player.getExp(); - } - - @Override - public void setExp(float exp) { - player.setExp(exp); - } - - @Override - public int getLevel() { - return player.getLevel(); - } - - @Override - public void setLevel(int level) { - player.setLevel(level); - } - - @Override - public int getTotalExperience() { - return player.getTotalExperience(); - } - - @Override - public void setTotalExperience(int exp) { - player.setTotalExperience(exp); - } - - @Override - public float getExhaustion() { - return player.getExhaustion(); - } - - @Override - public void setExhaustion(float value) { - player.setExhaustion(value); - } - - @Override - public float getSaturation() { - return player.getSaturation(); - } - - @Override - public void setSaturation(float value) { - player.setSaturation(value); - } - - @Override - public int getFoodLevel() { - return player.getFoodLevel(); - } - - @Override - public void setFoodLevel(int value) { - player.setFoodLevel(value); - } - - @Override - public Location getBedSpawnLocation() { - return player.getBedSpawnLocation(); - } - - @Override - public void setBedSpawnLocation(Location location) { - player.setBedSpawnLocation(location); - } - - @Override - public void setBedSpawnLocation(Location location, boolean force) { - player.setBedSpawnLocation(location, force); - } - - @Override - public boolean getAllowFlight() { - return player.getAllowFlight(); - } - - @Override - public void setAllowFlight(boolean flight) { - player.setAllowFlight(flight); - } - - @Override - public void hidePlayer(Player player) { - player.hidePlayer(player); - } - - @Override - public void showPlayer(Player player) { - player.showPlayer(player); - } - - @Override - public boolean canSee(Player player) { - return player.canSee(player); - } - - @Override - public boolean isOnGround() { - return player.isOnGround(); - } - - @Override - public boolean isFlying() { - return player.isFlying(); - } - - @Override - public void setFlying(boolean value) { - player.setFlying(value); - } - - @Override - public void setFlySpeed(float value) throws IllegalArgumentException { - player.setFlySpeed(value); - } - - @Override - public void setWalkSpeed(float value) throws IllegalArgumentException { - player.setWalkSpeed(value); - } - - // Find: "\{\s+(.+)\s+return (?:(?:0)|(?:null)|(?:false));" - Replace: "{ return $1" - @Override - public float getFlySpeed() { - return player.getFlySpeed(); - } - - @Override - public float getWalkSpeed() { - return player.getWalkSpeed(); - } - - @Override - public void setTexturePack(String url) { - player.setTexturePack(url); - } - - @Override - public void setResourcePack(String url) { - player.setResourcePack(url); - } - - @Override - public Scoreboard getScoreboard() { - return player.getScoreboard(); - } - - @Override - public void setScoreboard(Scoreboard scoreboard) throws IllegalArgumentException, IllegalStateException { - player.setScoreboard(scoreboard); - } - - @Override - public boolean isHealthScaled() { - return player.isHealthScaled(); - } - - @Override - public void setHealthScaled(boolean scale) { - player.setHealthScaled(scale); - } - - // Find: " (\w+)\((\w+) (\w+)\)(.+)\{\s+\/\/ TO\DO Auto-generated method stub\s" - Replace: " $1($2 $3) $4 { player.$1($3);" - @Override - public void setHealthScale(double scale) throws IllegalArgumentException { - player.setHealthScale(scale); - } - - @Override - public double getHealthScale() { - return player.getHealthScale(); - } - - @Override - public Entity getSpectatorTarget() { - return player.getSpectatorTarget(); - } - - @Override - public void setSpectatorTarget(Entity entity) { - player.setSpectatorTarget(entity); - } - - @Override - public void sendTitle(String title, String subtitle) { - player.sendTitle(title, subtitle); - } - - @Override - public void resetTitle() { - player.resetTitle(); - } - - @Override - public void spawnParticle(Particle particle, Location location, int count) { - player.spawnParticle(particle, location, count); - } - - @Override - public void spawnParticle(Particle particle, double x, double y, double z, int count) { - player.spawnParticle(particle, x, y, z, count); - } - - @Override - public void spawnParticle(Particle particle, Location location, int count, T data) { - player.spawnParticle(particle, location, count, data); - } - - // Find: " (\w+)\((\w+) (\w+), (\w+) (\w+), (\w+) (\w+), (\w+) (\w+), (\w+) (\w+), (\w+) (\w+)\) \{\s+\/\/ TO\DO Auto-generated method stub\s" - Replace: " $1($2 $3, $4 $5, $6 $7, $8 $9, $10 $11, - // $12 $13) { player.$1($3, $5, $7, $9, $11, $13);" - @Override - public void spawnParticle(Particle particle, double x, double y, double z, int count, T data) { - player.spawnParticle(particle, x, y, z, count, data); - } - - @Override - public void spawnParticle(Particle particle, Location location, int count, double offsetX, double offsetY, - double offsetZ) { - player.spawnParticle(particle, location, count, offsetX, offsetY, offsetZ); - } - - @Override - public void spawnParticle(Particle particle, double x, double y, double z, int count, double offsetX, - double offsetY, double offsetZ) { - player.spawnParticle(particle, offsetX, y, z, count, offsetX, offsetY, offsetZ); - } - - @Override - public void spawnParticle(Particle particle, Location location, int count, double offsetX, double offsetY, - double offsetZ, T data) { - player.spawnParticle(particle, location, count, data); - } - - @Override - public void spawnParticle(Particle particle, double x, double y, double z, int count, double offsetX, - double offsetY, double offsetZ, T data) { - player.spawnParticle(particle, x, y, z, count, offsetX, offsetY, offsetZ, data); - } - - @Override - public void spawnParticle(Particle particle, Location location, int count, double offsetX, double offsetY, - double offsetZ, double extra) { - player.spawnParticle(particle, location, count, offsetX, offsetY, offsetZ, extra); - } - - @Override - public void spawnParticle(Particle particle, double x, double y, double z, int count, double offsetX, - double offsetY, double offsetZ, double extra) { - player.spawnParticle(particle, x, y, z, count, offsetX, offsetY, offsetZ, extra); - } - - @Override - public void spawnParticle(Particle particle, Location location, int count, double offsetX, double offsetY, - double offsetZ, double extra, T data) { - player.spawnParticle(particle, location, count, offsetX, offsetY, offsetZ, extra, data); - } - - @Override - public void spawnParticle(Particle particle, double x, double y, double z, int count, double offsetX, - double offsetY, double offsetZ, double extra, T data) { - player.spawnParticle(particle, x, y, z, count, offsetX, offsetY, offsetZ, extra, data); - } - - @Override - public Spigot spigot() { - return player.spigot(); - } - - @Override - public PlayerInventory getInventory() { - return player.getInventory(); - } - - @Override - public Inventory getEnderChest() { - return player.getEnderChest(); - } - - @Override - public MainHand getMainHand() { - return player.getMainHand(); - } - - @Override - public boolean setWindowProperty(Property prop, int value) { - return player.setWindowProperty(prop, value); - } - - @Override - public InventoryView getOpenInventory() { - return player.getOpenInventory(); - } - - @Override - public InventoryView openInventory(Inventory inventory) { - return player.openInventory(inventory); - } - - @Override - public InventoryView openWorkbench(Location location, boolean force) { - return player.openWorkbench(location, force); - } - - @Override - public InventoryView openEnchanting(Location location, boolean force) { - return player.openEnchanting(location, force); - } - - @Override - public void openInventory(InventoryView inventory) { - player.openInventory(inventory); - } - - @Override - public InventoryView openMerchant(Villager trader, boolean force) { - return player.openMerchant(trader, force); - } - - @Override - public InventoryView openMerchant(Merchant merchant, boolean force) { - return player.openMerchant(merchant, force); - } - - @Override - public void closeInventory() { - player.closeInventory(); - } - - @Override - public ItemStack getItemInHand() { - return player.getItemInHand(); - } - - @Override - public void setItemInHand(ItemStack item) { - player.setItemInHand(item); - } - - @Override - public ItemStack getItemOnCursor() { - return player.getItemOnCursor(); - } - - @Override - public void setItemOnCursor(ItemStack item) { - player.setItemOnCursor(item); - } - - @Override - public boolean isSleeping() { - return player.isSleeping(); - } - - @Override - public int getSleepTicks() { - return player.getSleepTicks(); - } - - @Override - public GameMode getGameMode() { - return player.getGameMode(); - } - - @Override - public void setGameMode(GameMode mode) { - player.setGameMode(mode); - } - - @Override - public boolean isBlocking() { - return player.isBlocking(); - } - - @Override - public boolean isHandRaised() { - return player.isHandRaised(); - } - - @Override - public int getExpToLevel() { - return player.getExpToLevel(); - } - - @Override - public double getEyeHeight() { - return player.getEyeHeight(); - } - - @Override - public double getEyeHeight(boolean ignoreSneaking) { - return player.getEyeHeight(ignoreSneaking); - } - - @Override - public Location getEyeLocation() { - return player.getEyeLocation(); - } - - @Override - public List getLineOfSight(HashSet transparent, int maxDistance) { - return player.getLineOfSight(transparent, maxDistance); - } - - @Override - public List getLineOfSight(Set transparent, int maxDistance) { - return player.getLineOfSight(transparent, maxDistance); - } - - @Override - public Block getTargetBlock(HashSet transparent, int maxDistance) { - return player.getTargetBlock(transparent, maxDistance); - } - - @Override - public Block getTargetBlock(Set transparent, int maxDistance) { - return player.getTargetBlock(transparent, maxDistance); - } - - @Override - public List getLastTwoTargetBlocks(HashSet transparent, int maxDistance) { - return player.getLastTwoTargetBlocks(transparent, maxDistance); - } - - @Override - public List getLastTwoTargetBlocks(Set transparent, int maxDistance) { - return player.getLastTwoTargetBlocks(transparent, maxDistance); - } - - @Override - public int getRemainingAir() { - return player.getRemainingAir(); - } - - @Override - public void setRemainingAir(int ticks) { - player.setRemainingAir(ticks); - } - - @Override - public int getMaximumAir() { - return player.getMaximumAir(); - } - - @Override - public void setMaximumAir(int ticks) { - player.setMaximumAir(ticks); - } - - @Override - public int getMaximumNoDamageTicks() { - return player.getMaximumNoDamageTicks(); - } - - @Override - public void setMaximumNoDamageTicks(int ticks) { - player.setMaximumNoDamageTicks(ticks); - } - - @Override - public double getLastDamage() { - return player.getLastDamage(); - } - - @Override - public int _INVALID_getLastDamage() { - return player._INVALID_getLastDamage(); - } - - @Override - public void setLastDamage(double damage) { - player.setLastDamage(damage); - } - - @Override - public void _INVALID_setLastDamage(int damage) { - player._INVALID_setLastDamage(damage); - } - - @Override - public int getNoDamageTicks() { - return player.getNoDamageTicks(); - } - - @Override - public void setNoDamageTicks(int ticks) { - player.setNoDamageTicks(ticks); - } - - @Override - public Player getKiller() { - return player.getKiller(); - } - - @Override - public boolean addPotionEffect(PotionEffect effect) { - return player.addPotionEffect(effect); - } - - @Override - public boolean addPotionEffect(PotionEffect effect, boolean force) { - return player.addPotionEffect(effect, force); - } - - @Override - public boolean addPotionEffects(Collection effects) { - return player.addPotionEffects(effects); - } - - @Override - public boolean hasPotionEffect(PotionEffectType type) { - return player.hasPotionEffect(type); - } - - @Override - public PotionEffect getPotionEffect(PotionEffectType type) { - return player.getPotionEffect(type); - } - - @Override - public void removePotionEffect(PotionEffectType type) { - player.removePotionEffect(type); - } - - @Override - public Collection getActivePotionEffects() { - return player.getActivePotionEffects(); - } - - @Override - public boolean hasLineOfSight(Entity other) { - return player.hasLineOfSight(other); - } - - @Override - public boolean getRemoveWhenFarAway() { - return player.getRemoveWhenFarAway(); - } - - @Override - public void setRemoveWhenFarAway(boolean remove) { - player.setRemoveWhenFarAway(remove); - } - - @Override - public EntityEquipment getEquipment() { - return player.getEquipment(); - } - - @Override - public void setCanPickupItems(boolean pickup) { - player.setCanPickupItems(pickup); - } - - @Override - public boolean getCanPickupItems() { - return player.getCanPickupItems(); - } - - @Override - public boolean isLeashed() { - return player.isLeashed(); - } - - @Override - public Entity getLeashHolder() throws IllegalStateException { - return player.getLeashHolder(); - } - - @Override - public boolean setLeashHolder(Entity holder) { - return player.setLeashHolder(holder); - } - - @Override - public boolean isGliding() { - return player.isGliding(); - } - - @Override - public void setGliding(boolean gliding) { - player.setGliding(gliding); - } - - @Override - public void setAI(boolean ai) { - player.setAI(ai); - } - - @Override - public boolean hasAI() { - return player.hasAI(); - } - - @Override - public void setCollidable(boolean collidable) { - player.setCollidable(collidable); - } - - @Override - public boolean isCollidable() { - return player.isCollidable(); - } - - @Override - public AttributeInstance getAttribute(Attribute attribute) { - return player.getAttribute(attribute); - } - - @Override - public Location getLocation() { - return player.getLocation(); - } - - @Override - public Location getLocation(Location loc) { - return player.getLocation(loc); - } - - @Override - public void setVelocity(Vector velocity) { - player.setVelocity(velocity); - } - - @Override - public Vector getVelocity() { - return player.getVelocity(); - } - - @Override - public World getWorld() { - return player.getWorld(); - } - - @Override - public boolean teleport(Location location) { - return player.teleport(location); - } - - @Override - public boolean teleport(Location location, TeleportCause cause) { - return player.teleport(location, cause); - } - - @Override - public boolean teleport(Entity destination) { - return player.teleport(destination); - } - - @Override - public boolean teleport(Entity destination, TeleportCause cause) { - return player.teleport(destination, cause); - } - - @Override - public List getNearbyEntities(double x, double y, double z) { - return player.getNearbyEntities(x, y, z); - } - - @Override - public int getEntityId() { - return player.getEntityId(); - } - - @Override - public int getFireTicks() { - return player.getFireTicks(); - } - - @Override - public int getMaxFireTicks() { - return player.getMaxFireTicks(); - } - - @Override - public void setFireTicks(int ticks) { - player.setFireTicks(ticks); - } - - @Override - public void remove() { - player.remove(); - } - - @Override - public boolean isDead() { - return player.isDead(); - } - - @Override - public boolean isValid() { - return player.isValid(); - } - - @Override - public Entity getPassenger() { - return player.getPassenger(); - } - - @Override - public boolean setPassenger(Entity passenger) { - return player.setPassenger(passenger); - } - - @Override - public boolean isEmpty() { - return player.isEmpty(); - } - - @Override - public boolean eject() { - return player.eject(); - } - - @Override - public float getFallDistance() { - return player.getFallDistance(); - } - - @Override - public void setFallDistance(float distance) { - player.setFallDistance(distance); - } - - @Override - public void setLastDamageCause(EntityDamageEvent event) { - player.setLastDamageCause(event); - } - - @Override - public EntityDamageEvent getLastDamageCause() { - return player.getLastDamageCause(); - } - - @Override - public UUID getUniqueId() { - return player.getUniqueId(); - } - - @Override - public int getTicksLived() { - return player.getTicksLived(); - } - - @Override - public void setTicksLived(int value) { - player.setTicksLived(value); - } - - @Override - public void playEffect(EntityEffect type) { - player.playEffect(type); - } - - @Override - public EntityType getType() { - return player.getType(); - } - - @Override - public boolean isInsideVehicle() { - return player.isInsideVehicle(); - } - - @Override - public boolean leaveVehicle() { - return player.leaveVehicle(); - } - - @Override - public Entity getVehicle() { - return player.getVehicle(); - } - - @Override - public void setCustomNameVisible(boolean flag) { - player.setCustomNameVisible(flag); - } - - @Override - public boolean isCustomNameVisible() { - return player.isCustomNameVisible(); - } - - @Override - public void setGlowing(boolean flag) { - player.setGlowing(flag); - } - - @Override - public boolean isGlowing() { - return player.isGlowing(); - } - - @Override - public void setInvulnerable(boolean flag) { - player.setInvulnerable(flag); - } - - @Override - public boolean isInvulnerable() { - return player.isInvulnerable(); - } - - @Override - public boolean isSilent() { - return player.isSilent(); - } - - @Override - public void setSilent(boolean flag) { - player.setSilent(flag); - } - - @Override - public boolean hasGravity() { - return player.hasGravity(); - } - - @Override - public void setGravity(boolean gravity) { - player.setGravity(gravity); - } - - @Override - public int getPortalCooldown() { - return player.getPortalCooldown(); - } - - @Override - public void setPortalCooldown(int cooldown) { - player.setPortalCooldown(cooldown); - } - - @Override - public Set getScoreboardTags() { - return player.getScoreboardTags(); - } - - @Override - public boolean addScoreboardTag(String tag) { - return player.addScoreboardTag(tag); - } - - @Override - public boolean removeScoreboardTag(String tag) { - return player.removeScoreboardTag(tag); - } - - @Override - public void setMetadata(String metadataKey, MetadataValue newMetadataValue) { - player.setMetadata(metadataKey, newMetadataValue); - } - - @Override - public List getMetadata(String metadataKey) { - return player.getMetadata(metadataKey); - } - - @Override - public boolean hasMetadata(String metadataKey) { - return player.hasMetadata(metadataKey); - } - - @Override - public void removeMetadata(String metadataKey, Plugin owningPlugin) { - player.removeMetadata(metadataKey, owningPlugin); - } - - @Override - public String getCustomName() { - return player.getCustomName(); - } - - @Override - public void setCustomName(String name) { - player.setCustomName(name); - } - - @Override - public void damage(double amount) { - player.damage(amount); - } - - @Override - public void _INVALID_damage(int amount) { - player._INVALID_damage(amount); - } - - @Override - public void damage(double amount, Entity source) { - player.damage(amount, source); - } - - @Override - public void _INVALID_damage(int amount, Entity source) { - player._INVALID_damage(amount, source); - } - - @Override - public double getHealth() { - return player.getHealth(); - } - - @Override - public int _INVALID_getHealth() { - return player._INVALID_getHealth(); - } - - @Override - public void setHealth(double health) { - player.setHealth(health); - } - - @Override - public void _INVALID_setHealth(int health) { - player._INVALID_setHealth(health); - } - - @Override - public double getMaxHealth() { - return player.getMaxHealth(); - } - - @Override - public int _INVALID_getMaxHealth() { - return player._INVALID_getMaxHealth(); - } - - @Override - public void setMaxHealth(double health) { - player.setMaxHealth(health); - } - - @Override - public void _INVALID_setMaxHealth(int health) { - player._INVALID_setMaxHealth(health); - } - - @Override - public void resetMaxHealth() { - player.resetMaxHealth(); - } - - @Override - public T launchProjectile(Class projectile) { - return player.launchProjectile(projectile); - } - - @Override - public T launchProjectile(Class projectile, Vector velocity) { - return player.launchProjectile(projectile, velocity); - } - - @Override - public boolean isConversing() { - return player.isConversing(); - } - - @Override - public void acceptConversationInput(String input) { - player.acceptConversationInput(input); - } - - @Override - public boolean beginConversation(Conversation conversation) { - return player.beginConversation(conversation); - } - - @Override - public void abandonConversation(Conversation conversation) { - player.abandonConversation(conversation); - } - - @Override - public void abandonConversation(Conversation conversation, ConversationAbandonedEvent details) { - player.abandonConversation(conversation, details); - } - - @Override - public boolean isOnline() { - return player.isOnline(); - } - - @Override - public boolean isBanned() { - return player.isBanned(); - } - - @Override - public void setBanned(boolean banned) { - player.setBanned(banned); - } - - @Override - public boolean isWhitelisted() { - return player.isWhitelisted(); - } - - @Override - public void setWhitelisted(boolean value) { - player.setWhitelisted(value); - } - - @Override - public Player getPlayer() { - return player.getPlayer(); - } - - @Override - public long getFirstPlayed() { - return player.getFirstPlayed(); - } - - @Override - public long getLastPlayed() { - return player.getLastPlayed(); - } - - @Override - public boolean hasPlayedBefore() { - return player.hasPlayedBefore(); - } - - @Override - public Map serialize() { - return player.serialize(); - } - - @Override - public void sendPluginMessage(Plugin source, String channel, byte[] message) { - player.sendPluginMessage(source, channel, message); - } - - @Override - public Set getListeningPluginChannels() { - return player.getListeningPluginChannels(); - } - - @Override - public void sendTitle(String arg0, String arg1, int arg2, int arg3, int arg4) { - player.sendTitle(arg0, arg1, arg2, arg3, arg4); - + public T launchProjectile(Class arg0, Vector arg1) { + return player.launchProjectile(arg0, arg1); } } diff --git a/src/main/java/buttondevteam/discordplugin/DiscordPlugin.java b/src/main/java/buttondevteam/discordplugin/DiscordPlugin.java index 0d269bc..ab4485c 100644 --- a/src/main/java/buttondevteam/discordplugin/DiscordPlugin.java +++ b/src/main/java/buttondevteam/discordplugin/DiscordPlugin.java @@ -27,8 +27,8 @@ import sx.blah.discord.api.internal.json.objects.EmbedObject; import sx.blah.discord.handle.impl.events.ReadyEvent; import sx.blah.discord.handle.obj.*; import sx.blah.discord.util.*; +import sx.blah.discord.util.RequestBuffer.IRequest; import sx.blah.discord.util.RequestBuffer.IVoidRequest; -import sx.blah.discord.util.RequestBuffer.RequestFuture; public class DiscordPlugin extends JavaPlugin implements IListener { private static final String SubredditURL = "https://www.reddit.com/r/ChromaGamers"; @@ -148,27 +148,14 @@ public class DiscordPlugin extends JavaPlugin implements IListener { "You could make a religion out of this"); } } - /*IDiscordOAuth doa = new DiscordOAuthBuilder(dc).withClientID("226443037893591041") - .withClientSecret(getConfig().getString("appsecret")) - .withRedirectUrl("https://" + (TBMCCoreAPI.IsTestServer() ? "localhost" : "server.figytuna.com") - + ":8081/callback") - .withScopes(Scope.IDENTIFY).withHttpServerOptions(new HttpServerOptions().setPort(8081)) - .withSuccessHandler((rc, user) -> { - rc.response().headers().add("Location", - "https://" + (TBMCCoreAPI.IsTestServer() ? "localhost" : "server.figytuna.com") - + ":8080/login?type=discord&" + rc.request().query()); - rc.response().setStatusCode(303); - rc.response().end("Redirecting"); - rc.response().close(); - }).withFailureHandler(rc -> { - rc.response().headers().add("Location", - "https://" + (TBMCCoreAPI.IsTestServer() ? "localhost" : "server.figytuna.com") - + ":8080/login?type=discord&" + rc.request().query()); - rc.response().setStatusCode(303); - rc.response().end("Redirecting"); - rc.response().close(); - }).build(); - getLogger().info("Auth URL: " + doa.buildAuthUrl());*/ + /* + * IDiscordOAuth doa = new DiscordOAuthBuilder(dc).withClientID("226443037893591041") .withClientSecret(getConfig().getString("appsecret")) .withRedirectUrl("https://" + + * (TBMCCoreAPI.IsTestServer() ? "localhost" : "server.figytuna.com") + ":8081/callback") .withScopes(Scope.IDENTIFY).withHttpServerOptions(new HttpServerOptions().setPort(8081)) + * .withSuccessHandler((rc, user) -> { rc.response().headers().add("Location", "https://" + (TBMCCoreAPI.IsTestServer() ? "localhost" : "server.figytuna.com") + ":8080/login?type=discord&" + * + rc.request().query()); rc.response().setStatusCode(303); rc.response().end("Redirecting"); rc.response().close(); }).withFailureHandler(rc -> { rc.response().headers().add("Location", + * "https://" + (TBMCCoreAPI.IsTestServer() ? "localhost" : "server.figytuna.com") + ":8080/login?type=discord&" + rc.request().query()); rc.response().setStatusCode(303); + * rc.response().end("Redirecting"); rc.response().close(); }).build(); getLogger().info("Auth URL: " + doa.buildAuthUrl()); + */ } catch (Exception e) { TBMCCoreAPI.SendException("An error occured while enabling DiscordPlugin!", e); } @@ -317,30 +304,18 @@ public class DiscordPlugin extends JavaPlugin implements IListener { /** * Performs Discord actions, retrying when ratelimited. May return null if action fails too many times or in safe mode. */ - public static > T perform(DiscordSupplier action) - throws DiscordException, MissingPermissionsException { - for (int i = 0; i < 20; i++) - try { - if (SafeMode) - return null; - return action.get(); - } catch (RateLimitException e) { - try { - Thread.sleep(e.getRetryDelay() > 0 ? e.getRetryDelay() : 10); - } catch (InterruptedException e1) { - e1.printStackTrace(); - } - } - return null; + public static T perform(IRequest action) { + if (SafeMode) + return null; + return RequestBuffer.request(action).get(); // Let the pros handle this } /** * Performs Discord actions, retrying when ratelimited. */ - public static RequestFuture perform(IVoidRequest action) - throws DiscordException, MissingPermissionsException { + public static Void perform(IVoidRequest action) { if (SafeMode) return null; - return RequestBuffer.request(action); // Let the pros handle this + return RequestBuffer.request(action).get(); // Let the pros handle this } } diff --git a/src/main/java/buttondevteam/discordplugin/DiscordSender.java b/src/main/java/buttondevteam/discordplugin/DiscordSender.java index 9942973..81a414b 100644 --- a/src/main/java/buttondevteam/discordplugin/DiscordSender.java +++ b/src/main/java/buttondevteam/discordplugin/DiscordSender.java @@ -97,9 +97,12 @@ public class DiscordSender extends DiscordSenderBase implements CommandSender { @Override public String getName() { - if (user == null) - return "Discord user"; - return name == null ? user.getDisplayName(DiscordPlugin.mainServer) : name; + return name == null ? user == null ? "Discord user" : user.getDisplayName(DiscordPlugin.mainServer) : name; + } + + @Override + public Spigot spigot() { + return new CommandSender.Spigot(); } } diff --git a/src/main/java/buttondevteam/discordplugin/playerfaker/DiscordEntity.java b/src/main/java/buttondevteam/discordplugin/playerfaker/DiscordEntity.java new file mode 100644 index 0000000..b17048a --- /dev/null +++ b/src/main/java/buttondevteam/discordplugin/playerfaker/DiscordEntity.java @@ -0,0 +1,317 @@ +package buttondevteam.discordplugin.playerfaker; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.UUID; + +import org.bukkit.Bukkit; +import org.bukkit.EntityEffect; +import org.bukkit.Location; +import org.bukkit.Server; +import org.bukkit.World; +import org.bukkit.block.PistonMoveReaction; +import org.bukkit.entity.Entity; +import org.bukkit.event.entity.EntityDamageEvent; +import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause; +import org.bukkit.metadata.MetadataValue; +import org.bukkit.permissions.PermissibleBase; +import org.bukkit.permissions.ServerOperator; +import org.bukkit.plugin.Plugin; +import org.bukkit.util.Vector; + +import buttondevteam.discordplugin.DiscordSenderBase; +import lombok.Getter; +import lombok.Setter; +import lombok.experimental.Delegate; +import sx.blah.discord.handle.obj.IChannel; +import sx.blah.discord.handle.obj.IUser; + +@Getter +@Setter +public abstract class DiscordEntity extends DiscordSenderBase implements Entity { + protected DiscordEntity(IUser user, IChannel channel, int entityId, UUID uuid) { + super(user, channel); + this.entityId = entityId; + uniqueId = uuid; + } + + private HashMap metadata = new HashMap(); + + @Delegate + private PermissibleBase perm = new PermissibleBase(new ServerOperator() { + private @Getter @Setter boolean op; + }); + + private Location location; + private Vector velocity; + private final int entityId; + private EntityDamageEvent lastDamageCause; + private final Set scoreboardTags = new HashSet(); + private final UUID uniqueId; + + @Override + public void setMetadata(String metadataKey, MetadataValue newMetadataValue) { + metadata.put(metadataKey, newMetadataValue); + } + + @Override + public List getMetadata(String metadataKey) { + return Arrays.asList(metadata.get(metadataKey)); // Who needs multiple data anyways + } + + @Override + public boolean hasMetadata(String metadataKey) { + return metadata.containsKey(metadataKey); + } + + @Override + public void removeMetadata(String metadataKey, Plugin owningPlugin) { + metadata.remove(metadataKey); + } + + @Override + public Location getLocation(Location loc) { + if (loc != null) { + loc.setWorld(getWorld()); + loc.setX(location.getX()); + loc.setY(location.getY()); + loc.setZ(location.getZ()); + loc.setYaw(location.getYaw()); + loc.setPitch(location.getPitch()); + } + + return loc; + } + + @Override + public double getHeight() { + return 0; + } + + @Override + public double getWidth() { + return 0; + } + + @Override + public boolean isOnGround() { + return false; + } + + @Override + public World getWorld() { + return location.getWorld(); + } + + @Override + public boolean teleport(Location location) { + this.location = location; + return true; + } + + @Override + public boolean teleport(Location location, TeleportCause cause) { + this.location = location; + return true; + } + + @Override + public boolean teleport(Entity destination) { + this.location = destination.getLocation(); + return true; + } + + @Override + public boolean teleport(Entity destination, TeleportCause cause) { + this.location = destination.getLocation(); + return true; + } + + @Override + public List getNearbyEntities(double x, double y, double z) { + return Arrays.asList(); + } + + @Override + public int getFireTicks() { + return 0; + } + + @Override + public int getMaxFireTicks() { + return 0; + } + + @Override + public void setFireTicks(int ticks) { + } + + @Override + public void remove() { + } + + @Override + public boolean isDead() { // Impossible to kill + return false; + } + + @Override + public boolean isValid() { + return true; + } + + @Override + public Server getServer() { + return Bukkit.getServer(); + } + + @Override + public Entity getPassenger() { + return null; + } + + @Override + public boolean setPassenger(Entity passenger) { + return false; + } + + @Override + public List getPassengers() { + return Arrays.asList(); + } + + @Override + public boolean addPassenger(Entity passenger) { + return false; + } + + @Override + public boolean removePassenger(Entity passenger) { // Don't support passengers + return false; + } + + @Override + public boolean isEmpty() { + return true; + } + + @Override + public boolean eject() { + return false; + } + + @Override + public float getFallDistance() { + return 0; + } + + @Override + public void setFallDistance(float distance) { + } + + @Override + public int getTicksLived() { + return 1; + } + + @Override + public void setTicksLived(int value) { + } + + @Override + public void playEffect(EntityEffect type) { + } + + @Override + public boolean isInsideVehicle() { + return false; + } + + @Override + public boolean leaveVehicle() { + return false; + } + + @Override + public Entity getVehicle() { // Don't support vehicles + return null; + } + + @Override + public void setCustomNameVisible(boolean flag) { + } + + @Override + public boolean isCustomNameVisible() { + return true; + } + + @Override + public void setGlowing(boolean flag) { + } + + @Override + public boolean isGlowing() { + return false; + } + + @Override + public void setInvulnerable(boolean flag) { + } + + @Override + public boolean isInvulnerable() { + return true; + } + + @Override + public boolean isSilent() { + return true; + } + + @Override + public void setSilent(boolean flag) { + } + + @Override + public boolean hasGravity() { + return false; + } + + @Override + public void setGravity(boolean gravity) { + } + + @Override + public int getPortalCooldown() { + return 0; + } + + @Override + public void setPortalCooldown(int cooldown) { + } + + @Override + public boolean addScoreboardTag(String tag) { + return scoreboardTags.add(tag); + } + + @Override + public boolean removeScoreboardTag(String tag) { + return scoreboardTags.remove(tag); + } + + @Override + public PistonMoveReaction getPistonMoveReaction() { + return PistonMoveReaction.IGNORE; + } + + @Override + public Entity.Spigot spigot() { + return new Entity.Spigot(); + } + +} diff --git a/src/main/java/buttondevteam/discordplugin/playerfaker/DiscordHumanEntity.java b/src/main/java/buttondevteam/discordplugin/playerfaker/DiscordHumanEntity.java new file mode 100644 index 0000000..eab863b --- /dev/null +++ b/src/main/java/buttondevteam/discordplugin/playerfaker/DiscordHumanEntity.java @@ -0,0 +1,205 @@ +package buttondevteam.discordplugin.playerfaker; + +import java.util.UUID; + +import org.bukkit.GameMode; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.entity.Entity; +import org.bukkit.entity.EntityType; +import org.bukkit.entity.HumanEntity; +import org.bukkit.entity.Villager; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.InventoryView; +import org.bukkit.inventory.InventoryView.Property; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.MainHand; +import org.bukkit.inventory.Merchant; +import org.bukkit.inventory.PlayerInventory; + +import sx.blah.discord.handle.obj.IChannel; +import sx.blah.discord.handle.obj.IUser; + +public abstract class DiscordHumanEntity extends DiscordLivingEntity implements HumanEntity { + protected DiscordHumanEntity(IUser user, IChannel channel, int entityId, UUID uuid) { + super(user, channel, entityId, uuid); + } + + @Override + public PlayerInventory getInventory() { // TODO + return null; + } + + @Override + public Inventory getEnderChest() { + // TODO Auto-generated method stub + return null; + } + + @Override + public MainHand getMainHand() { + return MainHand.RIGHT; + } + + @Override + public boolean setWindowProperty(Property prop, int value) { + return false; + } + + @Override + public InventoryView getOpenInventory() { + // TODO Auto-generated method stub + return null; + } + + @Override + public InventoryView openInventory(Inventory inventory) { + // TODO Auto-generated method stub + return null; + } + + @Override + public InventoryView openWorkbench(Location location, boolean force) { + // TODO Auto-generated method stub + return null; + } + + @Override + public InventoryView openEnchanting(Location location, boolean force) { + // TODO Auto-generated method stub + return null; + } + + @Override + public void openInventory(InventoryView inventory) { + // TODO Auto-generated method stub + + } + + @Override + public InventoryView openMerchant(Villager trader, boolean force) { + // TODO Auto-generated method stub + return null; + } + + @Override + public InventoryView openMerchant(Merchant merchant, boolean force) { + // TODO Auto-generated method stub + return null; + } + + @Override + public void closeInventory() { + // TODO Auto-generated method stub + + } + + @Override + public ItemStack getItemInHand() { + // TODO Auto-generated method stub + return null; + } + + @Override + public void setItemInHand(ItemStack item) { + // TODO Auto-generated method stub + + } + + @Override + public ItemStack getItemOnCursor() { + // TODO Auto-generated method stub + return null; + } + + @Override + public void setItemOnCursor(ItemStack item) { + // TODO Auto-generated method stub + + } + + @Override + public boolean hasCooldown(Material material) { + // TODO Auto-generated method stub + return false; + } + + @Override + public int getCooldown(Material material) { + // TODO Auto-generated method stub + return 0; + } + + @Override + public void setCooldown(Material material, int ticks) { + // TODO Auto-generated method stub + + } + + @Override + public boolean isSleeping() { + // TODO Auto-generated method stub + return false; + } + + @Override + public int getSleepTicks() { + // TODO Auto-generated method stub + return 0; + } + + @Override + public GameMode getGameMode() { + // TODO Auto-generated method stub + return null; + } + + @Override + public void setGameMode(GameMode mode) { + // TODO Auto-generated method stub + + } + + @Override + public boolean isBlocking() { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean isHandRaised() { + // TODO Auto-generated method stub + return false; + } + + @Override + public int getExpToLevel() { + // TODO Auto-generated method stub + return 0; + } + + @Override + public Entity getShoulderEntityLeft() { + // TODO Auto-generated method stub + return null; + } + + @Override + public void setShoulderEntityLeft(Entity entity) { + // TODO Auto-generated method stub + + } + + @Override + public Entity getShoulderEntityRight() { + // TODO Auto-generated method stub + return null; + } + + @Override + public void setShoulderEntityRight(Entity entity) { + // TODO Auto-generated method stub + + } + +} diff --git a/src/main/java/buttondevteam/discordplugin/playerfaker/DiscordLivingEntity.java b/src/main/java/buttondevteam/discordplugin/playerfaker/DiscordLivingEntity.java new file mode 100644 index 0000000..23f2601 --- /dev/null +++ b/src/main/java/buttondevteam/discordplugin/playerfaker/DiscordLivingEntity.java @@ -0,0 +1,303 @@ +package buttondevteam.discordplugin.playerfaker; + +import java.util.Arrays; +import java.util.Collection; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.UUID; + +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.attribute.Attribute; +import org.bukkit.attribute.AttributeInstance; +import org.bukkit.block.Block; +import org.bukkit.entity.Entity; +import org.bukkit.entity.LivingEntity; +import org.bukkit.entity.Player; +import org.bukkit.entity.Projectile; +import org.bukkit.inventory.EntityEquipment; +import org.bukkit.inventory.ItemStack; +import org.bukkit.potion.PotionEffect; +import org.bukkit.potion.PotionEffectType; +import org.bukkit.util.Vector; + +import lombok.Getter; +import lombok.Setter; +import sx.blah.discord.handle.obj.IChannel; +import sx.blah.discord.handle.obj.IUser; + +public abstract class DiscordLivingEntity extends DiscordEntity implements LivingEntity { + + protected DiscordLivingEntity(IUser user, IChannel channel, int entityId, UUID uuid) { + super(user, channel, entityId, uuid); + } + + private @Getter EntityEquipment equipment = new DiscordEntityEquipment(this); + + @Getter + @Setter + private static class DiscordEntityEquipment implements EntityEquipment { + + private float leggingsDropChance; + private ItemStack leggings; + private float itemInOffHandDropChance; + private ItemStack itemInOffHand; + private float itemInMainHandDropChance; + private ItemStack itemInMainHand; + private float itemInHandDropChance; + private ItemStack itemInHand; + private float helmetDropChance; + private ItemStack helmet; + private float chestplateDropChance; + private ItemStack chestplate; + private float bootsDropChance; + private ItemStack boots; + private ItemStack[] armorContents = new ItemStack[0]; // TODO + private final Entity holder; + + public DiscordEntityEquipment(Entity holder) { + this.holder = holder; + } + + @Override + public void clear() { + armorContents = new ItemStack[0]; + } + } + + @Override + public AttributeInstance getAttribute(Attribute attribute) { // We don't support any attribute + return null; + } + + @Override + public void damage(double amount) { + } + + @Override + public void damage(double amount, Entity source) { + } + + @Override + public double getHealth() { + return getMaxHealth(); + } + + @Override + public void setHealth(double health) { + } + + @Override + public double getMaxHealth() { + return 100; + } + + @Override + public void setMaxHealth(double health) { + } + + @Override + public void resetMaxHealth() { + } + + @Override + public T launchProjectile(Class projectile) { + return null; + } + + @Override + public T launchProjectile(Class projectile, Vector velocity) { + return null; + } + + @Override + public double getEyeHeight() { + return 0; + } + + @Override + public double getEyeHeight(boolean ignoreSneaking) { + return 0; + } + + @Override + public Location getEyeLocation() { + return getLocation(); + } + + @Override + public List getLineOfSight(Set transparent, int maxDistance) { + return Arrays.asList(); + } + + @Override + public Block getTargetBlock(HashSet transparent, int maxDistance) { + return null; + } + + @Override + public Block getTargetBlock(Set transparent, int maxDistance) { + return null; + } + + @Override + public List getLastTwoTargetBlocks(HashSet transparent, int maxDistance) { + return Arrays.asList(); + } + + @Override + public List getLastTwoTargetBlocks(Set transparent, int maxDistance) { + return Arrays.asList(); + } + + @Override + public int getRemainingAir() { + return 100; + } + + @Override + public void setRemainingAir(int ticks) { + } + + @Override + public int getMaximumAir() { + return 100; + } + + @Override + public void setMaximumAir(int ticks) { + } + + @Override + public int getMaximumNoDamageTicks() { + return 100; + } + + @Override + public void setMaximumNoDamageTicks(int ticks) { + } + + @Override + public double getLastDamage() { + return 0; + } + + @Override + public void setLastDamage(double damage) { + } + + @Override + public int getNoDamageTicks() { + return 100; + } + + @Override + public void setNoDamageTicks(int ticks) { + } + + @Override + public Player getKiller() { + return null; + } + + @Override + public boolean addPotionEffect(PotionEffect effect) { + return false; + } + + @Override + public boolean addPotionEffect(PotionEffect effect, boolean force) { + return false; + } + + @Override + public boolean addPotionEffects(Collection effects) { + return false; + } + + @Override + public boolean hasPotionEffect(PotionEffectType type) { + return false; + } + + @Override + public PotionEffect getPotionEffect(PotionEffectType type) { + return null; + } + + @Override + public void removePotionEffect(PotionEffectType type) { + } + + @Override + public Collection getActivePotionEffects() { + return Arrays.asList(); + } + + @Override + public boolean hasLineOfSight(Entity other) { + return false; + } + + @Override + public boolean getRemoveWhenFarAway() { + return false; + } + + @Override + public void setRemoveWhenFarAway(boolean remove) { + } + + @Override + public void setCanPickupItems(boolean pickup) { + } + + @Override + public boolean getCanPickupItems() { + return false; + } + + @Override + public boolean isLeashed() { + return false; + } + + @Override + public Entity getLeashHolder() throws IllegalStateException { + throw new IllegalStateException(); + } + + @Override + public boolean setLeashHolder(Entity holder) { + return false; + } + + @Override + public boolean isGliding() { + return false; + } + + @Override + public void setGliding(boolean gliding) { + } + + @Override + public void setAI(boolean ai) { + } + + @Override + public boolean hasAI() { + return false; + } + + @Override + public void setCollidable(boolean collidable) { + } + + @Override + public boolean isCollidable() { + return false; + } + +} From 9d0525571b4c6a0bf6ac2eab9cff495c6419847f Mon Sep 17 00:00:00 2001 From: NorbiPeti Date: Tue, 4 Jul 2017 03:14:10 +0200 Subject: [PATCH 19/20] Lombok still doesn't work compile-time --- pom.xml | 33 ++++++++++++++++++- .../discordplugin/DiscordPlayerSender.java | 16 +++++++-- 2 files changed, 46 insertions(+), 3 deletions(-) diff --git a/pom.xml b/pom.xml index 340f0f8..0a91974 100644 --- a/pom.xml +++ b/pom.xml @@ -11,7 +11,8 @@ http://maven.apache.org - src/main/java + target/generated-sources/delombok + target/generated-test-sources/delombok src @@ -89,6 +90,36 @@ + + org.projectlombok + lombok-maven-plugin + 1.16.16.0 + + + delombok + generate-sources + + delombok + + + false + src/main/java + true + + + + test-delombok + generate-test-sources + + testDelombok + + + false + src/test/java + + + + diff --git a/src/main/java/buttondevteam/discordplugin/DiscordPlayerSender.java b/src/main/java/buttondevteam/discordplugin/DiscordPlayerSender.java index 6dc64af..2f28362 100644 --- a/src/main/java/buttondevteam/discordplugin/DiscordPlayerSender.java +++ b/src/main/java/buttondevteam/discordplugin/DiscordPlayerSender.java @@ -1,6 +1,15 @@ package buttondevteam.discordplugin; -import org.bukkit.entity.*; +import java.util.Set; + +import org.bukkit.Server; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; +import org.bukkit.entity.Projectile; +import org.bukkit.permissions.Permission; +import org.bukkit.permissions.PermissionAttachment; +import org.bukkit.permissions.PermissionAttachmentInfo; +import org.bukkit.plugin.Plugin; import org.bukkit.projectiles.ProjectileSource; import org.bukkit.util.Vector; @@ -9,7 +18,10 @@ import sx.blah.discord.handle.obj.IChannel; import sx.blah.discord.handle.obj.IUser; public class DiscordPlayerSender extends DiscordSenderBase implements Player { - private @Delegate(excludes = ProjectileSource.class) Player player; + + protected @Delegate(excludes = ProjectileSource.class) Player player; + // protected @Delegate(excludes = { ProjectileSource.class, Permissible.class }) Player player; + // protected @Delegate(excludes = { ProjectileSource.class, CommandSender.class }) Player player; public DiscordPlayerSender(IUser user, IChannel channel, Player player) { super(user, channel); From cf5aaa53fb02213cecd1ffa05608c6e38e7f852d Mon Sep 17 00:00:00 2001 From: NorbiPeti Date: Tue, 4 Jul 2017 18:04:01 +0200 Subject: [PATCH 20/20] Undid delegate, mcchat fixes, testing check It checks if it's running in production and another copy is testing at the moment --- pom.xml | 43 +- .../discordplugin/DiscordPlayerSender.java | 1224 ++++++++++++++++- .../discordplugin/DiscordPlugin.java | 5 + .../listeners/CommandListener.java | 9 +- .../listeners/MCChatListener.java | 17 +- 5 files changed, 1246 insertions(+), 52 deletions(-) diff --git a/pom.xml b/pom.xml index 0a91974..9960a2d 100644 --- a/pom.xml +++ b/pom.xml @@ -11,8 +11,9 @@ http://maven.apache.org - target/generated-sources/delombok - target/generated-test-sources/delombok + + src/main/java src @@ -90,36 +91,14 @@ - - org.projectlombok - lombok-maven-plugin - 1.16.16.0 - - - delombok - generate-sources - - delombok - - - false - src/main/java - true - - - - test-delombok - generate-test-sources - - testDelombok - - - false - src/test/java - - - - + diff --git a/src/main/java/buttondevteam/discordplugin/DiscordPlayerSender.java b/src/main/java/buttondevteam/discordplugin/DiscordPlayerSender.java index 2f28362..3edf995 100644 --- a/src/main/java/buttondevteam/discordplugin/DiscordPlayerSender.java +++ b/src/main/java/buttondevteam/discordplugin/DiscordPlayerSender.java @@ -1,25 +1,44 @@ package buttondevteam.discordplugin; +import java.net.InetSocketAddress; +import java.util.Collection; +import java.util.HashSet; +import java.util.List; +import java.util.Map; import java.util.Set; +import java.util.UUID; -import org.bukkit.Server; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; -import org.bukkit.entity.Projectile; -import org.bukkit.permissions.Permission; -import org.bukkit.permissions.PermissionAttachment; -import org.bukkit.permissions.PermissionAttachmentInfo; +import org.bukkit.*; +import org.bukkit.advancement.Advancement; +import org.bukkit.advancement.AdvancementProgress; +import org.bukkit.attribute.Attribute; +import org.bukkit.attribute.AttributeInstance; +import org.bukkit.block.Block; +import org.bukkit.block.PistonMoveReaction; +import org.bukkit.conversations.Conversation; +import org.bukkit.conversations.ConversationAbandonedEvent; +import org.bukkit.entity.*; +import org.bukkit.event.entity.EntityDamageEvent; +import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause; +import org.bukkit.inventory.*; +import org.bukkit.inventory.InventoryView.Property; +import org.bukkit.map.MapView; +import org.bukkit.metadata.MetadataValue; +import org.bukkit.permissions.*; import org.bukkit.plugin.Plugin; -import org.bukkit.projectiles.ProjectileSource; +import org.bukkit.potion.PotionEffect; +import org.bukkit.potion.PotionEffectType; +import org.bukkit.scoreboard.Scoreboard; import org.bukkit.util.Vector; -import lombok.experimental.Delegate; import sx.blah.discord.handle.obj.IChannel; import sx.blah.discord.handle.obj.IUser; +@SuppressWarnings("deprecation") public class DiscordPlayerSender extends DiscordSenderBase implements Player { - protected @Delegate(excludes = ProjectileSource.class) Player player; + protected Player player; + // protected @Delegate(excludes = ProjectileSource.class) Player player; // protected @Delegate(excludes = { ProjectileSource.class, Permissible.class }) Player player; // protected @Delegate(excludes = { ProjectileSource.class, CommandSender.class }) Player player; @@ -37,4 +56,1189 @@ public class DiscordPlayerSender extends DiscordSenderBase implements Player { public T launchProjectile(Class arg0, Vector arg1) { return player.launchProjectile(arg0, arg1); } + + public String getCustomName() { + return player.getCustomName(); + } + + public AttributeInstance getAttribute(Attribute attribute) { + return player.getAttribute(attribute); + } + + public void damage(double amount) { + player.damage(amount); + } + + public boolean isOp() { + return player.isOp(); + } + + public void sendPluginMessage(Plugin source, String channel, byte[] message) { + player.sendPluginMessage(source, channel, message); + } + + public boolean isConversing() { + return player.isConversing(); + } + + public boolean isPermissionSet(String name) { + return player.isPermissionSet(name); + } + + public void setMetadata(String metadataKey, MetadataValue newMetadataValue) { + player.setMetadata(metadataKey, newMetadataValue); + } + + public void damage(double amount, Entity source) { + player.damage(amount, source); + } + + public boolean isOnline() { + return player.isOnline(); + } + + public void setCustomName(String name) { + player.setCustomName(name); + } + + public void setOp(boolean value) { + player.setOp(value); + } + + public void acceptConversationInput(String input) { + player.acceptConversationInput(input); + } + + public boolean isPermissionSet(Permission perm) { + return player.isPermissionSet(perm); + } + + public double getEyeHeight() { + return player.getEyeHeight(); + } + + public String getName() { + return player.getName(); + } + + public double getHealth() { + return player.getHealth(); + } + + public List getMetadata(String metadataKey) { + return player.getMetadata(metadataKey); + } + + public Location getLocation() { + return player.getLocation(); + } + + public boolean beginConversation(Conversation conversation) { + return player.beginConversation(conversation); + } + + public PlayerInventory getInventory() { + return player.getInventory(); + } + + public boolean hasPermission(String name) { + return player.hasPermission(name); + } + + public double getEyeHeight(boolean ignoreSneaking) { + return player.getEyeHeight(ignoreSneaking); + } + + public void setHealth(double health) { + player.setHealth(health); + } + + public Location getLocation(Location loc) { + return player.getLocation(loc); + } + + public Map serialize() { + return player.serialize(); + } + + public Inventory getEnderChest() { + return player.getEnderChest(); + } + + public boolean isBanned() { + return player.isBanned(); + } + + public void abandonConversation(Conversation conversation) { + player.abandonConversation(conversation); + } + + public boolean hasMetadata(String metadataKey) { + return player.hasMetadata(metadataKey); + } + + public String getDisplayName() { + return player.getDisplayName(); + } + + public MainHand getMainHand() { + return player.getMainHand(); + } + + public Location getEyeLocation() { + return player.getEyeLocation(); + } + + public boolean isWhitelisted() { + return player.isWhitelisted(); + } + + public boolean hasPermission(Permission perm) { + return player.hasPermission(perm); + } + + public Set getListeningPluginChannels() { + return player.getListeningPluginChannels(); + } + + public double getMaxHealth() { + return player.getMaxHealth(); + } + + public void abandonConversation(Conversation conversation, ConversationAbandonedEvent details) { + player.abandonConversation(conversation, details); + } + + public void setVelocity(Vector velocity) { + player.setVelocity(velocity); + } + + public boolean setWindowProperty(Property prop, int value) { + return player.setWindowProperty(prop, value); + } + + public void setWhitelisted(boolean value) { + player.setWhitelisted(value); + } + + public void removeMetadata(String metadataKey, Plugin owningPlugin) { + player.removeMetadata(metadataKey, owningPlugin); + } + + public List getLineOfSight(Set transparent, int maxDistance) { + return player.getLineOfSight(transparent, maxDistance); + } + + public void setDisplayName(String name) { + player.setDisplayName(name); + } + + public Vector getVelocity() { + return player.getVelocity(); + } + + public void setMaxHealth(double health) { + player.setMaxHealth(health); + } + + public Player getPlayer() { + return player.getPlayer(); + } + + public PermissionAttachment addAttachment(Plugin plugin, String name, boolean value) { + return player.addAttachment(plugin, name, value); + } + + public double getHeight() { + return player.getHeight(); + } + + public double getWidth() { + return player.getWidth(); + } + + public InventoryView getOpenInventory() { + return player.getOpenInventory(); + } + + public String getPlayerListName() { + return player.getPlayerListName(); + } + + public long getFirstPlayed() { + return player.getFirstPlayed(); + } + + public boolean isOnGround() { + return player.isOnGround(); + } + + public void setPlayerListName(String name) { + player.setPlayerListName(name); + } + + public void resetMaxHealth() { + player.resetMaxHealth(); + } + + public InventoryView openInventory(Inventory inventory) { + return player.openInventory(inventory); + } + + public PermissionAttachment addAttachment(Plugin plugin) { + return player.addAttachment(plugin); + } + + public Block getTargetBlock(HashSet transparent, int maxDistance) { + return player.getTargetBlock(transparent, maxDistance); + } + + public World getWorld() { + return player.getWorld(); + } + + public long getLastPlayed() { + return player.getLastPlayed(); + } + + public boolean teleport(Location location) { + return player.teleport(location); + } + + public InventoryView openWorkbench(Location location, boolean force) { + return player.openWorkbench(location, force); + } + + public PermissionAttachment addAttachment(Plugin plugin, String name, boolean value, int ticks) { + return player.addAttachment(plugin, name, value, ticks); + } + + public boolean teleport(Location location, TeleportCause cause) { + return player.teleport(location, cause); + } + + public Block getTargetBlock(Set transparent, int maxDistance) { + return player.getTargetBlock(transparent, maxDistance); + } + + public boolean hasPlayedBefore() { + return player.hasPlayedBefore(); + } + + public InventoryView openEnchanting(Location location, boolean force) { + return player.openEnchanting(location, force); + } + + public PermissionAttachment addAttachment(Plugin plugin, int ticks) { + return player.addAttachment(plugin, ticks); + } + + public boolean teleport(Entity destination) { + return player.teleport(destination); + } + + public void setCompassTarget(Location loc) { + player.setCompassTarget(loc); + } + + public List getLastTwoTargetBlocks(HashSet transparent, int maxDistance) { + return player.getLastTwoTargetBlocks(transparent, maxDistance); + } + + public Location getCompassTarget() { + return player.getCompassTarget(); + } + + public InetSocketAddress getAddress() { + return player.getAddress(); + } + + public boolean teleport(Entity destination, TeleportCause cause) { + return player.teleport(destination, cause); + } + + public void openInventory(InventoryView inventory) { + player.openInventory(inventory); + } + + public void removeAttachment(PermissionAttachment attachment) { + player.removeAttachment(attachment); + } + + public void sendRawMessage(String message) { + player.sendRawMessage(message); + } + + public InventoryView openMerchant(Villager trader, boolean force) { + return player.openMerchant(trader, force); + } + + public void kickPlayer(String message) { + player.kickPlayer(message); + } + + public List getLastTwoTargetBlocks(Set transparent, int maxDistance) { + return player.getLastTwoTargetBlocks(transparent, maxDistance); + } + + public void recalculatePermissions() { + player.recalculatePermissions(); + } + + public List getNearbyEntities(double x, double y, double z) { + return player.getNearbyEntities(x, y, z); + } + + public void chat(String msg) { + player.chat(msg); + } + + public boolean performCommand(String command) { + return player.performCommand(command); + } + + public Set getEffectivePermissions() { + return player.getEffectivePermissions(); + } + + public InventoryView openMerchant(Merchant merchant, boolean force) { + return player.openMerchant(merchant, force); + } + + public boolean isSneaking() { + return player.isSneaking(); + } + + public int getEntityId() { + return player.getEntityId(); + } + + public void setSneaking(boolean sneak) { + player.setSneaking(sneak); + } + + public int getFireTicks() { + return player.getFireTicks(); + } + + public int getRemainingAir() { + return player.getRemainingAir(); + } + + public boolean isSprinting() { + return player.isSprinting(); + } + + public int getMaxFireTicks() { + return player.getMaxFireTicks(); + } + + public void setRemainingAir(int ticks) { + player.setRemainingAir(ticks); + } + + public void setSprinting(boolean sprinting) { + player.setSprinting(sprinting); + } + + public void setFireTicks(int ticks) { + player.setFireTicks(ticks); + } + + public void closeInventory() { + player.closeInventory(); + } + + public int getMaximumAir() { + return player.getMaximumAir(); + } + + public ItemStack getItemInHand() { + return player.getItemInHand(); + } + + public void saveData() { + player.saveData(); + } + + public void remove() { + player.remove(); + } + + public void setMaximumAir(int ticks) { + player.setMaximumAir(ticks); + } + + public boolean isDead() { + return player.isDead(); + } + + public void loadData() { + player.loadData(); + } + + public boolean isValid() { + return player.isValid(); + } + + public int getMaximumNoDamageTicks() { + return player.getMaximumNoDamageTicks(); + } + + public void setItemInHand(ItemStack item) { + player.setItemInHand(item); + } + + public Server getServer() { + return player.getServer(); + } + + public void setMaximumNoDamageTicks(int ticks) { + player.setMaximumNoDamageTicks(ticks); + } + + public void setSleepingIgnored(boolean isSleeping) { + player.setSleepingIgnored(isSleeping); + } + + public Entity getPassenger() { + return player.getPassenger(); + } + + public ItemStack getItemOnCursor() { + return player.getItemOnCursor(); + } + + public double getLastDamage() { + return player.getLastDamage(); + } + + public boolean setPassenger(Entity passenger) { + return player.setPassenger(passenger); + } + + public void setItemOnCursor(ItemStack item) { + player.setItemOnCursor(item); + } + + public boolean isSleepingIgnored() { + return player.isSleepingIgnored(); + } + + public void setLastDamage(double damage) { + player.setLastDamage(damage); + } + + public void playNote(Location loc, byte instrument, byte note) { + player.playNote(loc, instrument, note); + } + + public boolean hasCooldown(Material material) { + return player.hasCooldown(material); + } + + public int getNoDamageTicks() { + return player.getNoDamageTicks(); + } + + public List getPassengers() { + return player.getPassengers(); + } + + public void setNoDamageTicks(int ticks) { + player.setNoDamageTicks(ticks); + } + + public int getCooldown(Material material) { + return player.getCooldown(material); + } + + public void playNote(Location loc, Instrument instrument, Note note) { + player.playNote(loc, instrument, note); + } + + public Player getKiller() { + return player.getKiller(); + } + + public boolean addPassenger(Entity passenger) { + return player.addPassenger(passenger); + } + + public void setCooldown(Material material, int ticks) { + player.setCooldown(material, ticks); + } + + public boolean addPotionEffect(PotionEffect effect) { + return player.addPotionEffect(effect); + } + + public boolean removePassenger(Entity passenger) { + return player.removePassenger(passenger); + } + + public void playSound(Location location, Sound sound, float volume, float pitch) { + player.playSound(location, sound, volume, pitch); + } + + public boolean isEmpty() { + return player.isEmpty(); + } + + public boolean addPotionEffect(PotionEffect effect, boolean force) { + return player.addPotionEffect(effect, force); + } + + public boolean eject() { + return player.eject(); + } + + public boolean isSleeping() { + return player.isSleeping(); + } + + public float getFallDistance() { + return player.getFallDistance(); + } + + public void playSound(Location location, String sound, float volume, float pitch) { + player.playSound(location, sound, volume, pitch); + } + + public int getSleepTicks() { + return player.getSleepTicks(); + } + + public void setFallDistance(float distance) { + player.setFallDistance(distance); + } + + public boolean addPotionEffects(Collection effects) { + return player.addPotionEffects(effects); + } + + public GameMode getGameMode() { + return player.getGameMode(); + } + + public void setLastDamageCause(EntityDamageEvent event) { + player.setLastDamageCause(event); + } + + public void setGameMode(GameMode mode) { + player.setGameMode(mode); + } + + public EntityDamageEvent getLastDamageCause() { + return player.getLastDamageCause(); + } + + public boolean hasPotionEffect(PotionEffectType type) { + return player.hasPotionEffect(type); + } + + public boolean isBlocking() { + return player.isBlocking(); + } + + public void playSound(Location location, Sound sound, SoundCategory category, float volume, float pitch) { + player.playSound(location, sound, category, volume, pitch); + } + + public boolean isHandRaised() { + return player.isHandRaised(); + } + + public UUID getUniqueId() { + return player.getUniqueId(); + } + + public PotionEffect getPotionEffect(PotionEffectType type) { + return player.getPotionEffect(type); + } + + public int getTicksLived() { + return player.getTicksLived(); + } + + public int getExpToLevel() { + return player.getExpToLevel(); + } + + public Entity getShoulderEntityLeft() { + return player.getShoulderEntityLeft(); + } + + public void setTicksLived(int value) { + player.setTicksLived(value); + } + + public void playSound(Location location, String sound, SoundCategory category, float volume, float pitch) { + player.playSound(location, sound, category, volume, pitch); + } + + public void removePotionEffect(PotionEffectType type) { + player.removePotionEffect(type); + } + + public void playEffect(EntityEffect type) { + player.playEffect(type); + } + + public Collection getActivePotionEffects() { + return player.getActivePotionEffects(); + } + + public void setShoulderEntityLeft(Entity entity) { + player.setShoulderEntityLeft(entity); + } + + public boolean hasLineOfSight(Entity other) { + return player.hasLineOfSight(other); + } + + public EntityType getType() { + return player.getType(); + } + + public boolean isInsideVehicle() { + return player.isInsideVehicle(); + } + + public void stopSound(Sound sound) { + player.stopSound(sound); + } + + public boolean leaveVehicle() { + return player.leaveVehicle(); + } + + public void stopSound(String sound) { + player.stopSound(sound); + } + + public boolean getRemoveWhenFarAway() { + return player.getRemoveWhenFarAway(); + } + + public void stopSound(Sound sound, SoundCategory category) { + player.stopSound(sound, category); + } + + public Entity getVehicle() { + return player.getVehicle(); + } + + public Entity getShoulderEntityRight() { + return player.getShoulderEntityRight(); + } + + public void setRemoveWhenFarAway(boolean remove) { + player.setRemoveWhenFarAway(remove); + } + + public void stopSound(String sound, SoundCategory category) { + player.stopSound(sound, category); + } + + public void setCustomNameVisible(boolean flag) { + player.setCustomNameVisible(flag); + } + + public EntityEquipment getEquipment() { + return player.getEquipment(); + } + + public void playEffect(Location loc, Effect effect, int data) { + player.playEffect(loc, effect, data); + } + + public void setCanPickupItems(boolean pickup) { + player.setCanPickupItems(pickup); + } + + public void setShoulderEntityRight(Entity entity) { + player.setShoulderEntityRight(entity); + } + + public boolean isCustomNameVisible() { + return player.isCustomNameVisible(); + } + + public void playEffect(Location loc, Effect effect, T data) { + player.playEffect(loc, effect, data); + } + + public boolean getCanPickupItems() { + return player.getCanPickupItems(); + } + + public void setGlowing(boolean flag) { + player.setGlowing(flag); + } + + public boolean isLeashed() { + return player.isLeashed(); + } + + public void sendBlockChange(Location loc, Material material, byte data) { + player.sendBlockChange(loc, material, data); + } + + public boolean isGlowing() { + return player.isGlowing(); + } + + public Entity getLeashHolder() throws IllegalStateException { + return player.getLeashHolder(); + } + + public void setInvulnerable(boolean flag) { + player.setInvulnerable(flag); + } + + public boolean setLeashHolder(Entity holder) { + return player.setLeashHolder(holder); + } + + public boolean sendChunkChange(Location loc, int sx, int sy, int sz, byte[] data) { + return player.sendChunkChange(loc, sx, sy, sz, data); + } + + public boolean isInvulnerable() { + return player.isInvulnerable(); + } + + public boolean isSilent() { + return player.isSilent(); + } + + public void setSilent(boolean flag) { + player.setSilent(flag); + } + + public boolean isGliding() { + return player.isGliding(); + } + + public void setGliding(boolean gliding) { + player.setGliding(gliding); + } + + public boolean hasGravity() { + return player.hasGravity(); + } + + public void setGravity(boolean gravity) { + player.setGravity(gravity); + } + + public void sendBlockChange(Location loc, int material, byte data) { + player.sendBlockChange(loc, material, data); + } + + public void setAI(boolean ai) { + player.setAI(ai); + } + + public int getPortalCooldown() { + return player.getPortalCooldown(); + } + + public boolean hasAI() { + return player.hasAI(); + } + + public void setPortalCooldown(int cooldown) { + player.setPortalCooldown(cooldown); + } + + public void setCollidable(boolean collidable) { + player.setCollidable(collidable); + } + + public Set getScoreboardTags() { + return player.getScoreboardTags(); + } + + public void sendSignChange(Location loc, String[] lines) throws IllegalArgumentException { + player.sendSignChange(loc, lines); + } + + public boolean addScoreboardTag(String tag) { + return player.addScoreboardTag(tag); + } + + public boolean isCollidable() { + return player.isCollidable(); + } + + public boolean removeScoreboardTag(String tag) { + return player.removeScoreboardTag(tag); + } + + public PistonMoveReaction getPistonMoveReaction() { + return player.getPistonMoveReaction(); + } + + public void sendMap(MapView map) { + player.sendMap(map); + } + + public void updateInventory() { + player.updateInventory(); + } + + public void awardAchievement(Achievement achievement) { + player.awardAchievement(achievement); + } + + public void removeAchievement(Achievement achievement) { + player.removeAchievement(achievement); + } + + public boolean hasAchievement(Achievement achievement) { + return player.hasAchievement(achievement); + } + + public void incrementStatistic(Statistic statistic) throws IllegalArgumentException { + player.incrementStatistic(statistic); + } + + public void decrementStatistic(Statistic statistic) throws IllegalArgumentException { + player.decrementStatistic(statistic); + } + + public void incrementStatistic(Statistic statistic, int amount) throws IllegalArgumentException { + player.incrementStatistic(statistic, amount); + } + + public void decrementStatistic(Statistic statistic, int amount) throws IllegalArgumentException { + player.decrementStatistic(statistic, amount); + } + + public void setStatistic(Statistic statistic, int newValue) throws IllegalArgumentException { + player.setStatistic(statistic, newValue); + } + + public int getStatistic(Statistic statistic) throws IllegalArgumentException { + return player.getStatistic(statistic); + } + + public void incrementStatistic(Statistic statistic, Material material) throws IllegalArgumentException { + player.incrementStatistic(statistic, material); + } + + public void decrementStatistic(Statistic statistic, Material material) throws IllegalArgumentException { + player.decrementStatistic(statistic, material); + } + + public int getStatistic(Statistic statistic, Material material) throws IllegalArgumentException { + return player.getStatistic(statistic, material); + } + + public void incrementStatistic(Statistic statistic, Material material, int amount) throws IllegalArgumentException { + player.incrementStatistic(statistic, material, amount); + } + + public void decrementStatistic(Statistic statistic, Material material, int amount) throws IllegalArgumentException { + player.decrementStatistic(statistic, material, amount); + } + + public void setStatistic(Statistic statistic, Material material, int newValue) throws IllegalArgumentException { + player.setStatistic(statistic, material, newValue); + } + + public void incrementStatistic(Statistic statistic, EntityType entityType) throws IllegalArgumentException { + player.incrementStatistic(statistic, entityType); + } + + public void decrementStatistic(Statistic statistic, EntityType entityType) throws IllegalArgumentException { + player.decrementStatistic(statistic, entityType); + } + + public int getStatistic(Statistic statistic, EntityType entityType) throws IllegalArgumentException { + return player.getStatistic(statistic, entityType); + } + + public void incrementStatistic(Statistic statistic, EntityType entityType, int amount) + throws IllegalArgumentException { + player.incrementStatistic(statistic, entityType, amount); + } + + public void decrementStatistic(Statistic statistic, EntityType entityType, int amount) { + player.decrementStatistic(statistic, entityType, amount); + } + + public void setStatistic(Statistic statistic, EntityType entityType, int newValue) { + player.setStatistic(statistic, entityType, newValue); + } + + public void setPlayerTime(long time, boolean relative) { + player.setPlayerTime(time, relative); + } + + public long getPlayerTime() { + return player.getPlayerTime(); + } + + public long getPlayerTimeOffset() { + return player.getPlayerTimeOffset(); + } + + public boolean isPlayerTimeRelative() { + return player.isPlayerTimeRelative(); + } + + public void resetPlayerTime() { + player.resetPlayerTime(); + } + + public void setPlayerWeather(WeatherType type) { + player.setPlayerWeather(type); + } + + public WeatherType getPlayerWeather() { + return player.getPlayerWeather(); + } + + public void resetPlayerWeather() { + player.resetPlayerWeather(); + } + + public void giveExp(int amount) { + player.giveExp(amount); + } + + public void giveExpLevels(int amount) { + player.giveExpLevels(amount); + } + + public float getExp() { + return player.getExp(); + } + + public void setExp(float exp) { + player.setExp(exp); + } + + public int getLevel() { + return player.getLevel(); + } + + public void setLevel(int level) { + player.setLevel(level); + } + + public int getTotalExperience() { + return player.getTotalExperience(); + } + + public void setTotalExperience(int exp) { + player.setTotalExperience(exp); + } + + public float getExhaustion() { + return player.getExhaustion(); + } + + public void setExhaustion(float value) { + player.setExhaustion(value); + } + + public float getSaturation() { + return player.getSaturation(); + } + + public void setSaturation(float value) { + player.setSaturation(value); + } + + public int getFoodLevel() { + return player.getFoodLevel(); + } + + public void setFoodLevel(int value) { + player.setFoodLevel(value); + } + + public Location getBedSpawnLocation() { + return player.getBedSpawnLocation(); + } + + public void setBedSpawnLocation(Location location) { + player.setBedSpawnLocation(location); + } + + public void setBedSpawnLocation(Location location, boolean force) { + player.setBedSpawnLocation(location, force); + } + + public boolean getAllowFlight() { + return player.getAllowFlight(); + } + + public void setAllowFlight(boolean flight) { + player.setAllowFlight(flight); + } + + public void hidePlayer(Player player) { + player.hidePlayer(player); + } + + public void showPlayer(Player player) { + player.showPlayer(player); + } + + public boolean canSee(Player player) { + return player.canSee(player); + } + + public boolean isFlying() { + return player.isFlying(); + } + + public void setFlying(boolean value) { + player.setFlying(value); + } + + public void setFlySpeed(float value) throws IllegalArgumentException { + player.setFlySpeed(value); + } + + public void setWalkSpeed(float value) throws IllegalArgumentException { + player.setWalkSpeed(value); + } + + public float getFlySpeed() { + return player.getFlySpeed(); + } + + public float getWalkSpeed() { + return player.getWalkSpeed(); + } + + public void setTexturePack(String url) { + player.setTexturePack(url); + } + + public void setResourcePack(String url) { + player.setResourcePack(url); + } + + public void setResourcePack(String url, byte[] hash) { + player.setResourcePack(url, hash); + } + + public Scoreboard getScoreboard() { + return player.getScoreboard(); + } + + public void setScoreboard(Scoreboard scoreboard) throws IllegalArgumentException, IllegalStateException { + player.setScoreboard(scoreboard); + } + + public boolean isHealthScaled() { + return player.isHealthScaled(); + } + + public void setHealthScaled(boolean scale) { + player.setHealthScaled(scale); + } + + public void setHealthScale(double scale) throws IllegalArgumentException { + player.setHealthScale(scale); + } + + public double getHealthScale() { + return player.getHealthScale(); + } + + public Entity getSpectatorTarget() { + return player.getSpectatorTarget(); + } + + public void setSpectatorTarget(Entity entity) { + player.setSpectatorTarget(entity); + } + + public void sendTitle(String title, String subtitle) { + player.sendTitle(title, subtitle); + } + + public void sendTitle(String title, String subtitle, int fadeIn, int stay, int fadeOut) { + player.sendTitle(title, subtitle, fadeIn, stay, fadeOut); + } + + public void resetTitle() { + player.resetTitle(); + } + + public void spawnParticle(Particle particle, Location location, int count) { + player.spawnParticle(particle, location, count); + } + + public void spawnParticle(Particle particle, double x, double y, double z, int count) { + player.spawnParticle(particle, x, y, z, count); + } + + public void spawnParticle(Particle particle, Location location, int count, T data) { + player.spawnParticle(particle, location, count, data); + } + + public void spawnParticle(Particle particle, double x, double y, double z, int count, T data) { + player.spawnParticle(particle, x, y, z, count, data); + } + + public void spawnParticle(Particle particle, Location location, int count, double offsetX, double offsetY, + double offsetZ) { + player.spawnParticle(particle, location, count, offsetX, offsetY, offsetZ); + } + + public void spawnParticle(Particle particle, double x, double y, double z, int count, double offsetX, + double offsetY, double offsetZ) { + player.spawnParticle(particle, x, y, z, count, offsetX, offsetY, offsetZ); + } + + public void spawnParticle(Particle particle, Location location, int count, double offsetX, double offsetY, + double offsetZ, T data) { + player.spawnParticle(particle, location, count, offsetX, offsetY, offsetZ, data); + } + + public void spawnParticle(Particle particle, double x, double y, double z, int count, double offsetX, + double offsetY, double offsetZ, T data) { + player.spawnParticle(particle, x, y, z, count, offsetX, offsetY, offsetZ, data); + } + + public void spawnParticle(Particle particle, Location location, int count, double offsetX, double offsetY, + double offsetZ, double extra) { + player.spawnParticle(particle, location, count, offsetX, offsetY, offsetZ, extra); + } + + public void spawnParticle(Particle particle, double x, double y, double z, int count, double offsetX, + double offsetY, double offsetZ, double extra) { + player.spawnParticle(particle, x, y, z, count, offsetX, offsetY, offsetZ, extra); + } + + public void spawnParticle(Particle particle, Location location, int count, double offsetX, double offsetY, + double offsetZ, double extra, T data) { + player.spawnParticle(particle, location, count, offsetX, offsetY, offsetZ, extra, data); + } + + public void spawnParticle(Particle particle, double x, double y, double z, int count, double offsetX, + double offsetY, double offsetZ, double extra, T data) { + player.spawnParticle(particle, x, y, z, count, offsetX, offsetY, offsetZ, extra, data); + } + + public AdvancementProgress getAdvancementProgress(Advancement advancement) { + return player.getAdvancementProgress(advancement); + } + + public String getLocale() { + return player.getLocale(); + } + + public org.bukkit.entity.Player.Spigot spigot() { + return player.spigot(); + } } diff --git a/src/main/java/buttondevteam/discordplugin/DiscordPlugin.java b/src/main/java/buttondevteam/discordplugin/DiscordPlugin.java index ab4485c..2517692 100644 --- a/src/main/java/buttondevteam/discordplugin/DiscordPlugin.java +++ b/src/main/java/buttondevteam/discordplugin/DiscordPlugin.java @@ -318,4 +318,9 @@ public class DiscordPlugin extends JavaPlugin implements IListener { return null; return RequestBuffer.request(action).get(); // Let the pros handle this } + + public static boolean checkIfSomeoneIsTestingWhileWeArent() { + return !TBMCCoreAPI.IsTestServer() + && dc.getOurUser().getPresence().getPlayingText().orElse("").equals("testing"); + } } diff --git a/src/main/java/buttondevteam/discordplugin/listeners/CommandListener.java b/src/main/java/buttondevteam/discordplugin/listeners/CommandListener.java index f0006b3..8313ffa 100644 --- a/src/main/java/buttondevteam/discordplugin/listeners/CommandListener.java +++ b/src/main/java/buttondevteam/discordplugin/listeners/CommandListener.java @@ -59,7 +59,8 @@ public class CommandListener { if (event.getMessage().getAuthor().isBot()) return; final IChannel channel = event.getMessage().getChannel(); - if (!channel.getStringID().equals(DiscordPlugin.botchannel.getStringID()) && !channel.isPrivate()) + if (!channel.getStringID().equals(DiscordPlugin.botchannel.getStringID()) + && (!channel.isPrivate() || DiscordPlugin.checkIfSomeoneIsTestingWhileWeArent())) return; if (channel.getStringID().equals(DiscordPlugin.chatchannel.getStringID())) return; // The chat code already handles this - Right now while testing botchannel is the same as chatchannel @@ -82,8 +83,10 @@ public class CommandListener { next = usableServerReadyStrings.remove(serverReadyRandom.nextInt(usableServerReadyStrings.size())); DiscordPlugin.sendMessageToChannel(event.getMessage().getChannel(), serverReadyStrings[next]); } - if (!event.getMessage().getChannel().isPrivate() || DiscordPlayer - .getUser(event.getAuthor().getStringID(), DiscordPlayer.class).minecraftChat().get()) + if (!event.getMessage().getChannel().isPrivate() // + || DiscordPlayer.getUser(event.getAuthor().getStringID(), DiscordPlayer.class).minecraftChat() + .get() + || DiscordPlugin.checkIfSomeoneIsTestingWhileWeArent()) return; if (event.getMessage().getAuthor().isBot()) return; diff --git a/src/main/java/buttondevteam/discordplugin/listeners/MCChatListener.java b/src/main/java/buttondevteam/discordplugin/listeners/MCChatListener.java index e859846..fceef50 100644 --- a/src/main/java/buttondevteam/discordplugin/listeners/MCChatListener.java +++ b/src/main/java/buttondevteam/discordplugin/listeners/MCChatListener.java @@ -17,6 +17,7 @@ import buttondevteam.lib.*; import buttondevteam.lib.chat.Channel; import buttondevteam.lib.chat.TBMCChatAPI; import buttondevteam.lib.player.TBMCPlayer; +import lombok.val; import sx.blah.discord.api.events.IListener; import sx.blah.discord.api.internal.json.objects.EmbedObject; import sx.blah.discord.handle.impl.events.guild.channel.message.MessageReceivedEvent; @@ -62,7 +63,8 @@ public class MCChatListener implements Listener, IListener } }; if (e.getChannel().equals(Channel.GlobalChat)) - doit.accept(lastmsgdata); + doit.accept( + lastmsgdata == null ? lastmsgdata = new LastMsgData(DiscordPlugin.chatchannel) : lastmsgdata); for (LastMsgData data : lastmsgPerUser) { final IUser iUser = data.channel.getUsersHere().stream() @@ -110,7 +112,7 @@ public class MCChatListener implements Listener, IListener private static final String[] UnconnectedCmds = new String[] { "list", "u", "shrug", "tableflip", "unflip", "mwiki", "yeehaw" }; - private static LastMsgData lastmsgdata = new LastMsgData(DiscordPlugin.chatchannel); + private static LastMsgData lastmsgdata; private static short lastlist = 0; private static short lastlistp = 0; /** @@ -128,15 +130,16 @@ public class MCChatListener implements Listener, IListener public static short ListC = 0; public static void resetLastMessage() { - lastmsgdata.message = null; // Don't set the whole object to null, the player and channel information should be preserved - } + (lastmsgdata == null ? lastmsgdata = new LastMsgData(DiscordPlugin.chatchannel) : lastmsgdata).message = null; // Don't set the whole object to null, the player and channel information should + } // be preserved @Override // Discord public void handle(MessageReceivedEvent event) { - final IUser author = event.getMessage().getAuthor(); - final DiscordPlayer user = DiscordPlayer.getUser(author.getStringID(), DiscordPlayer.class); + val author = event.getMessage().getAuthor(); + val user = DiscordPlayer.getUser(author.getStringID(), DiscordPlayer.class); if (!event.getMessage().getChannel().getStringID().equals(DiscordPlugin.chatchannel.getStringID()) - && !(event.getMessage().getChannel().isPrivate() && user.minecraftChat().get())) + && !(event.getMessage().getChannel().isPrivate() && user.minecraftChat().get() + && !DiscordPlugin.checkIfSomeoneIsTestingWhileWeArent())) return; resetLastMessage(); lastlist++;