Forráskód Böngészése

party leader has unique chat style

nossr50 4 éve
szülő
commit
5a8e607a39

+ 1 - 0
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.

+ 6 - 2
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);
     }
 
     /**

+ 8 - 4
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));
         }

+ 5 - 2
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));

+ 0 - 1
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;

+ 1 - 0
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.