mirror of
https://github.com/System-End/Discord-MC-Chat.git
synced 2026-04-19 16:28:23 +00:00
Better configs
This commit is contained in:
parent
b76ea72e14
commit
d1276ce57d
8 changed files with 49 additions and 44 deletions
|
|
@ -31,13 +31,15 @@ public class MinecraftEventPacket extends Packet {
|
|||
// Player events
|
||||
PLAYER_JOIN,
|
||||
PLAYER_QUIT,
|
||||
PLAYER_CHAT,
|
||||
PLAYER_COMMAND,
|
||||
PLAYER_DIE,
|
||||
PLAYER_ADVANCEMENT,
|
||||
|
||||
// Source events
|
||||
SOURCE_ME,
|
||||
|
||||
// Player & Source events
|
||||
MESSAGE
|
||||
SOURCE_SAY,
|
||||
SOURCE_TELL_RAW,
|
||||
SOURCE_MSG,
|
||||
SOURCE_ME
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -85,27 +85,27 @@ public class ServerHandler extends SimpleChannelInboundHandler<Packet> {
|
|||
switch (p.type) {
|
||||
// Server events
|
||||
case SERVER_STARTED -> {
|
||||
DiscordManager.clientBroadcast(clientName, "server.started", "server.start", false, p.placeholders);
|
||||
DiscordManager.clientBroadcast(clientName, "server.started", "server.start", p.placeholders);
|
||||
|
||||
// After a Minecraft server starts, perform OP level sync if enabled
|
||||
OpSyncManager.syncAll();
|
||||
DiscordManager.updateBotPresence();
|
||||
}
|
||||
case SERVER_STOPPING ->
|
||||
DiscordManager.clientBroadcast(clientName, "server.stopped", "server.stop", false, p.placeholders);
|
||||
DiscordManager.clientBroadcast(clientName, "server.stopped", "server.stop", p.placeholders);
|
||||
// Player events
|
||||
case PLAYER_JOIN -> {
|
||||
DiscordManager.clientBroadcast(clientName, "player.join", "player.join", false, p.placeholders);
|
||||
DiscordManager.clientBroadcast(clientName, "player.join", "player.join", p.placeholders);
|
||||
DiscordManager.updateBotPresence();
|
||||
}
|
||||
case PLAYER_QUIT -> {
|
||||
DiscordManager.clientBroadcast(clientName, "player.quit", "player.quit", false, p.placeholders);
|
||||
DiscordManager.clientBroadcast(clientName, "player.quit", "player.quit", p.placeholders);
|
||||
DiscordManager.updateBotPresence();
|
||||
}
|
||||
case PLAYER_DIE ->
|
||||
DiscordManager.clientBroadcast(clientName, "player.die", "player.die", false, p.placeholders);
|
||||
DiscordManager.clientBroadcast(clientName, "player.die", "player.die", p.placeholders);
|
||||
case PLAYER_ADVANCEMENT ->
|
||||
DiscordManager.clientBroadcast(clientName, "player.advancement", "player.advancement." + p.placeholders.get("type"), false, p.placeholders);
|
||||
DiscordManager.clientBroadcast(clientName, "player.advancement", "player.advancement." + p.placeholders.get("type"), p.placeholders);
|
||||
// TODO Unhandled events
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -506,10 +506,9 @@ public class DiscordManager {
|
|||
* @param clientName The name of the DMCC client.
|
||||
* @param channelNode The broadcast channel identifier.
|
||||
* @param lang The language key for the message.
|
||||
* @param isTemplate Whether the message is a template.
|
||||
* @param placeholders A map of placeholders to replace in the message.
|
||||
*/
|
||||
public static void clientBroadcast(String clientName, String channelNode, String lang, boolean isTemplate, Map<String, String> placeholders) {
|
||||
public static void clientBroadcast(String clientName, String channelNode, String lang, Map<String, String> placeholders) {
|
||||
String channelIdentifier = ConfigManager.getString("broadcasts.minecraft_to_discord." + channelNode);
|
||||
if (channelIdentifier == null || channelIdentifier.isBlank()) {
|
||||
// User chooses not to broadcast this event
|
||||
|
|
@ -528,28 +527,26 @@ public class DiscordManager {
|
|||
messageNode = messageNode.path(part);
|
||||
}
|
||||
|
||||
if (!isTemplate) {
|
||||
String message = messageNode.asText();
|
||||
String message = messageNode.asText();
|
||||
|
||||
for (Map.Entry<String, String> entry : placeholders.entrySet()) {
|
||||
message = message.replace("{" + entry.getKey() + "}", entry.getValue());
|
||||
}
|
||||
|
||||
if ("standalone".equals(ModeManager.getMode())) {
|
||||
String avatarUrl = getClientAvatarUrl(clientName);
|
||||
sendWebhookMessage(channel, clientName, avatarUrl, message);
|
||||
|
||||
for (String line : message.split("\n")) {
|
||||
// Escape underscores in :emoji: to prevent being treated as Markdown formatting
|
||||
line = Pattern.compile("(:[^:]+:)").matcher(line)
|
||||
.replaceAll(m -> m.group().replace("_", "\\\\_"));
|
||||
line = MarkdownSanitizer.sanitize(line).replace("\\_", "_");
|
||||
|
||||
LOGGER.info(StringUtils.format("[{}] {}"), clientName, line);
|
||||
}
|
||||
} else {
|
||||
sendBotMessage(channelIdentifier, message);
|
||||
for (Map.Entry<String, String> entry : placeholders.entrySet()) {
|
||||
message = message.replace("{" + entry.getKey() + "}", entry.getValue());
|
||||
}
|
||||
|
||||
if ("standalone".equals(ModeManager.getMode())) {
|
||||
String avatarUrl = getClientAvatarUrl(clientName);
|
||||
sendWebhookMessage(channel, clientName, avatarUrl, message);
|
||||
|
||||
for (String line : message.split("\n")) {
|
||||
// Escape underscores in :emoji: to prevent being treated as Markdown formatting
|
||||
line = Pattern.compile("(:[^:]+:)").matcher(line)
|
||||
.replaceAll(m -> m.group().replace("_", "\\\\_"));
|
||||
line = MarkdownSanitizer.sanitize(line).replace("\\_", "_");
|
||||
|
||||
LOGGER.info(StringUtils.format("[{}] {}"), clientName, line);
|
||||
}
|
||||
} else {
|
||||
sendBotMessage(channelIdentifier, message);
|
||||
}
|
||||
} catch (InsufficientPermissionException e) {
|
||||
String reason = I18nManager.getDmccTranslation("discord.manager.insufficient_permission", channel.getName(), e.getPermission().getName());
|
||||
|
|
|
|||
|
|
@ -128,8 +128,8 @@ public class DiscordMessageParser {
|
|||
String truncatedRaw = truncateMainRaw(raw);
|
||||
boolean isMultiLine = truncatedRaw.contains("\n");
|
||||
|
||||
// Build segments from common.chat template
|
||||
JsonNode chatNode = I18nManager.getCustomMessages().path("common").path("message");
|
||||
// Build segments from common.user_message template
|
||||
JsonNode chatNode = I18nManager.getCustomMessages().path("common").path("user_message");
|
||||
if (chatNode.isArray()) {
|
||||
for (JsonNode segNode : chatNode) {
|
||||
String text = segNode.path("text").asText("");
|
||||
|
|
|
|||
|
|
@ -155,6 +155,7 @@ account_linking:
|
|||
enable: true
|
||||
style: "title" # action_bar, title, or chat
|
||||
discord_user_avatar_for_webhooks: false
|
||||
use_discord_role_color_for_mc_messages: true
|
||||
|
||||
# DMCC 命令权限设置
|
||||
# 配置要求执行命令的最低 OP 等级。
|
||||
|
|
|
|||
|
|
@ -208,6 +208,7 @@ account_linking:
|
|||
enable: true
|
||||
style: "title" # action_bar, title, or chat
|
||||
discord_user_avatar_for_webhooks: false
|
||||
use_discord_role_color_for_mc_messages: true
|
||||
|
||||
# DMCC 命令权限设置
|
||||
# 配置要求执行命令的最低 OP 等级。
|
||||
|
|
|
|||
|
|
@ -15,8 +15,8 @@ version: ${mod_version}
|
|||
# Only edit the items below if you know what you are doing!
|
||||
# ==================================================
|
||||
|
||||
common:
|
||||
message:
|
||||
common: # for both discord_to_minecraft and between_minecraft_servers
|
||||
user_message:
|
||||
- text: "[{server}] "
|
||||
bold: true
|
||||
color: "{server_color}"
|
||||
|
|
@ -26,7 +26,7 @@ common:
|
|||
- text: "{message}"
|
||||
bold: false
|
||||
color: "gray"
|
||||
others:
|
||||
system_message:
|
||||
- text: "[{server}] "
|
||||
bold: true
|
||||
color: "{server_color}"
|
||||
|
|
@ -106,7 +106,7 @@ discord_to_minecraft:
|
|||
bold: false
|
||||
color: "gray"
|
||||
|
||||
minecraft_to_discord:
|
||||
minecraft_to_xxxxx:
|
||||
server:
|
||||
start: ":white_check_mark: **Server started!**"
|
||||
stop: ":octagonal_sign: **Server stopped!**"
|
||||
|
|
@ -120,7 +120,9 @@ minecraft_to_discord:
|
|||
goal: ":partying_face: **{display_name} has reached the goal [{title}]**\\n *{description}*"
|
||||
source:
|
||||
me: ":eyes: **{display_name} {message}**"
|
||||
message:
|
||||
|
||||
minecraft_to_discord:
|
||||
user_message:
|
||||
enabled_fake_user_style:
|
||||
standalone:
|
||||
username: "[{server}] {display_name}"
|
||||
|
|
|
|||
|
|
@ -15,8 +15,8 @@ version: ${mod_version}
|
|||
# Only edit the items below if you know what you are doing!
|
||||
# ==================================================
|
||||
|
||||
common:
|
||||
message:
|
||||
common: # for both discord_to_minecraft and between_minecraft_servers
|
||||
user_message:
|
||||
- text: "[{server}] "
|
||||
bold: true
|
||||
color: "{server_color}"
|
||||
|
|
@ -26,7 +26,7 @@ common:
|
|||
- text: "{message}"
|
||||
bold: false
|
||||
color: "gray"
|
||||
others:
|
||||
system_message:
|
||||
- text: "[{server}] "
|
||||
bold: true
|
||||
color: "{server_color}"
|
||||
|
|
@ -103,7 +103,7 @@ discord_to_minecraft:
|
|||
bold: false
|
||||
color: "gray"
|
||||
|
||||
minecraft_to_discord:
|
||||
minecraft_to_xxxxx:
|
||||
server:
|
||||
start: ":white_check_mark: **服务器已启动!**"
|
||||
stop: ":octagonal_sign: **服务器已关闭!**"
|
||||
|
|
@ -117,7 +117,9 @@ minecraft_to_discord:
|
|||
goal: ":partying_face: **{display_name} 达成了目标 [{title}]**\\n *{description}*"
|
||||
source:
|
||||
me: ":eyes: **{display_name} {message}**"
|
||||
message:
|
||||
|
||||
minecraft_to_discord:
|
||||
user_message:
|
||||
enabled_fake_user_style:
|
||||
standalone:
|
||||
username: "[{server}] {display_name}"
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue