diff --git a/src/main/java/MCbot.java b/src/main/java/MCbot.java index c3cf817..fc590f5 100644 --- a/src/main/java/MCbot.java +++ b/src/main/java/MCbot.java @@ -1,9 +1,6 @@ -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStreamReader; -import java.io.PrintWriter; -import java.net.ServerSocket; -import java.net.Socket; +import java.io.*; +import java.net.*; +import java.util.List; import java.util.stream.Collectors; import org.bukkit.Bukkit; @@ -26,61 +23,47 @@ public class MCbot extends JavaPlugin { // Stop your socket server here if needed } - private void startSocketServer() { - // Implement your socket server logic here - // Example: Create a new thread for socket server - new Thread(() -> { - try { - try (// Create a socket server on port 8888 - ServerSocket serverSocket = new ServerSocket(8888)) { - getLogger().info("Socket server started on port 8888"); - - while (true) { - // Accept incoming client connections - Socket clientSocket = serverSocket.accept(); - getLogger().info("Client connected: " + clientSocket.getInetAddress()); - - // Handle client communication (e.g., read commands and send responses) - handleClient(clientSocket); - } - } - } catch (IOException e) { - getLogger().severe("Error starting socket server: " + e.getMessage()); - } - }).start(); - } - - private void handleClient(Socket clientSocket) { - // Implement logic to handle client communication here - // Example: Read commands from client and send responses + public void startSocketServer() { try { - BufferedReader reader = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); - PrintWriter writer = new PrintWriter(clientSocket.getOutputStream(), true); + ServerSocket serverSocket = new ServerSocket(8888); // Port for socket communication - // Read command from client - String command = reader.readLine(); - getLogger().info("Received command from client: " + command); + while (true) { + Socket clientSocket = serverSocket.accept(); + BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); + PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true); - // Process command and send response - String response = processCommand(command); - writer.println(response); + String command = in.readLine(); - // Close client connection - clientSocket.close(); + // Process the command + String response = processCommand(command); + + // Send the response back to the client + out.println(response); + + clientSocket.close(); + } } catch (IOException e) { - getLogger().severe("Error handling client: " + e.getMessage()); + 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 - String playerList = String.join(", ", getServer().getOnlinePlayers().stream() - .map(player -> player.getName()) - .collect(Collectors.toList())); - return "Players online: " + playerList; + List onlinePlayers = Bukkit.getServer().getOnlinePlayers().stream().collect(Collectors.toList())); + + if (onlinePlayers.isEmpty()) { + return "No players are currently online."; + } else { + StringBuilder playerList = new StringBuilder("Players online: "); + for (Player player : onlinePlayers) { + playerList.append(player.getName()).append(", "); + } + // Remove the trailing comma and space + playerList.setLength(playerList.length() - 2); + return playerList.toString(); + } } if (command.startsWith("!exp ")) { // Extract player name from command diff --git a/src/main/java/MCchatbotyt.java b/src/main/java/MCchatbotyt.java index 4185d02..e63a38b 100644 --- a/src/main/java/MCchatbotyt.java +++ b/src/main/java/MCchatbotyt.java @@ -1,4 +1,5 @@ import com.google.api.client.googleapis.auth.oauth2.Credential; +import com.google.api.client.googleapis.auth.oauth2.GoogleCredential; import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport; import com.google.api.client.googleapis.http.HttpRequest; import com.google.api.client.googleapis.http.HttpRequestInitializer; @@ -11,7 +12,8 @@ import com.google.api.services.youtube.model.LiveChatMessageSnippet; import com.google.api.services.youtube.model.LiveChatTextMessageDetails; import com.google.api.services.youtube.model.LiveChatTextMessageDetails.MessageTextDetails; -import java.io.IOException; +import java.io.*; +import java.net.*; import java.security.GeneralSecurityException; import java.util.List; @@ -87,4 +89,25 @@ public class MCchatbotyt { LiveChatMessageListResponse response = liveChatRequest.execute(); return response.getItems(); } + + // Connect to the socket server in MCbot.java + Socket socket = new Socket("localhost", 12345); // Connect to localhost on port 12345 + + PrintWriter out = new PrintWriter(socket.getOutputStream(), true); + BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream())); + + // Send command to MCbot.java + out.println("!players"); + + // Receive response from MCbot.java + String response = in.readLine(); + System.out.println("Response from MCbot.java: " + response); + + socket.close(); + } catch (IOException | GeneralSecurityException e) { + e.printStackTrace(); + } + } } + +