diff --git a/Changelog.txt b/Changelog.txt index ac166a579..8ccf22ee6 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -4,6 +4,7 @@ Version 2.1.151 All chat settings that used to be in 'config.yml' are now in 'chat.yml' The list of party members shown when using the party command has been simplified, this will change again in the T&C update Fixed a bug where players could use the party chat command without the party chat permission + Added 'Chat.Style.Party.Leader' which is the chat style the party leader uses when communicating to the party NOTES: I greatly disliked the old party member list but was avoiding rewriting it until later, someone pointed out how ugly it was and my OCD triggered and now it is rewritten. I will rewrite it again in T&C. diff --git a/src/main/java/com/gmail/nossr50/chat/ChatManager.java b/src/main/java/com/gmail/nossr50/chat/ChatManager.java index eb53cc07d..826521e5d 100644 --- a/src/main/java/com/gmail/nossr50/chat/ChatManager.java +++ b/src/main/java/com/gmail/nossr50/chat/ChatManager.java @@ -73,7 +73,7 @@ public class ChatManager { adminChatMailer.processChatMessage(mmoPlayer.getAdminAuthor(), rawMessage, isAsync, Permissions.colorChat(mmoPlayer.getPlayer())); break; case PARTY: - partyChatMailer.processChatMessage(mmoPlayer.getPartyAuthor(), rawMessage, mmoPlayer.getParty(), isAsync, Permissions.colorChat(mmoPlayer.getPlayer())); + partyChatMailer.processChatMessage(mmoPlayer.getPartyAuthor(), rawMessage, mmoPlayer.getParty(), isAsync, Permissions.colorChat(mmoPlayer.getPlayer()), isPartyLeader(mmoPlayer)); break; case PARTY_OFFICER: case NONE: @@ -81,6 +81,10 @@ public class ChatManager { } } + private boolean isPartyLeader(@NotNull McMMOPlayer mmoPlayer) { + return mmoPlayer.getParty().getLeader().getUniqueId().equals(mmoPlayer.getPlayer().getUniqueId()); + } + /** * Handles console messaging to admins * @param rawMessage raw message from the console @@ -103,7 +107,7 @@ public class ChatManager { * @param party target party */ public void processConsoleMessage(@NotNull String rawMessage, @NotNull Party party) { - partyChatMailer.processChatMessage(getConsoleAuthor(), rawMessage, party, false, true); + partyChatMailer.processChatMessage(getConsoleAuthor(), rawMessage, party, false, true, false); } /** diff --git a/src/main/java/com/gmail/nossr50/chat/mailer/PartyChatMailer.java b/src/main/java/com/gmail/nossr50/chat/mailer/PartyChatMailer.java index 9bcb5de4c..3e7d19cc4 100644 --- a/src/main/java/com/gmail/nossr50/chat/mailer/PartyChatMailer.java +++ b/src/main/java/com/gmail/nossr50/chat/mailer/PartyChatMailer.java @@ -21,8 +21,8 @@ public class PartyChatMailer extends AbstractChatMailer { super(pluginRef); } - public void processChatMessage(@NotNull Author author, @NotNull String rawString, @NotNull Party party, boolean isAsync, boolean canColor) { - PartyChatMessage chatMessage = new PartyChatMessage(pluginRef, author, constructPartyAudience(party), rawString, addStyle(author, rawString, canColor), party); + public void processChatMessage(@NotNull Author author, @NotNull String rawString, @NotNull Party party, boolean isAsync, boolean canColor, boolean isLeader) { + PartyChatMessage chatMessage = new PartyChatMessage(pluginRef, author, constructPartyAudience(party), rawString, addStyle(author, rawString, canColor, isLeader), party); McMMOChatEvent chatEvent = new McMMOPartyChatEvent(pluginRef, chatMessage, party, isAsync); Bukkit.getPluginManager().callEvent(chatEvent); @@ -43,9 +43,13 @@ public class PartyChatMailer extends AbstractChatMailer { * @param canColor whether to replace colors codes with colors in the raw message * @return the styled string, based on a locale entry */ - public @NotNull TextComponent addStyle(@NotNull Author author, @NotNull String message, boolean canColor) { + public @NotNull TextComponent addStyle(@NotNull Author author, @NotNull String message, boolean canColor, boolean isLeader) { if(canColor) { - return Component.text(LocaleLoader.getString("Chat.Style.Party", author.getAuthoredName(), LocaleLoader.addColors(message))); + message = LocaleLoader.addColors(message); + } + + if(isLeader) { + return Component.text(LocaleLoader.getString("Chat.Style.Party.Leader", author.getAuthoredName(), message)); } else { return Component.text(LocaleLoader.getString("Chat.Style.Party", author.getAuthoredName(), message)); } diff --git a/src/main/java/com/gmail/nossr50/datatypes/party/Party.java b/src/main/java/com/gmail/nossr50/datatypes/party/Party.java index 0b557312b..f185f24e5 100644 --- a/src/main/java/com/gmail/nossr50/datatypes/party/Party.java +++ b/src/main/java/com/gmail/nossr50/datatypes/party/Party.java @@ -20,7 +20,10 @@ import org.bukkit.entity.Player; import org.jetbrains.annotations.NotNull; import java.text.DecimalFormat; -import java.util.*; +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.UUID; import java.util.function.Predicate; public class Party { @@ -347,7 +350,7 @@ public class Party { OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(playerUUID); if(offlinePlayer.isOnline() && player.canSee((Player) offlinePlayer)) { - ChatColor onlineColor = leader.getUniqueId() == playerUUID ? ChatColor.GOLD : ChatColor.GREEN; + ChatColor onlineColor = leader.getUniqueId().equals(playerUUID) ? ChatColor.GOLD : ChatColor.GREEN; coloredNames.add(onlineColor + offlinePlayer.getName()); } else { coloredNames.add(ChatColor.DARK_GRAY + members.get(playerUUID)); diff --git a/src/main/java/com/gmail/nossr50/listeners/PlayerListener.java b/src/main/java/com/gmail/nossr50/listeners/PlayerListener.java index 1d6726045..1aa393a22 100644 --- a/src/main/java/com/gmail/nossr50/listeners/PlayerListener.java +++ b/src/main/java/com/gmail/nossr50/listeners/PlayerListener.java @@ -1,6 +1,5 @@ package com.gmail.nossr50.listeners; -import com.gmail.nossr50.config.ChatConfig; import com.gmail.nossr50.config.Config; import com.gmail.nossr50.config.WorldBlacklist; import com.gmail.nossr50.config.experience.ExperienceConfig; diff --git a/src/main/resources/locale/locale_en_US.properties b/src/main/resources/locale/locale_en_US.properties index 3a2534c3f..ee91cfcca 100644 --- a/src/main/resources/locale/locale_en_US.properties +++ b/src/main/resources/locale/locale_en_US.properties @@ -1120,6 +1120,7 @@ Commands.XPBar.DisableAll=&6 All mcMMO XP bars are now disabled, use /mmoxpbar r #Modern Chat Settings Chat.Style.Admin=&b(A) &r{0} &b\u2192 &r{1} Chat.Style.Party=&a(P) &r{0} &a\u2192 &r{1} +Chat.Style.Party.Leader=&a(P) &r{0} &6\u2192 &r{1} Chat.Identity.Console=&6* Console * Chat.Channel.On=&6(&amcMMO-Chat&6) &eYour chat messages will now be automatically delivered to the &a{0}&e chat channel. Chat.Channel.Off=&6(&amcMMO-Chat&6) &7Your chat messages will no longer be automatically delivered to specific chat channels.