Added a terrible way to sync parties cus I don't have time to implement a proper solution atm

This commit is contained in:
2021-08-08 13:30:57 +02:00
parent 30cc4b3ead
commit 9551785f83
7 changed files with 132 additions and 87 deletions
@@ -1,14 +1,18 @@
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.ChatUser;
import com.alttd.chat.objects.Party;
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.serializer.gson.GsonComponentSerializer;
import org.bukkit.Bukkit;
import org.bukkit.OfflinePlayer;
import org.bukkit.command.Command;
@@ -47,16 +51,17 @@ public class ChatParty implements CommandExecutor, TabCompleter {
break;
}
if (PartyManager.getParty(args[1]) != null) {
sender.sendMessage(MiniMessage.get().parse("<red>A party with this name already exists.</red>"));
sender.sendMessage(MiniMessage.get().parse("<red>A chat party with this name already exists.</red>"));
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(MiniMessage.get().parse("<green>You created a party called: '<gold>" +
sender.sendMessage(MiniMessage.get().parse("<green>You created a chat party called: '<gold>" +
party.getPartyName() + "</gold>' with the password: '<gold>" +
party.getPartyPassword() + "</gold>'</green>"));
update(player, party.getPartyId());
}
case "invite" -> {
if (args.length < 2) {
@@ -65,11 +70,11 @@ public class ChatParty implements CommandExecutor, TabCompleter {
}
Party party = PartyManager.getParty(player.getUniqueId());
if (party == null) {
sender.sendMessage(MiniMessage.get().parse("<red>You're not in a party.</red>"));
sender.sendMessage(MiniMessage.get().parse("<red>You're not in a chat party.</red>"));
break;
}
if (!party.getOwnerUuid().equals(player.getUniqueId())) {
sender.sendMessage("<red>You don't own this party.</red>");
sender.sendMessage("<red>You don't own this chat party.</red>");
break;
}
Player target = Bukkit.getPlayer(args[1]);
@@ -78,9 +83,9 @@ public class ChatParty implements CommandExecutor, TabCompleter {
break;
}
target.sendMessage(MiniMessage.get().parse("<click:run_command:'/party join " + party.getPartyName() + " " + party.getPartyPassword() +
target.sendMessage(MiniMessage.get().parse("<click:run_command:'/chatparty join " + party.getPartyName() + " " + party.getPartyPassword() +
"'><dark_aqua>You received an invite to join " + party.getPartyName() + " click this message to accept.</dark_aqua></click>"));
sender.sendMessage(MiniMessage.get().parse("<green>You send a party invite to " + target.getName() + "!</green>"));
sender.sendMessage(MiniMessage.get().parse("<green>You send a chat party invite to " + target.getName() + "!</green>"));
}
case "join" -> {
if (args.length < 3 || !args[1].matches("[\\w]{3,16}") || !args[2].matches("[\\w]{3,16}")) {
@@ -90,7 +95,7 @@ public class ChatParty implements CommandExecutor, TabCompleter {
Party party = PartyManager.getParty(args[1]);
if (party == null) {
sender.sendMessage(MiniMessage.get().parse("<red>This party does not exist.</red>"));
sender.sendMessage(MiniMessage.get().parse("<red>This chat party does not exist.</red>"));
break;
}
if (!party.getPartyPassword().equals(args[2])) {
@@ -101,11 +106,12 @@ public class ChatParty implements CommandExecutor, TabCompleter {
// 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(MiniMessage.get().parse("<green>You joined " + party.getPartyName() + "!</green>"));
update(player, party.getPartyId());
}
case "leave" -> {
Party party = PartyManager.getParty(player.getUniqueId());
if (party == null) {
sender.sendMessage(MiniMessage.get().parse("<red>You're not in a party.</red>"));
sender.sendMessage(MiniMessage.get().parse("<red>You're not in a chat party.</red>"));
break;
}
@@ -113,15 +119,17 @@ public class ChatParty implements CommandExecutor, TabCompleter {
if (party.getOwnerUuid().equals(player.getUniqueId())) {
if (party.getPartyUsers().size() > 0) {
ChatUser chatUser = ChatUserManager.getChatUser(party.newOwner());
sender.sendMessage(MiniMessage.get().parse("<dark_aqua>Since you own this party a new party owner will be chosen.<dark_aqua>"));
sender.sendMessage(MiniMessage.get().parse("<dark_aqua>Since you own this chat party a new party owner will be chosen.<dark_aqua>"));
ChatPlugin.getInstance().getChatHandler().partyMessage(party, player, "<dark_aqua>" +
ChatUserManager.getChatUser(player.getUniqueId()).getDisplayName() +
" left the party, the new party owner is " + chatUser.getDisplayName());
player.getName() +
" left the chat party, the new party owner is " + chatUser.getDisplayName());
} else {
party.delete();
}
} else {
sender.sendMessage(MiniMessage.get().parse("<green>You have left the chat party!</green>"));
}
// TODO: 07/08/2021 leave the party
update(player, party.getPartyId());
}
case "remove" -> {
if (args.length < 2) {
@@ -130,11 +138,11 @@ public class ChatParty implements CommandExecutor, TabCompleter {
}
Party party = PartyManager.getParty(player.getUniqueId());
if (party == null) {
sender.sendMessage(MiniMessage.get().parse("<red>You're not in a party.</red>"));
sender.sendMessage(MiniMessage.get().parse("<red>You're not in a chat party.</red>"));
break;
}
if (!party.getOwnerUuid().equals(player.getUniqueId())) {
sender.sendMessage("<red>You don't own this party.</red>");
sender.sendMessage("<red>You don't own this chat party.</red>");
break;
}
OfflinePlayer offlinePlayerIfCached = Bukkit.getOfflinePlayerIfCached((args[1]));
@@ -146,24 +154,25 @@ public class ChatParty implements CommandExecutor, TabCompleter {
if (offlinePlayerIfCached.isOnline()) {
Objects.requireNonNull(offlinePlayerIfCached.getPlayer())
.sendMessage(MiniMessage.get().parse("<red>You were removed from the '" + party.getPartyName() + "' party."));
.sendMessage(MiniMessage.get().parse("<red>You were removed from the '" + party.getPartyName() + "' chat party."));
}
sender.sendMessage(MiniMessage.get().parse("<green>You removed " + offlinePlayerIfCached.getName() + " from the party!</green>"));
sender.sendMessage(MiniMessage.get().parse("<green>You removed " + offlinePlayerIfCached.getName() + " from the chat party!</green>"));
update(player, party.getPartyId());
}
case "info" -> {
Party party = PartyManager.getParty(player.getUniqueId());
if (party == null) {
sender.sendMessage(MiniMessage.get().parse("<red>You're not in a party.</red>"));
sender.sendMessage(MiniMessage.get().parse("<red>You're not in a chat party.</red>"));
break;
}
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("<gold><bold>Party info</bold>:\n</gold>")
.append("<green>Party name: <dark_aqua>").append(party.getPartyName()).append("</dark_aqua>\n")
.append(party.getOwnerUuid().equals(player.getUniqueId()) ? "Party password: <dark_aqua>" + party.getPartyPassword() + "</dark_aqua>\n" : "")
.append("Party owner: ").append(party.getUserDisplayName(party.getOwnerUuid())).append("\n")
.append("Party members: ");
stringBuilder.append("<gold><bold>Chat party info</bold>:\n</gold>")
.append("<green>Name: <dark_aqua>").append(party.getPartyName()).append("</dark_aqua>\n")
.append(party.getOwnerUuid().equals(player.getUniqueId()) ? "Password: <dark_aqua>" + party.getPartyPassword() + "</dark_aqua>\n" : "")
.append("Owner: ").append(party.getUserDisplayName(party.getOwnerUuid())).append("\n")
.append("Members: ");
for (String displayName : party.getPartyUsers().values()) {
stringBuilder.append(displayName).append(", ");
}
@@ -188,7 +197,7 @@ public class ChatParty implements CommandExecutor, TabCompleter {
private void helpMessage(CommandSender sender) {
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("<dark_aqua>Party commands:</dark_aqua><green>");
stringBuilder.append("<dark_aqua>Chat party commands:</dark_aqua><green>");
for (CommandUsage commandUsage : CommandUsage.values()) {
stringBuilder.append("\n- ").append(commandUsage.message);
}
@@ -232,15 +241,22 @@ public class ChatParty implements CommandExecutor, TabCompleter {
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("<gold>/party create <#FFE800><hover:show_text:'<gold>A party name must be 3-16 characters</gold>'><name></hover> " +
"<hover:show_text:'<gold>A party password must be 3-16 characters\n</gold>" +
CREATE("<gold>/chatparty create <#FFE800><hover:show_text:'<gold>A chat party name must be 3-16 characters</gold>'><name></hover> " +
"<hover:show_text:'<gold>A chat party password must be 3-16 characters\n</gold>" +
"<red>When choosing a password keep in mind staff can see it and you might need to share it with other players!</red>'><password></#FFE800></hover></gold>"),
INVITE("<gold>/party invite <username></gold>"),
JOIN("<gold>/party join <party name> <password></gold>"),
LEAVE("<gold><hover:show_text:'<red>If the party owner leaves the server will choose a new party owner</red>'>/party leave</hover></gold>"),
REMOVE("<gold>/party remove <username></gold>"),
INFO("<gold>/party info</gold>");
INVITE("<gold>/chatparty invite <username></gold>"),
JOIN("<gold>/chatparty join <chat party name> <password></gold>"),
LEAVE("<gold><hover:show_text:'<red>If the chat party owner leaves the server will choose a new chat party owner</red>'>/chatparty leave</hover></gold>"),
REMOVE("<gold>/chatparty remove <username></gold>"),
INFO("<gold>/chatparty info</gold>");
private final String message;
@@ -26,7 +26,7 @@ public class PlayerListener implements Listener {
if(user != null) return;
// user failed to load - create a new one
ChatUser chatUser = new ChatUser(uuid, -1, false, false);
ChatUser chatUser = new ChatUser(uuid, -1, null);
ChatUserManager.addUser(chatUser);
Queries.saveUser(chatUser);
@@ -2,6 +2,7 @@ package com.alttd.chat.listeners;
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.objects.channels.Channel;
import com.alttd.chat.objects.channels.CustomChannel;
@@ -71,6 +72,17 @@ public class PluginMessage implements PluginMessageListener {
if (ChatPlugin.getInstance().serverMuted()) break;
chatChannel(in);
break;
}
case "tmppartyupdate" : {
int id = Integer.parseInt(in.readUTF());
new BukkitRunnable() {
@Override
public void run() {
Queries.loadPartyUsers(id);
}
}.runTaskAsynchronously(ChatPlugin.getInstance());
break;
}
default:
break;