Paste #125170: DenizenMetaBot Auto-Repaste Of log From redegs

Date: 2024/07/31 14:34:32 UTC-07:00
Type: Server Log

View Raw Paste Download This Paste
Copy Link


package org.redegs.crossplay;


import net.citizensnpcs.api.CitizensAPI;
import net.citizensnpcs.api.event.CitizensEnableEvent;
import net.citizensnpcs.api.npc.NPC;
import net.md_5.bungee.api.ChatColor;
import org.bukkit.Bukkit;
import org.bukkit.entity.Entity;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.AsyncPlayerChatEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.scheduler.BukkitRunnable;

import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import com.sun.net.httpserver.HttpServer;
import com.sun.net.httpserver.HttpHandler;
import com.sun.net.httpserver.HttpExchange;



import net.citizensnpcs.api.npc.*;
import org.bukkit.entity.*;
import org.bukkit.*;

import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.net.HttpURLConnection;
import java.net.InetSocketAddress;
import java.net.URL;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;

public final class Crossplay extends JavaPlugin implements Listener {

    boolean CitizensLoaded = false;

    @Override
    public void onEnable() {
        // Plugin startup logic
        getLogger().info("Hello from redegs plugin!");




        try {
            getLogger().info("Attemping to send HTTP Request to Crossplay server!");
            sendPlayerDataToServer("PlayersChangedModel", "crossplay_mc_server", "join", null, "mc");

            try {
                startHttpServer();
                getLogger().info("Starting internal HTTP server");
            } catch (IOException e) {
                getLogger().warning("Internal HTTP server failed, plugin will not work as intended.");
                e.printStackTrace();
            }

        } catch (IOException e) {
            getLogger().warning("Outgoing request failed, plugin will not work as intended.");
            e.printStackTrace();
        }

        getServer().getPluginManager().registerEvents(this, this);
        this.getCommand("testnpc").setExecutor(new CommandTestNPC());

    }

    @Override
    public void onDisable() {
        // Plugin shutdown logic
    }

    private void startHttpServer() throws IOException {
        HttpServer server = HttpServer.create(new InetSocketAddress(8000), 0);
        server.createContext("/endpoint", new MyHandler());
        server.setExecutor(null);
        server.start();
    }


    public static void sendPlayerDataToServer(String modelType, String username, String reqTypeOrPosition, String chatMsg, String platform) throws IOException {
        try {
            URL url = new URL("http://80.192.241.222:8085/webhook");
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            connection.setRequestMethod("POST");
            connection.setDoOutput(true);
            connection.setRequestProperty("Content-Type", "application/json");
            connection.setRequestProperty("Accept", "application/json");

            // Construct the payload based on the model type
            String payload = null;
            switch (modelType) {
                case "UpdateModel":
                    payload = String.format("{\"updatemodel\":{\"username\":\"%s\",\"position\":\"%s\",\"platform\":\"%s\"},\"playerschangedmodel\":null,\"chatmsgmodel\":null}", username, reqTypeOrPosition, platform);
                    break;
                case "PlayersChangedModel":
                    payload = String.format("{\"updatemodel\":null,\"playerschangedmodel\":{\"username\":\"%s\",\"req_type\":\"%s\",\"platform\":\"%s\"},\"chatmsgmodel\":null}", username, reqTypeOrPosition, platform);
                    break;
                case "ChatMessageModel":
                    payload = String.format("{\"updatemodel\":null,\"playerschangedmodel\":null,\"chatmsgmodel\":{\"username\":\"%s\",\"chat_msg\":\"%s\",\"platform\":\"%s\"}}", username, chatMsg, platform);
                    break;
                default:
                    throw new IllegalArgumentException("Invalid model type");
            }

            byte[] out = payload.getBytes(StandardCharsets.UTF_8);
            OutputStream stream = connection.getOutputStream();
            stream.write(out);
            stream.flush();
            stream.close();

            Bukkit.getConsoleSender().sendMessage(connection.getResponseCode() + " " + connection.getResponseMessage());
            connection.disconnect();
        } catch (Exception e) {
            Bukkit.getConsoleSender().sendMessage(String.valueOf(e));
            Bukkit.getConsoleSender().sendMessage("Failed successfully");
        }
    }

