diff --git a/build.gradle b/build.gradle index f5dd2d8f..fc1a8023 100644 --- a/build.gradle +++ b/build.gradle @@ -37,15 +37,12 @@ dependencies { include 'net.sf.trove4j:trove4j:3.0.3' include 'org.apache.commons:commons-collections4:4.4' - include 'org.apache.httpcomponents:httpclient:4.5.13' - include 'org.jetbrains:annotations:22.0.0' include 'org.jetbrains.kotlin:kotlin-stdlib:1.5.31' include 'com.neovisionaries:nv-websocket-client:2.14' include 'com.fasterxml.jackson.core:jackson-annotations:2.13.0' include 'com.fasterxml.jackson.core:jackson-core:2.13.0' include 'com.fasterxml.jackson.core:jackson-databind:2.13.0' include 'com.google.code.gson:gson:2.8.9' - include 'com.neovisionaries:nv-websocket-client:2.14' include 'com.squareup.okhttp3:okhttp:4.9.2' include 'com.squareup.okio:okio:2.10.0' include(modImplementation("org.json:json:20210307")) diff --git a/src/main/java/top/xujiayao/mcdiscordchat/Main.java b/src/main/java/top/xujiayao/mcdiscordchat/Main.java index 7863de3b..9ff25db8 100644 --- a/src/main/java/top/xujiayao/mcdiscordchat/Main.java +++ b/src/main/java/top/xujiayao/mcdiscordchat/Main.java @@ -11,8 +11,6 @@ import net.dv8tion.jda.api.utils.MemberCachePolicy; import net.fabricmc.api.DedicatedServerModInitializer; import net.fabricmc.fabric.api.command.v1.CommandRegistrationCallback; import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents; -import okhttp3.OkHttpClient; -import okhttp3.Protocol; import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.exception.ExceptionUtils; import top.xujiayao.mcdiscordchat.commands.ShrugCommand; @@ -25,7 +23,6 @@ import top.xujiayao.mcdiscordchat.utils.ConfigManager; import java.net.URI; import java.nio.charset.StandardCharsets; -import java.util.Collections; /** * @author Xujiayao @@ -45,17 +42,13 @@ public class Main implements DedicatedServerModInitializer { try { if (Main.config.generic.membersIntents) { - jda = JDABuilder.createDefault(Main.config.generic.botToken).setHttpClient(new OkHttpClient.Builder() - .protocols(Collections.singletonList(Protocol.HTTP_1_1)) - .build()) + jda = JDABuilder.createDefault(Main.config.generic.botToken) .setMemberCachePolicy(MemberCachePolicy.ALL) .enableIntents(GatewayIntent.GUILD_MEMBERS) .addEventListeners(new DiscordEventListener()) .build(); } else { - jda = JDABuilder.createDefault(Main.config.generic.botToken).setHttpClient(new OkHttpClient.Builder() - .protocols(Collections.singletonList(Protocol.HTTP_1_1)) - .build()) + jda = JDABuilder.createDefault(Main.config.generic.botToken) .addEventListeners(new DiscordEventListener()) .build(); } @@ -89,11 +82,11 @@ public class Main implements DedicatedServerModInitializer { } for (String id : config.generic.superAdminsIds) { - text.append("<@" + id + "> "); + text.append("<@").append(id).append("> "); } for (String id : config.generic.adminsIds) { - text.append("<@" + id + "> "); + text.append("<@").append(id).append("> "); } textChannel.sendMessage(text).queue(); diff --git a/src/main/java/top/xujiayao/mcdiscordchat/listeners/DiscordEventListener.java b/src/main/java/top/xujiayao/mcdiscordchat/listeners/DiscordEventListener.java index 78cc94ef..9a3fc810 100644 --- a/src/main/java/top/xujiayao/mcdiscordchat/listeners/DiscordEventListener.java +++ b/src/main/java/top/xujiayao/mcdiscordchat/listeners/DiscordEventListener.java @@ -1,6 +1,8 @@ package top.xujiayao.mcdiscordchat.listeners; import com.vdurmont.emoji.EmojiParser; +import net.dv8tion.jda.api.EmbedBuilder; +import net.dv8tion.jda.api.entities.MessageEmbed; import net.dv8tion.jda.api.events.message.MessageReceivedEvent; import net.dv8tion.jda.api.hooks.ListenerAdapter; import net.fabricmc.loader.api.FabricLoader; @@ -23,6 +25,7 @@ import top.xujiayao.mcdiscordchat.utils.DiscordCommandOutput; import top.xujiayao.mcdiscordchat.utils.MarkdownParser; import top.xujiayao.mcdiscordchat.utils.Scoreboard; +import java.awt.Color; import java.util.List; import java.util.Objects; @@ -75,17 +78,17 @@ public class DiscordEventListener extends ListenerAdapter { StringBuilder infoString = new StringBuilder("```\n=============== " + (Main.config.generic.switchLanguageFromChinToEng ? "Server Status" : "运行状态") + " ===============\n\n"); List onlinePlayers = server.getPlayerManager().getPlayerList(); - infoString.append((Main.config.generic.switchLanguageFromChinToEng ? "Online players" : "在线玩家") + " (").append(onlinePlayers.size()).append(")" + (Main.config.generic.switchLanguageFromChinToEng ? ":" : ":")); + infoString.append(Main.config.generic.switchLanguageFromChinToEng ? "Online players" : "在线玩家").append(" (").append(onlinePlayers.size()).append(")").append(Main.config.generic.switchLanguageFromChinToEng ? ":" : ":"); if (onlinePlayers.isEmpty()) { - infoString.append("\n" + (Main.config.generic.switchLanguageFromChinToEng ? "No players online!" : "当前没有在线玩家!")); + infoString.append("\n").append(Main.config.generic.switchLanguageFromChinToEng ? "No players online!" : "当前没有在线玩家!"); } else { for (ServerPlayerEntity player : onlinePlayers) { infoString.append("\n[").append(player.pingMilliseconds).append("ms] ").append(player.getEntityName()); } } - infoString.append("\n\n" + (Main.config.generic.switchLanguageFromChinToEng ? "Server TPS:\n" : "服务器 TPS:\n")); + infoString.append("\n\n").append(Main.config.generic.switchLanguageFromChinToEng ? "Server TPS:\n" : "服务器 TPS:\n"); double serverTickTime = MathHelper.average(server.lastTickLengths) * 1.0E-6D; infoString.append(Math.min(1000.0 / serverTickTime, 20)); @@ -184,7 +187,7 @@ public class DiscordEventListener extends ListenerAdapter { StringBuilder bannedList = new StringBuilder("```\n=============== " + (Main.config.generic.switchLanguageFromChinToEng ? "Blacklist" : "黑名单") + " ===============\n\nDiscord:"); if (Main.config.generic.bannedDiscord.size() == 0) { - bannedList.append("\n" + (Main.config.generic.switchLanguageFromChinToEng ? "List is empty!" : "列表为空!")); + bannedList.append("\n").append(Main.config.generic.switchLanguageFromChinToEng ? "List is empty!" : "列表为空!"); } for (String id : Main.config.generic.bannedDiscord) { @@ -194,7 +197,7 @@ public class DiscordEventListener extends ListenerAdapter { bannedList.append("\n\nMinecraft:"); if (Main.config.generic.bannedMinecraft.size() == 0) { - bannedList.append("\n" + (Main.config.generic.switchLanguageFromChinToEng ? "List is empty!" : "列表为空!")); + bannedList.append("\n").append(Main.config.generic.switchLanguageFromChinToEng ? "List is empty!" : "列表为空!"); } for (String name : Main.config.generic.bannedMinecraft) { @@ -253,17 +256,17 @@ public class DiscordEventListener extends ListenerAdapter { StringBuilder adminList = new StringBuilder("```\n=============== " + (Main.config.generic.switchLanguageFromChinToEng ? "Admin List" : "管理员名单") + " ===============\n\n" + (Main.config.generic.switchLanguageFromChinToEng ? "Super admins:" : "超级管理员:")); if (Main.config.generic.superAdminsIds.size() == 0) { - adminList.append("\n" + (Main.config.generic.switchLanguageFromChinToEng ? "List is empty!" : "列表为空!")); + adminList.append("\n").append(Main.config.generic.switchLanguageFromChinToEng ? "List is empty!" : "列表为空!"); } for (String id : Main.config.generic.superAdminsIds) { adminList.append("\n").append(id); } - adminList.append("\n\n" + (Main.config.generic.switchLanguageFromChinToEng ? "Admins:" : "普通管理员:")); + adminList.append("\n\n").append(Main.config.generic.switchLanguageFromChinToEng ? "Admins:" : "普通管理员:"); if (Main.config.generic.adminsIds.size() == 0) { - adminList.append("\n" + (Main.config.generic.switchLanguageFromChinToEng ? "List is empty!" : "列表为空!")); + adminList.append("\n").append(Main.config.generic.switchLanguageFromChinToEng ? "List is empty!" : "列表为空!"); } for (String name : Main.config.generic.adminsIds) { @@ -277,6 +280,17 @@ public class DiscordEventListener extends ListenerAdapter { LiteralText coloredText; LiteralText colorlessText; + e.getChannel().sendMessage(new EmbedBuilder() + .setTitle("Test") + .setColor(Color.red) + .setDescription("Description") + .addField("Title of field", "test of field", false) + .setAuthor("name", null, "https://blog.xujiayao.top/file/avatar.jpg") + .setFooter("Text", "https://github.com/zekroTJA/DiscordBot/blob/master/.websrc/zekroBot_Logo_-_round_small.png") + .setImage("https://github.com/zekroTJA/DiscordBot/blob/master/.websrc/logo%20-%20title.png") + .setThumbnail("https://github.com/zekroTJA/DiscordBot/blob/master/.websrc/logo%20-%20title.png") + .build()).queue(); + if (e.isWebhookMessage() || e.getAuthor().isBot()) { coloredText = new LiteralText(Main.texts.coloredText() .replace("%servername%", e.getAuthor().getName().substring(1, e.getAuthor().getName().indexOf("] "))) @@ -295,7 +309,6 @@ public class DiscordEventListener extends ListenerAdapter { .replace("\n", Main.texts.removeLineBreakFromDiscord() ? " " : "\n") + ((!e.getMessage().getAttachments().isEmpty()) ? " " : "") + ((!e.getMessage().getEmbeds().isEmpty()) ? " " : "")))); - colorlessText.setStyle(colorlessText.getStyle().withColor(TextColor.fromFormatting(Formatting.GRAY))); } else { coloredText = new LiteralText(Main.texts.coloredText() .replace("%servername%", "Discord") @@ -315,9 +328,10 @@ public class DiscordEventListener extends ListenerAdapter { .replace("\n", Main.texts.removeLineBreakFromDiscord() ? " " : "\n") + ((!e.getMessage().getAttachments().isEmpty()) ? " " : "") + ((!e.getMessage().getEmbeds().isEmpty()) ? " " : "")))); - colorlessText.setStyle(colorlessText.getStyle().withColor(TextColor.fromFormatting(Formatting.GRAY))); } + colorlessText.setStyle(colorlessText.getStyle().withColor(TextColor.fromFormatting(Formatting.GRAY))); + server.getPlayerManager().getPlayerList().forEach( serverPlayerEntity -> serverPlayerEntity.sendMessage(new LiteralText("").append(coloredText).append(colorlessText), false)); } diff --git a/src/main/java/top/xujiayao/mcdiscordchat/utils/Scoreboard.java b/src/main/java/top/xujiayao/mcdiscordchat/utils/Scoreboard.java index cecacad1..a1b963af 100644 --- a/src/main/java/top/xujiayao/mcdiscordchat/utils/Scoreboard.java +++ b/src/main/java/top/xujiayao/mcdiscordchat/utils/Scoreboard.java @@ -94,7 +94,7 @@ public class Scoreboard { } if (length == 0) { - output.append("\n" + (Main.config.generic.switchLanguageFromChinToEng ? "No result" : "无结果")); + output.append("\n").append(Main.config.generic.switchLanguageFromChinToEng ? "No result" : "无结果"); } output.append("\n```"); @@ -110,8 +110,7 @@ public class Scoreboard { } if (output == null) { - output = new StringBuilder("```\n=============== " + (Main.config.generic.switchLanguageFromChinToEng ? "Scoreboard" : "排行榜") + " ===============\n") - .append("\n" + (Main.config.generic.switchLanguageFromChinToEng ? "No result" : "无结果")) + output = new StringBuilder("```\n=============== " + (Main.config.generic.switchLanguageFromChinToEng ? "Scoreboard" : "排行榜") + " ===============\n").append("\n").append(Main.config.generic.switchLanguageFromChinToEng ? "No result" : "无结果") .append("\n```"); }