parent
b3131a063f
commit
f484aba361
2 changed files with 27 additions and 5 deletions
|
@ -1,20 +1,26 @@
|
||||||
package buttondevteam.discordplugin.listeners;
|
package buttondevteam.discordplugin.listeners;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
|
|
||||||
|
import buttondevteam.discordplugin.DiscordPlayer;
|
||||||
import buttondevteam.discordplugin.DiscordPlugin;
|
import buttondevteam.discordplugin.DiscordPlugin;
|
||||||
import buttondevteam.discordplugin.DiscordSender;
|
import buttondevteam.discordplugin.DiscordSender;
|
||||||
import buttondevteam.lib.TBMCChatEvent;
|
import buttondevteam.lib.TBMCChatEvent;
|
||||||
import buttondevteam.lib.TBMCCoreAPI;
|
import buttondevteam.lib.TBMCCoreAPI;
|
||||||
|
import buttondevteam.lib.TBMCPlayer;
|
||||||
import buttondevteam.lib.chat.Channel;
|
import buttondevteam.lib.chat.Channel;
|
||||||
import buttondevteam.lib.chat.TBMCChatAPI;
|
import buttondevteam.lib.chat.TBMCChatAPI;
|
||||||
import sx.blah.discord.api.events.IListener;
|
import sx.blah.discord.api.events.IListener;
|
||||||
import sx.blah.discord.handle.impl.events.MessageReceivedEvent;
|
import sx.blah.discord.handle.impl.events.MessageReceivedEvent;
|
||||||
|
import sx.blah.discord.handle.obj.IUser;
|
||||||
|
|
||||||
public class MCChatListener implements Listener, IListener<MessageReceivedEvent> {
|
public class MCChatListener implements Listener, IListener<MessageReceivedEvent> {
|
||||||
@EventHandler // Minecraft
|
@EventHandler // Minecraft
|
||||||
|
@ -26,23 +32,37 @@ public class MCChatListener implements Listener, IListener<MessageReceivedEvent>
|
||||||
"<" + e.getSender().getName() + "> " + e.getMessage());
|
"<" + e.getSender().getName() + "> " + e.getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
private final String[] UnconnectedCmds = new String[] { "list", "u", "shrug", "tableflip", "unflip" };
|
private static final String[] UnconnectedCmds = new String[] { "list", "u", "shrug", "tableflip", "unflip" };
|
||||||
|
|
||||||
|
public static final HashMap<String, DiscordSender> UnconnectedSenders = new HashMap<>();
|
||||||
|
|
||||||
@Override // Discord
|
@Override // Discord
|
||||||
public void handle(MessageReceivedEvent event) {
|
public void handle(MessageReceivedEvent event) {
|
||||||
if (event.getMessage().getAuthor().isBot())
|
final IUser author = event.getMessage().getAuthor();
|
||||||
|
if (author.isBot())
|
||||||
return;
|
return;
|
||||||
if (!event.getMessage().getChannel().getID().equals(DiscordPlugin.chatchannel.getID())
|
if (!event.getMessage().getChannel().getID().equals(DiscordPlugin.chatchannel.getID())
|
||||||
/* && !(event.getMessage().getChannel().isPrivate() && privatechat) */)
|
/* && !(event.getMessage().getChannel().isPrivate() && privatechat) */)
|
||||||
return;
|
return;
|
||||||
final DiscordSender dsender = new DiscordSender(event.getMessage().getAuthor());
|
if (!UnconnectedSenders.containsKey(author.getID()))
|
||||||
|
UnconnectedSenders.put(author.getID(), new DiscordSender(author));
|
||||||
|
final DiscordSender dsender = UnconnectedSenders.get(author.getID());
|
||||||
dsender.setChannel(event.getMessage().getChannel());
|
dsender.setChannel(event.getMessage().getChannel());
|
||||||
if (event.getMessage().getContent().startsWith("/")) {
|
if (event.getMessage().getContent().startsWith("/")) {
|
||||||
final String cmd = event.getMessage().getContent().substring(1);
|
final String cmd = event.getMessage().getContent().substring(1);
|
||||||
|
Stream<? extends Player> str = Bukkit.getOnlinePlayers().stream().filter(p -> { // TODO: Support offline players
|
||||||
|
try (DiscordPlayer dp = TBMCPlayer.getPlayerAs(p, DiscordPlayer.class)) {
|
||||||
|
return author.getID().equals(dp.getDiscordID());
|
||||||
|
} catch (Exception e) {
|
||||||
|
TBMCCoreAPI.SendException("An error occured while getting Discord player for chat", e);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
});
|
||||||
try {
|
try {
|
||||||
if (false) // Connected?
|
if (str.count() > 0) // Connected?
|
||||||
{ // TODO
|
{
|
||||||
// Execute as ingame player
|
// Execute as ingame player
|
||||||
|
Bukkit.dispatchCommand(str.findAny().get(), cmd);
|
||||||
} else {
|
} else {
|
||||||
if (!Arrays.stream(UnconnectedCmds).anyMatch(s -> cmd.startsWith(s))) {
|
if (!Arrays.stream(UnconnectedCmds).anyMatch(s -> cmd.startsWith(s))) {
|
||||||
// Command not whitelisted
|
// Command not whitelisted
|
||||||
|
|
|
@ -5,6 +5,7 @@ import org.bukkit.entity.Player;
|
||||||
|
|
||||||
import buttondevteam.discordplugin.DiscordPlayer;
|
import buttondevteam.discordplugin.DiscordPlayer;
|
||||||
import buttondevteam.discordplugin.commands.ConnectCommand;
|
import buttondevteam.discordplugin.commands.ConnectCommand;
|
||||||
|
import buttondevteam.discordplugin.listeners.MCChatListener;
|
||||||
import buttondevteam.lib.TBMCPlayer;
|
import buttondevteam.lib.TBMCPlayer;
|
||||||
|
|
||||||
public class AcceptMCCommand extends DiscordMCCommandBase {
|
public class AcceptMCCommand extends DiscordMCCommandBase {
|
||||||
|
@ -43,6 +44,7 @@ public class AcceptMCCommand extends DiscordMCCommandBase {
|
||||||
}
|
}
|
||||||
TBMCPlayer.getPlayerAs((Player) sender, DiscordPlayer.class).setDiscordID(did);
|
TBMCPlayer.getPlayerAs((Player) sender, DiscordPlayer.class).setDiscordID(did);
|
||||||
ConnectCommand.WaitingToConnect.remove(sender.getName());
|
ConnectCommand.WaitingToConnect.remove(sender.getName());
|
||||||
|
MCChatListener.UnconnectedSenders.remove(did);
|
||||||
sender.sendMessage("§bAccounts connected.");
|
sender.sendMessage("§bAccounts connected.");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue