Welcome on MasterOf13FPS! MasterOf13FPS

Register today or sign up if you are already a member and never miss any cool content again :)

Wie binde ich den clientübergreifenden chat in mc ein?

MasterOf13FPS

Administrator
Staff member
Administrator
MasterOf13FPS
Joined
Jul 11, 2020
Messages
0
Reaction score
25
Points
0
Hey,

ich habe auf basis von dem turorial von https://www.youtube.com/user/TuTCubeDE ein client chat oder wie das heißt geschrieben, weiß aber nicht genau wie ich das in mc einbinde und wie ich das nicht über den localhost sondern übereinen server laufen lasse (habe einen)

Hier meine Server Class:

Code:
package simple.clientchatstuff;

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.util.ArrayList;
import java.util.Iterator;

import simple.clientchatstuff.utils.ConsoleWriter;

public class Server {
   
   ServerSocket serverSocket;
   
   ArrayList<PrintWriter> printWriters;
   
   public static void main(String[] args) {
       
       Server server = new Server();
       
       if(server.runServer()) {
           server.clientListener();
       }else{
           
       }
   }
   
   public class Handler implements Runnable {
   
       Socket socket;
       BufferedReader bufferedReader;
       
       public Handler(Socket socket) {
           
           try{
               this.socket = socket;
               bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
           }catch(IOException e) {
               e.printStackTrace();
           }   
       }
       
       @Override
       public void run() {
           String message;
               
           try{
               while((message = bufferedReader.readLine()) != null) {
                   ConsoleWriter.serverMessage("Von Client: " + message);
                   sendToAllClients(message);
               }
           }catch(IOException e) {
               e.printStackTrace();
           }
       }
   }

   public boolean runServer() {
       try{
           serverSocket = new ServerSocket(1276);
           ConsoleWriter.serverMessage("Started Server!");
       
           printWriters = new ArrayList<PrintWriter>();
           return true;
       }catch(IOException e) {
           ConsoleWriter.serverError("Couldn't start Server!");
               
           e.printStackTrace();
           return false;
       }
   }
   
   public void clientListener() {
       while(true) {
           try{
               Socket socket = serverSocket.accept();
               
               PrintWriter printWriter = new PrintWriter(socket.getOutputStream());
               printWriters.add(printWriter);
               
               Thread thread = new Thread(new Handler(socket));
               thread.start();
           }catch(IOException e) {
               e.printStackTrace();
           }
       }
   }
   
   public void sendToAllClients(String message) {
        Iterator iterator = printWriters.iterator();
       
        while(iterator.hasNext()) {
                PrintWriter writer = (PrintWriter) iterator.next();
                writer.println(message);
                writer.flush();
        }
   }
}

Hier meine Client Class:

Code:
package simple.clientchatstuff;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;

import simple.clientchatstuff.utils.ConsoleWriter;

public class Client {
   
   Socket socket;
   PrintWriter printWriter;
   BufferedReader bufferedReader;
   
   public static void main(String[] args) {
       
       Client client = new Client();
       client.creatThread();
       
   }
   
   public void creatThread() {
       if(!connectToServer()) {
           
       }
       
       Thread thread = new Thread(new MessagesFromServerListener());
   }
   
   public boolean connectToServer() {
       try {
           socket = new Socket("127.0.0.1", 1276);
           bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
           printWriter = new PrintWriter(socket.getOutputStream());
           ConsoleWriter.serverMessage("Connected to Server");
                   
           return true;
       } catch(Exception e) {
           ConsoleWriter.serverError("Coudn't connect to Server");
           e.printStackTrace();
                       
           return false;
           }
   }
   
   public void sendMessage(String username, String message) {
       printWriter.write(username + ": "  + message);
       printWriter.flush();
   }
   
   public class MessagesFromServerListener implements Runnable {
       
       @Override
       public void run() {
           String message;
       
           try {
               while((message = bufferedReader.readLine()) != null) {
                   ConsoleWriter.serverMessage(message);
               }
           } catch (IOException e) {
                   ConsoleWriter.serverError("Couldn't get message!");
                   e.printStackTrace();
           }
       }     
   }
}

Danke im vorraus :) ~byaura
 
Last edited by a moderator:
Du fügst halt die Klassen in dein Project ein gehst in die EntityPlayerSP Class und suchst die Methode "sendChatMessage" dort machst du wenn ein syntax eingegeben ist die msg methode
 
Das is mir klar mir geht es darum wie ich dafür Sorge das es über einen Server läuft usw trotzdem danke
 
Musst nen Script auf nem VServer schreiben, aber bitte warum benutzt man denn nicht einfach sowas wie Netty?
 
ich weiß nicht ich hatte im forum danach gesucht und das wurde in nem thread empfohlen aber kannst du das mit dem script nochmal genauer erklären? und wenn nicht wie genau mache ich das mit netty?
 
Hey,

ich habe auf basis von dem turorial von https://www.youtube.com/user/TuTCubeDE ein client chat oder wie das heißt geschrieben, weiß aber nicht genau wie ich das in mc einbinde und wie ich das nicht über den localhost sondern übereinen server laufen lasse (habe einen)

Hier meine Server Class:

Code:
package simple.clientchatstuff;

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.util.ArrayList;
import java.util.Iterator;