    static class MyHandler implements HttpHandler {
        @Override
        public void handle(HttpExchange exchange) throws IOException {
            if ("POST".equals(exchange.getRequestMethod())) {
                String requestBody = new String(exchange.getRequestBody().readAllBytes(), StandardCharsets.UTF_8);
                exchange.sendResponseHeaders(200, 0);
                OutputStream os = exchange.getResponseBody();
                os.write("Received".getBytes());
                os.close();


                // Parse the JSON request body
                JsonObject jsonObject = JsonParser.parseString(requestBody).getAsJsonObject();

                String request_type = jsonObject.get("request_type").getAsString();
                Bukkit.getConsoleSender().sendMessage(request_type);
                if (request_type.equals("msg")) {
                    Bukkit.getConsoleSender().sendMessage("recv msg requesat");
                    String username = jsonObject.get("username").getAsString();
                    String chatMsg = jsonObject.get("chat_msg").getAsString();

                    Bukkit.getServer().broadcastMessage(username + ": " + chatMsg);

                } else if (request_type.equals("player_changed")) {
                    Bukkit.getConsoleSender().sendMessage("recv player changed requesat");

                    String username = jsonObject.get("username").getAsString();
                    String req_type = jsonObject.get("req_type").getAsString();

                    if (req_type.equals("join")) {

                        Bukkit.getServer().broadcastMessage(ChatColor.translateAlternateColorCodes('&', "&e" + username + " joined the game"));

                        Server server = Bukkit.getServer();

                        if (server.getOnlinePlayers().size() >= 1) {
                            List player_list = new ArrayList(server.getOnlinePlayers());
                            Player nearest_player = (Player) player_list.get(0);

                            Location loc = nearest_player.getLocation();

                            Bukkit.getServer().broadcastMessage("Attempting to spawn roblox npc at " + loc.toString());

                            
                            NPC new_npc = CitizensAPI.getNPCRegistry().createNPC(EntityType.PLAYER, "Example " + username, loc);
                            new_npc.spawn(loc);



                        }

                    } else {

                        Bukkit.getServer().broadcastMessage(ChatColor.translateAlternateColorCodes('&', "&e" + username + " left the game"));

                    }


                }

            } else {
                exchange.sendResponseHeaders(405, -1); // Method Not Allowed
            }
        }
    }

    @EventHandler
    public void onPlayerJoin(PlayerJoinEvent event) throws IOException {
        Player player = event.getPlayer();
        String player_name = player.getName();

        Bukkit.getConsoleSender().sendMessage("Fired player join event!");
        sendPlayerDataToServer("PlayersChangedModel", player_name, "join", null, "mc");

    }

    @EventHandler
    public void onPlayerLeave(PlayerQuitEvent event) throws IOException {
        Player player = event.getPlayer();
        String player_name = player.getName();

        Bukkit.getConsoleSender().sendMessage("Fired player leave event!");
        sendPlayerDataToServer("PlayersChangedModel", player_name, "leave", null, "mc");

    }

    @EventHandler
    public void onPlayerChat(AsyncPlayerChatEvent event) throws IOException {
        String message = event.getMessage();
        Player player = event.getPlayer();
        String player_name = player.getName();

        Bukkit.getConsoleSender().sendMessage("Fired player chat event!");
        sendPlayerDataToServer("ChatMessageModel", player_name, null, message, "mc");
    }

    @EventHandler
    public void onCitizensEnable(CitizensEnableEvent event) throws IOException {

        this.CitizensLoaded = true;


    }



}