From 0ace87055033fe2f55629d9595a83577bbed7ba4 Mon Sep 17 00:00:00 2001 From: destro174 <40720638+destro174@users.noreply.github.com> Date: Sun, 8 Aug 2021 22:07:47 +0200 Subject: [PATCH] Add PartyUser implement it into Party --- .../java/com/alttd/chat/database/Queries.java | 26 +++++++------- .../com/alttd/chat/managers/PartyManager.java | 2 +- .../java/com/alttd/chat/objects/Party.java | 36 +++++++++++-------- .../com/alttd/chat/objects/PartyUser.java | 36 +++++++++++++++++++ .../com/alttd/chat/commands/ChatParty.java | 30 ++++++++++------ .../com/alttd/chat/handler/ChatHandler.java | 2 +- .../alttd/chat/listeners/PluginMessage.java | 27 ++++++++------ 7 files changed, 108 insertions(+), 51 deletions(-) create mode 100644 api/src/main/java/com/alttd/chat/objects/PartyUser.java diff --git a/api/src/main/java/com/alttd/chat/database/Queries.java b/api/src/main/java/com/alttd/chat/database/Queries.java index baf7eb6..db9bcfd 100755 --- a/api/src/main/java/com/alttd/chat/database/Queries.java +++ b/api/src/main/java/com/alttd/chat/database/Queries.java @@ -5,6 +5,7 @@ import com.alttd.chat.managers.PartyManager; import com.alttd.chat.objects.ChatUser; import com.alttd.chat.objects.Mail; import com.alttd.chat.objects.Party; +import com.alttd.chat.objects.PartyUser; import com.alttd.chat.objects.channels.Channel; import com.alttd.chat.util.ALogger; @@ -176,19 +177,18 @@ public class Queries { while (resultSet.next()) { int id = resultSet.getInt("party_id"); UUID uuid = UUID.fromString(resultSet.getString("uuid")); -// String displayName = resultSet.getString("nickname"); -// if (displayName == null || displayName.isEmpty()) { -// displayName = resultSet.getString("Username"); -// } - String displayName = resultSet.getString("Username"); // FIXME: 08/08/2021 only using display name till we can fix nickname colors + String displayName = resultSet.getString("nickname"); + if (displayName == null || displayName.isEmpty()) { + displayName = resultSet.getString("Username"); + } + String playerName = resultSet.getString("Username"); Party party = PartyManager.getParty(id); if (party == null) { ALogger.warn("Unable to retrieve party: " + id); continue; } - - party.putUser(uuid, displayName); + party.putPartyUser(new PartyUser(uuid, displayName, playerName)); } } catch (SQLException e) { @@ -218,13 +218,13 @@ public class Queries { party.resetPartyUsers(); while (resultSet.next()) { UUID uuid = UUID.fromString(resultSet.getString("uuid")); -// String displayName = resultSet.getString("nickname"); -// if (displayName == null || displayName.isEmpty()) { -// displayName = resultSet.getString("Username"); -// } - String displayName = resultSet.getString("Username"); // FIXME: 08/08/2021 only using display name till we can fix nickname colors + String displayName = resultSet.getString("nickname"); + if (displayName == null || displayName.isEmpty()) { + displayName = resultSet.getString("Username"); + } + String playerName = resultSet.getString("Username"); - party.putUser(uuid, displayName); + party.putPartyUser(new PartyUser(uuid, displayName, playerName)); } } catch (SQLException e) { 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 711656e..a1caa8d 100644 --- a/api/src/main/java/com/alttd/chat/managers/PartyManager.java +++ b/api/src/main/java/com/alttd/chat/managers/PartyManager.java @@ -46,7 +46,7 @@ public class PartyManager { public static Party getParty(UUID uuid) { for(Party party : parties) { - if(party.getPartyUsers().containsKey(uuid)) { + if(party.getPartyUsersUuid().contains(uuid)) { return party; } } 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 605870f..f77a44d 100755 --- a/api/src/main/java/com/alttd/chat/objects/Party.java +++ b/api/src/main/java/com/alttd/chat/objects/Party.java @@ -6,6 +6,7 @@ import com.alttd.chat.managers.PartyManager; import java.util.*; import java.util.List; +import java.util.stream.Collectors; public class Party { @@ -13,27 +14,27 @@ public class Party { private UUID ownerUuid; private String partyName; private String partyPassword; - private final HashMap partyUsers; //TODO might need to be a map? + private static ArrayList partyUsers; //TODO might need to be a map? public Party(int partyId, UUID ownerUuid, String partyName, String partyPassword) { this.partyId = partyId; this.ownerUuid = ownerUuid; this.partyName = partyName; this.partyPassword = partyPassword; - partyUsers = new HashMap<>(); + partyUsers = new ArrayList<>(); } - public void putUser(UUID uuid, String displayName) { - this.partyUsers.put(uuid, displayName); + public void putPartyUser(PartyUser partyUser) { + partyUsers.add(partyUser); } - public void addUser(ChatUser partyUser, String displayName) { + public void addUser(ChatUser chatUser, String playerName) { // this.partyUsers.put(partyUser.getUuid(), PlainComponentSerializer.plain().serialize(partyUser.getDisplayName())); // partyUser.setPartyId(getPartyId()); // Queries.addPartyUser(partyUser); - this.partyUsers.put(partyUser.getUuid(), displayName); - partyUser.setPartyId(getPartyId()); - Queries.addPartyUser(partyUser); + partyUsers.add(new PartyUser(chatUser.getUuid(), chatUser.getDisplayName(), playerName)); + chatUser.setPartyId(getPartyId()); + Queries.addPartyUser(chatUser); } public void removeUser(UUID uuid) { @@ -54,7 +55,7 @@ public class Party { } public UUID newOwner() { - UUID uuid = partyUsers.keySet().iterator().next(); + UUID uuid = partyUsers.iterator().next().getUuid(); setOwnerUuid(uuid); return uuid; } @@ -86,7 +87,7 @@ public class Party { return !partyPassword.isEmpty(); } - public HashMap getPartyUsers() { + public List getPartyUsers() { return partyUsers; } @@ -96,14 +97,19 @@ public class Party { } public List getPartyUsersUuid() { - return new ArrayList<>(partyUsers.keySet()); - } - - public String getUserDisplayName(UUID uuid) { - return partyUsers.get(uuid); + return partyUsers.stream().map(PartyUser::getUuid).collect(Collectors.toList()); } public void resetPartyUsers() { // FIXME: 08/08/2021 This is a temp solution until bungee messages take over updating parties partyUsers.clear(); } + + public PartyUser getPartyUser(UUID uuid) { + for(PartyUser user : partyUsers) { + if(uuid.equals(user.getUuid())) { + return user; + } + } + return null; + } } diff --git a/api/src/main/java/com/alttd/chat/objects/PartyUser.java b/api/src/main/java/com/alttd/chat/objects/PartyUser.java new file mode 100644 index 0000000..82f9f10 --- /dev/null +++ b/api/src/main/java/com/alttd/chat/objects/PartyUser.java @@ -0,0 +1,36 @@ +package com.alttd.chat.objects; + +import com.alttd.chat.util.Utility; +import net.kyori.adventure.text.Component; + +import java.util.UUID; + +public class PartyUser { + + protected UUID uuid; + protected Component displayName; + protected String playerName; + + public PartyUser(UUID uuid, String displayName, String playerName) { + this(uuid, Utility.applyColor(displayName), playerName); + } + + public PartyUser(UUID uuid, Component displayName, String playerName) { + this.uuid = uuid; + this.displayName = displayName; + this.playerName = playerName; + } + + public UUID getUuid() { + return uuid; + } + + public Component getDisplayName() { + return displayName; + } + + public String getPlayerName() { + return playerName; + } + +} 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 e86b221..94422d7 100644 --- a/galaxy/src/main/java/com/alttd/chat/commands/ChatParty.java +++ b/galaxy/src/main/java/com/alttd/chat/commands/ChatParty.java @@ -7,11 +7,13 @@ 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; @@ -41,6 +43,7 @@ public class ChatParty implements CommandExecutor, TabCompleter { new BukkitRunnable() { @Override public void run() { + MiniMessage miniMessage = MiniMessage.get(); switch (args[0].toLowerCase()) { case "create" -> { if (args.length < 3 || !args[1].matches("[\\w]{3,16}") || !args[2].matches("[\\w]{3,16}")) { @@ -119,7 +122,7 @@ public class ChatParty implements CommandExecutor, TabCompleter { sender.sendMessage(MiniMessage.get().parse("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.getUserDisplayName(uuid)); + " left the chat party, the new party owner is " + party.getPartyUser(uuid).getPlayerName()); } else { party.delete(); } @@ -169,19 +172,24 @@ public class ChatParty implements CommandExecutor, TabCompleter { break; } - StringBuilder stringBuilder = new StringBuilder(); - stringBuilder.append("Chat party info:\n") - .append("Name: ").append(party.getPartyName()).append("\n") - .append(party.getOwnerUuid().equals(player.getUniqueId()) ? "Password: " + party.getPartyPassword() + "\n" : "") - .append("Owner: ").append(party.getUserDisplayName(party.getOwnerUuid())).append("\n") - .append("Members: "); - for (String displayName : party.getPartyUsers().values()) { - stringBuilder.append(displayName).append(", "); + 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()); } - stringBuilder.delete(stringBuilder.length() - 2, stringBuilder.length()); + List