2016-12-24 05:55:17 +01:00
package net.ME1312.SubServers.Bungee.Network.Packet ;
2016-12-19 01:38:02 +01:00
2016-12-24 05:55:17 +01:00
import net.ME1312.SubServers.Bungee.Host.Server ;
import net.ME1312.SubServers.Bungee.Host.SubServer ;
2018-04-15 03:53:51 +02:00
import net.ME1312.SubServers.Bungee.Library.Config.YAMLSection ;
2017-01-30 21:22:36 +01:00
import net.ME1312.SubServers.Bungee.Library.Util ;
2016-12-24 05:55:17 +01:00
import net.ME1312.SubServers.Bungee.Library.Version.Version ;
import net.ME1312.SubServers.Bungee.Network.Client ;
import net.ME1312.SubServers.Bungee.Network.PacketIn ;
import net.ME1312.SubServers.Bungee.Network.PacketOut ;
import net.ME1312.SubServers.Bungee.SubPlugin ;
2016-12-19 01:38:02 +01:00
import java.util.Map ;
import java.util.UUID ;
2017-01-07 20:06:54 +01:00
/ * *
* Start Server Packet
* /
2016-12-19 01:38:02 +01:00
public class PacketStartServer implements PacketIn , PacketOut {
private SubPlugin plugin ;
private int response ;
private String message ;
private String id ;
2017-01-07 20:06:54 +01:00
/ * *
* New PacketStartServer ( In )
*
* @param plugin SubPlugin
* /
2016-12-19 01:38:02 +01:00
public PacketStartServer ( SubPlugin plugin ) {
2017-01-30 21:22:36 +01:00
if ( Util . isNull ( plugin ) ) throw new NullPointerException ( ) ;
2016-12-19 01:38:02 +01:00
this . plugin = plugin ;
}
2017-01-07 20:06:54 +01:00
/ * *
* New PacketStartServer ( Out )
*
* @param response Response ID
* @param message Message
* @param id Receiver ID
* /
2016-12-19 01:38:02 +01:00
public PacketStartServer ( int response , String message , String id ) {
2017-01-30 21:22:36 +01:00
if ( Util . isNull ( response , message ) ) throw new NullPointerException ( ) ;
2016-12-19 01:38:02 +01:00
this . response = response ;
this . message = message ;
this . id = id ;
}
@Override
2018-04-15 03:53:51 +02:00
public YAMLSection generate ( ) {
YAMLSection json = new YAMLSection ( ) ;
2018-08-24 04:32:49 +02:00
if ( id ! = null ) json . set ( " id " , id ) ;
2018-04-15 03:53:51 +02:00
json . set ( " r " , response ) ;
json . set ( " m " , message ) ;
2016-12-19 01:38:02 +01:00
return json ;
}
@Override
2018-04-15 03:53:51 +02:00
public void execute ( Client client , YAMLSection data ) {
2016-12-19 01:38:02 +01:00
try {
Map < String , Server > servers = plugin . api . getServers ( ) ;
2018-04-15 03:53:51 +02:00
if ( ! servers . keySet ( ) . contains ( data . getRawString ( " server " ) . toLowerCase ( ) ) ) {
client . sendPacket ( new PacketStartServer ( 3 , " There is no server with that name " , ( data . contains ( " id " ) ) ? data . getRawString ( " id " ) : null ) ) ;
} else if ( ! ( servers . get ( data . getRawString ( " server " ) . toLowerCase ( ) ) instanceof SubServer ) ) {
client . sendPacket ( new PacketStartServer ( 4 , " That Server is not a SubServer " , ( data . contains ( " id " ) ) ? data . getRawString ( " id " ) : null ) ) ;
2018-08-30 03:55:59 +02:00
} else if ( ! ( ( SubServer ) servers . get ( data . getRawString ( " server " ) . toLowerCase ( ) ) ) . getHost ( ) . isAvailable ( ) ) {
client . sendPacket ( new PacketStartServer ( 5 , " That SubServer's Host is not available " , ( data . contains ( " id " ) ) ? data . getRawString ( " id " ) : null ) ) ;
2018-04-15 03:53:51 +02:00
} else if ( ! ( ( SubServer ) servers . get ( data . getRawString ( " server " ) . toLowerCase ( ) ) ) . getHost ( ) . isEnabled ( ) ) {
2018-08-30 03:55:59 +02:00
client . sendPacket ( new PacketStartServer ( 6 , " That SubServer's Host is not enabled " , ( data . contains ( " id " ) ) ? data . getRawString ( " id " ) : null ) ) ;
2018-04-15 03:53:51 +02:00
} else if ( ! ( ( SubServer ) servers . get ( data . getRawString ( " server " ) . toLowerCase ( ) ) ) . isEnabled ( ) ) {
2018-08-30 03:55:59 +02:00
client . sendPacket ( new PacketStartServer ( 7 , " That SubServer is not enabled " , ( data . contains ( " id " ) ) ? data . getRawString ( " id " ) : null ) ) ;
2018-04-15 03:53:51 +02:00
} else if ( ( ( SubServer ) servers . get ( data . getRawString ( " server " ) . toLowerCase ( ) ) ) . isRunning ( ) ) {
2018-08-30 03:55:59 +02:00
client . sendPacket ( new PacketStartServer ( 8 , " That SubServer is already running " , ( data . contains ( " id " ) ) ? data . getRawString ( " id " ) : null ) ) ;
2018-04-15 03:53:51 +02:00
} else if ( ( ( SubServer ) servers . get ( data . getRawString ( " server " ) . toLowerCase ( ) ) ) . getCurrentIncompatibilities ( ) . size ( ) ! = 0 ) {
2017-07-21 22:45:41 +02:00
String list = " " ;
2018-04-15 03:53:51 +02:00
for ( SubServer server : ( ( SubServer ) servers . get ( data . getRawString ( " server " ) . toLowerCase ( ) ) ) . getCurrentIncompatibilities ( ) ) {
2017-07-21 22:45:41 +02:00
if ( list . length ( ) ! = 0 ) list + = " , " ;
list + = server . getName ( ) ;
}
2018-08-30 03:55:59 +02:00
client . sendPacket ( new PacketStartServer ( 9 , " Cannot start SubServer while these servers are running: " + list , ( data . contains ( " id " ) ) ? data . getRawString ( " id " ) : null ) ) ;
2016-12-19 01:38:02 +01:00
} else {
2019-01-17 16:39:15 +01:00
if ( ( ( SubServer ) servers . get ( data . getRawString ( " server " ) . toLowerCase ( ) ) ) . start ( ( data . contains ( " player " ) ) ? data . getUUID ( " player " ) : null ) ) {
2018-04-15 03:53:51 +02:00
client . sendPacket ( new PacketStartServer ( 0 , " Starting SubServer " , ( data . contains ( " id " ) ) ? data . getRawString ( " id " ) : null ) ) ;
2016-12-19 01:38:02 +01:00
} else {
2018-04-15 03:53:51 +02:00
client . sendPacket ( new PacketStartServer ( 1 , " Couldn't start SubServer " , ( data . contains ( " id " ) ) ? data . getRawString ( " id " ) : null ) ) ;
2016-12-19 01:38:02 +01:00
}
}
} catch ( Throwable e ) {
2018-04-15 03:53:51 +02:00
client . sendPacket ( new PacketStartServer ( 2 , e . getClass ( ) . getCanonicalName ( ) + " : " + e . getMessage ( ) , ( data . contains ( " id " ) ) ? data . getRawString ( " id " ) : null ) ) ;
2017-07-23 06:32:57 +02:00
e . printStackTrace ( ) ;
2016-12-19 01:38:02 +01:00
}
}
@Override
public Version getVersion ( ) {
2018-08-09 20:54:56 +02:00
return new Version ( " 2.13b " ) ;
2016-12-19 01:38:02 +01:00
}
}