Skip to content

Commit 0092384

Browse files
Config changes
1 parent d363207 commit 0092384

8 files changed

Lines changed: 246 additions & 340 deletions

File tree

src/main/java/net/aerh/discordbridge/DiscordBridgePlugin.java

Lines changed: 17 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,7 @@
3030

3131
public final class DiscordBridgePlugin extends JavaPlugin {
3232

33-
private static final Pattern INBOUND_PLACEHOLDER = Pattern.compile("%(label|role|username|message)%");
34-
private static final String INBOUND_TEMPLATE = "%label% %role% %username%: %message%";
33+
private static final Pattern INBOUND_PLACEHOLDER = Pattern.compile("%(label|username|message)%");
3534
private static final String DISCORD_LABEL = "[Discord]";
3635

3736
private static final Color LABEL_COLOR = Color.decode("#5865F2");
@@ -132,30 +131,26 @@ private void onPlayerChat(@NotNull PlayerChatEvent event) {
132131
}
133132

134133
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);
134+
String webhookUrl = discordConfig.getWebhookUrl();
135+
if (webhookUrl.isEmpty()) {
136+
getLogger().at(Level.WARNING).log("Webhook URL not configured; skipping chat message to Discord.");
137+
return;
144138
}
139+
botConnection.sendWebhookMessage(webhookUrl, event.getSender().getUsername(), cleaned);
145140
}
146141

147142
private void onPlayerConnect(@NotNull PlayerConnectEvent event) {
148143
DiscordBridgeConfig cfg = config.get();
149144
EventsConfig events = cfg.getEventsConfig();
150145
MessagesConfig messages = cfg.getMessagesConfig();
151-
sendEventMessage(events.isPlayerJoin(), messages.getPlayerJoin(), events.isPlayerJoinEmbed(), events.getPlayerJoinEmbedColor(), events.getPlayerJoinEmbedContentType(), "%player%", event.getPlayerRef().getUsername());
146+
sendEventMessage(events.isPlayerJoin(), events.getPlayerJoinMessage(), events.isPlayerJoinEmbed(), events.getPlayerJoinEmbedColor(), "%player%", event.getPlayerRef().getUsername());
152147
}
153148

154149
private void onPlayerDisconnect(@NotNull PlayerDisconnectEvent event) {
155150
DiscordBridgeConfig cfg = config.get();
156151
EventsConfig events = cfg.getEventsConfig();
157152
MessagesConfig messages = cfg.getMessagesConfig();
158-
sendEventMessage(events.isPlayerLeave(), messages.getPlayerLeave(), events.isPlayerLeaveEmbed(), events.getPlayerLeaveEmbedColor(), events.getPlayerLeaveEmbedContentType(), "%player%", event.getPlayerRef().getUsername());
153+
sendEventMessage(events.isPlayerLeave(), events.getPlayerLeaveMessage(), events.isPlayerLeaveEmbed(), events.getPlayerLeaveEmbedColor(), "%player%", event.getPlayerRef().getUsername());
159154
}
160155

