@@ -33,7 +33,7 @@ public final class DiscordBridgePlugin extends JavaPlugin {
3333 private static final Pattern INBOUND_PLACEHOLDER = Pattern .compile ("%(label|role|username|message)%" );
3434 private static final String INBOUND_TEMPLATE = "%label% %role% %username%: %message%" ;
3535 private static final String DISCORD_LABEL = "[Discord]" ;
36- private static final String OUTBOUND_TEMPLATE = "**%player%**: %message%" ;
36+
3737 private static final Color LABEL_COLOR = Color .decode ("#5865F2" );
3838 private static final Color DEFAULT_ROLE_COLOR = Color .decode ("#99AAB5" );
3939 private static final Color CONTENT_COLOR = Color .decode ("#FFFFFF" );
@@ -131,25 +131,31 @@ private void onPlayerChat(@NotNull PlayerChatEvent event) {
131131 return ;
132132 }
133133
134- String payload = OUTBOUND_TEMPLATE
135- .replace ("%player%" , event .getSender ().getUsername ())
136- .replace ("%message%" , cleaned );
137-
138- sendToDiscord (payload , cfg );
134+ DiscordConfig discordConfig = cfg .getDiscordConfig ();
135+ if (discordConfig .isUseWebhookForChat ()) {
136+ botConnection .sendWebhookMessage (discordConfig .getWebhookUrl (), event .getSender ().getUsername (), cleaned );
137+ } else {
138+ MessagesConfig messages = cfg .getMessagesConfig ();
139+ String payload = messages .getGameToDiscord ()
140+ .replace ("%player%" , event .getSender ().getUsername ())
141+ .replace ("%message%" , cleaned );
142+
143+ sendToDiscord (payload , cfg );
144+ }
139145 }
140146
141147 private void onPlayerConnect (@ NotNull PlayerConnectEvent event ) {
142148 DiscordBridgeConfig cfg = config .get ();
143149 EventsConfig events = cfg .getEventsConfig ();
144150 MessagesConfig messages = cfg .getMessagesConfig ();
145- sendEventMessage (events .isPlayerJoin (), messages .getPlayerJoin (), "%player%" , event .getPlayerRef ().getUsername ());
151+ sendEventMessage (events .isPlayerJoin (), messages .getPlayerJoin (), events . isPlayerJoinEmbed (), events . getPlayerJoinEmbedColor (), events . getPlayerJoinEmbedContentType (), "%player%" , event .getPlayerRef ().getUsername ());
146152 }
147153
148154 private void onPlayerDisconnect (@ NotNull PlayerDisconnectEvent event ) {
149155 DiscordBridgeConfig cfg = config .get ();
150156 EventsConfig events = cfg .getEventsConfig ();
151157 MessagesConfig messages = cfg .getMessagesConfig ();
152- sendEventMessage (events .isPlayerLeave (), messages .getPlayerLeave (), "%player%" , event .getPlayerRef ().getUsername ());
158+ sendEventMessage (events .isPlayerLeave (), messages .getPlayerLeave (), events . isPlayerLeaveEmbed (), events . getPlayerLeaveEmbedColor (), events . getPlayerLeaveEmbedContentType (), "%player%" , event .getPlayerRef ().getUsername ());
153159 }
154160
155161 private void onPlayerEnterWorld (@ NotNull AddPlayerToWorldEvent event ) {
@@ -165,7 +171,7 @@ private void onPlayerEnterWorld(@NotNull AddPlayerToWorldEvent event) {
165171 }
166172
167173 MessagesConfig messages = cfg .getMessagesConfig ();
168- sendEventMessage (true , messages .getWorldEnter (),
174+ sendEventMessage (true , messages .getWorldEnter (), events . isWorldEnterEmbed (), events . getWorldEnterEmbedColor (), events . getWorldEnterEmbedContentType (),
169175 "%player%" , playerRef .getUsername (),
170176 "%world%" , event .getWorld ().getName ()
171177 );
@@ -186,7 +192,7 @@ private void onPlayerLeaveWorld(@NotNull DrainPlayerFromWorldEvent event) {
186192 World world = event .getWorld ();
187193 String worldName = world .getName ();
188194 MessagesConfig messages = cfg .getMessagesConfig ();
189- sendEventMessage (true , messages .getWorldLeave (),
195+ sendEventMessage (true , messages .getWorldLeave (), events . isWorldLeaveEmbed (), events . getWorldLeaveEmbedColor (), events . getWorldLeaveEmbedContentType (),
190196 "%player%" , playerRef .getUsername (),
191197 "%world%" , worldName
192198 );
@@ -310,7 +316,7 @@ private void sendServerStartMessage() {
310316 EventsConfig events = cfg .getEventsConfig ();
311317 MessagesConfig messages = cfg .getMessagesConfig ();
312318
313- sendEventMessage (events .isServerStart (), messages .getServerStart ());
319+ sendEventMessage (events .isServerStart (), messages .getServerStart (), events . isServerStartEmbed (), events . getServerStartEmbedColor (), events . getServerStartEmbedContentType () );
314320 }
315321
316322 private void sendServerStopMessage () {
@@ -322,17 +328,20 @@ private void sendServerStopMessage() {
322328 EventsConfig events = cfg .getEventsConfig ();
323329 MessagesConfig messages = cfg .getMessagesConfig ();
324330
325- sendEventMessage (events .isServerStop (), messages .getServerStop ());
331+ sendEventMessage (events .isServerStop (), messages .getServerStop (), events . isServerStopEmbed (), events . getServerStopEmbedColor (), events . getServerStopEmbedContentType () );
326332 }
327333
328334 /**
329335 * Sends an event message to Discord if enabled.
330336 *
331- * @param enabled whether this event type is enabled
332- * @param template the message template
333- * @param replacements pairs of placeholder and value (e.g., "%player%", "Steve")
337+ * @param enabled whether this event type is enabled
338+ * @param template the message template
339+ * @param embedEnabled whether to send as embed
340+ * @param embedColor the embed color hex
341+ * @param embedContentType "description" or "title"
342+ * @param replacements pairs of placeholder and value (e.g., "%player%", "Steve")
334343 */
335- private void sendEventMessage (boolean enabled , @ NotNull String template , @ NotNull String ... replacements ) {
344+ private void sendEventMessage (boolean enabled , @ NotNull String template , boolean embedEnabled , @ NotNull String embedColor , @ NotNull String embedContentType , @ NotNull String ... replacements ) {
336345 if (!enabled ) {
337346 return ;
338347 }
@@ -342,7 +351,14 @@ private void sendEventMessage(boolean enabled, @NotNull String template, @NotNul
342351 message = message .replace (replacements [i ], replacements [i + 1 ]);
343352 }
344353
345- sendToDiscord (message , config .get ());
354+ if (embedEnabled ) {
355+ if (botConnection == null || !botConnection .isReady ()) {
356+ return ;
357+ }
358+ botConnection .sendEmbed (message , embedColor , embedContentType );
359+ } else {
360+ sendToDiscord (message , config .get ());
361+ }
346362 }
347363
348364 private void ensureConfigExists (@ NotNull Path dataDir ) throws IOException {
0 commit comments