Ir para conteúdo
  • 0

[Resolvido] Problemas com Socket


DaviDEV

Pergunta

Eu fiz um servidor que abre um GUI e fala o motd de tal server usando socket

 

Porem o motd esta aparecendo que sta no server.properties e não do meu plugins que modifica o motd

 

 

Oque farei?

Link para o comentário
Compartilhar em outros sites

14 respostass a esta questão

Posts Recomendados

Tem como pegar exatamente o motd?

		String url = "http://mcping.net/api/5.cookiehosting.net:25568/motd";

		HttpURLConnection urlConnection = (HttpURLConnection) new URL(url).openConnection();

		BufferedReader reader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
		StringBuilder builder = new StringBuilder();

		for (String line = null; (line = reader.readLine()) != null;)
		{
			builder.append(line);
		}

		JsonElement jsonElement = new JsonParser().parse(builder.toString().replace("\\u00a7", "§"));
		JsonObject jsonObject = jsonElement.getAsJsonObject();

		System.out.println(jsonObject.get("motd"));

"§e§lWorld§b§lHG §e-> §7torneio inicia em§c§l 1 §7minutos"
Editado por leonardosc
Link para o comentário
Compartilhar em outros sites

        try {
            Socket socket = new Socket();
            socket.connect(new InetSocketAddress(<Nao irei falar a IP>, 25566), 1 * 1000);
            
            DataOutputStream out = new DataOutputStream(socket.getOutputStream());
            DataInputStream in = new DataInputStream(socket.getInputStream());
            
            out.write(0xFE);
            
            StringBuilder str = new StringBuilder();
            
            int b;
            while ((b = in.read()) != -1) {
                if (b != 0 && b > 16 && b != 255 && b != 23 && b != 24) {
                    str.append((char) b);
                }
            }
            
            String[] data = str.toString().split("§");
            String motd = data[0];
            int onlinePlayers = Integer.valueOf(data[1]);
            int maxPlayers = Integer.valueOf(data[2]);
            if (motd.equalsIgnoreCase("Aberto")) {
                sign.setLine(0, "§a§l[Aberto]");
            } else if (motd.equalsIgnoreCase("Cheio")) {
                sign.setLine(0, "§e§l[VIP]");
            } else if (motd.equalsIgnoreCase("EmJogo")) {
                sign.setLine(0, "§4§l[Em Jogo]");
            } else {
            sign.setLine(0, motd);
            }
            sign.setLine(1, "§e§l"+name);
            sign.setLine(2, "§b§l"+onlinePlayers + "§f/§b§l" + maxPlayers);
            sign.setLine(3, "§6§lBoloCraft");
            
            socket.close();
        } catch (Exception e) {
            
            sign.setLine(0, "§4§l████████");
            sign.setLine(1, "§4§lReiniciando...");
            sign.setLine(2, "§4§lAguarde...");
            sign.setLine(3, "§4§l████████");
            
        }





Porém o motd que ele está pegando está vindo do server.properties e não do plugin que modifica o motd

Link para o comentário
Compartilhar em outros sites

Passa o ip do servidor, pode ser por mp pra mim ver o que eu posso fazer.

Ok

to usando o ip do craftcubegames

Craftcubegames.com

Só para testar

 

Mais se eu botar um ip hamachi acho que nao vai por isto to usando para teste o craftcubegames

Link para o comentário
Compartilhar em outros sites

Testei com isso

		 Socket socket = new Socket();
         socket.connect(new InetSocketAddress("Craftcubegames.com", 25565), 1 * 1000);
         
         DataOutputStream out = new DataOutputStream(socket.getOutputStream());
         DataInputStream in = new DataInputStream(socket.getInputStream());
         
         out.write(0xFE);
         
         StringBuilder str = new StringBuilder();
         
         int b;
         while ((b = in.read()) != -1) {
             if (b != 0 && b > 16 && b != 255 && b != 23 && b != 24) {
                 str.append((char) b);
             }
         }
         
         String[] data = str.toString().split("§");
         String motd = data[0];
         int onlinePlayers = Integer.valueOf(data[1]);
         int maxPlayers = Integer.valueOf(data[2]);

         System.out.println(motd);

Saiu isso

CraftCubeGames - BETA

Se não conseguir usa essa api

 

http://mcping.net/api/craftcubegames.com:25565/motd

Link para o comentário
Compartilhar em outros sites

Usa isso

		 String url = "http://mcping.net/api/5.cookiehosting.net:25568/motd";
		 
		 HttpURLConnection urlConnection = (HttpURLConnection) new URL(url).openConnection();
		 
		 BufferedReader reader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
		 StringBuilder builder = new StringBuilder();
		 
		 for (String line = null; (line = reader.readLine()) != null;)
		 {
			 builder.append(line);
		 }
		 

		System.out.println(builder.toString().replace("\\u00a7", "§"));

Resultado

{	"motd": "§e§lWorld§b§lHG §e-> §7O Torneio ja Iniciou                  §c§lVisite:§7worldhardcoregames.buycraft.net"}

Editado por leonardosc
Link para o comentário
Compartilhar em outros sites

 

Usa isso

		 String url = "http://mcping.net/api/5.cookiehosting.net:25568/motd";
		 
		 HttpURLConnection urlConnection = (HttpURLConnection) new URL(url).openConnection();
		 
		 BufferedReader reader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
		 StringBuilder builder = new StringBuilder();
		 
		 for (String line = null; (line = reader.readLine()) != null;)
		 {
			 builder.append(line);
		 }
		 

		System.out.println(builder.toString().replace("\\u00a7", "§"));

Resultado

{	"motd": "§e§lWorld§b§lHG §e-> §7O Torneio ja Iniciou                  §c§lVisite:§7worldhardcoregames.buycraft.net"}

Tem como pegar exatamente o motd?

@EDIT as aspas da pra tirar             System.out.println(builder.toString().replace("\\u00a7", "§").replace("{    ", "").replaceAll("}", ""));

Editado por DaviG4mer
Link para o comentário
Compartilhar em outros sites

		String url = "http://mcping.net/api/5.cookiehosting.net:25568/motd";

		HttpURLConnection urlConnection = (HttpURLConnection) new URL(url).openConnection();

		BufferedReader reader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
		StringBuilder builder = new StringBuilder();

		for (String line = null; (line = reader.readLine()) != null;)
		{
			builder.append(line);
		}

		JsonElement jsonElement = new JsonParser().parse(builder.toString().replace("\\u00a7", "§"));
		JsonObject jsonObject = jsonElement.getAsJsonObject();

		System.out.println(jsonObject.get("motd"));

"§e§lWorld§b§lHG §e-> §7torneio inicia em§c§l 1 §7minutos"

 

Obrigado

Link para o comentário
Compartilhar em outros sites

Código melhorado.

		String url = "http://mcping.net/api/5.cookiehosting.net:25568/motd";

		HttpURLConnection urlConnection = (HttpURLConnection) new URL(url).openConnection();

		BufferedReader reader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
		StringBuilder builder = new StringBuilder();

		for (String line = null; (line = reader.readLine()) != null;)
		{
			builder.append(line);
		}
		

		JsonElement jsonElement = new JsonParser().parse(builder.toString());
		JsonObject jsonObject = jsonElement.getAsJsonObject();

		System.out.println(jsonObject.get("motd").getAsString().replaceAll("\\u00a7[a-z0-9]", ""));

Resultado

WorldHG -> O Torneio ja Iniciou                  Visite:worldhardcoregames.buycraft.net
 
Caso queira com cores, tire essa parte.
 .replaceAll("\\u00a7[a-z0-9]", "")
Editado por leonardosc
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...