diff --git a/api/src/main/java/com/alttd/chat/ChatImplementation.java b/api/src/main/java/com/alttd/chat/ChatImplementation.java index 9e5d218..d11d7ec 100755 --- a/api/src/main/java/com/alttd/chat/ChatImplementation.java +++ b/api/src/main/java/com/alttd/chat/ChatImplementation.java @@ -34,7 +34,6 @@ public class ChatImplementation implements ChatAPI{ ChatUserManager.initialize(); // loads all the users from the db and adds them. RegexManager.initialize(); // load the filters and regexes from config - PartyManager.initialize(); // load the parties from the db and add the previously loaded users to them } public static ChatAPI get() { diff --git a/api/src/main/java/com/alttd/chat/config/Config.java b/api/src/main/java/com/alttd/chat/config/Config.java index c67349d..0c99ff2 100755 --- a/api/src/main/java/com/alttd/chat/config/Config.java +++ b/api/src/main/java/com/alttd/chat/config/Config.java @@ -209,13 +209,6 @@ public final class Config { GCCOOLDOWN = getInt("commands.globalchat.cooldown", GCCOOLDOWN); } - public static String PARTY_FORMAT = "( > → Party) "; - public static String PARTY_SPY = "PC: : "; - private static void party() { - PARTY_FORMAT = getString("party.format", PARTY_FORMAT); - PARTY_SPY = getString("party.spy", PARTY_SPY); - } - public static String CHATFORMAT = " > >: "; public static String URLFORMAT = ">"; private static void Chat() { @@ -252,6 +245,81 @@ public final class Config { } + public static String PARTY_FORMAT = "( > → Party) "; + public static String PARTY_SPY = "PC: : "; + public static String NO_PERMISSION = "You don't have permission to use this command."; + public static String NO_CONSOLE = "This command can not be used by console"; + public static String CREATED_PARTY = "You created a chat party called: " + + "'' with the password: ''"; + public static String NOT_IN_A_PARTY = "You're not in a chat party."; + public static String NOT_YOUR_PARTY = "You don't own this chat party."; + public static String NOT_A_PARTY = "This chat party does not exist."; + public static String PARTY_EXISTS = "A chat party called already exists."; + public static String INVALID_PLAYER = "Invalid player."; + public static String NOT_ONLINE = " must be online to receive an invite."; + public static String INVALID_PASSWORD = "Invalid password."; + public static String JOINED_PARTY = "You joined !"; + public static String NOTIFY_FINDING_NEW_OWNER = "Since you own this chat party a new party owner will be chosen."; + public static String LEFT_PARTY = "You have left the chat party!"; + public static String OWNER_LEFT_PARTY = "[ChatParty]: left the chat party, the new party owner is "; + public static String NEW_PARTY_OWNER = "[ChatParty]: transferred the party to !"; + public static String CANT_REMOVE_PARTY_OWNER = "You can't remove yourself, please leave instead."; + public static String REMOVED_FROM_PARTY = "You were removed from the '' chat party."; + public static String REMOVED_USER_FROM_PARTY = "You removed from the chat party!"; + public static String NOT_A_PARTY_MEMBER = " is not a member of your party!"; + public static String PARTY_INFO = """ + Chat party info: + Name: + Password: + Owner: + Members: """; + private static void party() { + PARTY_FORMAT = getString("party.format", PARTY_FORMAT); + PARTY_SPY = getString("party.spy", PARTY_SPY); + NO_PERMISSION = getString("party.messages.no-permission", NO_PERMISSION); + NO_CONSOLE = getString("party.messages.no-console", NO_CONSOLE); + CREATED_PARTY = getString("party.messages.created-party", CREATED_PARTY); + NOT_IN_A_PARTY = getString("party.messages.not-in-a-party", NOT_IN_A_PARTY); + NOT_YOUR_PARTY = getString("party.messages.not-your-party", NOT_YOUR_PARTY); + NOT_A_PARTY = getString("party.messages.not-a-party", NOT_A_PARTY); + INVALID_PLAYER = getString("party.messages.invalid-player", INVALID_PLAYER); + NOT_ONLINE = getString("party.messages.not-online", NOT_ONLINE); + INVALID_PASSWORD = getString("party.messages.invalid-password", INVALID_PASSWORD); + NOTIFY_FINDING_NEW_OWNER = getString("party.messages.notify-finding-new-owner", NOTIFY_FINDING_NEW_OWNER); + LEFT_PARTY = getString("party.messages.left-party", LEFT_PARTY); + OWNER_LEFT_PARTY = getString("party.messages.owner-left-party", OWNER_LEFT_PARTY); + NEW_PARTY_OWNER = getString("party.messages.new-owner", NEW_PARTY_OWNER); + CANT_REMOVE_PARTY_OWNER = getString("party.messages.cant-remove-owner", CANT_REMOVE_PARTY_OWNER); + REMOVED_FROM_PARTY = getString("party.messages.removed-from-party", REMOVED_FROM_PARTY); + NOT_A_PARTY_MEMBER = getString("party.messages.not-a-party-member", NOT_A_PARTY_MEMBER); + PARTY_INFO = getString("party.messages.party-info", PARTY_INFO); + } + + public static String PARTY_HELP_WRAPPER = "ChatParty help:\n"; + public static String PARTY_HELP_HELP = "Show this menu: /party help"; + public static String PARTY_HELP_CREATE = "Create a party: /party create "; + public static String PARTY_HELP_INFO = "Show info about your current party: /party info"; + public static String PARTY_HELP_INVITE = "Invite a user to your party: /party invite "; + public static String PARTY_HELP_JOIN = "Join a party: /party join "; + public static String PARTY_HELP_LEAVE = "Leave your current party: /party leave"; + public static String PARTY_HELP_NAME = "Change the name of your party: /party name "; + public static String PARTY_HELP_OWNER = "Change the owner of your party: /party owner "; + public static String PARTY_HELP_PASSWORD = "Change the password of your party: /party password "; + public static String PARTY_HELP_REMOVE = "Remove a member from your party: /party remove "; + private static void partyHelp() { + PARTY_HELP_WRAPPER = getString("party.help.wrapper", PARTY_HELP_WRAPPER); + PARTY_HELP_HELP = getString("party.help.help", PARTY_HELP_HELP); + PARTY_HELP_CREATE = getString("party.help.create", PARTY_HELP_CREATE); + PARTY_HELP_INFO = getString("party.help.info", PARTY_HELP_INFO); + PARTY_HELP_INVITE = getString("party.help.invite", PARTY_HELP_INVITE); + PARTY_HELP_JOIN = getString("party.help.join", PARTY_HELP_JOIN); + PARTY_HELP_LEAVE = getString("party.help.leave", PARTY_HELP_LEAVE); + PARTY_HELP_NAME = getString("party.help.name", PARTY_HELP_NAME); + PARTY_HELP_OWNER = getString("party.help.owner", PARTY_HELP_OWNER); + PARTY_HELP_PASSWORD = getString("party.help.password", PARTY_HELP_PASSWORD); + PARTY_HELP_REMOVE = getString("party.help.remove", PARTY_HELP_REMOVE); + } + private static void chatChannels() { ConfigurationNode node = getNode("chat-channels"); if (node.empty()) { diff --git a/api/src/main/java/com/alttd/chat/managers/PartyManager.java b/api/src/main/java/com/alttd/chat/managers/PartyManager.java index e370434..a1caa8d 100644 --- a/api/src/main/java/com/alttd/chat/managers/PartyManager.java +++ b/api/src/main/java/com/alttd/chat/managers/PartyManager.java @@ -54,6 +54,6 @@ public class PartyManager { } public static void loadParties() { - //Queries.loadParties(); + Queries.loadParties(); } } diff --git a/api/src/main/java/com/alttd/chat/objects/Party.java b/api/src/main/java/com/alttd/chat/objects/Party.java index f77a44d..01b4ac3 100755 --- a/api/src/main/java/com/alttd/chat/objects/Party.java +++ b/api/src/main/java/com/alttd/chat/objects/Party.java @@ -14,7 +14,7 @@ public class Party { private UUID ownerUuid; private String partyName; private String partyPassword; - private static ArrayList partyUsers; //TODO might need to be a map? + private static ArrayList partyUsers; public Party(int partyId, UUID ownerUuid, String partyName, String partyPassword) { this.partyId = partyId; @@ -29,9 +29,6 @@ public class Party { } public void addUser(ChatUser chatUser, String playerName) { -// this.partyUsers.put(partyUser.getUuid(), PlainComponentSerializer.plain().serialize(partyUser.getDisplayName())); -// partyUser.setPartyId(getPartyId()); -// Queries.addPartyUser(partyUser); partyUsers.add(new PartyUser(chatUser.getUuid(), chatUser.getDisplayName(), playerName)); chatUser.setPartyId(getPartyId()); Queries.addPartyUser(chatUser); @@ -41,9 +38,14 @@ public class Party { removeUser(ChatUserManager.getChatUser(uuid)); } - public void removeUser(ChatUser partyUser) { - partyUsers.remove(partyUser.getUuid()); - Queries.removePartyUser(partyUser.getUuid()); + public void removeUser(ChatUser chatUser) { + UUID uuid = chatUser.getUuid(); + Optional first = partyUsers.stream() + .filter(partyUser -> partyUser.getUuid().equals(uuid)) + .findFirst(); + if (first.isEmpty()) return; + partyUsers.remove(first.get()); + Queries.removePartyUser(uuid); } public int getPartyId() { @@ -54,7 +56,11 @@ public class Party { return ownerUuid; } - public UUID newOwner() { + public void setNewOwner(UUID uuid) { + setOwnerUuid(uuid); + } + + public UUID setNewOwner() { UUID uuid = partyUsers.iterator().next().getUuid(); setOwnerUuid(uuid); return uuid; @@ -62,7 +68,7 @@ public class Party { public void setOwnerUuid(UUID ownerUuid) { this.ownerUuid = ownerUuid; - Queries.setPartyOwner(ownerUuid, partyId); //TODO: Async pls + Queries.setPartyOwner(ownerUuid, partyId); } public String getPartyName() { @@ -71,7 +77,7 @@ public class Party { public void setPartyName(String partyName) { this.partyName = partyName; - Queries.setPartyName(partyName, partyId); //TODO: Async pls + Queries.setPartyName(partyName, partyId); } public String getPartyPassword() { @@ -80,7 +86,7 @@ public class Party { public void setPartyPassword(String partyPassword) { this.partyPassword = partyPassword; - Queries.setPartyPassword(partyPassword, partyId); //TODO: Async pls + Queries.setPartyPassword(partyPassword, partyId); } public boolean hasPartyPassword() { @@ -112,4 +118,13 @@ public class Party { } return null; } + + public PartyUser getPartyUser(String name) { + for(PartyUser user : partyUsers) { + if(name.equalsIgnoreCase(user.getPlayerName())) { + return user; + } + } + return null; + } } diff --git a/galaxy/src/main/java/com/alttd/chat/ChatPlugin.java b/galaxy/src/main/java/com/alttd/chat/ChatPlugin.java index ae47922..7c4aaaf 100755 --- a/galaxy/src/main/java/com/alttd/chat/ChatPlugin.java +++ b/galaxy/src/main/java/com/alttd/chat/ChatPlugin.java @@ -50,8 +50,8 @@ public class ChatPlugin extends JavaPlugin { registerCommand("unignore", new Unignore()); registerCommand("muteserver", new MuteServer()); registerCommand("spy", new Spy()); - registerCommand("chatparty", new ChatParty()); - registerCommand("pc", new PartyChat()); +// registerCommand("chatparty", new ChatParty()); + registerCommand("p", new PartyChat()); for (Channel channel : Channel.getChannels()) { if (!(channel instanceof CustomChannel customChannel)) continue; this.getServer().getCommandMap().register(channel.getChannelName().toLowerCase(), new ChatChannel(customChannel)); diff --git a/galaxy/src/main/java/com/alttd/chat/commands/ChatParty.java b/galaxy/src/main/java/com/alttd/chat/commands/ChatParty.java index be16d52..466e080 100644 --- a/galaxy/src/main/java/com/alttd/chat/commands/ChatParty.java +++ b/galaxy/src/main/java/com/alttd/chat/commands/ChatParty.java @@ -5,16 +5,13 @@ import com.alttd.chat.config.Config; import com.alttd.chat.database.Queries; import com.alttd.chat.managers.ChatUserManager; import com.alttd.chat.managers.PartyManager; -import com.alttd.chat.objects.ChatUser; import com.alttd.chat.objects.Party; import com.alttd.chat.objects.PartyUser; import com.alttd.chat.util.Utility; import com.google.common.io.ByteArrayDataOutput; import com.google.common.io.ByteStreams; import net.kyori.adventure.text.Component; -import net.kyori.adventure.text.minimessage.MiniMessage; import net.kyori.adventure.text.minimessage.Template; -import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer; import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; import org.bukkit.command.Command; @@ -27,7 +24,6 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.*; -import java.util.stream.Collectors; public class ChatParty implements CommandExecutor, TabCompleter { @@ -117,11 +113,11 @@ public class ChatParty implements CommandExecutor, TabCompleter { party.removeUser(player.getUniqueId()); if (party.getOwnerUuid().equals(player.getUniqueId())) { if (party.getPartyUsers().size() > 0) { - UUID uuid = party.newOwner(); + UUID uuid = party.setNewOwner(); sender.sendMessage(Utility.parseMiniMessage("Since you own this chat party a new party owner will be chosen.")); - ChatPlugin.getInstance().getChatHandler().partyMessage(party, player, "" + - player.getName() + - " left the chat party, the new party owner is " + party.getPartyUser(uuid).getPlayerName()); +// ChatPlugin.getInstance().getChatHandler().partyMessage(party, player, "" + +// player.getName() + +// " left the chat party, the new party owner is " + party.getPartyUser(uuid).getPlayerName()); } else { party.delete(); } diff --git a/galaxy/src/main/java/com/alttd/chat/commands/PartyChat.java b/galaxy/src/main/java/com/alttd/chat/commands/PartyChat.java index ef41eef..8b74a0b 100644 --- a/galaxy/src/main/java/com/alttd/chat/commands/PartyChat.java +++ b/galaxy/src/main/java/com/alttd/chat/commands/PartyChat.java @@ -20,11 +20,6 @@ public class PartyChat implements CommandExecutor { if(!(sender instanceof Player player)) { // must be a player return true; } - Party party = PartyManager.getParty(player.getUniqueId()); - if (party == null) { - sender.sendMessage(Utility.parseMiniMessage("You are not in a party. For more info do /party.")); - return true; - } if(args.length == 0) { // TODO: 08/08/2021 lock into party chat @@ -36,7 +31,7 @@ public class PartyChat implements CommandExecutor { new BukkitRunnable() { @Override public void run() { - ChatPlugin.getInstance().getChatHandler().partyMessage(party, player, message); + ChatPlugin.getInstance().getChatHandler().partyMessage(player, message); //TODO send over proxy } }.runTaskAsynchronously(ChatPlugin.getInstance()); diff --git a/galaxy/src/main/java/com/alttd/chat/handler/ChatHandler.java b/galaxy/src/main/java/com/alttd/chat/handler/ChatHandler.java index 652280a..c45067e 100755 --- a/galaxy/src/main/java/com/alttd/chat/handler/ChatHandler.java +++ b/galaxy/src/main/java/com/alttd/chat/handler/ChatHandler.java @@ -164,43 +164,53 @@ public class ChatHandler { } } - public void partyMessage(Party party, Player player, String message) { - if (isMuted(player, message, "[" + party.getPartyName() + " Muted] ")) return; + public void partyMessage(Player player, String message) { + ByteArrayDataOutput out = ByteStreams.newDataOutput(); + out.writeUTF("party"); + out.writeUTF(player.getUniqueId().toString()); + out.writeUTF(message); + out.writeUTF(GsonComponentSerializer.gson().serialize( + itemComponent(player.getInventory().getItemInMainHand()) + )); + player.sendPluginMessage(plugin, Config.MESSAGECHANNEL, out.toByteArray()); - ChatUser user = ChatUserManager.getChatUser(player.getUniqueId()); - Component senderName = user.getDisplayName(); - String updatedMessage = RegexManager.replaceText(player.getName(), player.getUniqueId(), message); - if(updatedMessage == null) { - GalaxyUtility.sendBlockedNotification("Party Language", player, message, ""); - return; // the message was blocked - } - - if(!player.hasPermission("chat.format")) { - updatedMessage = Utility.stripTokens(updatedMessage); - } - - if(updatedMessage.contains("[i]")) updatedMessage = updatedMessage.replace("[i]", "<[i]>"); - - updatedMessage = Utility.formatText(updatedMessage); - - List