diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Event/SubCreateEvent.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Event/SubCreateEvent.java index e204fa7a..c7903036 100644 --- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Event/SubCreateEvent.java +++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Event/SubCreateEvent.java @@ -44,6 +44,13 @@ public class SubCreateEvent extends Event implements SubEvent, Cancellable { this.port = port; } + /** + * Server Create Event (as an Update) + * + * @param player Player Updating + * @param server Server to be Updated + * @param version Server Version + */ public SubCreateEvent(UUID player, SubServer server, Version version) { if (Util.isNull(server)) throw new NullPointerException(); this.player = player; @@ -78,7 +85,7 @@ public class SubCreateEvent extends Event implements SubEvent, Cancellable { * * @return Updating Server */ - public SubServer getUpdating() { + public SubServer getUpdatingServer() { return update; } diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Event/SubCreatedEvent.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Event/SubCreatedEvent.java new file mode 100644 index 00000000..3bdb8742 --- /dev/null +++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Event/SubCreatedEvent.java @@ -0,0 +1,131 @@ +package net.ME1312.SubServers.Bungee.Event; + +import net.ME1312.Galaxi.Library.Util; +import net.ME1312.Galaxi.Library.Version.Version; +import net.ME1312.SubServers.Bungee.Host.Host; +import net.ME1312.SubServers.Bungee.Host.SubCreator; +import net.ME1312.SubServers.Bungee.Host.SubServer; +import net.ME1312.SubServers.Bungee.Library.SubEvent; +import net.md_5.bungee.api.plugin.Event; + +import java.util.UUID; + +/** + * Server Created Event + */ +public class SubCreatedEvent extends Event implements SubEvent { + private UUID player; + private SubServer server; + private boolean success; + private boolean update; + private Host host; + private String name; + private SubCreator.ServerTemplate template; + private Version version; + private int port; + + /** + * Server Created Event + * + * @param player Player Creating + * @param host Potential Host + * @param name Server Name + * @param template Server Template + * @param version Server Version + * @param port Server Port Number + * @param server Server Object + * @param update Update Mode Status + * @param success Success Status + */ + public SubCreatedEvent(UUID player, Host host, String name, SubCreator.ServerTemplate template, Version version, int port, SubServer server, boolean update, boolean success) { + if (Util.isNull(host, name, template, port)) throw new NullPointerException(); + this.player = player; + this.host = host; + this.name = name; + this.template = template; + this.version = version; + this.port = port; + this.server = server; + this.update = update; + this.success = success; + } + + /** + * Get the Host the SubServer runs on + * + * @return Host + */ + public Host getHost() { + return host; + } + + /** + * Get if SubCreator was being run in update mode + * + * @return Update Mode Status + */ + public boolean wasUpdate() { + return update; + } + + /** + * Get if the operation was a success + * + * @return Success Status + */ + public boolean wasSuccessful() { + return success; + } + + /** + * Get the Server that was created/updated + * + * @return Finished Server + */ + public SubServer getServer() { + return server; + } + + /** + * Get the name the SubServer used + * + * @return SubServer Name + */ + public String getName() { + return name; + } + + /** + * Get the Template that was used + * + * @return Server Template + */ + public SubCreator.ServerTemplate getTemplate() { + return template; + } + + /** + * Get the Version the Server used + * + * @return Server Version + */ + public Version getVersion() { + return version; + } + + /** + * Get the Port the Server used + * + * @return Port Number + */ + public int getPort() { + return port; + } + + /** + * Gets the player that triggered the Event + * + * @return The Player that triggered this Event or null if Console + */ + public UUID getPlayer() { return player; } +} diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/External/ExternalSubCreator.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/External/ExternalSubCreator.java index f983fbae..a28a0eb8 100644 --- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/External/ExternalSubCreator.java +++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/External/ExternalSubCreator.java @@ -6,6 +6,7 @@ import net.ME1312.Galaxi.Library.Callback.Callback; import net.ME1312.Galaxi.Library.Callback.ReturnCallback; import net.ME1312.SubData.Server.SubDataClient; import net.ME1312.SubServers.Bungee.Event.SubCreateEvent; +import net.ME1312.SubServers.Bungee.Event.SubCreatedEvent; import net.ME1312.SubServers.Bungee.Host.*; import net.ME1312.Galaxi.Library.Config.YAMLConfig; import net.ME1312.Galaxi.Library.Map.ObjectMap; @@ -146,9 +147,11 @@ public class ExternalSubCreator extends SubCreator { if (template.getBuildOptions().getBoolean("Run-On-Finish", true)) subserver.start(); + host.plugin.getPluginManager().callEvent(new SubCreatedEvent(player, host, name, template, version, fport, subserver, false, true)); callback(origin, callback, subserver); } else { Logger.get(prefix).info(data.getString(0x0004)); + host.plugin.getPluginManager().callEvent(new SubCreatedEvent(player, host, name, template, version, fport, null, false, false)); callback(origin, callback, null); } } catch (Exception e) { @@ -220,6 +223,7 @@ public class ExternalSubCreator extends SubCreator { Logger.get(prefix).info(data.getString(0x0004)); } + host.plugin.getPluginManager().callEvent(new SubCreatedEvent(player, host, name, server.getTemplate(), version, server.getAddress().getPort(), server, true, data.getInt(0x0001) == 0)); if (callback != null) try { callback.run(data.getInt(0x0001) == 0); } catch (Throwable e) { diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/Internal/InternalSubCreator.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/Internal/InternalSubCreator.java index ddaff53a..feb5abe5 100644 --- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/Internal/InternalSubCreator.java +++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Host/Internal/InternalSubCreator.java @@ -7,6 +7,7 @@ import net.ME1312.Galaxi.Library.Callback.Callback; import net.ME1312.Galaxi.Library.Callback.ReturnCallback; import net.ME1312.Galaxi.Library.Config.YAMLSection; import net.ME1312.SubServers.Bungee.Event.SubCreateEvent; +import net.ME1312.SubServers.Bungee.Event.SubCreatedEvent; import net.ME1312.SubServers.Bungee.Host.*; import net.ME1312.Galaxi.Library.Config.YAMLConfig; import net.ME1312.Galaxi.Library.Map.ObjectMap; @@ -263,13 +264,17 @@ public class InternalSubCreator extends SubCreator { } InternalSubCreator.this.thread.remove(name.toLowerCase()); + + host.plugin.getPluginManager().callEvent(new SubCreatedEvent(player, host, name, template, version, port, subserver, update != null, true)); callback.run(subserver); } catch (Exception e) { e.printStackTrace(); + host.plugin.getPluginManager().callEvent(new SubCreatedEvent(player, host, name, template, version, port, update, update != null, false)); callback.run(null); } } else { Logger.get(prefix).info("Couldn't build the server jar. Check the SubCreator logs for more detail."); + host.plugin.getPluginManager().callEvent(new SubCreatedEvent(player, host, name, template, version, port, update, update != null, false)); callback.run(null); } InternalSubCreator.this.thread.remove(name.toLowerCase()); diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/Packet/PacketOutExRunEvent.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/Packet/PacketOutExRunEvent.java index 4506e4fd..0d2dc7a5 100644 --- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/Packet/PacketOutExRunEvent.java +++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Network/Packet/PacketOutExRunEvent.java @@ -117,6 +117,20 @@ public class PacketOutExRunEvent implements Listener, PacketObjectOut { } } + @EventHandler(priority = Byte.MAX_VALUE) + public void event(SubCreatedEvent event) { + ObjectMap args = new ObjectMap(); + if (event.getPlayer() != null) args.set("player", event.getPlayer().toString()); + 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()) { diff --git a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Event/SubCreateEvent.java b/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Event/SubCreateEvent.java index 70eb1a3c..be293c3c 100644 --- a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Event/SubCreateEvent.java +++ b/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Event/SubCreateEvent.java @@ -68,7 +68,7 @@ public class SubCreateEvent extends Event implements SubEvent { * * @param callback Updating Server */ - public void getUpdating(Callback callback) { + public void getUpdatingServer(Callback callback) { if (!update) { try { callback.run(null); @@ -99,15 +99,6 @@ public class SubCreateEvent extends Event implements SubEvent { return template; } - /** - * Set the Template to Use - * - * @param value Value - */ - public void getTemplate(String value) { - this.template = value; - } - /** * Get the Version the Server will use * @@ -117,15 +108,6 @@ public class SubCreateEvent extends Event implements SubEvent { return version; } - /** - * Set the Version the Server will use - * - * @param value Value - */ - public void setVersion(Version value) { - this.version = value; - } - /** * Get the Port the Server will use * diff --git a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Event/SubCreatedEvent.java b/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Event/SubCreatedEvent.java new file mode 100644 index 00000000..8950173f --- /dev/null +++ b/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Event/SubCreatedEvent.java @@ -0,0 +1,146 @@ +package net.ME1312.SubServers.Client.Bukkit.Event; + +import net.ME1312.Galaxi.Library.Callback.Callback; +import net.ME1312.Galaxi.Library.Util; +import net.ME1312.Galaxi.Library.Version.Version; +import net.ME1312.SubServers.Client.Bukkit.Library.SubEvent; +import net.ME1312.SubServers.Client.Bukkit.Network.API.SubServer; +import net.ME1312.SubServers.Client.Bukkit.SubAPI; +import org.bukkit.event.Event; +import org.bukkit.event.HandlerList; + +import java.lang.reflect.InvocationTargetException; +import java.util.UUID; + +/** + * Server Created Event + */ +public class SubCreatedEvent extends Event implements SubEvent { + private UUID player; + private boolean success; + private boolean update; + private String host; + private String name; + private String template; + private Version version; + private int port; + + /** + * Server Created Event + * + * @param player Player Creating + * @param host Potential Host + * @param name Server Name + * @param template Server Type + * @param version Server Version + * @param port Server Port Number + */ + public SubCreatedEvent(UUID player, String host, String name, String template, Version version, int port, boolean update, boolean success) { + if (Util.isNull(host, name, template, port)) throw new NullPointerException(); + this.player = player; + this.success = success; + this.update = update; + this.host = host; + this.name = name; + this.template = template; + this.version = version; + this.port = port; + } + + /** + * Get the Host the SubServer runs on + * + * @return Host + */ + public String getHost() { + return host; + } + + /** + * Get if SubCreator was being run in update mode + * + * @return Update Mode Status + */ + public boolean wasUpdate() { + return update; + } + + /** + * Get if the operation was a success + * + * @return Success Status + */ + public boolean wasSuccessful() { + return success; + } + + /** + * Get the Server that's being updated + * + * @param callback Updating Server + */ + public void getServer(Callback callback) { + if (!update && !success) { + try { + callback.run(null); + } catch (Throwable e) { + Throwable ew = new InvocationTargetException(e); + ew.printStackTrace(); + } + } else { + SubAPI.getInstance().getSubServer(name, callback); + } + } + + /** + * Get the name the SubServer used + * + * @return SubServer Name + */ + public String getName() { + return name; + } + + /** + * Get the Template that was used + * + * @return Server Template + */ + public String getTemplate() { + return template; + } + + /** + * Get the Version the Server used + * + * @return Server Version + */ + public Version getVersion() { + return version; + } + + /** + * Get the Port the Server used + * + * @return Port Number + */ + public int getPort() { + return port; + } + + /** + * Gets the player that triggered the Event + * + * @return The Player that triggered this Event or null if Console + */ + public UUID getPlayer() { return player; } + + @Override + public HandlerList getHandlers() { + return handlers; + } + public static HandlerList getHandlerList() { + return handlers; + } + private static HandlerList handlers = new HandlerList(); +} diff --git a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Event/SubSendCommandEvent.java b/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Event/SubSendCommandEvent.java index 76056837..bd8ce276 100644 --- a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Event/SubSendCommandEvent.java +++ b/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Event/SubSendCommandEvent.java @@ -51,15 +51,6 @@ public class SubSendCommandEvent extends Event implements SubEvent { return command; } - /** - * Sets the Command to be Sent - * - * @param value Value - */ - public void setCommand(String value) { - command = value; - } - @Override public HandlerList getHandlers() { return handlers; diff --git a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/Packet/PacketInExRunEvent.java b/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/Packet/PacketInExRunEvent.java index 61a9c3f2..1697e77b 100644 --- a/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/Packet/PacketInExRunEvent.java +++ b/SubServers.Client/Bukkit/src/net/ME1312/SubServers/Client/Bukkit/Network/Packet/PacketInExRunEvent.java @@ -62,6 +62,16 @@ public class PacketInExRunEvent implements PacketObjectIn { } } }); + callback("SubCreatedEvent", new Callback>() { + @Override + public void run(ObjectMap data) { + if (plugin.isEnabled()) { + Bukkit.getPluginManager().callEvent(new SubCreatedEvent((data.contains("player"))?data.getUUID("player"):null, data.getString("host"), data.getString("name"), + data.getString("template"), (data.contains("version"))?new Version(data.getString("version")):null, data.getInt("port"), data.getBoolean("update"), data.getBoolean("success"))); + callback("SubCreatedEvent", this); + } + } + }); callback("SubSendCommandEvent", new Callback>() { @Override public void run(ObjectMap data) { diff --git a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Event/SubCreateEvent.java b/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Event/SubCreateEvent.java index 6d589828..6df06c92 100644 --- a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Event/SubCreateEvent.java +++ b/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Event/SubCreateEvent.java @@ -68,7 +68,7 @@ public class SubCreateEvent extends AbstractEvent implements SubEvent { * * @param callback Updating Server */ - public void getUpdating(Callback callback) { + public void getUpdatingServer(Callback callback) { if (!update) { try { callback.run(null); @@ -99,15 +99,6 @@ public class SubCreateEvent extends AbstractEvent implements SubEvent { return template; } - /** - * Set the Template to Use - * - * @param value Value - */ - public void getTemplate(String value) { - this.template = value; - } - /** * Get the Version the Server will use * @@ -117,15 +108,6 @@ public class SubCreateEvent extends AbstractEvent implements SubEvent { return version; } - /** - * Set the Version the Server will use - * - * @param value Value - */ - public void setVersion(Version value) { - this.version = value; - } - /** * Get the Port the Server will use * diff --git a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Event/SubCreatedEvent.java b/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Event/SubCreatedEvent.java new file mode 100644 index 00000000..f477db49 --- /dev/null +++ b/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Event/SubCreatedEvent.java @@ -0,0 +1,149 @@ +package net.ME1312.SubServers.Client.Sponge.Event; + +import net.ME1312.Galaxi.Library.Callback.Callback; +import net.ME1312.SubServers.Client.Sponge.Library.SubEvent; +import net.ME1312.Galaxi.Library.Util; +import net.ME1312.Galaxi.Library.Version.Version; +import net.ME1312.SubServers.Client.Sponge.Network.API.SubServer; +import net.ME1312.SubServers.Client.Sponge.SubAPI; +import org.spongepowered.api.event.cause.Cause; +import org.spongepowered.api.event.impl.AbstractEvent; + +import java.lang.reflect.InvocationTargetException; +import java.util.UUID; + +/** + * Server Created Event + */ +public class SubCreatedEvent extends AbstractEvent implements SubEvent { + private UUID player; + private boolean success; + private boolean update; + private String host; + private String name; + private String template; + private Version version; + private int port; + + /** + * Server Created Event + * + * @param player Player Creating + * @param host Potential Host + * @param name Server Name + * @param template Server Type + * @param version Server Version + * @param port Server Port Number + */ + public SubCreatedEvent(UUID player, String host, String name, String template, Version version, int port, boolean update, boolean success) { + if (Util.isNull(host, name, template, port)) throw new NullPointerException(); + this.player = player; + this.success = success; + this.update = update; + this.host = host; + this.name = name; + this.template = template; + this.version = version; + this.port = port; + } + + /** + * Get the Host the SubServer runs on + * + * @return Host + */ + public String getHost() { + return host; + } + + /** + * Get if SubCreator was being run in update mode + * + * @return Update Mode Status + */ + public boolean wasUpdate() { + return update; + } + + /** + * Get if the operation was a success + * + * @return Success Status + */ + public boolean wasSuccessful() { + return success; + } + + /** + * Get the Server that's being updated + * + * @param callback Updating Server + */ + public void getServer(Callback callback) { + if (!update && !success) { + try { + callback.run(null); + } catch (Throwable e) { + Throwable ew = new InvocationTargetException(e); + ew.printStackTrace(); + } + } else { + SubAPI.getInstance().getSubServer(name, callback); + } + } + + /** + * Get the name the SubServer used + * + * @return SubServer Name + */ + public String getName() { + return name; + } + + /** + * Get the Template that was used + * + * @return Server Template + */ + public String getTemplate() { + return template; + } + + /** + * Get the Version the Server used + * + * @return Server Version + */ + public Version getVersion() { + return version; + } + + /** + * Get the Port the Server used + * + * @return Port Number + */ + public int getPort() { + return port; + } + + /** + * Gets the player that triggered the Event + * + * @return The Player that triggered this Event or null if Console + */ + public UUID getPlayer() { return player; } + + /** + * Gets the cause of this Event + * + * @deprecated Use simplified methods where available + * @return The player UUID who triggered this event + */ + @Override + @Deprecated + public Cause getCause() { + return Cause.builder().append(player).build(getContext()); + } +} diff --git a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Event/SubSendCommandEvent.java b/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Event/SubSendCommandEvent.java index 20f308e0..7ce21aaf 100644 --- a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Event/SubSendCommandEvent.java +++ b/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Event/SubSendCommandEvent.java @@ -51,15 +51,6 @@ public class SubSendCommandEvent extends AbstractEvent implements SubEvent { return command; } - /** - * Sets the Command to be Sent - * - * @param value Value - */ - public void setCommand(String value) { - command = value; - } - /** * Gets the cause of this Event * diff --git a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Network/Packet/PacketInExRunEvent.java b/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Network/Packet/PacketInExRunEvent.java index dbcb85df..db58a05a 100644 --- a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Network/Packet/PacketInExRunEvent.java +++ b/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Network/Packet/PacketInExRunEvent.java @@ -54,6 +54,14 @@ public class PacketInExRunEvent implements PacketObjectIn { callback("SubCreateEvent", this); } }); + callback("SubCreatedEvent", new Callback>() { + @Override + public void run(ObjectMap data) { + Sponge.getEventManager().post(new SubCreatedEvent((data.contains("player"))?data.getUUID("player"):null, data.getString("host"), data.getString("name"), + data.getString("template"), new Version(data.getString("version")), data.getInt("port"), data.getBoolean("update"), data.getBoolean("success"))); + callback("SubCreatedEvent", this); + } + }); callback("SubSendCommandEvent", new Callback>() { @Override public void run(ObjectMap data) { diff --git a/SubServers.Host/src/net/ME1312/SubServers/Host/Event/SubCreateEvent.java b/SubServers.Host/src/net/ME1312/SubServers/Host/Event/SubCreateEvent.java index 442f3066..a2b26b59 100644 --- a/SubServers.Host/src/net/ME1312/SubServers/Host/Event/SubCreateEvent.java +++ b/SubServers.Host/src/net/ME1312/SubServers/Host/Event/SubCreateEvent.java @@ -66,7 +66,7 @@ public class SubCreateEvent extends Event { * * @param callback Updating Server */ - public void getUpdating(Callback callback) { + public void getUpdatingServer(Callback callback) { if (!update) { try { callback.run(null); @@ -97,15 +97,6 @@ public class SubCreateEvent extends Event { return template; } - /** - * Set the Template to Use - * - * @param value Value - */ - public void getTemplate(String value) { - this.template = value; - } - /** * Get the Version the Server will use * @@ -115,15 +106,6 @@ public class SubCreateEvent extends Event { return version; } - /** - * Set the Version the Server will use - * - * @param value Value - */ - public void setVersion(Version value) { - this.version = value; - } - /** * Get the Port the Server will use * diff --git a/SubServers.Host/src/net/ME1312/SubServers/Host/Event/SubCreatedEvent.java b/SubServers.Host/src/net/ME1312/SubServers/Host/Event/SubCreatedEvent.java new file mode 100644 index 00000000..4634e6d7 --- /dev/null +++ b/SubServers.Host/src/net/ME1312/SubServers/Host/Event/SubCreatedEvent.java @@ -0,0 +1,135 @@ +package net.ME1312.SubServers.Host.Event; + +import net.ME1312.Galaxi.Library.Callback.Callback; +import net.ME1312.Galaxi.Library.Event.Event; +import net.ME1312.Galaxi.Library.Util; +import net.ME1312.Galaxi.Library.Version.Version; +import net.ME1312.SubServers.Host.Network.API.SubServer; +import net.ME1312.SubServers.Host.SubAPI; + +import java.lang.reflect.InvocationTargetException; +import java.util.UUID; + +/** + * Server Created Event + */ +public class SubCreatedEvent extends Event { + private UUID player; + private boolean success; + private boolean update; + private String host; + private String name; + private String template; + private Version version; + private int port; + + /** + * Server Created Event + * + * @param player Player Creating + * @param host Potential Host + * @param name Server Name + * @param template Server Type + * @param version Server Version + * @param port Server Port Number + */ + public SubCreatedEvent(UUID player, String host, String name, String template, Version version, int port, boolean update, boolean success) { + if (Util.isNull(host, name, template, port)) throw new NullPointerException(); + this.player = player; + this.success = success; + this.update = update; + this.host = host; + this.name = name; + this.template = template; + this.version = version; + this.port = port; + } + + /** + * Get the Host the SubServer runs on + * + * @return Host + */ + public String getHost() { + return host; + } + + /** + * Get if SubCreator was being run in update mode + * + * @return Update Mode Status + */ + public boolean wasUpdate() { + return update; + } + + /** + * Get if the operation was a success + * + * @return Success Status + */ + public boolean wasSuccessful() { + return success; + } + + /** + * Get the Server that's being updated + * + * @param callback Updating Server + */ + public void getServer(Callback callback) { + if (!update && !success) { + try { + callback.run(null); + } catch (Throwable e) { + Throwable ew = new InvocationTargetException(e); + ew.printStackTrace(); + } + } else { + SubAPI.getInstance().getSubServer(name, callback); + } + } + + /** + * Get the name the SubServer used + * + * @return SubServer Name + */ + public String getName() { + return name; + } + + /** + * Get the Template that was used + * + * @return Server Template + */ + public String getTemplate() { + return template; + } + + /** + * Get the Version the Server used + * + * @return Server Version + */ + public Version getVersion() { + return version; + } + + /** + * Get the Port the Server used + * + * @return Port Number + */ + public int getPort() { + return port; + } + + /** + * Gets the player that triggered the Event + * + * @return The Player that triggered this Event or null if Console + */ + public UUID getPlayer() { return player; } +} diff --git a/SubServers.Host/src/net/ME1312/SubServers/Host/Event/SubSendCommandEvent.java b/SubServers.Host/src/net/ME1312/SubServers/Host/Event/SubSendCommandEvent.java index 24d28e45..b0f1f7cc 100644 --- a/SubServers.Host/src/net/ME1312/SubServers/Host/Event/SubSendCommandEvent.java +++ b/SubServers.Host/src/net/ME1312/SubServers/Host/Event/SubSendCommandEvent.java @@ -48,13 +48,4 @@ public class SubSendCommandEvent extends Event { public String getCommand() { return command; } - - /** - * Sets the Command to be Sent - * - * @param value Value - */ - public void setCommand(String value) { - command = value; - } } diff --git a/SubServers.Host/src/net/ME1312/SubServers/Host/Network/Packet/PacketInExRunEvent.java b/SubServers.Host/src/net/ME1312/SubServers/Host/Network/Packet/PacketInExRunEvent.java index 173f7007..b024fbe7 100644 --- a/SubServers.Host/src/net/ME1312/SubServers/Host/Network/Packet/PacketInExRunEvent.java +++ b/SubServers.Host/src/net/ME1312/SubServers/Host/Network/Packet/PacketInExRunEvent.java @@ -52,6 +52,14 @@ public class PacketInExRunEvent implements PacketObjectIn { callback("SubCreateEvent", this); } }); + callback("SubCreatedEvent", new Callback>() { + @Override + public void run(ObjectMap data) { + GalaxiEngine.getInstance().getPluginManager().executeEvent(new SubCreatedEvent((data.contains("player"))?data.getUUID("player"):null, data.getRawString("host"), data.getRawString("name"), + data.getRawString("template"), data.getVersion("version"), data.getInt("port"), data.getBoolean("update"), data.getBoolean("success"))); + callback("SubCreatedEvent", this); + } + }); callback("SubSendCommandEvent", new Callback>() { @Override public void run(ObjectMap data) { diff --git a/SubServers.Sync/src/net/ME1312/SubServers/Sync/Event/SubCreateEvent.java b/SubServers.Sync/src/net/ME1312/SubServers/Sync/Event/SubCreateEvent.java index 271a7d5f..44b04edc 100644 --- a/SubServers.Sync/src/net/ME1312/SubServers/Sync/Event/SubCreateEvent.java +++ b/SubServers.Sync/src/net/ME1312/SubServers/Sync/Event/SubCreateEvent.java @@ -67,7 +67,7 @@ public class SubCreateEvent extends Event implements SubEvent { * * @param callback Updating Server */ - public void getUpdating(Callback callback) { + public void getUpdatingServer(Callback callback) { if (!update) { try { callback.run(null); @@ -98,15 +98,6 @@ public class SubCreateEvent extends Event implements SubEvent { return template; } - /** - * Set the Template to Use - * - * @param value Value - */ - public void getTemplate(String value) { - this.template = value; - } - /** * Get the Version the Server will use * @@ -116,15 +107,6 @@ public class SubCreateEvent extends Event implements SubEvent { return version; } - /** - * Set the Version the Server will use - * - * @param value Value - */ - public void setVersion(Version value) { - this.version = value; - } - /** * Get the Port the Server will use * diff --git a/SubServers.Sync/src/net/ME1312/SubServers/Sync/Event/SubCreatedEvent.java b/SubServers.Sync/src/net/ME1312/SubServers/Sync/Event/SubCreatedEvent.java new file mode 100644 index 00000000..af450b6a --- /dev/null +++ b/SubServers.Sync/src/net/ME1312/SubServers/Sync/Event/SubCreatedEvent.java @@ -0,0 +1,136 @@ +package net.ME1312.SubServers.Sync.Event; + +import net.ME1312.Galaxi.Library.Callback.Callback; +import net.ME1312.Galaxi.Library.Util; +import net.ME1312.Galaxi.Library.Version.Version; +import net.ME1312.SubServers.Sync.Library.SubEvent; +import net.ME1312.SubServers.Sync.Network.API.SubServer; +import net.ME1312.SubServers.Sync.SubAPI; +import net.md_5.bungee.api.plugin.Event; + +import java.lang.reflect.InvocationTargetException; +import java.util.UUID; + +/** + * Server Created Event + */ +public class SubCreatedEvent extends Event implements SubEvent { + private UUID player; + private boolean success; + private boolean update; + private String host; + private String name; + private String template; + private Version version; + private int port; + + /** + * Server Created Event + * + * @param player Player Creating + * @param host Potential Host + * @param name Server Name + * @param template Server Type + * @param version Server Version + * @param port Server Port Number + */ + public SubCreatedEvent(UUID player, String host, String name, String template, Version version, int port, boolean update, boolean success) { + if (Util.isNull(host, name, template, port)) throw new NullPointerException(); + this.player = player; + this.success = success; + this.update = update; + this.host = host; + this.name = name; + this.template = template; + this.version = version; + this.port = port; + } + + /** + * Get the Host the SubServer runs on + * + * @return Host + */ + public String getHost() { + return host; + } + + /** + * Get if SubCreator was being run in update mode + * + * @return Update Mode Status + */ + public boolean wasUpdate() { + return update; + } + + /** + * Get if the operation was a success + * + * @return Success Status + */ + public boolean wasSuccessful() { + return success; + } + + /** + * Get the Server that's being updated + * + * @param callback Updating Server + */ + public void getServer(Callback callback) { + if (!update && !success) { + try { + callback.run(null); + } catch (Throwable e) { + Throwable ew = new InvocationTargetException(e); + ew.printStackTrace(); + } + } else { + SubAPI.getInstance().getSubServer(name, callback); + } + } + + /** + * Get the name the SubServer used + * + * @return SubServer Name + */ + public String getName() { + return name; + } + + /** + * Get the Template that was used + * + * @return Server Template + */ + public String getTemplate() { + return template; + } + + /** + * Get the Version the Server used + * + * @return Server Version + */ + public Version getVersion() { + return version; + } + + /** + * Get the Port the Server used + * + * @return Port Number + */ + public int getPort() { + return port; + } + + /** + * Gets the player that triggered the Event + * + * @return The Player that triggered this Event or null if Console + */ + public UUID getPlayer() { return player; } +} diff --git a/SubServers.Sync/src/net/ME1312/SubServers/Sync/Event/SubSendCommandEvent.java b/SubServers.Sync/src/net/ME1312/SubServers/Sync/Event/SubSendCommandEvent.java index 0f6d0c1e..7008dee2 100644 --- a/SubServers.Sync/src/net/ME1312/SubServers/Sync/Event/SubSendCommandEvent.java +++ b/SubServers.Sync/src/net/ME1312/SubServers/Sync/Event/SubSendCommandEvent.java @@ -49,13 +49,4 @@ public class SubSendCommandEvent extends Event implements SubEvent { public String getCommand() { return command; } - - /** - * Sets the Command to be Sent - * - * @param value Value - */ - public void setCommand(String value) { - command = value; - } } diff --git a/SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/Packet/PacketInExRunEvent.java b/SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/Packet/PacketInExRunEvent.java index 2d6afbd5..c62f1407 100644 --- a/SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/Packet/PacketInExRunEvent.java +++ b/SubServers.Sync/src/net/ME1312/SubServers/Sync/Network/Packet/PacketInExRunEvent.java @@ -53,6 +53,14 @@ public class PacketInExRunEvent implements PacketObjectIn { callback("SubCreateEvent", this); } }); + callback("SubCreatedEvent", new Callback>() { + @Override + public void run(ObjectMap data) { + ProxyServer.getInstance().getPluginManager().callEvent(new SubCreatedEvent((data.contains("player"))?data.getUUID("player"):null, data.getRawString("host"), data.getRawString("name"), + data.getRawString("template"), data.getVersion("version"), data.getInt("port"), data.getBoolean("update"), data.getBoolean("success"))); + callback("SubCreatedEvent", this); + } + }); callback("SubSendCommandEvent", new Callback>() { @Override public void run(ObjectMap data) {