diff --git a/.idea/artifacts/DiscordAuthorizator_jar.xml b/.idea/artifacts/DiscordAuthorizator_jar.xml
index 648e32c..7bc10cc 100644
--- a/.idea/artifacts/DiscordAuthorizator_jar.xml
+++ b/.idea/artifacts/DiscordAuthorizator_jar.xml
@@ -1,24 +1,26 @@
- $USER_HOME$/mineconomia/dev-server/plugins
+ $USER_HOME$/Plocha/dev-server/plugins
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
-
-
+
+
\ No newline at end of file
diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml
index 79937a3..e522458 100644
--- a/.idea/inspectionProfiles/Project_Default.xml
+++ b/.idea/inspectionProfiles/Project_Default.xml
@@ -1,6 +1,9 @@
+
+
+
diff --git a/pom.xml b/pom.xml
index 2f76c9e..752f829 100644
--- a/pom.xml
+++ b/pom.xml
@@ -79,5 +79,10 @@
+
+ club.minnced
+ discord-webhooks
+ 0.8.4
+
diff --git a/src/main/java/xyz/soukup/discordauthorizator/DiscordAuthorizator.java b/src/main/java/xyz/soukup/discordauthorizator/DiscordAuthorizator.java
index 2a19d44..6df4ca9 100644
--- a/src/main/java/xyz/soukup/discordauthorizator/DiscordAuthorizator.java
+++ b/src/main/java/xyz/soukup/discordauthorizator/DiscordAuthorizator.java
@@ -4,10 +4,8 @@ import net.dv8tion.jda.api.EmbedBuilder;
import net.dv8tion.jda.api.JDA;
import net.dv8tion.jda.api.JDABuilder;
import net.dv8tion.jda.api.Permission;
-import net.dv8tion.jda.api.entities.Activity;
-import net.dv8tion.jda.api.entities.Message;
-import net.dv8tion.jda.api.entities.Role;
-import net.dv8tion.jda.api.entities.User;
+import net.dv8tion.jda.api.entities.*;
+import net.dv8tion.jda.api.entities.channel.concrete.TextChannel;
import net.dv8tion.jda.api.interactions.commands.DefaultMemberPermissions;
import net.dv8tion.jda.api.interactions.commands.OptionType;
import net.dv8tion.jda.api.interactions.commands.build.Commands;
@@ -21,33 +19,41 @@ import xyz.soukup.discordauthorizator.commands.*;
import xyz.soukup.discordauthorizator.events.*;
import java.awt.*;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Objects;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.util.*;
+import java.util.List;
import java.util.logging.Logger;
public final class DiscordAuthorizator extends JavaPlugin {
public static HashMap playerColor = new HashMap<>();
public static HashMap playerRole = new HashMap<>();
+ public static HashMap webHooks = new HashMap<>();
private static JDA jda;
@Override
public void onEnable() {
saveDefaultConfig();
+
DiscordAuthorizator plugin = this;
+
FileConfiguration config = plugin.getConfig();
+
Logger logger = Bukkit.getLogger();
+
logger.info("Plugin DiscordAuthorizator starting...");
+ //JDA Inicializace
jda = JDABuilder.createDefault(config.getString("token"))
.addEventListeners(new link())
.addEventListeners(new authorize())
.addEventListeners(new DiscordSendMessage())
.addEventListeners(new voting())
+ .addEventListeners(new initializeCrossChat())
.enableIntents(GatewayIntent.GUILD_MEMBERS)
.enableIntents(GatewayIntent.GUILD_MESSAGES)
.enableIntents(GatewayIntent.MESSAGE_CONTENT)
+
.build();
jda.updateCommands().addCommands(
Commands.slash("authorize", "autorizuje novou ip"),
@@ -63,24 +69,30 @@ public final class DiscordAuthorizator extends JavaPlugin {
).queue();
jda.getPresence().setActivity(Activity.customStatus("Nikdo na serveru"));
+
+ //Event Inicializace
Bukkit.getPluginManager().registerEvents(new playerLogin(),this );
Bukkit.getPluginManager().registerEvents(new playerLeave(),this );
Bukkit.getPluginManager().registerEvents(new playerJoin(), this);
Bukkit.getPluginManager().registerEvents(new playerDie(),this );
-
Bukkit.getPluginManager().registerEvents(new ChatEvent(), this);
+
+ //Command Inicializace
Objects.requireNonNull(this.getCommand("msg")).setExecutor(new msg());
- Objects.requireNonNull(this.getCommand("msg")).setTabCompleter(new msg());
Objects.requireNonNull(this.getCommand("r")).setExecutor(new r());
+
+
+ //TAB Complete Initialize
+ Objects.requireNonNull(this.getCommand("msg")).setTabCompleter(new msg());
Objects.requireNonNull(this.getCommand("r")).setTabCompleter(new r());
}
+
+
@Override
public void onDisable() {
saveConfig();
-
-
for(Map.Entry> entry : voting.activeVotings.entrySet()) {
HashMap voteData = entry.getValue();
Message message = entry.getKey();
@@ -96,11 +108,19 @@ public final class DiscordAuthorizator extends JavaPlugin {
message.editMessageComponents().queue();
message.editMessageEmbeds(eb.build()).queue();
}
+
+ for (String webhookUrl : webHooks.values()){
+ deleteWebhook(getWebhookID(webhookUrl));
+ }
+
jda.shutdown();
}
public static JDA getJDA() {
return jda;
}
+
+
+
public static ChatColor convertToChatColor(Color color) {
// Extract RGB components
int red = color.getRed();
@@ -124,4 +144,35 @@ public final class DiscordAuthorizator extends JavaPlugin {
jda.getPresence().setActivity(Activity.customStatus(status));
}
+ public static String getWebhookID(String webhookUrl){
+ try {
+ // Parse the webhook URL
+ URI uri = new URI(webhookUrl);
+ String[] parts = uri.getPath().split("/");
+
+ // The ID and token are the last two parts of the path
+ String webhookId = parts[parts.length - 2];
+
+ System.out.println("Webhook ID: " + webhookId);
+
+ // Now you can use these to delete the webhook
+ return webhookId;
+ } catch (URISyntaxException e) {
+ return null;
+ }
+ }
+
+ private static void deleteWebhook(String webhookId) {
+
+ jda.retrieveWebhookById(webhookId).queue(webhook -> {
+ webhook.delete().queue(
+ success -> System.out.println("Webhook deleted successfully!"),
+ failure -> System.err.println("Failed to delete webhook: " + failure.getMessage())
+ );
+ }, failure -> {
+ System.err.println("Failed to retrieve webhook: " + failure.getMessage());
+ });
+ }
+
+
}
diff --git a/src/main/java/xyz/soukup/discordauthorizator/WebHooks.java b/src/main/java/xyz/soukup/discordauthorizator/WebHooks.java
new file mode 100644
index 0000000..24b3a86
--- /dev/null
+++ b/src/main/java/xyz/soukup/discordauthorizator/WebHooks.java
@@ -0,0 +1,38 @@
+package xyz.soukup.discordauthorizator;
+
+import club.minnced.discord.webhook.WebhookClient;
+import club.minnced.discord.webhook.send.WebhookEmbed;
+import club.minnced.discord.webhook.send.WebhookMessage;
+import club.minnced.discord.webhook.send.WebhookMessageBuilder;
+
+public class WebHooks {
+
+ public static void send(String WebHookURL, String name, String avatarURL, WebhookEmbed embed){
+ WebhookClient client = WebhookClient.withUrl(WebHookURL);
+ WebhookMessage message = new WebhookMessageBuilder()
+ .addEmbeds(embed)
+ .setUsername(name)
+ .setAvatarUrl(avatarURL)
+ .build();
+ client.send(message);
+ }
+ public static void send(String WebHookURL, String name, String avatarURL, String content){
+ WebhookClient client = WebhookClient.withUrl(WebHookURL);
+ WebhookMessage message = new WebhookMessageBuilder()
+ .setContent(content)
+ .setUsername(name)
+ .setAvatarUrl(avatarURL)
+ .build();
+ client.send(message);
+ }
+ public static void sendToAll(String name, String avatarURL, WebhookEmbed embed){
+ for (String url : DiscordAuthorizator.webHooks.values()){
+ send(url, name, avatarURL, embed);
+ }
+ }
+ public static void sendToAll(String name, String avatarURL, String content){
+ for (String url : DiscordAuthorizator.webHooks.values()){
+ send(url, name, avatarURL, content);
+ }
+ }
+}
diff --git a/src/main/java/xyz/soukup/discordauthorizator/commands/authorize.java b/src/main/java/xyz/soukup/discordauthorizator/commands/authorize.java
index fc1b344..d6ce9d2 100644
--- a/src/main/java/xyz/soukup/discordauthorizator/commands/authorize.java
+++ b/src/main/java/xyz/soukup/discordauthorizator/commands/authorize.java
@@ -1,6 +1,7 @@
package xyz.soukup.discordauthorizator.commands;
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
+import net.dv8tion.jda.api.events.interaction.component.ButtonInteractionEvent;
import net.dv8tion.jda.api.hooks.ListenerAdapter;
import org.bukkit.configuration.file.FileConfiguration;
import xyz.soukup.discordauthorizator.DiscordAuthorizator;
@@ -26,4 +27,22 @@ public class authorize extends ListenerAdapter {
}
}
+ public void onButtonInteraction(ButtonInteractionEvent event) {
+ if (!event.getComponentId().equals("addIP")){
+ return;
+ }
+ if (playerLogin.ipToAdd.containsKey(event.getUser().getId())){
+ List pp = playerLogin.ipToAdd.get(event.getUser().getId());
+ FileConfiguration config = DiscordAuthorizator.getPlugin(DiscordAuthorizator.class).getConfig();
+ List ipList = config.getStringList("players." + pp.get(0) + ".authorized-ips");
+ ipList.add(pp.get(1));
+
+ config.set("players." + pp.get(0) + ".authorized-ips", ipList);
+ DiscordAuthorizator.getPlugin(DiscordAuthorizator.class).saveConfig();
+ event.reply("IP přidána").setEphemeral(true).queue();
+ }else{
+ event.reply("Nemáš žádné IP adresy k přidání").setEphemeral(true).queue();
+ }
+ }
+
}
diff --git a/src/main/java/xyz/soukup/discordauthorizator/commands/link.java b/src/main/java/xyz/soukup/discordauthorizator/commands/link.java
index 08039e4..92d75bf 100644
--- a/src/main/java/xyz/soukup/discordauthorizator/commands/link.java
+++ b/src/main/java/xyz/soukup/discordauthorizator/commands/link.java
@@ -18,22 +18,27 @@ import java.awt.*;
import java.util.List;
import java.util.Objects;
+import static xyz.soukup.discordauthorizator.DiscordAuthorizator.getJDA;
+
public class link extends ListenerAdapter {
public void onSlashCommandInteraction(SlashCommandInteractionEvent event) {
if (event.getName().equals("link")) {
- TextInput subject = TextInput.create("username", "Tvůj minecraft nicK:", TextInputStyle.SHORT)
+ TextInput username = TextInput.create("username", "Tvůj minecraft nicK:", TextInputStyle.SHORT)
.setPlaceholder("PVPMaster666")
.setMaxLength(16) // or setRequiredRange(10, 100)
.build();
- TextInput body = TextInput.create("code", "Verifikační kód", TextInputStyle.PARAGRAPH)
+ TextInput code = TextInput.create("code", "Verifikační kód", TextInputStyle.SHORT)
.setPlaceholder("1234")
.setMaxLength(4)
.setMinLength(4)
.build();
-
+ TextInput invitedby = TextInput.create("invitedby", "Jak si na nás narazil?", TextInputStyle.PARAGRAPH)
+ .setPlaceholder("kámoš, server list, spolupráce, jiný discord...")
+ .setMaxLength(100)
+ .build();
Modal modal = Modal.create("linkdialog", "Propojení minecraft účtu")
- .addComponents(ActionRow.of(subject), ActionRow.of(body))
+ .addComponents(ActionRow.of(username), ActionRow.of(code), ActionRow.of(invitedby))
.build();
event.replyModal(modal).queue();
@@ -47,7 +52,9 @@ public class link extends ListenerAdapter {
FileConfiguration config = DiscordAuthorizator.getPlugin(DiscordAuthorizator.class).getConfig();
config.set("players." + answers.get(0).getAsString() + ".authorized-ips", List.of(playerLogin.playersToVerify.get(answers.get(0).getAsString()).get(0)));
config.set("players." +answers.get(0).getAsString() + ".discord", event.getUser().getId());
- Objects.requireNonNull(event.getGuild()).addRoleToMember(Objects.requireNonNull(event.getMember()), Objects.requireNonNull(event.getGuild().getRoleById("1236632859200983141"))).queue();
+ if (Objects.requireNonNull(event.getGuild()).getId().equals(config.getString("guild"))){
+ Objects.requireNonNull(event.getGuild()).addRoleToMember(Objects.requireNonNull(event.getMember()), Objects.requireNonNull(event.getGuild().getRoleById("1236632859200983141"))).queue();
+ }
playerLogin.playersToVerify.remove(answers.get(0).getAsString());
MessageEmbed embed = new EmbedBuilder()
.setTitle("Propojeno.")
@@ -56,6 +63,12 @@ public class link extends ListenerAdapter {
.build();
DiscordAuthorizator.getPlugin(DiscordAuthorizator.class).saveConfig();
event.replyEmbeds(embed).setEphemeral(true).queue();
+ Objects.requireNonNull(getJDA().getTextChannelById(Objects.requireNonNull(config.getString("admin-channel")))).sendMessage("**Nový hráč!** " +
+ "\nDiscord: `" + event.getUser().getName() +
+ "` \nMinecraft: `" + answers.get(0).getAsString() +
+ "` \nGuild: `" + event.getGuild().getName() +
+ "` \nOdkud: `" + answers.get(2).getAsString() + "`"
+ ).queue();
}else {
MessageEmbed embed = new EmbedBuilder()
.setTitle("Špatný kód.")
diff --git a/src/main/java/xyz/soukup/discordauthorizator/events/ChatEvent.java b/src/main/java/xyz/soukup/discordauthorizator/events/ChatEvent.java
index abb0f0b..00fc93b 100644
--- a/src/main/java/xyz/soukup/discordauthorizator/events/ChatEvent.java
+++ b/src/main/java/xyz/soukup/discordauthorizator/events/ChatEvent.java
@@ -12,6 +12,7 @@ import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.AsyncPlayerChatEvent;
import xyz.soukup.discordauthorizator.DiscordAuthorizator;
+import xyz.soukup.discordauthorizator.WebHooks;
import java.awt.*;
import java.util.Objects;
@@ -44,9 +45,8 @@ public class ChatEvent implements Listener {
messageComponent.addExtra(nameComponent);
messageComponent.addExtra(ChatColor.WHITE + event.getMessage());
event.setCancelled(true);
- JDA jda = DiscordAuthorizator.getJDA();
- FileConfiguration config = DiscordAuthorizator.getPlugin(DiscordAuthorizator.class).getConfig();
- Objects.requireNonNull(jda.getTextChannelById(Objects.requireNonNull(config.getString("chat-channel")))).sendMessage("**" + playerName +"**: " + event.getMessage()).queue();
+ String avatar = "https://mc-heads.net/avatar/" + playerName;
+ WebHooks.sendToAll(playerName, avatar, event.getMessage());
DiscordAuthorizator.getPlugin(DiscordAuthorizator.class).getLogger().info(event.getPlayer().getDisplayName() + ": " + event.getMessage());
for (Player p: Bukkit.getOnlinePlayers()){
p.spigot().sendMessage(messageComponent);
diff --git a/src/main/java/xyz/soukup/discordauthorizator/events/DiscordSendMessage.java b/src/main/java/xyz/soukup/discordauthorizator/events/DiscordSendMessage.java
index 407c949..514e79b 100644
--- a/src/main/java/xyz/soukup/discordauthorizator/events/DiscordSendMessage.java
+++ b/src/main/java/xyz/soukup/discordauthorizator/events/DiscordSendMessage.java
@@ -1,5 +1,6 @@
package xyz.soukup.discordauthorizator.events;
+import net.dv8tion.jda.api.entities.User;
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
import net.dv8tion.jda.api.hooks.ListenerAdapter;
import net.md_5.bungee.api.chat.ComponentBuilder;
@@ -13,15 +14,25 @@ import xyz.soukup.discordauthorizator.DiscordAuthorizator;
import java.util.Objects;
+import static xyz.soukup.discordauthorizator.WebHooks.send;
+
public class DiscordSendMessage extends ListenerAdapter {
public void onMessageReceived(MessageReceivedEvent event){
FileConfiguration config = DiscordAuthorizator.getPlugin(DiscordAuthorizator.class).getConfig();
- if (event.getChannel().getId().equals(config.getString("chat-channel")) && !event.getAuthor().isBot()){
+ if (DiscordAuthorizator.webHooks.containsKey(event.getChannel().getId()) && !event.getAuthor().isBot()){
TextComponent content = new TextComponent(event.getMessage().getContentStripped());
TextComponent sentFromDiscord = new TextComponent(net.md_5.bungee.api.ChatColor.DARK_PURPLE + "[D] ");
- sentFromDiscord.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder(ChatColor.LIGHT_PURPLE + "Odesláno z discordu").create()));
+ sentFromDiscord.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder(ChatColor.LIGHT_PURPLE + "Odesláno z oficiálního discordu").create()));
+ if (!event.getGuild().getId().equals(config.getString("guild"))){
+ sentFromDiscord.setText(net.md_5.bungee.api.ChatColor.DARK_PURPLE + "[PD] ");
+ sentFromDiscord.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder(ChatColor.LIGHT_PURPLE + "Odesláno z partnerského discordu").create()));
+
+ }
TextComponent name = new TextComponent(event.getAuthor().getName() + ": ");
- name.setColor(DiscordAuthorizator.convertToChatColor(Objects.requireNonNull(Objects.requireNonNull(event.getMember()).getColor())));
+ if (Objects.requireNonNull(event.getMember()).getColor() != null){
+
+ name.setColor(DiscordAuthorizator.convertToChatColor(Objects.requireNonNull(Objects.requireNonNull(event.getMember()).getColor())));
+ }
TextComponent message = new TextComponent();
message.addExtra(sentFromDiscord);
message.addExtra(name);
@@ -29,6 +40,15 @@ public class DiscordSendMessage extends ListenerAdapter {
for (Player p: Bukkit.getOnlinePlayers()){
p.spigot().sendMessage(message);
}
+ User author = event.getAuthor();
+ String serverNickname = config.getString("channels." + event.getChannel().getId());
+ for(String channel : DiscordAuthorizator.webHooks.keySet()){
+ if (channel.equals(event.getChannel().getId())){
+ continue;
+ }
+
+ send(DiscordAuthorizator.webHooks.get(channel), author.getName() + " (" + serverNickname +")", author.getAvatarUrl(), event.getMessage().getContentRaw());
+ }
}
}
}
diff --git a/src/main/java/xyz/soukup/discordauthorizator/events/initializeCrossChat.java b/src/main/java/xyz/soukup/discordauthorizator/events/initializeCrossChat.java
new file mode 100644
index 0000000..08dee6c
--- /dev/null
+++ b/src/main/java/xyz/soukup/discordauthorizator/events/initializeCrossChat.java
@@ -0,0 +1,48 @@
+package xyz.soukup.discordauthorizator.events;
+
+import net.dv8tion.jda.api.JDA;
+import net.dv8tion.jda.api.entities.Guild;
+import net.dv8tion.jda.api.entities.channel.concrete.TextChannel;
+import net.dv8tion.jda.api.events.session.ReadyEvent;
+import net.dv8tion.jda.api.hooks.ListenerAdapter;
+import org.bukkit.Bukkit;
+import org.bukkit.configuration.file.FileConfiguration;
+import org.jetbrains.annotations.NotNull;
+import xyz.soukup.discordauthorizator.DiscordAuthorizator;
+
+import java.util.HashMap;
+import java.util.Objects;
+import java.util.Set;
+import java.util.logging.Logger;
+
+import static xyz.soukup.discordauthorizator.DiscordAuthorizator.webHooks;
+
+public class initializeCrossChat extends ListenerAdapter {
+ @Override
+ public void onReady(@NotNull ReadyEvent event){
+ JDA jda = DiscordAuthorizator.getJDA();
+ DiscordAuthorizator plugin = DiscordAuthorizator.getPlugin(DiscordAuthorizator.class);
+ FileConfiguration config = plugin.getConfig();
+ Logger logger = plugin.getLogger();
+
+
+ //JDA CrossChat WebHook Initialization
+ Set channels = Objects.requireNonNull(config.getConfigurationSection("channels")).getKeys(false);
+ for(String channelID : channels){
+ logger.info(channelID);
+ TextChannel channel = jda.getTextChannelById(channelID);
+ String channelNickname = config.getString("channels." + channelID);
+ if (channel == null){
+ logger.info("not exist");
+ continue;
+ }
+ channel.createWebhook("Server KNKS").queue((createdWebhook)->{
+ Guild guild = createdWebhook.getGuild();
+ String name = guild.getName();
+ webHooks.put(channelID, createdWebhook.getUrl());
+ logger.info("Vytvořen webhook pro: " + name + " Nickname: " + channelNickname);
+ });
+
+ }
+ }
+}
diff --git a/src/main/java/xyz/soukup/discordauthorizator/events/playerDie.java b/src/main/java/xyz/soukup/discordauthorizator/events/playerDie.java
index 0f6a05e..6f2b489 100644
--- a/src/main/java/xyz/soukup/discordauthorizator/events/playerDie.java
+++ b/src/main/java/xyz/soukup/discordauthorizator/events/playerDie.java
@@ -1,5 +1,7 @@
package xyz.soukup.discordauthorizator.events;
+import club.minnced.discord.webhook.send.WebhookEmbed;
+import club.minnced.discord.webhook.send.WebhookEmbedBuilder;
import net.dv8tion.jda.api.EmbedBuilder;
import net.dv8tion.jda.api.JDA;
import org.bukkit.configuration.file.FileConfiguration;
@@ -7,6 +9,7 @@ import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.PlayerDeathEvent;
import xyz.soukup.discordauthorizator.DiscordAuthorizator;
+import xyz.soukup.discordauthorizator.WebHooks;
import java.awt.*;
import java.util.Objects;
@@ -14,12 +17,12 @@ import java.util.Objects;
public class playerDie implements Listener {
@EventHandler
public void playerDied(PlayerDeathEvent event){
- JDA jda = DiscordAuthorizator.getJDA();
- EmbedBuilder eb = new EmbedBuilder();
- eb.setColor(Color.DARK_GRAY);
- eb.setAuthor(event.getDeathMessage(), null, "https://mc-heads.net/avatar/" + event.getEntity().getDisplayName());
- FileConfiguration config = DiscordAuthorizator.getPlugin(DiscordAuthorizator.class).getConfig();
- Objects.requireNonNull(jda.getTextChannelById(Objects.requireNonNull(config.getString("chat-channel")))).sendMessageEmbeds(eb.build()).queue();
+ String playerName = event.getEntity().getDisplayName();
+ WebhookEmbedBuilder eb = new WebhookEmbedBuilder();
+ eb.setColor(0x424242);
+ String avatar = "https://mc-heads.net/avatar/" + playerName;
+ eb.setAuthor(new WebhookEmbed.EmbedAuthor(Objects.requireNonNull(event.getDeathMessage()), avatar, avatar));
+ WebHooks.sendToAll(playerName, avatar, eb.build());
}
}
diff --git a/src/main/java/xyz/soukup/discordauthorizator/events/playerJoin.java b/src/main/java/xyz/soukup/discordauthorizator/events/playerJoin.java
index 2c26144..ed0999f 100644
--- a/src/main/java/xyz/soukup/discordauthorizator/events/playerJoin.java
+++ b/src/main/java/xyz/soukup/discordauthorizator/events/playerJoin.java
@@ -1,10 +1,13 @@
package xyz.soukup.discordauthorizator.events;
+import club.minnced.discord.webhook.send.WebhookEmbed;
+import club.minnced.discord.webhook.send.WebhookEmbedBuilder;
import net.dv8tion.jda.api.EmbedBuilder;
import net.dv8tion.jda.api.JDA;
import net.dv8tion.jda.api.entities.Guild;
+import net.dv8tion.jda.api.entities.Webhook;
+import net.md_5.bungee.api.ChatColor;
import org.bukkit.Bukkit;
-import org.bukkit.ChatColor;
import org.bukkit.Color;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.event.EventHandler;
@@ -12,12 +15,14 @@ import org.bukkit.event.Listener;
import org.bukkit.event.player.AsyncPlayerPreLoginEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import xyz.soukup.discordauthorizator.DiscordAuthorizator;
+import xyz.soukup.discordauthorizator.WebHooks;
import java.util.Objects;
public class playerJoin implements Listener {
@EventHandler
public void playerQuit(PlayerJoinEvent event){
+ String playerName = event.getPlayer().getDisplayName();
Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(DiscordAuthorizator.getPlugin(DiscordAuthorizator.class), new Runnable(){
@Override
public void run(){
@@ -28,28 +33,32 @@ public class playerJoin implements Listener {
JDA jda = DiscordAuthorizator.getJDA();
Guild guild = jda.getGuildById(Objects.requireNonNull(config.getString("guild")));
assert guild != null;
- String id = config.getString("players." + event.getPlayer().getDisplayName() + ".discord");
+ String id = config.getString("players." + playerName + ".discord");
assert id != null;
Color color;
guild.retrieveMemberById(id).queue(
member -> {
+
net.md_5.bungee.api.ChatColor memberColor = DiscordAuthorizator.convertToChatColor(Objects.requireNonNull(member.getColor()));
- DiscordAuthorizator.playerColor.put(event.getPlayer().getDisplayName(), memberColor);
- DiscordAuthorizator.playerRole.put(event.getPlayer().getDisplayName(), member.getRoles().get(0));
+ DiscordAuthorizator.playerColor.put(playerName, memberColor);
+ DiscordAuthorizator.playerRole.put(playerName, member.getRoles().get(0));
DiscordAuthorizator.updateStatus();
- EmbedBuilder eb = new EmbedBuilder();
- eb.setColor(java.awt.Color.GREEN);
- eb.setAuthor("Hráč " + event.getPlayer().getDisplayName() + " se připojil", null, "https://mc-heads.net/avatar/" + event.getPlayer().getDisplayName());
- Objects.requireNonNull(jda.getTextChannelById(Objects.requireNonNull(config.getString("chat-channel")))).sendMessageEmbeds(eb.build()).queue();
+ WebhookEmbedBuilder eb = new WebhookEmbedBuilder();
+ eb.setColor(0x36d900);
+ String avatar = "https://mc-heads.net/avatar/" + playerName;
+ eb.setAuthor(new WebhookEmbed.EmbedAuthor("Hráč " + playerName + " se připojil", avatar, avatar));
+ WebHooks.sendToAll(playerName, avatar, eb.build());
},
throwable -> {
- // Error: Member was not found or an error occurred
- String kickMessage = "&6&lK&f&lN&6&lK&f&lS"
- + "\n\n&c&lNejsi na našem discordu"
- + "\n\n&fPro hraní na našem server se musíš připojit na discord:"
- + "&bdiscord.gg/EK2n7TEQ4H";
- event.getPlayer().kickPlayer(ChatColor.translateAlternateColorCodes('&', kickMessage));
+ net.md_5.bungee.api.ChatColor memberColor = ChatColor.GRAY;
+ DiscordAuthorizator.playerColor.put(playerName, memberColor);
+ DiscordAuthorizator.updateStatus();
+ WebhookEmbedBuilder eb = new WebhookEmbedBuilder();
+ eb.setColor(0x36d900);
+ String avatar = "https://mc-heads.net/avatar/" + playerName;
+ eb.setAuthor(new WebhookEmbed.EmbedAuthor("Hráč " + playerName + " se připojil", avatar, avatar));
+ WebHooks.sendToAll(playerName, avatar, eb.build());
}
);
diff --git a/src/main/java/xyz/soukup/discordauthorizator/events/playerLeave.java b/src/main/java/xyz/soukup/discordauthorizator/events/playerLeave.java
index 8f88914..52943e2 100644
--- a/src/main/java/xyz/soukup/discordauthorizator/events/playerLeave.java
+++ b/src/main/java/xyz/soukup/discordauthorizator/events/playerLeave.java
@@ -1,5 +1,7 @@
package xyz.soukup.discordauthorizator.events;
+import club.minnced.discord.webhook.send.WebhookEmbed;
+import club.minnced.discord.webhook.send.WebhookEmbedBuilder;
import net.dv8tion.jda.api.EmbedBuilder;
import net.dv8tion.jda.api.JDA;
import org.bukkit.Bukkit;
@@ -9,6 +11,7 @@ import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerQuitEvent;
import xyz.soukup.discordauthorizator.DiscordAuthorizator;
+import xyz.soukup.discordauthorizator.WebHooks;
import javax.security.auth.kerberos.KerberosTicket;
import java.awt.*;
@@ -17,13 +20,12 @@ import java.util.Objects;
public class playerLeave implements Listener {
@EventHandler
public void playerQuit(PlayerQuitEvent event){
- JDA jda = DiscordAuthorizator.getJDA();
- EmbedBuilder eb = new EmbedBuilder();
- eb.setColor(Color.RED);
- eb.setAuthor("Hráč " + event.getPlayer().getDisplayName() + " se odpojil", null, "https://mc-heads.net/avatar/" + event.getPlayer().getDisplayName());
- FileConfiguration config = DiscordAuthorizator.getPlugin(DiscordAuthorizator.class).getConfig();
- Objects.requireNonNull(jda.getTextChannelById(Objects.requireNonNull(config.getString("chat-channel")))).sendMessageEmbeds(eb.build()).queue();
-
+ String playerName = event.getPlayer().getDisplayName();
+ WebhookEmbedBuilder eb = new WebhookEmbedBuilder();
+ eb.setColor(0xf50000);
+ String avatar = "https://mc-heads.net/avatar/" + playerName;
+ eb.setAuthor(new WebhookEmbed.EmbedAuthor("Hráč " + playerName + " se odpojil", avatar, avatar));
+ WebHooks.sendToAll(playerName, avatar, eb.build());
Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(DiscordAuthorizator.getPlugin(DiscordAuthorizator.class), new Runnable(){
@Override
public void run(){
diff --git a/src/main/java/xyz/soukup/discordauthorizator/events/playerLogin.java b/src/main/java/xyz/soukup/discordauthorizator/events/playerLogin.java
index 4136f71..59a6a7e 100644
--- a/src/main/java/xyz/soukup/discordauthorizator/events/playerLogin.java
+++ b/src/main/java/xyz/soukup/discordauthorizator/events/playerLogin.java
@@ -3,6 +3,9 @@ package xyz.soukup.discordauthorizator.events;
import net.dv8tion.jda.api.EmbedBuilder;
import net.dv8tion.jda.api.JDA;
import net.dv8tion.jda.api.entities.Guild;
+import net.dv8tion.jda.api.entities.User;
+import net.dv8tion.jda.api.interactions.components.ActionRow;
+import net.dv8tion.jda.api.interactions.components.buttons.Button;
import org.bukkit.ChatColor;
import org.bukkit.Color;
import org.bukkit.configuration.file.FileConfiguration;
@@ -12,7 +15,9 @@ import org.bukkit.event.player.AsyncPlayerPreLoginEvent;
import xyz.soukup.discordauthorizator.DiscordAuthorizator;
+import java.awt.*;
import java.util.*;
+import java.util.List;
public class playerLogin implements Listener {
public static HashMap> playersToVerify = new HashMap<>();
@@ -29,12 +34,33 @@ public class playerLogin implements Listener {
+ "\n\n&fPoslali jsme ti na tvůj discord účet zprávu"
+ "\n&fKlikni na &3přidat ip &f a připoj se znovu"
+ "\n\n&6&lZpráva nepřišla?"
- + "\n&fMůžeš použít příkaz &3/authorize &f na našem discordu"
+ + "\n&fMůžeš použít příkaz &3/authorize &f na discordu"
+ "\n\n\n&7Tvá IP bude uložena, aby jsi se mohl přihlásit"
+ "\n&7bez nutnosti zadávání hesla.";;
- ipToAdd.put(config.getString("players."+ event.getName() + ".discord"), List.of(event.getName(), event.getAddress().toString()));
+ String userid = config.getString("players."+ event.getName() + ".discord");
+ String userAdress = event.getAddress().toString();
+ ipToAdd.put(userid, List.of(event.getName(), userAdress));
event.disallow(AsyncPlayerPreLoginEvent.Result.KICK_OTHER, ChatColor.translateAlternateColorCodes('&', kickMessage));
+ assert userid != null;
+ EmbedBuilder embedBuilder = new EmbedBuilder()
+ .setTitle("Pokus o přihlášení z nové IP")
+ .setDescription("Pokud to jsi ty potvrď přidání ip níže." +
+ "\n\n**Nick:** " + event.getName() +
+ "\n**IP:** ||" + userAdress + "||")
+ .setColor(java.awt.Color.ORANGE);
+ DiscordAuthorizator.getPlugin(DiscordAuthorizator.class).getLogger().info("GGGGGG " + userid);
+ Button button = Button.success("addIP", "Přidat IP");
+ DiscordAuthorizator.getJDA().retrieveUserById(userid).queue((user) ->
+
+ user.openPrivateChannel().queue((channel) ->
+
+ channel.sendMessageEmbeds(embedBuilder.build())
+ .addActionRow(button)
+ .queue()));
+
+
+
return;
}
JDA jda = DiscordAuthorizator.getJDA();
@@ -68,12 +94,13 @@ public class playerLogin implements Listener {
+ "\n\n&cNejsi na whitelistu, &fale můžeš být ;)"
+ "\n\n"
+ "\n&f1) Zapamatuj si tento kód: &b" + code
- + "\n&f2) Připoj se na náš discord: &bdiscord.gg/EK2n7TEQ4H"
+ + "\n&f2) Připoj se na náš nebo partnerský discord"
+ "\n&f3) Našemu discord botovi napiš příkaz &b/link"
+ "\n&f4) Zadej svůj nick a kód"
+ "\n&f5) znovu se připoj!"
+ "\n\n\n&7Tvá IP bude uložena, aby jsi se mohl přihlásit"
- + "\n&7bez nutnosti zadávání hesla.";
+ + "\n&7bez nutnosti zadávání hesla."
+ + "\n\n&fWEB: &bknks.cz &fDISCORD: &bdiscord.gg/EK2n7TEQ4H";
event.disallow(AsyncPlayerPreLoginEvent.Result.KICK_WHITELIST, ChatColor.translateAlternateColorCodes('&', kickMessage));
}
}
diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml
index c907209..7c53aa5 100644
--- a/src/main/resources/config.yml
+++ b/src/main/resources/config.yml
@@ -1,5 +1,8 @@
-token: MTI1MTg1MjY2NDI2Mjg4NTQzNw.GB6jIc.QRulRHK5J-I88jvzCUkoKcx8r4vW2DrBOxHlR4
-authorized-role: 1236261645723111465
-guild: 1161967821815808030
-chat-channel: 1247447721175027744
-
+token: "TOKEN"
+authorized-role: 0000000000000000001
+guild: 0000000000000000001
+chat-channel: 0000000000000000001
+#MUST NOT Contain word "discord"
+channels:
+ 0000000000000000001: "Channel One"
+ 0000000000000000002: "Channel Two"
\ No newline at end of file
diff --git a/target/classes/config.yml b/target/classes/config.yml
index c907209..9827762 100644
--- a/target/classes/config.yml
+++ b/target/classes/config.yml
@@ -2,4 +2,6 @@ token: MTI1MTg1MjY2NDI2Mjg4NTQzNw.GB6jIc.QRulRHK5J-I88jvzCUkoKcx8r4vW2DrBOxHlR4
authorized-role: 1236261645723111465
guild: 1161967821815808030
chat-channel: 1247447721175027744
-
+channels:
+ 1261983819809161216: "Území Testů"
+ 1247447721175027744: "KNKS Discord"
\ No newline at end of file
diff --git a/target/classes/xyz/soukup/discordauthorizator/DiscordAuthorizator.class b/target/classes/xyz/soukup/discordauthorizator/DiscordAuthorizator.class
index f4969c7..cf80762 100644
Binary files a/target/classes/xyz/soukup/discordauthorizator/DiscordAuthorizator.class and b/target/classes/xyz/soukup/discordauthorizator/DiscordAuthorizator.class differ
diff --git a/target/classes/xyz/soukup/discordauthorizator/commands/authorize.class b/target/classes/xyz/soukup/discordauthorizator/commands/authorize.class
index e1c2f2c..12ca053 100644
Binary files a/target/classes/xyz/soukup/discordauthorizator/commands/authorize.class and b/target/classes/xyz/soukup/discordauthorizator/commands/authorize.class differ
diff --git a/target/classes/xyz/soukup/discordauthorizator/commands/link.class b/target/classes/xyz/soukup/discordauthorizator/commands/link.class
index 13913ef..df33442 100644
Binary files a/target/classes/xyz/soukup/discordauthorizator/commands/link.class and b/target/classes/xyz/soukup/discordauthorizator/commands/link.class differ
diff --git a/target/classes/xyz/soukup/discordauthorizator/events/ChatEvent.class b/target/classes/xyz/soukup/discordauthorizator/events/ChatEvent.class
index 0b95b70..9d22526 100644
Binary files a/target/classes/xyz/soukup/discordauthorizator/events/ChatEvent.class and b/target/classes/xyz/soukup/discordauthorizator/events/ChatEvent.class differ
diff --git a/target/classes/xyz/soukup/discordauthorizator/events/DiscordSendMessage.class b/target/classes/xyz/soukup/discordauthorizator/events/DiscordSendMessage.class
index ffec1b9..d939ada 100644
Binary files a/target/classes/xyz/soukup/discordauthorizator/events/DiscordSendMessage.class and b/target/classes/xyz/soukup/discordauthorizator/events/DiscordSendMessage.class differ
diff --git a/target/classes/xyz/soukup/discordauthorizator/events/playerDie.class b/target/classes/xyz/soukup/discordauthorizator/events/playerDie.class
index b3d459a..fbaf632 100644
Binary files a/target/classes/xyz/soukup/discordauthorizator/events/playerDie.class and b/target/classes/xyz/soukup/discordauthorizator/events/playerDie.class differ
diff --git a/target/classes/xyz/soukup/discordauthorizator/events/playerJoin$1.class b/target/classes/xyz/soukup/discordauthorizator/events/playerJoin$1.class
index f36cdc8..28e676c 100644
Binary files a/target/classes/xyz/soukup/discordauthorizator/events/playerJoin$1.class and b/target/classes/xyz/soukup/discordauthorizator/events/playerJoin$1.class differ
diff --git a/target/classes/xyz/soukup/discordauthorizator/events/playerJoin.class b/target/classes/xyz/soukup/discordauthorizator/events/playerJoin.class
index d67df96..5c6d22e 100644
Binary files a/target/classes/xyz/soukup/discordauthorizator/events/playerJoin.class and b/target/classes/xyz/soukup/discordauthorizator/events/playerJoin.class differ
diff --git a/target/classes/xyz/soukup/discordauthorizator/events/playerLeave$1.class b/target/classes/xyz/soukup/discordauthorizator/events/playerLeave$1.class
index 72e2990..8d017a6 100644
Binary files a/target/classes/xyz/soukup/discordauthorizator/events/playerLeave$1.class and b/target/classes/xyz/soukup/discordauthorizator/events/playerLeave$1.class differ
diff --git a/target/classes/xyz/soukup/discordauthorizator/events/playerLeave.class b/target/classes/xyz/soukup/discordauthorizator/events/playerLeave.class
index 28346ff..cc5c5ed 100644
Binary files a/target/classes/xyz/soukup/discordauthorizator/events/playerLeave.class and b/target/classes/xyz/soukup/discordauthorizator/events/playerLeave.class differ
diff --git a/target/classes/xyz/soukup/discordauthorizator/events/playerLogin.class b/target/classes/xyz/soukup/discordauthorizator/events/playerLogin.class
index 06a11bf..eabe2c4 100644
Binary files a/target/classes/xyz/soukup/discordauthorizator/events/playerLogin.class and b/target/classes/xyz/soukup/discordauthorizator/events/playerLogin.class differ