22
33import lombok .RequiredArgsConstructor ;
44import net .kyori .adventure .audience .Audience ;
5+ import net .kyori .adventure .pointer .Pointered ;
56import net .kyori .adventure .text .Component ;
67import net .kyori .adventure .text .event .ClickEvent ;
78import net .kyori .adventure .text .event .HoverEvent ;
@@ -109,33 +110,40 @@ private void sendReceiver(CommandSender sender, String message, CommandSender re
109110 receiverAudience .sendMessage (MiniMessage .miniMessage ().deserialize (senderString , MiniPlaceholdersHook .getRelationalAudience (plugin , senderAudience , receiverAudience ), tagResolver ));
110111 }
111112
112- public Component getLanguageMessage (String messageKey , boolean prefix , TagResolver ... tagResolvers ) {
113+ public Component getLanguageMessage (Audience audience , String messageKey , boolean prefix , TagResolver ... tagResolvers ) {
113114 String messageString = getMessageByKey (messageKey );
114- Component messageComponent = MiniMessage .miniMessage ().deserialize (messageString , tagResolvers );
115+ TagResolver combinedResolver = TagResolver .resolver (
116+ MiniPlaceholdersHook .audienceGlobalPlaceholders (plugin ),
117+ TagResolver .resolver (tagResolvers )
118+ );
119+ Component messageComponent = MiniMessage .miniMessage ().deserialize (messageString , audience , combinedResolver );
115120
116121 if (!prefix ) {
117122 return messageComponent ;
118123 }
119124
120125 String formatString = plugin .getPluginConfig ().messages .format ;
121126
122- TagResolver tagResolver = TagResolver .resolver (
127+ TagResolver formatResolver = TagResolver .resolver (
128+ MiniPlaceholdersHook .audienceGlobalPlaceholders (plugin ),
123129 Placeholder .component ("message" , messageComponent )
124130 );
125131
126- return MiniMessage .miniMessage ().deserialize (formatString , tagResolver );
132+ return MiniMessage .miniMessage ().deserialize (formatString , audience , formatResolver );
127133 }
128134
129135 private String getMessageByKey (String key ) {
130136 return MessageKeyResolver .getMessageByKey (plugin .getPluginConfig ().messages , key );
131137 }
132138
133139 public void sendLanguageMessage (CommandSender sender , String messageKey , TagResolver ... tagResolvers ) {
134- senderAudience (sender ).sendMessage (getLanguageMessage (messageKey , true , tagResolvers ));
140+ Audience audience = senderAudience (sender );
141+ audience .sendMessage (getLanguageMessage (audience , messageKey , true , tagResolvers ));
135142 }
136143
137144 public void sendLanguageMessageNoPrefix (CommandSender sender , String messageKey , TagResolver ... tagResolvers ) {
138- senderAudience (sender ).sendMessage (getLanguageMessage (messageKey , false , tagResolvers ));
145+ Audience audience = senderAudience (sender );
146+ audience .sendMessage (getLanguageMessage (audience , messageKey , false , tagResolvers ));
139147 }
140148
141149 public Optional <TextColor > getChatColorFor (String message , Player player ) {
@@ -163,9 +171,10 @@ public void sendChatMessage(Player chatter, String message, Player receiver, @Nu
163171 Audience chatterAudience = senderAudience (chatter );
164172 Audience receiverAudience = senderAudience (receiver );
165173 TagResolver miniPlaceholderResolver = MiniPlaceholdersHook .relationalGlobalPlaceholders (plugin );
174+ Pointered relationalAudience = MiniPlaceholdersHook .getRelationalAudience (plugin , chatterAudience , receiverAudience );
166175 Component formatComponent = overrideFormat != null
167176 ? overrideFormat
168- : getFormat (chatter , miniPlaceholderResolver );
177+ : getFormat (chatter , relationalAudience , miniPlaceholderResolver );
169178
170179 if (receiver .hasPermission ("pistonchat.playernamereply" )) {
171180 String hoverText = plugin .getPluginConfig ().hoverText ;
@@ -193,7 +202,7 @@ public void sendChatMessage(Player chatter, String message, Player receiver, @Nu
193202 )));
194203 }
195204
196- public Component getFormat (Player chatter , TagResolver miniPlaceholderResolver ) {
205+ public Component getFormat (Player chatter , Pointered pointered , TagResolver miniPlaceholderResolver ) {
197206 PistonChatConfig config = plugin .getPluginConfig ();
198207 String formatString = "<player_name>" ;
199208 for (Map .Entry <String , String > entry : config .chatFormats .entrySet ()) {
@@ -203,7 +212,7 @@ public Component getFormat(Player chatter, TagResolver miniPlaceholderResolver)
203212 }
204213 }
205214
206- return MiniMessage .miniMessage ().deserialize (formatString , TagResolver .resolver (
215+ return MiniMessage .miniMessage ().deserialize (formatString , pointered , TagResolver .resolver (
207216 miniPlaceholderResolver ,
208217 getDisplayNameResolver (chatter )
209218 ));
@@ -225,7 +234,7 @@ public TagResolver getDisplayNameResolver(CommandSender sender) {
225234 }
226235 }
227236
228- private Audience senderAudience (CommandSender sender ) {
237+ public Audience senderAudience (CommandSender sender ) {
229238 if (sender instanceof Audience audience ) {
230239 return audience ;
231240 } else {
0 commit comments