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

222 lines
8.7 KiB
Java

package net.ME1312.SubServers.Bungee.Network.Packet;
import net.ME1312.Galaxi.Library.Map.ObjectMap;
import net.ME1312.Galaxi.Library.Util;
import net.ME1312.SubData.Server.Protocol.PacketObjectOut;
import net.ME1312.SubData.Server.SubDataClient;
import net.ME1312.SubServers.Bungee.Event.*;
import net.ME1312.SubServers.Bungee.Library.SubEvent;
import net.ME1312.SubServers.Bungee.SubProxy;
import net.md_5.bungee.api.plugin.Listener;
import net.md_5.bungee.event.EventHandler;
import java.util.LinkedList;
import java.util.List;
/**
* Event Send Packet
*/
public class PacketOutExRunEvent implements Listener, PacketObjectOut<Integer> {
private SubProxy plugin;
private ObjectMap<String> args;
private String type;
/**
* New PacketOutExRunEvent (Registerer)
*
* @param plugin
*/
public PacketOutExRunEvent(SubProxy plugin) {
Util.nullpo(plugin);
this.plugin = plugin;
}
/**
* New PacketOutExRunEvent (Out)
*
* @param event Event to be run
* @param args Arguments
*/
public PacketOutExRunEvent(Class<? extends SubEvent> event, ObjectMap<String> args) {
Util.nullpo(event, args);
this.type = event.getSimpleName();
this.args = args;
}
@Override
public ObjectMap<Integer> send(SubDataClient client) {
ObjectMap<Integer> json = new ObjectMap<Integer>();
json.set(0x0000, type);
json.set(0x0001, args);
return json;
}
@Override
public int version() {
return 0x0001;
}
private void broadcast(PacketOutExRunEvent packet) {
broadcast(null, packet);
}
private void broadcast(Object self, PacketOutExRunEvent packet) {
if (plugin.subdata != null) {
List<SubDataClient> clients = new LinkedList<SubDataClient>();
clients.addAll(plugin.subdata.getClients().values());
for (SubDataClient client : clients) {
if (client.getHandler() == null || client.getHandler() != self) { // Don't send events about yourself to yourself
if (client.getHandler() == null || client.getHandler().getSubData()[0] == client) { // Don't send events over subchannels
client.sendPacket(packet);
}
}
}
}
}
@EventHandler(priority = Byte.MAX_VALUE)
public void event(SubAddProxyEvent event) {
ObjectMap<String> args = new ObjectMap<String>();
args.set("proxy", event.getProxy().getName());
broadcast(event.getProxy(), new PacketOutExRunEvent(event.getClass(), args));
}
@EventHandler(priority = Byte.MAX_VALUE)
public void event(SubAddHostEvent event) {
if (!event.isCancelled()) {
ObjectMap<String> args = new ObjectMap<String>();
if (event.getPlayer() != null) args.set("player", event.getPlayer());
args.set("host", event.getHost().getName());
broadcast(event.getHost(), new PacketOutExRunEvent(event.getClass(), args));
}
}
@EventHandler(priority = Byte.MAX_VALUE)
public void event(SubAddServerEvent event) {
if (!event.isCancelled()) {
ObjectMap<String> args = new ObjectMap<String>();
if (event.getPlayer() != null) args.set("player", event.getPlayer());
if (event.getHost() != null) args.set("host", event.getHost().getName());
args.set("server", event.getServer().getName());
broadcast(event.getServer(), new PacketOutExRunEvent(event.getClass(), args));
}
}
@EventHandler(priority = Byte.MAX_VALUE)
public void event(SubCreateEvent event) {
if (!event.isCancelled()) {
ObjectMap<String> args = new ObjectMap<String>();
if (event.getPlayer() != null) args.set("player", event.getPlayer());
args.set("update", event.isUpdate());
args.set("name", event.getName());
args.set("host", event.getHost().getName());
args.set("template", event.getTemplate().getName());
if (event.getVersion() != null) args.set("version", event.getVersion());
args.set("port", event.getPort());
broadcast(new PacketOutExRunEvent(event.getClass(), args));
}
}
@EventHandler(priority = Byte.MAX_VALUE)
public void event(SubCreatedEvent event) {
ObjectMap<String> args = new ObjectMap<String>();
if (event.getPlayer() != null) args.set("player", event.getPlayer());
args.set("success", event.wasSuccessful());
args.set("update", event.wasUpdate());
args.set("name", event.getName());
args.set("host", event.getHost().getName());
args.set("template", event.getTemplate().getName());
if (event.getVersion() != null) args.set("version", event.getVersion());
args.set("port", event.getPort());
broadcast(new PacketOutExRunEvent(event.getClass(), args));
}
@EventHandler(priority = Byte.MAX_VALUE)
public void event(SubSendCommandEvent event) {
if (!event.isCancelled()) {
ObjectMap<String> args = new ObjectMap<String>();
if (event.getPlayer() != null) args.set("player", event.getPlayer());
args.set("server", event.getServer().getName());
args.set("command", event.getCommand());
if (event.getTarget() != null) args.set("target", event.getTarget());
broadcast(new PacketOutExRunEvent(event.getClass(), args));
}
}
@EventHandler(priority = Byte.MAX_VALUE)
public void event(SubEditServerEvent event) {
if (!event.isCancelled()) {
ObjectMap<String> args = new ObjectMap<String>();
if (event.getPlayer() != null) args.set("player", event.getPlayer());
args.set("server", event.getServer().getName());
args.set("edit", event.getEdit().key());
args.set("value", event.getEdit().value().asObject());
broadcast(new PacketOutExRunEvent(event.getClass(), args));
}
}
@EventHandler(priority = Byte.MAX_VALUE)
public void event(SubStartEvent event) {
if (!event.isCancelled()) {
ObjectMap<String> args = new ObjectMap<String>();
if (event.getPlayer() != null) args.set("player", event.getPlayer());
args.set("server", event.getServer().getName());
broadcast(new PacketOutExRunEvent(event.getClass(), args));
}
}
@EventHandler(priority = Byte.MAX_VALUE)
public void event(SubStartedEvent event) {
ObjectMap<String> args = new ObjectMap<String>();
args.set("server", event.getServer().getName());
broadcast(event.getServer(), new PacketOutExRunEvent(event.getClass(), args));
}
@EventHandler(priority = Byte.MAX_VALUE)
public void event(SubStopEvent event) {
if (!event.isCancelled()) {
ObjectMap<String> args = new ObjectMap<String>();
if (event.getPlayer() != null) args.set("player", event.getPlayer());
args.set("server", event.getServer().getName());
args.set("force", event.isForced());
broadcast(new PacketOutExRunEvent(event.getClass(), args));
}
}
@EventHandler(priority = Byte.MAX_VALUE)
public void event(SubStoppedEvent event) {
ObjectMap<String> args = new ObjectMap<String>();
args.set("server", event.getServer().getName());
broadcast(event.getServer(), new PacketOutExRunEvent(event.getClass(), args));
}
@EventHandler(priority = Byte.MAX_VALUE)
public void event(SubRemoveServerEvent event) {
if (!event.isCancelled()) {
ObjectMap<String> args = new ObjectMap<String>();
if (event.getPlayer() != null) args.set("player", event.getPlayer());
if (event.getHost() != null) args.set("host", event.getHost().getName());
args.set("server", event.getServer().getName());
broadcast(event.getServer(), new PacketOutExRunEvent(event.getClass(), args));
}
}
@EventHandler(priority = Byte.MAX_VALUE)
public void event(SubRemoveHostEvent event) {
if (!event.isCancelled()) {
ObjectMap<String> args = new ObjectMap<String>();
if (event.getPlayer() != null) args.set("player", event.getPlayer());
args.set("host", event.getHost().getName());
broadcast(event.getHost(), new PacketOutExRunEvent(event.getClass(), args));
}
}
@EventHandler(priority = Byte.MAX_VALUE)
public void event(SubRemoveProxyEvent event) {
ObjectMap<String> args = new ObjectMap<String>();
args.set("proxy", event.getProxy().getName());
broadcast(event.getProxy(), new PacketOutExRunEvent(event.getClass(), args));
}
}