diff --git a/pom.xml b/pom.xml
index 5c69674..f283fc7 100755
--- a/pom.xml
+++ b/pom.xml
@@ -94,6 +94,13 @@
testDelombok false
src/test/java
-->
+
+ maven-surefire-plugin
+
+ false
+
+
+
diff --git a/src/main/java/buttondevteam/discordplugin/ChannelconBroadcast.java b/src/main/java/buttondevteam/discordplugin/ChannelconBroadcast.java
index e5187e2..994c8ed 100644
--- a/src/main/java/buttondevteam/discordplugin/ChannelconBroadcast.java
+++ b/src/main/java/buttondevteam/discordplugin/ChannelconBroadcast.java
@@ -3,7 +3,7 @@ package buttondevteam.discordplugin;
public enum ChannelconBroadcast {
JOINLEAVE,
AFK,
- RESTART, //TODO
+ RESTART,
DEATH,
BROADCAST;
diff --git a/src/main/java/buttondevteam/discordplugin/DiscordPlugin.java b/src/main/java/buttondevteam/discordplugin/DiscordPlugin.java
index 02b9f12..be7e8a9 100755
--- a/src/main/java/buttondevteam/discordplugin/DiscordPlugin.java
+++ b/src/main/java/buttondevteam/discordplugin/DiscordPlugin.java
@@ -221,8 +221,12 @@ public class DiscordPlugin extends JavaPlugin implements IListener {
TBMCCoreAPI.RegisterEventsForExceptions(new MCListener(), this);
TBMCChatAPI.AddCommands(this, DiscordMCCommandBase.class);
TBMCCoreAPI.RegisterUserClass(DiscordPlayer.class);
- ChromaGamerBase.addConverter(sender -> Optional.ofNullable(sender instanceof DiscordSenderBase
- ? ((DiscordSenderBase) sender).getChromaUser() : null));
+ ChromaGamerBase.addConverter(sender -> {
+ //System.out.println("Discord converter queried: "+sender+" "+sender.getName()); - TODO: Remove
+ //System.out.println(((DiscordSenderBase) sender).getChromaUser().channel().get().ID); //TODO: TMP
+ return Optional.ofNullable(sender instanceof DiscordSenderBase
+ ? ((DiscordSenderBase) sender).getChromaUser() : null);
+ });
new Thread(this::AnnouncementGetterThreadMethod).start();
setupProviders();
} catch (Exception e) {
diff --git a/src/main/java/buttondevteam/discordplugin/DiscordSender.java b/src/main/java/buttondevteam/discordplugin/DiscordSender.java
index 5cd4df6..8ad7445 100755
--- a/src/main/java/buttondevteam/discordplugin/DiscordSender.java
+++ b/src/main/java/buttondevteam/discordplugin/DiscordSender.java
@@ -86,12 +86,12 @@ public class DiscordSender extends DiscordSenderBase implements CommandSender {
}
@Override
- public boolean isOp() { // TODO: Connect with TBMC acc
+ public boolean isOp() {
return false;
}
@Override
- public void setOp(boolean value) { // TODO: Connect with TBMC acc
+ public void setOp(boolean value) {
}
@Override
diff --git a/src/main/java/buttondevteam/discordplugin/commands/ChannelconCommand.java b/src/main/java/buttondevteam/discordplugin/commands/ChannelconCommand.java
index ec2a04b..73eefd1 100644
--- a/src/main/java/buttondevteam/discordplugin/commands/ChannelconCommand.java
+++ b/src/main/java/buttondevteam/discordplugin/commands/ChannelconCommand.java
@@ -4,7 +4,6 @@ import buttondevteam.discordplugin.ChannelconBroadcast;
import buttondevteam.discordplugin.DiscordConnectedPlayer;
import buttondevteam.discordplugin.DiscordPlayer;
import buttondevteam.discordplugin.listeners.MCChatListener;
-import buttondevteam.lib.TBMCChannelConnectFakeEvent;
import buttondevteam.lib.chat.Channel;
import buttondevteam.lib.player.TBMCPlayer;
import lombok.val;
@@ -79,18 +78,17 @@ public class ChannelconCommand extends DiscordCommandBase {
return true;
}
DiscordConnectedPlayer dcp = new DiscordConnectedPlayer(message.getAuthor(), message.getChannel(), chp.getUUID(), Bukkit.getOfflinePlayer(chp.getUUID()).getName());
- val ev = new TBMCChannelConnectFakeEvent(dcp, chan.get());
//Using a fake player with no login/logout, should be fine for this event
- String groupid = ev.getGroupID(ev.getSender()); //We're not trying to send in a specific group, we want to know which group the user belongs to (so not getGroupID())
+ String groupid = chan.get().getGroupID(dcp);
if (groupid == null) {
message.reply("sorry, that didn't work. You cannot use that Minecraft channel.");
return true;
}
- if (MCChatListener.getCustomChats().stream().anyMatch(cc -> cc.groupID.equals(groupid) && cc.mcchannel.ID.equals(chan.get().ID))) {
+ /*if (MCChatListener.getCustomChats().stream().anyMatch(cc -> cc.groupID.equals(groupid) && cc.mcchannel.ID.equals(chan.get().ID))) {
message.reply("sorry, this MC chat is already connected to a different channel, multiple channels are not supported atm.");
return true;
- }
- MCChatListener.addCustomChat(message.getChannel(), groupid, ev.getChannel(), message.getAuthor(), dcp, 0);
+ }*/ //TODO: "Channel admins" that can connect channels?
+ MCChatListener.addCustomChat(message.getChannel(), groupid, chan.get(), message.getAuthor(), dcp, 0);
message.reply("alright, connection made to group `" + groupid + "`!");
return true;
}
diff --git a/src/main/java/buttondevteam/discordplugin/listeners/MCChatListener.java b/src/main/java/buttondevteam/discordplugin/listeners/MCChatListener.java
index 6db4a81..4d73c83 100755
--- a/src/main/java/buttondevteam/discordplugin/listeners/MCChatListener.java
+++ b/src/main/java/buttondevteam/discordplugin/listeners/MCChatListener.java
@@ -2,7 +2,10 @@ package buttondevteam.discordplugin.listeners;
import buttondevteam.discordplugin.*;
import buttondevteam.discordplugin.playerfaker.VanillaCommandListener;
-import buttondevteam.lib.*;
+import buttondevteam.lib.TBMCChatEvent;
+import buttondevteam.lib.TBMCChatPreprocessEvent;
+import buttondevteam.lib.TBMCCoreAPI;
+import buttondevteam.lib.TBMCSystemChatEvent;
import buttondevteam.lib.chat.Channel;
import buttondevteam.lib.chat.ChatMessage;
import buttondevteam.lib.chat.ChatRoom;
@@ -125,7 +128,7 @@ public class MCChatListener implements Listener, IListener
Predicate isdifferentchannel = ch -> !(e.getSender() instanceof DiscordSenderBase)
|| ((DiscordSenderBase) e.getSender()).getChannel().getLongID() != ch.getLongID();
- if ((e.getChannel() == Channel.GlobalChat || e.getChannel().ID.equals("rp"))
+ if (e.getChannel().isGlobal()
&& (e.isFromcmd() || isdifferentchannel.test(DiscordPlugin.chatchannel)))
doit.accept(lastmsgdata == null
? lastmsgdata = new LastMsgData(DiscordPlugin.chatchannel, null)
@@ -304,9 +307,10 @@ public class MCChatListener implements Listener, IListener
return lastmsgCustom.stream().anyMatch(lmd -> lmd.channel.getLongID() == channel.getLongID());
}
- public static CustomLMD getCustomChat(IChannel channel) {
- return lastmsgCustom.stream().filter(lmd -> lmd.channel.getLongID() == channel.getLongID()).findAny().orElse(null);
- }
+ @Nullable
+ public static CustomLMD getCustomChat(IChannel channel) {
+ return lastmsgCustom.stream().filter(lmd -> lmd.channel.getLongID() == channel.getLongID()).findAny().orElse(null);
+ }
public static boolean removeCustomChat(IChannel channel) {
lastmsgfromd.remove(channel.getLongID());
@@ -387,9 +391,8 @@ public class MCChatListener implements Listener, IListener
return false; //If null then allow
if (sender == null)
return true;
- val e = new TBMCChannelConnectFakeEvent(sender, clmd.mcchannel);
- return clmd.groupID.equals(e.getGroupID(sender));
- }).forEach(cc -> action.accept(cc.channel)); //TODO: Use getScore and getGroupID in fake event constructor - This should also send error messages on channel connect
+ return clmd.groupID.equals(clmd.mcchannel.getGroupID(sender));
+ }).forEach(cc -> action.accept(cc.channel)); //TODO: Send error messages on channel connect
}
/**
@@ -403,7 +406,7 @@ public class MCChatListener implements Listener, IListener
public static void forAllowedCustomAndAllMCChat(Consumer action, @Nullable CommandSender sender, @Nullable ChannelconBroadcast toggle, boolean hookmsg) {
if (!DiscordPlugin.hooked || !hookmsg)
forAllMCChat(action);
- forAllowedCustomMCChat(action, sender, toggle); //TODO: Use getScore and getGroupID in fake event constructor - This should also send error messages on channel connect
+ forAllowedCustomMCChat(action, sender, toggle);
}
public static Consumer send(String message) {
@@ -411,7 +414,7 @@ public class MCChatListener implements Listener, IListener
}
public static void forAllowedMCChat(Consumer action, TBMCSystemChatEvent event) {
- if (Channel.GlobalChat.ID.equals(event.getChannel().ID))
+ if (event.getChannel().isGlobal())
action.accept(DiscordPlugin.chatchannel);
for (LastMsgData data : lastmsgPerUser)
if (event.shouldSendTo(getSender(data.channel, data.user)))
@@ -562,23 +565,29 @@ public class MCChatListener implements Listener, IListener
.filter(c -> c.ID.equalsIgnoreCase(topcmd)
|| (c.IDs != null && c.IDs.length > 0
&& Arrays.stream(c.IDs).anyMatch(id -> id.equalsIgnoreCase(topcmd)))).findAny();
- if (!ch.isPresent())
- Bukkit.getScheduler().runTask(DiscordPlugin.plugin,
- () -> {
- val channel = dsender.getChromaUser().channel(); //TODO: Save?
+ if (!ch.isPresent()) //TODO: What if talking in the public chat while we have it on a different one
+ Bukkit.getScheduler().runTask(DiscordPlugin.plugin, //Commands need to be run sync
+ () -> { //TODO: Better handling...
+ val channel = user.channel();
val chtmp = channel.get();
- if (clmd != null)
- channel.set(clmd.mcchannel); //Hack to send command in the channel
+ //System.out.println("1: "+chtmp.ID);
+ //System.out.println("clmd: "+clmd);
+ if (clmd != null) {
+ channel.set(clmd.mcchannel); //Hack to send command in the channel
+ //System.out.println("clmd chan: "+clmd.mcchannel.ID);
+ } //TODO: Permcheck isn't implemented for commands
+ //System.out.println("2: "+channel.get().ID);
VanillaCommandListener.runBukkitOrVanillaCommand(dsender, cmd);
Bukkit.getLogger().info(dsender.getName() + " issued command from Discord: /" + cmdlowercased);
if (clmd != null)
channel.set(chtmp);
+ //System.out.println("3: "+channel.get().ID); - TODO: Remove
});
else {
Channel chc = ch.get();
- if (!chc.ID.equals(Channel.GlobalChat.ID) && !chc.ID.equals("rp") && !event.getMessage().getChannel().isPrivate())
+ if (!chc.isGlobal() && !event.getMessage().getChannel().isPrivate())
dsender.sendMessage(
- "You can only talk in global in the public chat. DM `mcchat` to enable private chat to talk in the other channels.");
+ "You can only talk in a public chat here. DM `mcchat` to enable private chat to talk in the other channels.");
else {
if (spi == -1) // Switch channels
{
@@ -609,10 +618,12 @@ public class MCChatListener implements Listener, IListener
lastlistp = (short) Bukkit.getOnlinePlayers().size();
} else {// Not a command
if (dmessage.length() == 0 && event.getMessage().getAttachments().size() == 0
- && !event.getChannel().isPrivate() && event.getMessage().isSystemMessage())
- TBMCChatAPI.SendSystemMessage(Channel.GlobalChat, 0, "everyone",
- (dsender instanceof Player ? ((Player) dsender).getDisplayName()
- : dsender.getName()) + " pinned a message on Discord.");
+ && !event.getChannel().isPrivate() && event.getMessage().isSystemMessage()) {
+ val rtr = clmd != null ? clmd.mcchannel.filteranderrormsg.apply(clmd.dcp) : dsender.getChromaUser().channel().get().filteranderrormsg.apply(dsender);
+ TBMCChatAPI.SendSystemMessage(clmd != null ? clmd.mcchannel : dsender.getChromaUser().channel().get(), rtr.score, rtr.groupID,
+ (dsender instanceof Player ? ((Player) dsender).getDisplayName()
+ : dsender.getName()) + " pinned a message on Discord.");
+ }
else {
val cmb = ChatMessage.builder(dsender, user, getChatMessage.apply(dmessage)).fromCommand(false);
if (clmd != null)
diff --git a/src/main/java/buttondevteam/discordplugin/listeners/MCListener.java b/src/main/java/buttondevteam/discordplugin/listeners/MCListener.java
index e7d57ec..6f9b3c9 100755
--- a/src/main/java/buttondevteam/discordplugin/listeners/MCListener.java
+++ b/src/main/java/buttondevteam/discordplugin/listeners/MCListener.java
@@ -137,7 +137,7 @@ public class MCListener implements Listener {
return;
final IUser user = DiscordPlugin.dc.getUserByID(
Long.parseLong(TBMCPlayerBase.getPlayer(source.getPlayer().getUniqueId(), TBMCPlayer.class)
- .getAs(DiscordPlayer.class).getDiscordID())); // TODO: Use long
+ .getAs(DiscordPlayer.class).getDiscordID()));
if (e.getValue())
user.addRole(role);
else
@@ -163,6 +163,7 @@ public class MCListener implements Listener {
public void onYEEHAW(TBMCYEEHAWEvent event) { //TODO: Inherit from the chat event base to have channel support
String name = event.getSender() instanceof Player ? ((Player) event.getSender()).getDisplayName()
: event.getSender().getName();
+ //Channel channel = ChromaGamerBase.getFromSender(event.getSender()).channel().get(); - TODO
MCChatListener.forAllMCChat(MCChatListener.send(name + " <:YEEHAW:" + DiscordPlugin.mainServer.getEmojiByName("YEEHAW").getStringID() + ">s"));
}