started web socket implementation
will look at splitting files at a later stage
This commit is contained in:
@@ -1,9 +1,6 @@
|
|||||||
import java.io.BufferedReader;
|
import java.io.*;
|
||||||
import java.io.IOException;
|
import java.net.*;
|
||||||
import java.io.InputStreamReader;
|
import java.util.List;
|
||||||
import java.io.PrintWriter;
|
|
||||||
import java.net.ServerSocket;
|
|
||||||
import java.net.Socket;
|
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
@@ -26,50 +23,27 @@ public class MCbot extends JavaPlugin {
|
|||||||
// Stop your socket server here if needed
|
// Stop your socket server here if needed
|
||||||
}
|
}
|
||||||
|
|
||||||
private void startSocketServer() {
|
public void startSocketServer() {
|
||||||
// Implement your socket server logic here
|
|
||||||
// Example: Create a new thread for socket server
|
|
||||||
new Thread(() -> {
|
|
||||||
try {
|
try {
|
||||||
try (// Create a socket server on port 8888
|
ServerSocket serverSocket = new ServerSocket(8888); // Port for socket communication
|
||||||
ServerSocket serverSocket = new ServerSocket(8888)) {
|
|
||||||
getLogger().info("Socket server started on port 8888");
|
|
||||||
|
|
||||||
while (true) {
|
while (true) {
|
||||||
// Accept incoming client connections
|
|
||||||
Socket clientSocket = serverSocket.accept();
|
Socket clientSocket = serverSocket.accept();
|
||||||
getLogger().info("Client connected: " + clientSocket.getInetAddress());
|
BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
|
||||||
|
PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
|
||||||
|
|
||||||
// Handle client communication (e.g., read commands and send responses)
|
String command = in.readLine();
|
||||||
handleClient(clientSocket);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} catch (IOException e) {
|
|
||||||
getLogger().severe("Error starting socket server: " + e.getMessage());
|
|
||||||
}
|
|
||||||
}).start();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void handleClient(Socket clientSocket) {
|
// Process the command
|
||||||
// Implement logic to handle client communication here
|
|
||||||
// Example: Read commands from client and send responses
|
|
||||||
try {
|
|
||||||
BufferedReader reader = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
|
|
||||||
PrintWriter writer = new PrintWriter(clientSocket.getOutputStream(), true);
|
|
||||||
|
|
||||||
// Read command from client
|
|
||||||
String command = reader.readLine();
|
|
||||||
getLogger().info("Received command from client: " + command);
|
|
||||||
|
|
||||||
// Process command and send response
|
|
||||||
String response = processCommand(command);
|
String response = processCommand(command);
|
||||||
writer.println(response);
|
|
||||||
|
|
||||||
// Close client connection
|
// Send the response back to the client
|
||||||
|
out.println(response);
|
||||||
|
|
||||||
clientSocket.close();
|
clientSocket.close();
|
||||||
} catch (IOException e) {
|
|
||||||
getLogger().severe("Error handling client: " + e.getMessage());
|
|
||||||
}
|
}
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|
||||||
private String processCommand(String command) {
|
private String processCommand(String command) {
|
||||||
@@ -77,10 +51,19 @@ public class MCbot extends JavaPlugin {
|
|||||||
// Example: If command is "!players", return player list from Minecraft server
|
// Example: If command is "!players", return player list from Minecraft server
|
||||||
if (command.equals("!players")) {
|
if (command.equals("!players")) {
|
||||||
// Use Spigot API to get player list
|
// Use Spigot API to get player list
|
||||||
String playerList = String.join(", ", getServer().getOnlinePlayers().stream()
|
List<Player> onlinePlayers = Bukkit.getServer().getOnlinePlayers().stream().collect(Collectors.toList()));
|
||||||
.map(player -> player.getName())
|
|
||||||
.collect(Collectors.toList()));
|
if (onlinePlayers.isEmpty()) {
|
||||||
return "Players online: " + playerList;
|
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 ")) {
|
if (command.startsWith("!exp ")) {
|
||||||
// Extract player name from command
|
// Extract player name from command
|
||||||
|
@@ -1,4 +1,5 @@
|
|||||||
import com.google.api.client.googleapis.auth.oauth2.Credential;
|
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.javanet.GoogleNetHttpTransport;
|
||||||
import com.google.api.client.googleapis.http.HttpRequest;
|
import com.google.api.client.googleapis.http.HttpRequest;
|
||||||
import com.google.api.client.googleapis.http.HttpRequestInitializer;
|
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;
|
||||||
import com.google.api.services.youtube.model.LiveChatTextMessageDetails.MessageTextDetails;
|
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.security.GeneralSecurityException;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -87,4 +89,25 @@ public class MCchatbotyt {
|
|||||||
LiveChatMessageListResponse response = liveChatRequest.execute();
|
LiveChatMessageListResponse response = liveChatRequest.execute();
|
||||||
return response.getItems();
|
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();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user