import simple.clientchatstuff.utils.ConsoleWriter;

public class Server {
 
   ServerSocket serverSocket;
 
   ArrayList<PrintWriter> printWriters;
 
   public static void main(String[] args) {
     
       Server server = new Server();
     
       if(server.runServer()) {
           server.clientListener();
       }else{
         
       }
   }
 
   public class Handler implements Runnable {
 
       Socket socket;
       BufferedReader bufferedReader;
     
       public Handler(Socket socket) {
         
       try{
           this.socket = socket;
           bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
       }catch(IOException e) {
           e.printStackTrace();
       } 
   }
 
   @Override
   public void run() {
       String message;
         
       try{
           while((message = bufferedReader.readLine()) != null) {
           ConsoleWriter.serverMessage("Von Client: " + message);
           sendToAllClients(message);
       }
       }catch(IOException e) {
           e.printStackTrace();
       }
     
       }
   }
     
   public boolean runServer() {
       try{
           serverSocket = new ServerSocket(1276);
           ConsoleWriter.serverMessage("Started Server!");
     
           printWriters = new ArrayList<PrintWriter>();
           return true;
       }catch(IOException e) {
           ConsoleWriter.serverError("Couldn't start Server!");
             
           e.printStackTrace();
           return false;
       }
   }
 
   public void clientListener() {
       while(true) {
           try{
               Socket socket = serverSocket.accept();
             
               PrintWriter printWriter = new PrintWriter(socket.getOutputStream());
               printWriters.add(printWriter);
             
               Thread thread = new Thread(new Handler(socket));
               thread.start();
           }catch(IOException e) {
               e.printStackTrace();
           }
       }
   }
 
   public void sendToAllClients(String message) {
        Iterator iterator = printWriters.iterator();
     
        while(iterator.hasNext()) {
                PrintWriter writer = (PrintWriter) iterator.next();
                writer.println(message);
                writer.flush();
        }
   }
}

Hier meine Client Class:

Code:
package simple.clientchatstuff;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;

import simple.clientchatstuff.utils.ConsoleWriter;

public class Client {
  
   Socket socket;
   PrintWriter printWriter;
   BufferedReader bufferedReader;
  
   public static void main(String[] args) {
      
       Client client = new Client();
       client.creatThread();
      
   }
  
   public void creatThread() {
       if(!connectToServer()) {
          
       }
      
       Thread thread = new Thread(new MessagesFromServerListener());
   }
  
   public boolean connectToServer() {
       try {
           socket = new Socket("127.0.0.1", 5555);
           bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
           printWriter = new PrintWriter(socket.getOutputStream());
           ConsoleWriter.serverMessage("Connected to Server");
                  
           return true;
       } catch(Exception e) {
           ConsoleWriter.serverError("Coudn't connect to Server");
           e.printStackTrace();
                      
           return false;
           }
   }
  
   public void sendMessage(String username, String message) {
       printWriter.write(username + ": "  + message);
       printWriter.flush();
   }
  
   public class MessagesFromServerListener implements Runnable {
      
       @Override
       public void run() {
           String message;
      
       try {
           while((message = bufferedReader.readLine()) != null) {
               ConsoleWriter.serverMessage(message);
           }
           } catch (IOException e) {
               ConsoleWriter.serverError("Couldn't get message!");
               e.printStackTrace();
           }
       }    
   }
}

Danke im vorraus :) ~byaura
Den Server Code compilen und auf nem Server laufen lassen. Es sollte nen DNS Server geben der immer unter ner Domain die Ip deines servers gespeichert hat und auch darauf leitet. So viel zu dem Grundprinzip einer Domain. Dann richtest du bei deinem Client den Server ein und stellst sicher das der Port auch bei deinem server freigegeben ist.
 
danke aber ist es nicht so das man damit nicht ins aal darf oder verwechsel ich da was ?
 
ok da hatte ich irgendwas verwechselt
 
Den Server Code compilen und auf nem Server laufen lassen. Es sollte nen DNS Server geben der immer unter ner Domain die Ip deines servers gespeichert hat und auch darauf leitet. So viel zu dem Grundprinzip einer Domain. Dann richtest du bei deinem Client den Server ein und stellst sicher das der Port auch bei deinem server freigegeben ist.

wie soll ich das mit dem code auf dem server machen ich habe sowas noch nie gemacht c:
 
wie soll ich das mit dem code auf dem server machen ich habe sowas noch nie gemacht :)
Du exportierst die Server Klasse als Runnable Jar. Dann kaufst du dir nen vServer und installierst da drauf JRE. Dann gibst du den Port frei den du benutzen möchtest und startest einfach eine Screen session in der die Jar ausgeführt wird. Danach musst du für den Client die richtige IP und Port eintragen.
 
ok also server hab ich dann tu ich jetzt den server exportieren und den port geb ich auch frei aber was meinst du mit ?
startest einfach eine Screen session in der die Jar ausgeführt wird
 
wie soll ich das mit dem code auf dem server machen ich habe sowas noch nie gemacht :)
Code:
java -jar ./meinejar.jar
Das führst du im Terminal aus... Immer diese Ide Kinder.
 
ok aber sry du hast auchmal mit java angefangen
 
lass mal discord ich erklärs dir xd
 
shape1
shape2
shape3
shape4
shape5
shape6
Back
Top