diff --git a/galaxy/src/main/java/com/alttd/chat/commands/ChatParty.java b/galaxy/src/main/java/com/alttd/chat/commands/ChatParty.java
deleted file mode 100644
index 466e080..0000000
--- a/galaxy/src/main/java/com/alttd/chat/commands/ChatParty.java
+++ /dev/null
@@ -1,273 +0,0 @@
-package com.alttd.chat.commands;
-
-import com.alttd.chat.ChatPlugin;
-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.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.Template;
-import org.bukkit.Bukkit;
-import org.bukkit.OfflinePlayer;
-import org.bukkit.command.Command;
-import org.bukkit.command.CommandExecutor;
-import org.bukkit.command.CommandSender;
-import org.bukkit.command.TabCompleter;
-import org.bukkit.entity.Player;
-import org.bukkit.scheduler.BukkitRunnable;
-import org.jetbrains.annotations.NotNull;
-import org.jetbrains.annotations.Nullable;
-
-import java.util.*;
-
-public class ChatParty implements CommandExecutor, TabCompleter {
-
- @Override
- public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
- if(!(sender instanceof Player player)) { // must be a player
- return true;
- }
- if (args.length == 0) {
- helpMessage(sender);
- return true;
- }
- new BukkitRunnable() {
- @Override
- public void run() {
- switch (args[0].toLowerCase()) {
- case "create" -> {
- if (args.length < 3 || !args[1].matches("[\\w]{3,16}") || !args[2].matches("[\\w]{3,16}")) {
- invalidMessage(sender, CommandUsage.CREATE);
- break;
- }
- if (PartyManager.getParty(args[1]) != null) {
- sender.sendMessage(Utility.parseMiniMessage("A chat party with this name already exists."));
- break;
- }
- Party party = Queries.addParty(player.getUniqueId(), args[1], args[2]);
-// party.addUser(ChatUserManager.getChatUser(player.getUniqueId())); //Removed until we can get nicknames to translate to colors correctly
- party.addUser(ChatUserManager.getChatUser(player.getUniqueId()), player.getName());
- PartyManager.addParty(party);
- sender.sendMessage(Utility.parseMiniMessage("You created a chat party called: '" +
- party.getPartyName() + "' with the password: '" +
- party.getPartyPassword() + "'"));
- update(player, party.getPartyId());
- }
- case "invite" -> {
- if (args.length < 2) {
- invalidMessage(sender, CommandUsage.INVITE);
- break;
- }
- Party party = PartyManager.getParty(player.getUniqueId());
- if (party == null) {
- sender.sendMessage(Utility.parseMiniMessage("You're not in a chat party."));
- break;
- }
- if (!party.getOwnerUuid().equals(player.getUniqueId())) {
- sender.sendMessage(Utility.parseMiniMessage("You don't own this chat party."));
- break;
- }
- Player target = Bukkit.getPlayer(args[1]);
- if (target == null || !target.isOnline()) {
- sender.sendMessage(Utility.parseMiniMessage("The player must be on the same server to receive an invite."));
- break;
- }
-
- target.sendMessage(Utility.parseMiniMessage("You received an invite to join " + party.getPartyName() + " click this message to accept."));
- sender.sendMessage(Utility.parseMiniMessage("You send a chat party invite to " + target.getName() + "!"));
- }
- case "join" -> {
- if (args.length < 3 || !args[1].matches("[\\w]{3,16}") || !args[2].matches("[\\w]{3,16}")) {
- invalidMessage(sender, CommandUsage.JOIN);
- break;
- }
-
- Party party = PartyManager.getParty(args[1]);
- if (party == null) {
- sender.sendMessage(Utility.parseMiniMessage("This chat party does not exist."));
- break;
- }
- if (!party.getPartyPassword().equals(args[2])) {
- sender.sendMessage(Utility.parseMiniMessage("Invalid password."));
- break;
- }
-
-// party.addUser(ChatUserManager.getChatUser(player.getUniqueId())); //Removed until we can get nicknames to translate to colors correctly
- party.addUser(ChatUserManager.getChatUser(player.getUniqueId()), player.getName());
- sender.sendMessage(Utility.parseMiniMessage("You joined " + party.getPartyName() + "!"));
- update(player, party.getPartyId());
- }
- case "leave" -> {
- Party party = PartyManager.getParty(player.getUniqueId());
- if (party == null) {
- sender.sendMessage(Utility.parseMiniMessage("You're not in a chat party."));
- break;
- }
-
- party.removeUser(player.getUniqueId());
- if (party.getOwnerUuid().equals(player.getUniqueId())) {
- if (party.getPartyUsers().size() > 0) {
- 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());
- } else {
- party.delete();
- }
- } else {
- sender.sendMessage(Utility.parseMiniMessage("You have left the chat party!"));
- }
- update(player, party.getPartyId());
- }
- case "remove" -> {
- if (args.length < 2) {
- invalidMessage(sender, CommandUsage.REMOVE);
- break;
- }
- Party party = PartyManager.getParty(player.getUniqueId());
- if (party == null) {
- sender.sendMessage(Utility.parseMiniMessage("You're not in a chat party."));
- break;
- }
- if (!party.getOwnerUuid().equals(player.getUniqueId())) {
- sender.sendMessage("You don't own this chat party.");
- break;
- }
- OfflinePlayer offlinePlayerIfCached = Bukkit.getOfflinePlayerIfCached((args[1]));
- if (offlinePlayerIfCached == null) {
- sender.sendMessage(Utility.parseMiniMessage("Unable to find this player."));
- return;
- }
- party.removeUser(ChatUserManager.getChatUser(offlinePlayerIfCached.getUniqueId()));
-
- if (offlinePlayerIfCached.getUniqueId().equals(party.getOwnerUuid())) {
- sender.sendMessage(Utility.parseMiniMessage("You can't remove yourself, please leave instead."));
- return;
- }
-
- if (offlinePlayerIfCached.isOnline()) {
- Objects.requireNonNull(offlinePlayerIfCached.getPlayer())
- .sendMessage(Utility.parseMiniMessage("You were removed from the '" + party.getPartyName() + "' chat party."));
- }
-
- sender.sendMessage(Utility.parseMiniMessage("You removed " + offlinePlayerIfCached.getName() + " from the chat party!"));
- update(player, party.getPartyId());
- }
- case "info" -> {
- Party party = PartyManager.getParty(player.getUniqueId());
- if (party == null) {
- sender.sendMessage(Utility.parseMiniMessage("You're not in a chat party."));
- break;
- }
-
- String message = "Chat party info:\n"
- + "Name: \n"
- + (party.getOwnerUuid().equals(player.getUniqueId()) ? "Password: \n" : "")
- + "Owner: \n"
- + "Members: ";
- List displayNames = new ArrayList<>();
- for (PartyUser partyUser : party.getPartyUsers()) {
- displayNames.add(partyUser.getDisplayName());
- }
-
- List templates = new ArrayList<>(List.of(
- Template.template("partyname", party.getPartyName()),
- Template.template("password", party.getPartyPassword()),
- Template.template("ownername", party.getPartyUser(party.getOwnerUuid()).getDisplayName()),
- Template.template("members", Component.join(Component.text(", "), displayNames)),
- Template.template("message", message)));
-
- sender.sendMessage(Utility.parseMiniMessage("", templates));
- }
- // TODO: 08/08/2021 add a way to change the password and owner (and name?)
- default -> {
- helpMessage(sender);
- }
- }
- }
- }.runTaskAsynchronously(ChatPlugin.getInstance());
-
- return false;
- }
-
- private void invalidMessage(CommandSender sender, CommandUsage commandUsage) {
- sender.sendMessage(Utility.parseMiniMessage("Invalid command, proper usage: %command%.".replaceAll("%command%", commandUsage.message)));
- }
-
- private void helpMessage(CommandSender sender) {
- StringBuilder stringBuilder = new StringBuilder();
- stringBuilder.append("Chat party commands:");
- for (CommandUsage commandUsage : CommandUsage.values()) {
- stringBuilder.append("\n- ").append(commandUsage.message);
- }
- stringBuilder.append("");
- sender.sendMessage(Utility.parseMiniMessage(stringBuilder.toString()));
- }
-
- @Override
- public @Nullable List onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) {
- List possibleValues = new ArrayList<>();
- String current = args.length > 0 ? args[args.length - 1].toLowerCase() : "";
-
- if (args.length <= 1) {
- possibleValues.add("create");
- possibleValues.add("invite");
- possibleValues.add("join");
- possibleValues.add("leave");
- possibleValues.add("remove");
- possibleValues.add("info");
- return finalizeSuggest(possibleValues, current);
- }
-
- switch (args[0].toLowerCase()) {
- case "invite","remove" -> {
- Bukkit.getOnlinePlayers().stream().filter(p -> !p.getName().equals(sender.getName())).forEach(p -> possibleValues.add(p.getName()));
- }
- }
-
- return finalizeSuggest(possibleValues, current.toLowerCase());
- }
-
- public List finalizeSuggest(List possibleValues, String remaining) {
- List finalValues = new ArrayList<>();
-
- for (String str : possibleValues) {
- if (str.toLowerCase().startsWith(remaining)) {
- finalValues.add(str);
- }
- }
-
- return finalValues;
- }
-
- private void update(Player player, int partyId) { // FIXME: 08/08/2021 This only updates members btw and should be replaced with per change messages
- ByteArrayDataOutput out = ByteStreams.newDataOutput();
- out.writeUTF("tmppartyupdate");
- out.writeUTF(String.valueOf(partyId));
- player.sendPluginMessage(ChatPlugin.getInstance(), Config.MESSAGECHANNEL, out.toByteArray());
- }
-
- private enum CommandUsage {
- CREATE("/chatparty create <#FFE800>A chat party name must be 3-16 characters'> " +
- "A chat party password must be 3-16 characters\n" +
- "When choosing a password keep in mind staff can see it and you might need to share it with other players!'>#FFE800>"),
- INVITE("/chatparty invite "),
- JOIN("/chatparty join "),
- LEAVE("If the chat party owner leaves the server will choose a new chat party owner'>/chatparty leave"),
- REMOVE("/chatparty remove "),
- INFO("/chatparty info");
-
- private final String message;
-
- CommandUsage(String message) {
- this.message = message;
- }
- }
-}
\ No newline at end of file