Guest User

MG_Server.java

a guest
May 28th, 2016
89
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package de.Panakotta00.Lobby.MiniGames;
  2.  
  3. import java.io.BufferedReader;
  4. import java.io.File;
  5. import java.io.FileInputStream;
  6. import java.io.FileOutputStream;
  7. import java.io.IOException;
  8. import java.io.InputStream;
  9. import java.io.InputStreamReader;
  10. import java.io.OutputStream;
  11. import java.net.Socket;
  12. import java.nio.CharBuffer;
  13. import java.util.List;
  14.  
  15. import org.bukkit.Bukkit;
  16. import org.bukkit.ChatColor;
  17.  
  18. import de.Panakotta00.Lobby.Lobby;
  19.  
  20. public class MG_Server implements Runnable {
  21.     Lobby main;
  22.     MG_Sign sign;
  23.     int id;
  24.     Thread thread;
  25.     boolean loop = true;
  26.    
  27.     String type;
  28.     String[] arenas;
  29.     public File dir;
  30.    
  31.     public Socket socket;
  32.    
  33.     public MG_Server(Lobby main, MG_Controller controller, MG_Sign sign, int id, String type, String[] arenas) {
  34.         this.main = main;
  35.         this.sign = sign;
  36.         this.id = id;
  37.         this.type = type;
  38.         this.arenas = arenas;
  39.        
  40.         if (controller.serverController.serverInLoad.size() < controller.serverController.max_loads) {
  41.             controller.serverController.serverInLoad.put(this.id, this);
  42.             this.load();
  43.         } else {
  44.             controller.serverController.serverToLoad.put(this.id, this);
  45.         }
  46.     }
  47.    
  48.     public void load() {
  49.         File template = new File(main.cfg.getString("Server-System.Templates." + type));
  50.         File newServer = new File(main.cfg.getString("Server-System.ServerFolder." + type) + "\\" + id);
  51.        
  52.         try {
  53.             copyFolder(template, newServer);
  54.            
  55.             File properties = new File(main.cfg.getString("Server-System.ServerFolder." + type) + "\\" + id + "\\server.properties");
  56.             OutputStream out = new FileOutputStream(properties, true);
  57.             out.write(("server-port=1111"+id+"\n").getBytes());
  58.             out.write(("server-ip=localhost").getBytes());
  59.             out.close();
  60.            
  61.             Runtime.getRuntime().exec("cmd /c start cmd.exe /k \"start.bat", null, newServer);
  62.            
  63.             main.ss.createServer(id, String.valueOf(Bukkit.getIp().intern()), Integer.valueOf("1111" + id));
  64.             dir = newServer;
  65.            
  66.             sign.setData("["+type+"]", ChatColor.GRAY + "Server lädt...", "", "");
  67.            
  68.             System.out.println("Der Server mit der ID " + id + " wurde erstellt!");
  69.         } catch (IOException e) {
  70.             e.printStackTrace();
  71.             System.out.println("Der Server mit der ID " + id + " konnte nicht geladen werden!");
  72.         }
  73.     }
  74.    
  75.     @Override
  76.     public void run() {
  77.         while (loop) {
  78.             try {
  79.                 BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
  80.                 System.out.println("ok");
  81.                 System.out.println(in.readLine().intern());
  82.                 System.out.println("ok");
  83.                 if (in.readLine().intern().equalsIgnoreCase("updateSign".intern())) {
  84.                     System.out.println("ok");
  85.                     int id = Integer.valueOf(in.readLine().intern());
  86.                     String[] lines = {in.readLine().intern(), in.readLine().intern(), in.readLine().intern(), in.readLine().intern()};
  87.                    
  88.                     main.mg_system.signs.get(id).setData(lines[0], lines[1], lines[2], lines[3]);
  89.                 }
  90.             } catch (IOException e) {
  91.                 e.printStackTrace();
  92.                
  93.                 if (socket.isClosed()) {
  94.                     this.stop();
  95.                 }
  96.             }
  97.         }
  98.        
  99.         this.stop();
  100.     }
  101.    
  102.     @SuppressWarnings("deprecation")
  103.     public void stop() {
  104.         if (thread != null && thread.isAlive()) {
  105.             thread.stop();
  106.         }
  107.        
  108.         if (loop) {
  109.             loop = false;
  110.         }
  111.     }
  112.    
  113.     private void copyFolder(File src, File dest) throws IOException{
  114.         if(src.isDirectory()) {
  115.             if(!dest.exists()) {
  116.                 dest.mkdir();
  117.             }
  118.            
  119.             String files[] = src.list();
  120.            
  121.             for (String file : files) {
  122.                 File srcFile = new File(src, file);
  123.                 File destFile = new File(dest, file);
  124.                 copyFolder(srcFile,destFile);
  125.             }
  126.         } else {
  127.             InputStream in = new FileInputStream(src);
  128.             OutputStream out = new FileOutputStream(dest);
  129.            
  130.             byte[] buffer = new byte[1024];
  131.            
  132.             int length;
  133.             while ((length = in.read(buffer)) > 0) {
  134.                 out.write(buffer, 0, length);
  135.             }
  136.            
  137.             in.close();
  138.             out.close();
  139.         }
  140.     }
  141. }
RAW Paste Data Copied