161156
private void onPlayerEnterWorld(@NotNull AddPlayerToWorldEvent event) {
@@ -170,8 +165,7 @@ private void onPlayerEnterWorld(@NotNull AddPlayerToWorldEvent event) {
170165
return;
171166
}
172167

173-
MessagesConfig messages = cfg.getMessagesConfig();
174-
sendEventMessage(true, messages.getWorldEnter(), events.isWorldEnterEmbed(), events.getWorldEnterEmbedColor(), events.getWorldEnterEmbedContentType(),
168+
sendEventMessage(true, events.getWorldEnterMessage(), events.isWorldEnterEmbed(), events.getWorldEnterEmbedColor(),
175169
"%player%", playerRef.getUsername(),
176170
"%world%", event.getWorld().getName()
177171
);
@@ -191,8 +185,7 @@ private void onPlayerLeaveWorld(@NotNull DrainPlayerFromWorldEvent event) {
191185

192186
World world = event.getWorld();
193187
String worldName = world.getName();
194-
MessagesConfig messages = cfg.getMessagesConfig();
195-
sendEventMessage(true, messages.getWorldLeave(), events.isWorldLeaveEmbed(), events.getWorldLeaveEmbedColor(), events.getWorldLeaveEmbedContentType(),
188+
sendEventMessage(true, events.getWorldLeaveMessage(), events.isWorldLeaveEmbed(), events.getWorldLeaveEmbedColor(),
196189
"%player%", playerRef.getUsername(),
197190
"%world%", worldName
198191
);
@@ -218,12 +211,13 @@ private void relayDiscordMessage(@NotNull DiscordMessage message) {
218211
return;
219212
}
220213

221-
Message formatted = buildInboundMessage(message, content, cfg.getMessagesConfig().getDiscordToGame());
214+
Message formatted = buildInboundMessage(message, content);
222215
universe.sendMessage(formatted);
223216
}
224217

225218
@NotNull
226-
private static Message buildInboundMessage(@NotNull DiscordMessage discordMessage, @NotNull String content, @NotNull String template) {
219+
private static Message buildInboundMessage(@NotNull DiscordMessage discordMessage, @NotNull String content) {
220+
String template = "%label% %username%: %message%";
227221

228222
Message root = Message.empty();
229223
Matcher matcher = INBOUND_PLACEHOLDER.matcher(template);
@@ -237,7 +231,6 @@ private static Message buildInboundMessage(@NotNull DiscordMessage discordMessag
237231

238232
switch (matcher.group(1)) {
239233
case "label" -> appendLabel(root);
240-
case "role" -> appendRole(root, discordMessage);
241234
case "username" -> appendUsername(root, discordMessage);
242235
case "message" -> {
243236
appendMessageContent(root, content);
@@ -265,15 +258,6 @@ private static void appendLabel(@NotNull Message root) {
265258
appendTextSegment(root, DISCORD_LABEL, LABEL_COLOR);
266259
}
267260

268-
private static void appendRole(@NotNull Message root, @NotNull DiscordMessage discordMessage) {
269-
if (discordMessage.topRoleName() == null || discordMessage.topRoleName().isBlank()) {
270-
return;
271-
}
272-
273-
Color color = discordMessage.roleColor() != null ? discordMessage.roleColor() : DEFAULT_ROLE_COLOR;
274-
appendTextSegment(root, "[" + discordMessage.topRoleName() + "]", color);
275-
}
276-
277261
private static void appendUsername(@NotNull Message root, @NotNull DiscordMessage discordMessage) {
278262
Color color = discordMessage.displayColor() != null ? discordMessage.displayColor() : DEFAULT_ROLE_COLOR;
279263
appendTextSegment(root, discordMessage.authorName(), color);
@@ -315,7 +299,7 @@ private void sendServerStartMessage() {
315299
EventsConfig events = cfg.getEventsConfig();
316300
MessagesConfig messages = cfg.getMessagesConfig();
317301

318-
sendEventMessage(events.isServerStart(), messages.getServerStart(), events.isServerStartEmbed(), events.getServerStartEmbedColor(), events.getServerStartEmbedContentType());
302+
sendEventMessage(events.isServerStart(), events.getServerStartMessage(), events.isServerStartEmbed(), events.getServerStartEmbedColor());
319303
}
320304

321305
private void sendServerStopMessage() {
@@ -327,7 +311,7 @@ private void sendServerStopMessage() {
327311
EventsConfig events = cfg.getEventsConfig();
328312
MessagesConfig messages = cfg.getMessagesConfig();
329313

330-
sendEventMessage(events.isServerStop(), messages.getServerStop(), events.isServerStopEmbed(), events.getServerStopEmbedColor(), events.getServerStopEmbedContentType());
314+
sendEventMessage(events.isServerStop(), events.getServerStopMessage(), events.isServerStopEmbed(), events.getServerStopEmbedColor());
331315
}
332316

333317
/**
@@ -337,10 +321,9 @@ private void sendServerStopMessage() {
337321
* @param template the message template
338322
* @param embedEnabled whether to send as embed
339323
* @param embedColor the embed color hex
340-
* @param embedContentType "description" or "title"
341324
* @param replacements pairs of placeholder and value (e.g., "%player%", "Steve")
342325
*/
343-
private void sendEventMessage(boolean enabled, @NotNull String template, boolean embedEnabled, @NotNull String embedColor, @NotNull String embedContentType, @NotNull String... replacements) {
326+
private void sendEventMessage(boolean enabled, @NotNull String template, boolean embedEnabled, @NotNull String embedColor, @NotNull String... replacements) {
344327
if (!enabled) {
345328
return;
346329
}
@@ -354,7 +337,7 @@ private void sendEventMessage(boolean enabled, @NotNull String template, boolean
354337
if (botConnection == null || !botConnection.isReady()) {
355338
return;
356339
}
357-
botConnection.sendEmbed(message, embedColor, embedContentType);
340+
botConnection.sendEmbed(message, embedColor);
358341
} else {
359342
sendToDiscord(message, config.get());
360343
}

src/main/java/net/aerh/discordbridge/config/DiscordConfig.java

Lines changed: 10 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,11 @@ public final class DiscordConfig {
1616
(cfg, value) -> cfg.botToken = value,
1717
cfg -> cfg.botToken)
1818
.add()
19-
.append(new KeyedCodec<>("ChannelId", Codec.STRING),
20-
(cfg, value) -> cfg.channelId = value,
21-
cfg -> cfg.channelId)
22-
.add()
23-
.append(new KeyedCodec<>("PresenceMessage", Codec.STRING),
24-
(cfg, value) -> cfg.presenceMessage = value,
25-
cfg -> cfg.presenceMessage)
26-
.add()
27-
.append(new KeyedCodec<>("IgnoreBotMessages", Codec.BOOLEAN),
19+
.append(new KeyedCodec<>("ChannelId", Codec.STRING),
20+
(cfg, value) -> cfg.channelId = value,
21+
cfg -> cfg.channelId)
22+
.add()
23+
.append(new KeyedCodec<>("IgnoreBotMessages", Codec.BOOLEAN),
2824
(cfg, value) -> cfg.ignoreBotMessages = value,
2925
cfg -> cfg.ignoreBotMessages)
3026
.add()
@@ -36,26 +32,20 @@ public final class DiscordConfig {
3632
(cfg, value) -> cfg.allowMentions = value,
3733
cfg -> cfg.allowMentions)
3834
.add()
39-
.append(new KeyedCodec<>("WebhookUrl", Codec.STRING),
40-
(cfg, value) -> cfg.webhookUrl = value,
41-
cfg -> cfg.webhookUrl)
42-
.add()
43-
.append(new KeyedCodec<>("UseWebhookForChat", Codec.BOOLEAN),
44-
(cfg, value) -> cfg.useWebhookForChat = value,
45-
cfg -> cfg.useWebhookForChat)
46-
.add()
35+
.append(new KeyedCodec<>("WebhookUrl", Codec.STRING),
36+
(cfg, value) -> cfg.webhookUrl = value,
37+
cfg -> cfg.webhookUrl)
38+
.add()
4739
.build();
4840

49-
private static final String DEFAULT_PRESENCE = "Watching the server";
41+
5042

5143
private String botToken = "";
5244
private String channelId = "";
53-
private String presenceMessage = DEFAULT_PRESENCE;
5445
private boolean ignoreBotMessages = true;
5546
private boolean ignoreWebhookMessages = true;
5647
private boolean allowMentions = false;
5748
private String webhookUrl = "";
58-
private boolean useWebhookForChat = false;
5949

6050
@NotNull
6151
public String getBotToken() {
@@ -67,13 +57,6 @@ public String getChannelId() {
6757
return channelId == null ? "" : channelId;
6858
}
6959

70-
@NotNull
71-
public String getPresenceMessage() {
72-
return presenceMessage == null || presenceMessage.isBlank()
73-
? DEFAULT_PRESENCE
74-
: presenceMessage;
75-
}
76-
7760
public boolean isIgnoreBotMessages() {
7861
return ignoreBotMessages;
7962
}
@@ -91,10 +74,6 @@ public String getWebhookUrl() {
9174
return webhookUrl == null ? "" : webhookUrl;
9275
}
9376

94-
public boolean isUseWebhookForChat() {
95-
return useWebhookForChat;
96-
}
97-
9877
/**
9978
* @return {@code true} if the bot can be started with these settings.
10079
*/

0 commit comments

Comments
 (0)