1818import dev .plex .world .GuildWorldService ;
1919import lombok .Getter ;
2020import net .kyori .adventure .text .Component ;
21+ import net .kyori .adventure .text .TextReplacementConfig ;
22+ import net .kyori .adventure .text .event .ClickEvent ;
23+ import net .kyori .adventure .text .minimessage .tag .resolver .Placeholder ;
2124import org .bukkit .entity .Player ;
2225
2326import java .sql .SQLException ;
@@ -33,6 +36,10 @@ public class Guilds extends PlexModule
3336 private static final String ASP_API_CLASS = "com.infernalsuite.asp.api.AdvancedSlimePaperAPI" ;
3437 private static final String ASP_LOADER_CLASS = "com.infernalsuite.asp.api.loaders.SlimeLoader" ;
3538 private static final String ASP_WORLD_SERVICE_CLASS = "dev.plex.world.AspGuildWorldService" ;
39+ private static final TextReplacementConfig CHAT_LINKS = TextReplacementConfig .builder ()
40+ .match ("https?://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]" )
41+ .replacement ((match , builder ) -> builder .clickEvent (ClickEvent .openUrl (match .group ())))
42+ .build ();
3643
3744 private final GuildHolder guildHolder = new GuildHolder ();
3845 private final GuildMutationService guildMutationService = new GuildMutationService (this );
@@ -142,6 +149,20 @@ private void enableGuildWorlds()
142149 }
143150 }
144151
152+ public void sendChat (Guild guild , String senderName , Component message )
153+ {
154+ Component content = message .replaceText (CHAT_LINKS );
155+ broadcastToGuild (guild , messageComponent ("guildChatMessage" ,
156+ Placeholder .unparsed ("player" , senderName ), Placeholder .component ("content" , content )));
157+ if (config .getBoolean ("guilds.log-chat-message" ))
158+ {
159+ Bukkit .getConsoleSender ().sendMessage (messageComponent ("guildChatConsoleLog" ,
160+ Placeholder .unparsed ("guild" , guild .getName ()),
161+ Placeholder .unparsed ("guild_id" , guild .getGuildUuid ().toString ()),
162+ Placeholder .unparsed ("player" , senderName ), Placeholder .component ("content" , content )));
163+ }
164+ }
165+
145166 public java .util .concurrent .CompletableFuture <Void > broadcastToGuild (Guild guild , Component message )
146167 {
147168 java .util .concurrent .CompletableFuture <Void > completion = new java .util .concurrent .CompletableFuture <>();
0 commit comments