SubServers-2/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/Packet/PacketCreateServer.java

95 lines
4.1 KiB
Java
Raw Normal View History

2016-12-24 05:55:17 +01:00
package net.ME1312.SubServers.Bungee.Network.Packet;
2016-12-19 01:38:02 +01:00
2019-04-18 16:02:09 +02:00
import net.ME1312.Galaxi.Library.Map.ObjectMap;
import net.ME1312.Galaxi.Library.Version.Version;
import net.ME1312.SubData.Server.Protocol.PacketObjectIn;
import net.ME1312.SubData.Server.Protocol.PacketObjectOut;
2020-11-16 21:34:59 +01:00
import net.ME1312.SubData.Server.SubDataClient;
import net.ME1312.SubServers.Bungee.Host.SubCreator;
import net.ME1312.SubServers.Bungee.SubProxy;
2016-12-19 01:38:02 +01:00
import java.util.UUID;
2017-01-07 20:06:54 +01:00
/**
* Create Server Packet
*/
2019-04-18 16:02:09 +02:00
public class PacketCreateServer implements PacketObjectIn<Integer>, PacketObjectOut<Integer> {
private SubProxy plugin;
2016-12-19 01:38:02 +01:00
private int response;
2019-04-18 16:02:09 +02:00
private UUID tracker;
2016-12-19 01:38:02 +01:00
2017-01-07 20:06:54 +01:00
/**
* New PacketCreateServer (In)
*
* @param plugin SubPlugin
*/
public PacketCreateServer(SubProxy plugin) {
2016-12-19 01:38:02 +01:00
this.plugin = plugin;
}
2017-01-07 20:06:54 +01:00
/**
* New PacketCreateServer (Out)
*
* @param response Response ID
* @param id Receiver ID
*/
2019-04-18 16:02:09 +02:00
public PacketCreateServer(int response, UUID id) {
2016-12-19 01:38:02 +01:00
this.response = response;
2019-04-18 16:02:09 +02:00
this.tracker = id;
2016-12-19 01:38:02 +01:00
}
@Override
2019-04-18 16:02:09 +02:00
public ObjectMap<Integer> send(SubDataClient client) {
ObjectMap<Integer> data = new ObjectMap<Integer>();
if (tracker != null) data.set(0x0000, tracker);
data.set(0x0001, response);
return data;
2016-12-19 01:38:02 +01:00
}
@Override
2019-04-18 16:02:09 +02:00
public void receive(SubDataClient client, ObjectMap<Integer> data) {
UUID tracker = (data.contains(0x0000)?data.getUUID(0x0000):null);
2016-12-19 01:38:02 +01:00
try {
String name = data.getString(0x0001);
String host = data.getString(0x0002);
String template = data.getString(0x0003);
2019-04-18 16:02:09 +02:00
Version version = (data.contains(0x0004)?data.getVersion(0x0004):null);
Integer port = (data.contains(0x0005)?data.getInt(0x0005):null);
UUID player = (data.contains(0x0006)?data.getUUID(0x0006):null);
boolean waitfor = (data.contains(0x0007)?data.getBoolean(0x0007):false);
if (name.contains(" ")) {
client.sendPacket(new PacketCreateServer(3, tracker));
} else if (plugin.api.getSubServers().containsKey(name.toLowerCase()) || SubCreator.isReserved(name)) {
2019-04-18 16:02:09 +02:00
client.sendPacket(new PacketCreateServer(4, tracker));
} else if (!plugin.hosts.containsKey(host.toLowerCase())) {
2019-04-18 16:02:09 +02:00
client.sendPacket(new PacketCreateServer(5, tracker));
} else if (!plugin.hosts.get(host.toLowerCase()).isAvailable()) {
client.sendPacket(new PacketCreateServer(6, tracker));
} else if (!plugin.hosts.get(host.toLowerCase()).isEnabled()) {
client.sendPacket(new PacketCreateServer(7, tracker));
} else if (!plugin.hosts.get(host.toLowerCase()).getCreator().getTemplates().containsKey(template.toLowerCase())) {
2019-04-18 16:02:09 +02:00
client.sendPacket(new PacketCreateServer(8, tracker));
} else if (!plugin.hosts.get(host.toLowerCase()).getCreator().getTemplate(template).isEnabled()) {
client.sendPacket(new PacketCreateServer(9, tracker));
2019-05-09 22:17:15 +02:00
} else if (version == null && plugin.hosts.get(host.toLowerCase()).getCreator().getTemplate(template).requiresVersion()) {
2019-04-18 16:02:09 +02:00
client.sendPacket(new PacketCreateServer(10, tracker));
2019-05-09 22:17:15 +02:00
} else if (port != null && (port <= 0 || port > 65535)) {
client.sendPacket(new PacketCreateServer(11, tracker));
2016-12-19 01:38:02 +01:00
} else {
2019-10-19 22:38:44 +02:00
if (plugin.hosts.get(host.toLowerCase()).getCreator().create(player, name, plugin.hosts.get(host.toLowerCase()).getCreator().getTemplate(template), version, port, server -> {
if (waitfor) client.sendPacket(new PacketCreateServer((server == null)?12:0, tracker));
})) {
if (!waitfor) client.sendPacket(new PacketCreateServer(0, tracker));
2016-12-19 01:38:02 +01:00
} else {
2019-04-18 16:02:09 +02:00
client.sendPacket(new PacketCreateServer(1, tracker));
2016-12-19 01:38:02 +01:00
}
}
} catch (Throwable e) {
2019-04-18 16:02:09 +02:00
client.sendPacket(new PacketCreateServer(2, tracker));
e.printStackTrace();
2016-12-19 01:38:02 +01:00
}
}
}