diff --git a/.idea/artifacts/OpenDiscordAuth.xml b/.idea/artifacts/OpenDiscordAuth.xml
index fded3f1..90752f9 100644
--- a/.idea/artifacts/OpenDiscordAuth.xml
+++ b/.idea/artifacts/OpenDiscordAuth.xml
@@ -11,4 +11,4 @@
-
\ No newline at end of file
+
diff --git a/.idea/libraries/libs.xml b/.idea/libraries/libs.xml
index 5c1e3fe..da52690 100644
--- a/.idea/libraries/libs.xml
+++ b/.idea/libraries/libs.xml
@@ -8,6 +8,8 @@
+
+
@@ -17,4 +19,4 @@
-
\ No newline at end of file
+
diff --git a/OpenDiscordAuth.iml b/OpenDiscordAuth.iml
index 4f247c4..6f93d7d 100644
--- a/OpenDiscordAuth.iml
+++ b/OpenDiscordAuth.iml
@@ -24,5 +24,6 @@
+
-
+
\ No newline at end of file
diff --git a/libs/adventure-key-4.14.0.jar b/libs/adventure-key-4.14.0.jar
new file mode 100644
index 0000000..9923b76
Binary files /dev/null and b/libs/adventure-key-4.14.0.jar differ
diff --git a/libs/adventure-text-serializer-plain-4.14.0.jar b/libs/adventure-text-serializer-plain-4.14.0.jar
new file mode 100644
index 0000000..bb6eebe
Binary files /dev/null and b/libs/adventure-text-serializer-plain-4.14.0.jar differ
diff --git a/resources/config.yml b/resources/config.yml
index cf9a06f..a4e9873 100644
--- a/resources/config.yml
+++ b/resources/config.yml
@@ -5,6 +5,7 @@ discordChatIdForTranslation: "ENTER CHAT ID HERE"
discordChatIdForLogs: "ENTER CHAT ID HERE"
chatPrefix: "ENTER CHAT PREFIX HERE"
enablePluginAutoUpdate: true
+enableSystemMessagesRetranslate: true
domainProviderInfo:
token: "ENTER DOMAIN PROVIDER TOKEN HERE"
@@ -40,6 +41,9 @@ message:
CommandMissingPermissions: "У вас недостаточно прав"
CommandSuccess: "Команда исполнена"
CommandError: "Ошибка"
- GlobalMessageFormat: '&7[&bG&7] [&3%prefix&7] &%color%displayname &9> &7%message'
+ GlobalMessageFormat: "&7[&bG&7] [&3%prefix&7] &%color%displayname &9> &7%message"
+ PlayerJoined: "$discordname joined the world"
+ PlayerLeft: "$discordname left the world"
+ PlayerAchievementReceive: "$discordname done advancement $achievementname ($achievementdescription)"
opIdsList: ["256114365894230018", "500020124515041283"]
diff --git a/resources/plugin.yml b/resources/plugin.yml
index c372f59..25596bb 100644
--- a/resources/plugin.yml
+++ b/resources/plugin.yml
@@ -1,6 +1,6 @@
name: OpenDiscordAuth
main: ru.fazziclay.opendiscordauth.Main
-version: 1.8.8
+version: 1.8.9
website: "https://github.com/BVN4/OpenDiscordAuth/"
authors: ["https://github.com/BVN4", "https://github.com/fazziclay/", "https://github.com/TheKing-OfTime"]
load: STARTUP
diff --git a/src/ru/fazziclay/opendiscordauth/Config.java b/src/ru/fazziclay/opendiscordauth/Config.java
index 69f424f..84461f5 100644
--- a/src/ru/fazziclay/opendiscordauth/Config.java
+++ b/src/ru/fazziclay/opendiscordauth/Config.java
@@ -8,6 +8,7 @@ public class Config {
public static String discordBotToken = Main.pluginConfig.getString("discordBotToken");
public static boolean enablePluginAutoUpdate = Main.pluginConfig.getBoolean("enablePluginAutoUpdate");
+ public static boolean enableSystemMessagesRetranslate = Main.pluginConfig.getBoolean("enableSystemMessagesRetranslate");
public static String accountsFilePath = Main.pluginConfig.getString("accountsFilePath");
public static int sessionExpiredDelay = Main.pluginConfig.getInt("sessionExpiredDelay");
@@ -37,6 +38,9 @@ public class Config {
public static String messageCommandMissingPermissions = Main.pluginConfig.getString("message.CommandMissingPermissions");
public static String messageCommandSuccess = Main.pluginConfig.getString("message.CommandSuccess");
public static String messageCommandError = Main.pluginConfig.getString("message.CommandError");
+ public static String messagePlayerJoined = Main.pluginConfig.getString("message.PlayerJoined");
+ public static String messagePlayerLeft = Main.pluginConfig.getString("message.PlayerLeft");
+ public static String messagePlayerAchievementReceive = Main.pluginConfig.getString("message.PlayerAchievementReceive");
public static String globalMessageFormat = Main.pluginConfig.getString("message.GlobalMessageFormat");
public static String domainProviderToken = Main.pluginConfig.getString("domainProviderInfo.token");
public static String domainProviderDomainName = Main.pluginConfig.getString("domainProviderInfo.domainName");
diff --git a/src/ru/fazziclay/opendiscordauth/ServerEvents.java b/src/ru/fazziclay/opendiscordauth/ServerEvents.java
index c9a2cf2..3d84ca2 100644
--- a/src/ru/fazziclay/opendiscordauth/ServerEvents.java
+++ b/src/ru/fazziclay/opendiscordauth/ServerEvents.java
@@ -1,17 +1,18 @@
package ru.fazziclay.opendiscordauth;
-import org.bukkit.Bukkit;
+import net.kyori.adventure.text.TranslatableComponent;
import org.bukkit.GameMode;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
-import org.bukkit.event.Event;
import org.bukkit.event.entity.EntityDamageEvent;
import org.bukkit.event.entity.EntityTargetEvent;
+import org.bukkit.event.entity.PlayerDeathEvent;
import org.bukkit.event.player.*;
import de.jeter.chatex.api.events.PlayerUsesGlobalChatEvent;
import ru.fazziclay.opendiscordauth.discordbot.DiscordBot;
+import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer;
import java.util.Objects;
@@ -28,7 +29,7 @@ public void onLogin(PlayerLoginEvent event) {
}
@EventHandler
- public void onPlayerJoin(PlayerJoinEvent event) {
+ public void onPlayerJoin(PlayerJoinEvent event) throws InterruptedException {
Utils.debug("[ServerEvents] onPlayerJoin(-)");
Player player = event.getPlayer();
@@ -55,16 +56,21 @@ public void onPlayerJoin(PlayerJoinEvent event) {
player.setGameMode(GameMode.SPECTATOR);
LoginManager.giveCode(uuid, nickname, player);
+ if (Config.enableSystemMessagesRetranslate) {
+ String displayName = event.getPlayer().getDisplayName().replaceAll("§.", "");
+ DiscordBot.webhook.sendMessage(Config.messagePlayerJoined.replace("$discordname", displayName));
+ }
DiscordBot.updateOnlineStatus(player, true);
}
@EventHandler
- public void onPlayerQuit(PlayerQuitEvent event) {
+ public void onPlayerQuit(PlayerQuitEvent event) throws InterruptedException {
Utils.debug("[ServerEvents] onPlayerQuit(-)");
Player player = event.getPlayer();
String uuid = player.getUniqueId().toString();
String nickname = player.getName();
+
String ip = Utils.getPlayerIp(player);
TempCode tempCode = TempCode.getByValue(2, nickname);
@@ -77,6 +83,10 @@ public void onPlayerQuit(PlayerQuitEvent event) {
Session.update(nickname, ip);
}
LoginManager.notAuthorizedPlayers.remove(uuid);
+ if (Config.enableSystemMessagesRetranslate) {
+ String displayName = event.getPlayer().getDisplayName().replaceAll("§.", "");
+ DiscordBot.webhook.sendMessage(Config.messagePlayerLeft.replace("$discordname", displayName));
+ }
DiscordBot.updateOnlineStatus(player, false);
}
@@ -156,4 +166,33 @@ public void onDamage(EntityDamageEvent event) {
if (!isAuthorized) event.setCancelled(true);
}
}
+
+ @EventHandler
+ public void onPlayerAdvancementDoneEvent(PlayerAdvancementDoneEvent event) throws InterruptedException {
+ if (Config.enableSystemMessagesRetranslate) {
+ io.papermc.paper.advancement.AdvancementDisplay advancementInfo = event.getAdvancement().getDisplay();
+ if (Objects.isNull(advancementInfo)) return;
+ if (advancementInfo.doesAnnounceToChat()) {
+ String title = PlainTextComponentSerializer.plainText().serialize(advancementInfo.title());
+ String description = PlainTextComponentSerializer.plainText().serialize(advancementInfo.description());
+ String displayName = event.getPlayer().getDisplayName().replaceAll("§.", "");
+
+ DiscordBot.webhook.sendMessage(
+ Config.messagePlayerAchievementReceive
+ .replace("$discordname", displayName)
+ .replace("$achievementname", title)
+ .replace("$achievementdescription", description)
+ );
+ }
+ }
+ }
+
+ @EventHandler
+ public void onPlayerDeathEvent(PlayerDeathEvent event) throws InterruptedException {
+ if (Config.enableSystemMessagesRetranslate) {
+ String deathMessage = PlainTextComponentSerializer.plainText().serialize(event.deathMessage());
+ String displayName = event.getPlayer().getDisplayName().replaceAll("§.", "");
+ DiscordBot.webhook.sendMessage(deathMessage.replace(event.getPlayer().getName(), displayName));
+ }
+ }
}
diff --git a/src/ru/fazziclay/opendiscordauth/UpdateChecker.java b/src/ru/fazziclay/opendiscordauth/UpdateChecker.java
index b6d6804..2f674df 100644
--- a/src/ru/fazziclay/opendiscordauth/UpdateChecker.java
+++ b/src/ru/fazziclay/opendiscordauth/UpdateChecker.java
@@ -17,6 +17,7 @@ public class UpdateChecker {
public static Version lastVersion;
public static String lastVersionDownloadURL = "null";
public static String lastVersionDownloadPageURL = "null";
+ public static String lastVersionPathNotes = "null";
public static float lastVersionSize = 0;
public static boolean isLastVersionRelease = false;
public static boolean isAwaitingForRestart = false;
@@ -61,6 +62,7 @@ public static boolean checkUpdates() {
lastVersion = Version.parse(release.getString("name"));
isLastVersionRelease = !release.getBoolean("prerelease");
lastVersionDownloadPageURL = release.getString("html_url");
+ lastVersionPathNotes = release.getString("body");
lastVersionDownloadURL = release.getJSONArray("assets")
.getJSONObject(0)
.getString("browser_download_url");
diff --git a/src/ru/fazziclay/opendiscordauth/WebhookClient.java b/src/ru/fazziclay/opendiscordauth/WebhookClient.java
index 437449c..2def923 100644
--- a/src/ru/fazziclay/opendiscordauth/WebhookClient.java
+++ b/src/ru/fazziclay/opendiscordauth/WebhookClient.java
@@ -3,6 +3,7 @@
import net.dv8tion.jda.api.entities.Webhook;
import org.bukkit.Bukkit;
import org.json.JSONObject;
+import ru.fazziclay.opendiscordauth.discordbot.DiscordBot;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
@@ -31,17 +32,16 @@ public void sendMessage(String message, String name, String avatar_url) throws I
.header("content-type", "application/json")
.header("Authorization", Config.discordBotToken)
.build();
- //Bukkit.getLogger().info(request.toString());
- //Bukkit.getLogger().info(body);
HttpResponse response = null;
try {
response = httpclient.send(request, HttpResponse.BodyHandlers.ofString());
- //Bukkit.getLogger().info(response.statusCode() + " " + response.body());
} catch (IOException e) {
Bukkit.getLogger().info(e.getMessage());
}
+ }
-
+ public void sendMessage(String message) throws InterruptedException {
+ this.sendMessage(message, "[$prefix] System".replace("$prefix", Config.chatPrefix), DiscordBot.bot.getSelfUser().getAvatarUrl());
}
private String getRequestBody(String message, String name, String avatar_url) {
diff --git a/src/ru/fazziclay/opendiscordauth/checkupdates/CheckUpdatesController.java b/src/ru/fazziclay/opendiscordauth/checkupdates/CheckUpdatesController.java
index 093d05a..a5b32e4 100644
--- a/src/ru/fazziclay/opendiscordauth/checkupdates/CheckUpdatesController.java
+++ b/src/ru/fazziclay/opendiscordauth/checkupdates/CheckUpdatesController.java
@@ -1,9 +1,11 @@
package ru.fazziclay.opendiscordauth.checkupdates;
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
+import net.dv8tion.jda.api.events.interaction.component.ButtonInteractionEvent;
+import net.dv8tion.jda.api.interactions.components.buttons.Button;
+
import org.jetbrains.annotations.NotNull;
import ru.fazziclay.opendiscordauth.UpdateChecker;
-import ru.fazziclay.opendiscordauth.Utils;
import ru.fazziclay.opendiscordauth.discordbot.Controller;
import java.math.BigDecimal;
@@ -25,7 +27,12 @@ public void eventHandle(@NotNull SlashCommandInteractionEvent event) {
event.getHook().editOriginal("⌛ Поиск обновлений...").queue();
if (!UpdateChecker.checkUpdates()) {
- event.getHook().editOriginal("✅ Обновления не найдены").queue();
+ event.getHook().editOriginal(String.format("✅ Обновления не найдены\nТекущая версия: `%s`", UpdateChecker.thisVersion))
+ .setActionRow(
+ Button.secondary("showPatchNotes", "Что нового?"),
+ Button.link(UpdateChecker.lastVersionDownloadPageURL, "Страница релиза")
+ )
+ .queue();
return;
}
@@ -43,7 +50,20 @@ public void eventHandle(@NotNull SlashCommandInteractionEvent event) {
status
? "✅ Обновление загружено\nℹ Перезапустите сервер для применения обновлений"
: "⛔ Не удалось загрузить обновление";
+ event.getHook().editOriginal(substring + downloadStatusString)
+ .setActionRow(
+ status ? Button.secondary("showPatchNotes", "Что нового?") : null,
+ status ? Button.link(UpdateChecker.lastVersionDownloadPageURL, "Страница релиза") : null
+ )
+ .queue();
+}
- event.getHook().editOriginal(substring + downloadStatusString).queue();
+ public void eventHandle(@NotNull ButtonInteractionEvent event) {
+ String cid = event.getComponentId();
+ if ("showPatchNotes".equals(cid)) {
+ event.reply(UpdateChecker.lastVersionPathNotes)
+ .setEphemeral(true)
+ .queue();
+ }
}
}
diff --git a/src/ru/fazziclay/opendiscordauth/discordbot/DiscordBot.java b/src/ru/fazziclay/opendiscordauth/discordbot/DiscordBot.java
index 2ddeddb..9eea7fb 100644
--- a/src/ru/fazziclay/opendiscordauth/discordbot/DiscordBot.java
+++ b/src/ru/fazziclay/opendiscordauth/discordbot/DiscordBot.java
@@ -8,6 +8,7 @@
import net.dv8tion.jda.api.entities.channel.concrete.TextChannel;
import net.dv8tion.jda.api.entities.channel.middleman.MessageChannel;
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
+import net.dv8tion.jda.api.events.interaction.component.ButtonInteractionEvent;
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
import net.dv8tion.jda.api.events.session.ReadyEvent;
import net.dv8tion.jda.api.hooks.ListenerAdapter;
@@ -113,6 +114,14 @@ public void onSlashCommandInteraction(@NotNull SlashCommandInteractionEvent even
}
}
+ @Override
+ public void onButtonInteraction(@NotNull ButtonInteractionEvent event) {
+
+ switch (event.getComponentId()) {
+ case ("showPatchNotes") -> check_updates.eventHandle(event);
+ }
+ }
+
@Override
public void onReady(@NotNull ReadyEvent event) {
Bukkit.getLogger().info(DiscordBot.bot.getSelfUser().getAsTag());