From f660f10263c35adcb2aedaf01408e576665a83c1 Mon Sep 17 00:00:00 2001 From: nzBryce101 Date: Tue, 9 Apr 2024 11:39:35 +1200 Subject: [PATCH] Add Discord Bot --- src/main/java/MCbot.java | 11 ++++--- src/main/java/disMCbot.java | 58 ++++++++++++++++++++++--------------- 2 files changed, 41 insertions(+), 28 deletions(-) diff --git a/src/main/java/MCbot.java b/src/main/java/MCbot.java index 53c8c60..d39be78 100644 --- a/src/main/java/MCbot.java +++ b/src/main/java/MCbot.java @@ -1,6 +1,7 @@ import java.io.*; import java.net.*; -import java.util.*; +import java.util.List; +import java.util.stream.Collectors; import org.bukkit.Bukkit; import org.bukkit.Statistic; @@ -44,15 +45,17 @@ public class MCbot extends JavaPlugin { } catch (IOException e) { e.printStackTrace(); } - + } private String processCommand(String command) { // Implement logic to process commands here // Example: If command is "!players", return player list from Minecraft server if (command.equals("!players")) { // Use Spigot API to get player list List onlinePlayers = Bukkit.getServer().getOnlinePlayers().stream().collect(Collectors.toList()); - - if (onlinePlayers.isEmpty()) { + String playerList = onlinePlayers.stream().map(Player::getName).collect(Collectors.joining(", ")); + return "Players online: " + playerList; + + if (playerList.isEmpty()) { return "No players are currently online."; } else { StringBuilder playerList = new StringBuilder("Players online: "); diff --git a/src/main/java/disMCbot.java b/src/main/java/disMCbot.java index 65c544e..61bd929 100644 --- a/src/main/java/disMCbot.java +++ b/src/main/java/disMCbot.java @@ -1,31 +1,41 @@ -import net.dv8tion.jda.api.*; +import net.dv8tion.jda.api.JDABuilder; +import net.dv8tion.jda.api.events.message.MessageReceivedEvent; +import net.dv8tion.jda.api.hooks.ListenerAdapter; -public class DisMCBot { - public static void main(String[] args) { - String token = "YOUR_BOT_TOKEN_HERE"; // Replace with your actual bot token - new DiscordBot(token); +import javax.security.auth.login.LoginException; + +public class disMCbot extends ListenerAdapter { + + private TextChannel updateChannel; // Define the channel where updates will be posted + + public static void main(String[] args) throws LoginException { + JDABuilder builder = JDABuilder.createDefault("YOUR_DISCORD_BOT_TOKEN"); + builder.addEventListeners(new disMCbot()); + builder.build(); } + + @Override public void onMessageReceived(MessageReceivedEvent event) { - String messageContent = event.getMessage().getContentRaw(); - // Parse message content to detect player updates - if (messageContent.contains("died")) { - event.getChannel().sendMessage("A player has died!").queue(); - } else if (messageContent.contains("Exp")) { - // Parse and extract player name, Exp, and other details - // You can use regular expressions or other parsing methods - event.getChannel().sendMessage("Player gained experience!").queue(); - } - } - public DiscordBot(String token) { - try { - JDABuilder.createDefault(token) - .addEventListeners(new BotEventListener()) // Create this class next - .setActivity(Activity.playing("Minecraft")) - .build(); - } catch (Exception e) { - e.printStackTrace(); + if (event.getAuthor().isBot()) return; // Ignore messages from bots + + String message = event.getMessage().getContentRaw(); + // Check for conditions or events triggering updates + if (message.contains("Player1 died")) { + // Post update to the specified channel + if (updateChannel != null) { + updateChannel.sendMessage("Player1 has died in Minecraft!").queue(); + } + } else if (message.contains("Player1 Exp")) { + // Post another type of update + if (updateChannel != null) { + updateChannel.sendMessage("Player1 gained experience in Minecraft!").queue(); + } } } - + public void setUpdateChannel(TextChannel channel) { + this.updateChannel = channel; + } } + + \ No newline at end of file