SubServers, Host, Client Beta v2.12b;3/2.12c;3/2.12b;3

This commit is contained in:
ME1312 2017-07-23 00:32:57 -04:00
parent e058b3f655
commit 09c5a8251a
72 changed files with 1797 additions and 510 deletions

Binary file not shown.

Binary file not shown.

View File

@ -78,6 +78,7 @@
<li><a href="net/ME1312/SubServers/Bungee/Host/SubCreator.html" title="class in net.ME1312.SubServers.Bungee.Host" target="classFrame">SubCreator</a></li>
<li><a href="net/ME1312/SubServers/Bungee/Host/SubCreator.ServerTemplate.html" title="class in net.ME1312.SubServers.Bungee.Host" target="classFrame">SubCreator.ServerTemplate</a></li>
<li><a href="net/ME1312/SubServers/Bungee/Host/SubCreator.ServerType.html" title="enum in net.ME1312.SubServers.Bungee.Host" target="classFrame">SubCreator.ServerType</a></li>
<li><a href="net/ME1312/SubServers/Bungee/Library/Exception/SubCreatorException.html" title="class in net.ME1312.SubServers.Bungee.Library.Exception" target="classFrame">SubCreatorException</a></li>
<li><a href="net/ME1312/SubServers/Bungee/Network/SubDataServer.html" title="class in net.ME1312.SubServers.Bungee.Network" target="classFrame">SubDataServer</a></li>
<li><a href="net/ME1312/SubServers/Bungee/Network/SubDataServer.Encryption.html" title="enum in net.ME1312.SubServers.Bungee.Network" target="classFrame">SubDataServer.Encryption</a></li>
<li><a href="net/ME1312/SubServers/Bungee/Event/SubEditServerEvent.html" title="class in net.ME1312.SubServers.Bungee.Event" target="classFrame">SubEditServerEvent</a></li>

View File

@ -78,6 +78,7 @@
<li><a href="net/ME1312/SubServers/Bungee/Host/SubCreator.html" title="class in net.ME1312.SubServers.Bungee.Host">SubCreator</a></li>
<li><a href="net/ME1312/SubServers/Bungee/Host/SubCreator.ServerTemplate.html" title="class in net.ME1312.SubServers.Bungee.Host">SubCreator.ServerTemplate</a></li>
<li><a href="net/ME1312/SubServers/Bungee/Host/SubCreator.ServerType.html" title="enum in net.ME1312.SubServers.Bungee.Host">SubCreator.ServerType</a></li>
<li><a href="net/ME1312/SubServers/Bungee/Library/Exception/SubCreatorException.html" title="class in net.ME1312.SubServers.Bungee.Library.Exception">SubCreatorException</a></li>
<li><a href="net/ME1312/SubServers/Bungee/Network/SubDataServer.html" title="class in net.ME1312.SubServers.Bungee.Network">SubDataServer</a></li>
<li><a href="net/ME1312/SubServers/Bungee/Network/SubDataServer.Encryption.html" title="enum in net.ME1312.SubServers.Bungee.Network">SubDataServer.Encryption</a></li>
<li><a href="net/ME1312/SubServers/Bungee/Event/SubEditServerEvent.html" title="class in net.ME1312.SubServers.Bungee.Event">SubEditServerEvent</a></li>

View File

@ -67,7 +67,7 @@
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<div class="contentContainer"><a href="#I:A">A</a>&nbsp;<a href="#I:B">B</a>&nbsp;<a href="#I:C">C</a>&nbsp;<a href="#I:D">D</a>&nbsp;<a href="#I:E">E</a>&nbsp;<a href="#I:F">F</a>&nbsp;<a href="#I:G">G</a>&nbsp;<a href="#I:H">H</a>&nbsp;<a href="#I:I">I</a>&nbsp;<a href="#I:J">J</a>&nbsp;<a href="#I:L">L</a>&nbsp;<a href="#I:M">M</a>&nbsp;<a href="#I:N">N</a>&nbsp;<a href="#I:O">O</a>&nbsp;<a href="#I:P">P</a>&nbsp;<a href="#I:R">R</a>&nbsp;<a href="#I:S">S</a>&nbsp;<a href="#I:T">T</a>&nbsp;<a href="#I:U">U</a>&nbsp;<a href="#I:V">V</a>&nbsp;<a href="#I:W">W</a>&nbsp;<a href="#I:Y">Y</a>&nbsp;<a name="I:A">
<div class="contentContainer"><a href="#I:A">A</a>&nbsp;<a href="#I:B">B</a>&nbsp;<a href="#I:C">C</a>&nbsp;<a href="#I:D">D</a>&nbsp;<a href="#I:E">E</a>&nbsp;<a href="#I:F">F</a>&nbsp;<a href="#I:G">G</a>&nbsp;<a href="#I:H">H</a>&nbsp;<a href="#I:I">I</a>&nbsp;<a href="#I:J">J</a>&nbsp;<a href="#I:L">L</a>&nbsp;<a href="#I:M">M</a>&nbsp;<a href="#I:N">N</a>&nbsp;<a href="#I:O">O</a>&nbsp;<a href="#I:P">P</a>&nbsp;<a href="#I:R">R</a>&nbsp;<a href="#I:S">S</a>&nbsp;<a href="#I:T">T</a>&nbsp;<a href="#I:U">U</a>&nbsp;<a href="#I:V">V</a>&nbsp;<a href="#I:W">W</a>&nbsp;<a href="#I:Y">Y</a>&nbsp;<a href="#I:Z">Z</a>&nbsp;<a name="I:A">
<!-- -->
</a>
<h2 class="title">A</h2>
@ -678,6 +678,10 @@
<dd>
<div class="block">Get Remote Address</div>
</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Bungee/Host/SubCreator.html#getAllReservedNames--">getAllReservedNames()</a></span> - Static method in class net.ME1312.SubServers.Bungee.Host.<a href="net/ME1312/SubServers/Bungee/Host/SubCreator.html" title="class in net.ME1312.SubServers.Bungee.Host">SubCreator</a></dt>
<dd>
<div class="block">Get a list of all currently reserved Server names across all hosts</div>
</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Bungee/Network/Packet/PacketExUpdateServer.UpdateType.html#getArguments--">getArguments()</a></span> - Method in enum net.ME1312.SubServers.Bungee.Network.Packet.<a href="net/ME1312/SubServers/Bungee/Network/Packet/PacketExUpdateServer.UpdateType.html" title="enum in net.ME1312.SubServers.Bungee.Network.Packet">PacketExUpdateServer.UpdateType</a></dt>
<dd>&nbsp;</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Bungee/Library/Util.html#getBackwards-java.util.Map-V-">getBackwards(Map&lt;K, V&gt;, V)</a></span> - Static method in class net.ME1312.SubServers.Bungee.Library.<a href="net/ME1312/SubServers/Bungee/Library/Util.html" title="class in net.ME1312.SubServers.Bungee.Library">Util</a></dt>
@ -1000,15 +1004,23 @@
</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Bungee/Host/External/ExternalSubCreator.html#getLogger--">getLogger()</a></span> - Method in class net.ME1312.SubServers.Bungee.Host.External.<a href="net/ME1312/SubServers/Bungee/Host/External/ExternalSubCreator.html" title="class in net.ME1312.SubServers.Bungee.Host.External">ExternalSubCreator</a></dt>
<dd>&nbsp;</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Bungee/Host/External/ExternalSubCreator.html#getLogger-java.lang.String-">getLogger(String)</a></span> - Method in class net.ME1312.SubServers.Bungee.Host.External.<a href="net/ME1312/SubServers/Bungee/Host/External/ExternalSubCreator.html" title="class in net.ME1312.SubServers.Bungee.Host.External">ExternalSubCreator</a></dt>
<dd>&nbsp;</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Bungee/Host/External/ExternalSubServer.html#getLogger--">getLogger()</a></span> - Method in class net.ME1312.SubServers.Bungee.Host.External.<a href="net/ME1312/SubServers/Bungee/Host/External/ExternalSubServer.html" title="class in net.ME1312.SubServers.Bungee.Host.External">ExternalSubServer</a></dt>
<dd>&nbsp;</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Bungee/Host/Internal/InternalSubCreator.html#getLogger--">getLogger()</a></span> - Method in class net.ME1312.SubServers.Bungee.Host.Internal.<a href="net/ME1312/SubServers/Bungee/Host/Internal/InternalSubCreator.html" title="class in net.ME1312.SubServers.Bungee.Host.Internal">InternalSubCreator</a></dt>
<dd>&nbsp;</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Bungee/Host/Internal/InternalSubCreator.html#getLogger-java.lang.String-">getLogger(String)</a></span> - Method in class net.ME1312.SubServers.Bungee.Host.Internal.<a href="net/ME1312/SubServers/Bungee/Host/Internal/InternalSubCreator.html" title="class in net.ME1312.SubServers.Bungee.Host.Internal">InternalSubCreator</a></dt>
<dd>&nbsp;</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Bungee/Host/Internal/InternalSubServer.html#getLogger--">getLogger()</a></span> - Method in class net.ME1312.SubServers.Bungee.Host.Internal.<a href="net/ME1312/SubServers/Bungee/Host/Internal/InternalSubServer.html" title="class in net.ME1312.SubServers.Bungee.Host.Internal">InternalSubServer</a></dt>
<dd>&nbsp;</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Bungee/Host/SubCreator.html#getLogger--">getLogger()</a></span> - Method in class net.ME1312.SubServers.Bungee.Host.<a href="net/ME1312/SubServers/Bungee/Host/SubCreator.html" title="class in net.ME1312.SubServers.Bungee.Host">SubCreator</a></dt>
<dd>
<div class="block">Gets the Logger for the creator</div>
<div class="block">Gets all loggers for All SubCreator Instances</div>
</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Bungee/Host/SubCreator.html#getLogger-java.lang.String-">getLogger(String)</a></span> - Method in class net.ME1312.SubServers.Bungee.Host.<a href="net/ME1312/SubServers/Bungee/Host/SubCreator.html" title="class in net.ME1312.SubServers.Bungee.Host">SubCreator</a></dt>
<dd>
<div class="block">Gets the Logger for a SubCreator Instance</div>
</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Bungee/Host/SubServer.html#getLogger--">getLogger()</a></span> - Method in class net.ME1312.SubServers.Bungee.Host.<a href="net/ME1312/SubServers/Bungee/Host/SubServer.html" title="class in net.ME1312.SubServers.Bungee.Host">SubServer</a></dt>
<dd>
@ -1162,6 +1174,14 @@
<dd>
<div class="block">Get an Unparsed String List by Handle</div>
</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Bungee/Host/External/ExternalSubCreator.html#getReservedNames--">getReservedNames()</a></span> - Method in class net.ME1312.SubServers.Bungee.Host.External.<a href="net/ME1312/SubServers/Bungee/Host/External/ExternalSubCreator.html" title="class in net.ME1312.SubServers.Bungee.Host.External">ExternalSubCreator</a></dt>
<dd>&nbsp;</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Bungee/Host/Internal/InternalSubCreator.html#getReservedNames--">getReservedNames()</a></span> - Method in class net.ME1312.SubServers.Bungee.Host.Internal.<a href="net/ME1312/SubServers/Bungee/Host/Internal/InternalSubCreator.html" title="class in net.ME1312.SubServers.Bungee.Host.Internal">InternalSubCreator</a></dt>
<dd>&nbsp;</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Bungee/Host/SubCreator.html#getReservedNames--">getReservedNames()</a></span> - Method in class net.ME1312.SubServers.Bungee.Host.<a href="net/ME1312/SubServers/Bungee/Host/SubCreator.html" title="class in net.ME1312.SubServers.Bungee.Host">SubCreator</a></dt>
<dd>
<div class="block">Get a list of currently reserved Server names</div>
</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Bungee/SubAPI.html#getRuntimeDirectory--">getRuntimeDirectory()</a></span> - Method in class net.ME1312.SubServers.Bungee.<a href="net/ME1312/SubServers/Bungee/SubAPI.html" title="class in net.ME1312.SubServers.Bungee">SubAPI</a></dt>
<dd>
<div class="block">Gets the Runtime Directory</div>
@ -1550,14 +1570,6 @@
<dd>
<div class="block">Check if object is a Boolean</div>
</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Bungee/Host/External/ExternalSubCreator.html#isBusy--">isBusy()</a></span> - Method in class net.ME1312.SubServers.Bungee.Host.External.<a href="net/ME1312/SubServers/Bungee/Host/External/ExternalSubCreator.html" title="class in net.ME1312.SubServers.Bungee.Host.External">ExternalSubCreator</a></dt>
<dd>&nbsp;</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Bungee/Host/Internal/InternalSubCreator.html#isBusy--">isBusy()</a></span> - Method in class net.ME1312.SubServers.Bungee.Host.Internal.<a href="net/ME1312/SubServers/Bungee/Host/Internal/InternalSubCreator.html" title="class in net.ME1312.SubServers.Bungee.Host.Internal">InternalSubCreator</a></dt>
<dd>&nbsp;</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Bungee/Host/SubCreator.html#isBusy--">isBusy()</a></span> - Method in class net.ME1312.SubServers.Bungee.Host.<a href="net/ME1312/SubServers/Bungee/Host/SubCreator.html" title="class in net.ME1312.SubServers.Bungee.Host">SubCreator</a></dt>
<dd>
<div class="block">Gets the status of SubCreator</div>
</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Bungee/Event/SubAddServerEvent.html#isCancelled--">isCancelled()</a></span> - Method in class net.ME1312.SubServers.Bungee.Event.<a href="net/ME1312/SubServers/Bungee/Event/SubAddServerEvent.html" title="class in net.ME1312.SubServers.Bungee.Event">SubAddServerEvent</a></dt>
<dd>
<div class="block">Gets the Cancelled Status</div>
@ -1686,6 +1698,10 @@
<dd>
<div class="block">Checks values to make sure they're not null</div>
</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Bungee/Host/SubCreator.html#isReserved-java.lang.String-">isReserved(String)</a></span> - Static method in class net.ME1312.SubServers.Bungee.Host.<a href="net/ME1312/SubServers/Bungee/Host/SubCreator.html" title="class in net.ME1312.SubServers.Bungee.Host">SubCreator</a></dt>
<dd>
<div class="block">Check if a name has been reserved</div>
</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Bungee/Host/Server.html#isRestricted--">isRestricted()</a></span> - Method in class net.ME1312.SubServers.Bungee.Host.<a href="net/ME1312/SubServers/Bungee/Host/Server.html" title="class in net.ME1312.SubServers.Bungee.Host">Server</a></dt>
<dd>
<div class="block">Gets if the Server is Restricted</div>
@ -2018,7 +2034,7 @@
<dd>
<div class="block">Create Server External Host Packet</div>
</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Bungee/Network/Packet/PacketExCreateServer.html#PacketExCreateServer--">PacketExCreateServer()</a></span> - Constructor for class net.ME1312.SubServers.Bungee.Network.Packet.<a href="net/ME1312/SubServers/Bungee/Network/Packet/PacketExCreateServer.html" title="class in net.ME1312.SubServers.Bungee.Network.Packet">PacketExCreateServer</a></dt>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Bungee/Network/Packet/PacketExCreateServer.html#PacketExCreateServer-java.lang.String-">PacketExCreateServer(String)</a></span> - Constructor for class net.ME1312.SubServers.Bungee.Network.Packet.<a href="net/ME1312/SubServers/Bungee/Network/Packet/PacketExCreateServer.html" title="class in net.ME1312.SubServers.Bungee.Network.Packet">PacketExCreateServer</a></dt>
<dd>
<div class="block">New PacketExCreateServer</div>
</dd>
@ -2570,6 +2586,14 @@
<dd>&nbsp;</dd>
<dt><a href="net/ME1312/SubServers/Bungee/Host/SubCreator.ServerType.html" title="enum in net.ME1312.SubServers.Bungee.Host"><span class="typeNameLink">SubCreator.ServerType</span></a> - Enum in <a href="net/ME1312/SubServers/Bungee/Host/package-summary.html">net.ME1312.SubServers.Bungee.Host</a></dt>
<dd>&nbsp;</dd>
<dt><a href="net/ME1312/SubServers/Bungee/Library/Exception/SubCreatorException.html" title="class in net.ME1312.SubServers.Bungee.Library.Exception"><span class="typeNameLink">SubCreatorException</span></a> - Exception in <a href="net/ME1312/SubServers/Bungee/Library/Exception/package-summary.html">net.ME1312.SubServers.Bungee.Library.Exception</a></dt>
<dd>
<div class="block">Invalid Template Exception</div>
</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Bungee/Library/Exception/SubCreatorException.html#SubCreatorException--">SubCreatorException()</a></span> - Constructor for exception net.ME1312.SubServers.Bungee.Library.Exception.<a href="net/ME1312/SubServers/Bungee/Library/Exception/SubCreatorException.html" title="class in net.ME1312.SubServers.Bungee.Library.Exception">SubCreatorException</a></dt>
<dd>&nbsp;</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Bungee/Library/Exception/SubCreatorException.html#SubCreatorException-java.lang.String-">SubCreatorException(String)</a></span> - Constructor for exception net.ME1312.SubServers.Bungee.Library.Exception.<a href="net/ME1312/SubServers/Bungee/Library/Exception/SubCreatorException.html" title="class in net.ME1312.SubServers.Bungee.Library.Exception">SubCreatorException</a></dt>
<dd>&nbsp;</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Bungee/SubPlugin.html#subdata">subdata</a></span> - Variable in class net.ME1312.SubServers.Bungee.<a href="net/ME1312/SubServers/Bungee/SubPlugin.html" title="class in net.ME1312.SubServers.Bungee">SubPlugin</a></dt>
<dd>&nbsp;</dd>
<dt><a href="net/ME1312/SubServers/Bungee/Network/SubDataServer.html" title="class in net.ME1312.SubServers.Bungee.Network"><span class="typeNameLink">SubDataServer</span></a> - Class in <a href="net/ME1312/SubServers/Bungee/Network/package-summary.html">net.ME1312.SubServers.Bungee.Network</a></dt>
@ -2676,6 +2700,8 @@
<dl>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Bungee/Host/External/ExternalSubCreator.html#terminate--">terminate()</a></span> - Method in class net.ME1312.SubServers.Bungee.Host.External.<a href="net/ME1312/SubServers/Bungee/Host/External/ExternalSubCreator.html" title="class in net.ME1312.SubServers.Bungee.Host.External">ExternalSubCreator</a></dt>
<dd>&nbsp;</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Bungee/Host/External/ExternalSubCreator.html#terminate-java.lang.String-">terminate(String)</a></span> - Method in class net.ME1312.SubServers.Bungee.Host.External.<a href="net/ME1312/SubServers/Bungee/Host/External/ExternalSubCreator.html" title="class in net.ME1312.SubServers.Bungee.Host.External">ExternalSubCreator</a></dt>
<dd>&nbsp;</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Bungee/Host/External/ExternalSubServer.html#terminate-java.util.UUID-">terminate(UUID)</a></span> - Method in class net.ME1312.SubServers.Bungee.Host.External.<a href="net/ME1312/SubServers/Bungee/Host/External/ExternalSubServer.html" title="class in net.ME1312.SubServers.Bungee.Host.External">ExternalSubServer</a></dt>
<dd>&nbsp;</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Bungee/Host/Host.html#terminate-java.lang.String...-">terminate(String...)</a></span> - Method in class net.ME1312.SubServers.Bungee.Host.<a href="net/ME1312/SubServers/Bungee/Host/Host.html" title="class in net.ME1312.SubServers.Bungee.Host">Host</a></dt>
@ -2688,11 +2714,17 @@
</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Bungee/Host/Internal/InternalSubCreator.html#terminate--">terminate()</a></span> - Method in class net.ME1312.SubServers.Bungee.Host.Internal.<a href="net/ME1312/SubServers/Bungee/Host/Internal/InternalSubCreator.html" title="class in net.ME1312.SubServers.Bungee.Host.Internal">InternalSubCreator</a></dt>
<dd>&nbsp;</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Bungee/Host/Internal/InternalSubCreator.html#terminate-java.lang.String-">terminate(String)</a></span> - Method in class net.ME1312.SubServers.Bungee.Host.Internal.<a href="net/ME1312/SubServers/Bungee/Host/Internal/InternalSubCreator.html" title="class in net.ME1312.SubServers.Bungee.Host.Internal">InternalSubCreator</a></dt>
<dd>&nbsp;</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Bungee/Host/Internal/InternalSubServer.html#terminate-java.util.UUID-">terminate(UUID)</a></span> - Method in class net.ME1312.SubServers.Bungee.Host.Internal.<a href="net/ME1312/SubServers/Bungee/Host/Internal/InternalSubServer.html" title="class in net.ME1312.SubServers.Bungee.Host.Internal">InternalSubServer</a></dt>
<dd>&nbsp;</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Bungee/Host/SubCreator.html#terminate--">terminate()</a></span> - Method in class net.ME1312.SubServers.Bungee.Host.<a href="net/ME1312/SubServers/Bungee/Host/SubCreator.html" title="class in net.ME1312.SubServers.Bungee.Host">SubCreator</a></dt>
<dd>
<div class="block">Terminate SubCreator</div>
<div class="block">Terminate All SubCreator Instances on this host</div>
</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Bungee/Host/SubCreator.html#terminate-java.lang.String-">terminate(String)</a></span> - Method in class net.ME1312.SubServers.Bungee.Host.<a href="net/ME1312/SubServers/Bungee/Host/SubCreator.html" title="class in net.ME1312.SubServers.Bungee.Host">SubCreator</a></dt>
<dd>
<div class="block">Terminate a SubCreator Instance</div>
</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Bungee/Host/SubServer.html#terminate-java.util.UUID-">terminate(UUID)</a></span> - Method in class net.ME1312.SubServers.Bungee.Host.<a href="net/ME1312/SubServers/Bungee/Host/SubServer.html" title="class in net.ME1312.SubServers.Bungee.Host">SubServer</a></dt>
<dd>
@ -2790,6 +2822,8 @@
<dd>
<div class="block">Unregister PacketOut to the Network</div>
</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Bungee/Library/Util.html#unzip-java.io.InputStream-java.io.File-">unzip(InputStream, File)</a></span> - Static method in class net.ME1312.SubServers.Bungee.Library.<a href="net/ME1312/SubServers/Bungee/Library/Util.html" title="class in net.ME1312.SubServers.Bungee.Library">Util</a></dt>
<dd>&nbsp;</dd>
<dt><a href="net/ME1312/SubServers/Bungee/Library/Util.html" title="class in net.ME1312.SubServers.Bungee.Library"><span class="typeNameLink">Util</span></a> - Class in <a href="net/ME1312/SubServers/Bungee/Library/package-summary.html">net.ME1312.SubServers.Bungee.Library</a></dt>
<dd>
<div class="block">SubServers Utility Class</div>
@ -2853,14 +2887,22 @@ the order they are declared.</div>
<dl>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Bungee/Host/External/ExternalSubCreator.html#waitFor--">waitFor()</a></span> - Method in class net.ME1312.SubServers.Bungee.Host.External.<a href="net/ME1312/SubServers/Bungee/Host/External/ExternalSubCreator.html" title="class in net.ME1312.SubServers.Bungee.Host.External">ExternalSubCreator</a></dt>
<dd>&nbsp;</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Bungee/Host/External/ExternalSubCreator.html#waitFor-java.lang.String-">waitFor(String)</a></span> - Method in class net.ME1312.SubServers.Bungee.Host.External.<a href="net/ME1312/SubServers/Bungee/Host/External/ExternalSubCreator.html" title="class in net.ME1312.SubServers.Bungee.Host.External">ExternalSubCreator</a></dt>
<dd>&nbsp;</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Bungee/Host/External/ExternalSubServer.html#waitFor--">waitFor()</a></span> - Method in class net.ME1312.SubServers.Bungee.Host.External.<a href="net/ME1312/SubServers/Bungee/Host/External/ExternalSubServer.html" title="class in net.ME1312.SubServers.Bungee.Host.External">ExternalSubServer</a></dt>
<dd>&nbsp;</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Bungee/Host/Internal/InternalSubCreator.html#waitFor--">waitFor()</a></span> - Method in class net.ME1312.SubServers.Bungee.Host.Internal.<a href="net/ME1312/SubServers/Bungee/Host/Internal/InternalSubCreator.html" title="class in net.ME1312.SubServers.Bungee.Host.Internal">InternalSubCreator</a></dt>
<dd>&nbsp;</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Bungee/Host/Internal/InternalSubCreator.html#waitFor-java.lang.String-">waitFor(String)</a></span> - Method in class net.ME1312.SubServers.Bungee.Host.Internal.<a href="net/ME1312/SubServers/Bungee/Host/Internal/InternalSubCreator.html" title="class in net.ME1312.SubServers.Bungee.Host.Internal">InternalSubCreator</a></dt>
<dd>&nbsp;</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Bungee/Host/Internal/InternalSubServer.html#waitFor--">waitFor()</a></span> - Method in class net.ME1312.SubServers.Bungee.Host.Internal.<a href="net/ME1312/SubServers/Bungee/Host/Internal/InternalSubServer.html" title="class in net.ME1312.SubServers.Bungee.Host.Internal">InternalSubServer</a></dt>
<dd>&nbsp;</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Bungee/Host/SubCreator.html#waitFor--">waitFor()</a></span> - Method in class net.ME1312.SubServers.Bungee.Host.<a href="net/ME1312/SubServers/Bungee/Host/SubCreator.html" title="class in net.ME1312.SubServers.Bungee.Host">SubCreator</a></dt>
<dd>
<div class="block">Wait for All SubCreator Instances to Finish</div>
</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Bungee/Host/SubCreator.html#waitFor-java.lang.String-">waitFor(String)</a></span> - Method in class net.ME1312.SubServers.Bungee.Host.<a href="net/ME1312/SubServers/Bungee/Host/SubCreator.html" title="class in net.ME1312.SubServers.Bungee.Host">SubCreator</a></dt>
<dd>
<div class="block">Wait for SubCreator to Finish</div>
</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Bungee/Host/SubServer.html#waitFor--">waitFor()</a></span> - Method in class net.ME1312.SubServers.Bungee.Host.<a href="net/ME1312/SubServers/Bungee/Host/SubServer.html" title="class in net.ME1312.SubServers.Bungee.Host">SubServer</a></dt>
@ -2918,7 +2960,15 @@ the order they are declared.</div>
<div class="block">YAML Value Class</div>
</dd>
</dl>
<a href="#I:A">A</a>&nbsp;<a href="#I:B">B</a>&nbsp;<a href="#I:C">C</a>&nbsp;<a href="#I:D">D</a>&nbsp;<a href="#I:E">E</a>&nbsp;<a href="#I:F">F</a>&nbsp;<a href="#I:G">G</a>&nbsp;<a href="#I:H">H</a>&nbsp;<a href="#I:I">I</a>&nbsp;<a href="#I:J">J</a>&nbsp;<a href="#I:L">L</a>&nbsp;<a href="#I:M">M</a>&nbsp;<a href="#I:N">N</a>&nbsp;<a href="#I:O">O</a>&nbsp;<a href="#I:P">P</a>&nbsp;<a href="#I:R">R</a>&nbsp;<a href="#I:S">S</a>&nbsp;<a href="#I:T">T</a>&nbsp;<a href="#I:U">U</a>&nbsp;<a href="#I:V">V</a>&nbsp;<a href="#I:W">W</a>&nbsp;<a href="#I:Y">Y</a>&nbsp;</div>
<a name="I:Z">
<!-- -->
</a>
<h2 class="title">Z</h2>
<dl>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Bungee/Library/Util.html#zip-java.io.File-java.io.OutputStream-">zip(File, OutputStream)</a></span> - Static method in class net.ME1312.SubServers.Bungee.Library.<a href="net/ME1312/SubServers/Bungee/Library/Util.html" title="class in net.ME1312.SubServers.Bungee.Library">Util</a></dt>
<dd>&nbsp;</dd>
</dl>
<a href="#I:A">A</a>&nbsp;<a href="#I:B">B</a>&nbsp;<a href="#I:C">C</a>&nbsp;<a href="#I:D">D</a>&nbsp;<a href="#I:E">E</a>&nbsp;<a href="#I:F">F</a>&nbsp;<a href="#I:G">G</a>&nbsp;<a href="#I:H">H</a>&nbsp;<a href="#I:I">I</a>&nbsp;<a href="#I:J">J</a>&nbsp;<a href="#I:L">L</a>&nbsp;<a href="#I:M">M</a>&nbsp;<a href="#I:N">N</a>&nbsp;<a href="#I:O">O</a>&nbsp;<a href="#I:P">P</a>&nbsp;<a href="#I:R">R</a>&nbsp;<a href="#I:S">S</a>&nbsp;<a href="#I:T">T</a>&nbsp;<a href="#I:U">U</a>&nbsp;<a href="#I:V">V</a>&nbsp;<a href="#I:W">W</a>&nbsp;<a href="#I:Y">Y</a>&nbsp;<a href="#I:Z">Z</a>&nbsp;</div>
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!-- -->

View File

@ -17,7 +17,7 @@
catch(err) {
}
//-->
var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10};
var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
@ -191,38 +191,56 @@ extends <a href="../../../../../../net/ME1312/SubServers/Bungee/Host/SubCreator.
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code><a href="../../../../../../net/ME1312/SubServers/Bungee/Host/SubLogger.html" title="class in net.ME1312.SubServers.Bungee.Host">SubLogger</a></code></td>
<td class="colFirst"><code>java.util.List&lt;<a href="../../../../../../net/ME1312/SubServers/Bungee/Host/SubLogger.html" title="class in net.ME1312.SubServers.Bungee.Host">SubLogger</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../net/ME1312/SubServers/Bungee/Host/External/ExternalSubCreator.html#getLogger--">getLogger</a></span>()</code>
<div class="block">Gets the Logger for the creator</div>
<div class="block">Gets all loggers for All SubCreator Instances</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code><a href="../../../../../../net/ME1312/SubServers/Bungee/Host/SubLogger.html" title="class in net.ME1312.SubServers.Bungee.Host">SubLogger</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../net/ME1312/SubServers/Bungee/Host/External/ExternalSubCreator.html#getLogger-java.lang.String-">getLogger</a></span>(java.lang.String&nbsp;thread)</code>
<div class="block">Gets the Logger for a SubCreator Instance</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>java.util.List&lt;java.lang.String&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../net/ME1312/SubServers/Bungee/Host/External/ExternalSubCreator.html#getReservedNames--">getReservedNames</a></span>()</code>
<div class="block">Get a list of currently reserved Server names</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code><a href="../../../../../../net/ME1312/SubServers/Bungee/Host/SubCreator.ServerTemplate.html" title="class in net.ME1312.SubServers.Bungee.Host">SubCreator.ServerTemplate</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../net/ME1312/SubServers/Bungee/Host/External/ExternalSubCreator.html#getTemplate-java.lang.String-">getTemplate</a></span>(java.lang.String&nbsp;name)</code>
<div class="block">Gets a SubCreator Template by name</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<tr id="i7" class="rowColor">
<td class="colFirst"><code>java.util.Map&lt;java.lang.String,<a href="../../../../../../net/ME1312/SubServers/Bungee/Host/SubCreator.ServerTemplate.html" title="class in net.ME1312.SubServers.Bungee.Host">SubCreator.ServerTemplate</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../net/ME1312/SubServers/Bungee/Host/External/ExternalSubCreator.html#getTemplates--">getTemplates</a></span>()</code>
<div class="block">Gets the Templates that can be used in this SubCreator instance</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../net/ME1312/SubServers/Bungee/Host/External/ExternalSubCreator.html#isBusy--">isBusy</a></span>()</code>
<div class="block">Gets the status of SubCreator</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../net/ME1312/SubServers/Bungee/Host/External/ExternalSubCreator.html#terminate--">terminate</a></span>()</code>
<div class="block">Terminate SubCreator</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../net/ME1312/SubServers/Bungee/Host/External/ExternalSubCreator.html#terminate--">terminate</a></span>()</code>
<div class="block">Terminate All SubCreator Instances on this host</div>
</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../net/ME1312/SubServers/Bungee/Host/External/ExternalSubCreator.html#terminate-java.lang.String-">terminate</a></span>(java.lang.String&nbsp;name)</code>
<div class="block">Terminate a SubCreator Instance</div>
</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../net/ME1312/SubServers/Bungee/Host/External/ExternalSubCreator.html#waitFor--">waitFor</a></span>()</code>
<div class="block">Wait for All SubCreator Instances to Finish</div>
</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../net/ME1312/SubServers/Bungee/Host/External/ExternalSubCreator.html#waitFor-java.lang.String-">waitFor</a></span>(java.lang.String&nbsp;name)</code>
<div class="block">Wait for SubCreator to Finish</div>
</td>
</tr>
@ -232,7 +250,7 @@ extends <a href="../../../../../../net/ME1312/SubServers/Bungee/Host/SubCreator.
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;net.ME1312.SubServers.Bungee.Host.<a href="../../../../../../net/ME1312/SubServers/Bungee/Host/SubCreator.html" title="class in net.ME1312.SubServers.Bungee.Host">SubCreator</a></h3>
<code><a href="../../../../../../net/ME1312/SubServers/Bungee/Host/SubCreator.html#create-java.lang.String-net.ME1312.SubServers.Bungee.Host.SubCreator.ServerTemplate-net.ME1312.SubServers.Bungee.Library.Version.Version-int-">create</a></code></li>
<code><a href="../../../../../../net/ME1312/SubServers/Bungee/Host/SubCreator.html#create-java.lang.String-net.ME1312.SubServers.Bungee.Host.SubCreator.ServerTemplate-net.ME1312.SubServers.Bungee.Library.Version.Version-int-">create</a>, <a href="../../../../../../net/ME1312/SubServers/Bungee/Host/SubCreator.html#getAllReservedNames--">getAllReservedNames</a>, <a href="../../../../../../net/ME1312/SubServers/Bungee/Host/SubCreator.html#isReserved-java.lang.String-">isReserved</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
@ -314,13 +332,30 @@ extends <a href="../../../../../../net/ME1312/SubServers/Bungee/Host/SubCreator.
<h4>terminate</h4>
<pre>public&nbsp;void&nbsp;terminate()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../net/ME1312/SubServers/Bungee/Host/SubCreator.html#terminate--">SubCreator</a></code></span></div>
<div class="block">Terminate SubCreator</div>
<div class="block">Terminate All SubCreator Instances on this host</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../../net/ME1312/SubServers/Bungee/Host/SubCreator.html#terminate--">terminate</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../net/ME1312/SubServers/Bungee/Host/SubCreator.html" title="class in net.ME1312.SubServers.Bungee.Host">SubCreator</a></code></dd>
</dl>
</li>
</ul>
<a name="terminate-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>terminate</h4>
<pre>public&nbsp;void&nbsp;terminate(java.lang.String&nbsp;name)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../net/ME1312/SubServers/Bungee/Host/SubCreator.html#terminate-java.lang.String-">SubCreator</a></code></span></div>
<div class="block">Terminate a SubCreator Instance</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../../net/ME1312/SubServers/Bungee/Host/SubCreator.html#terminate-java.lang.String-">terminate</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../net/ME1312/SubServers/Bungee/Host/SubCreator.html" title="class in net.ME1312.SubServers.Bungee.Host">SubCreator</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>name</code> - Name of current creating server</dd>
</dl>
</li>
</ul>
<a name="waitFor--">
<!-- -->
</a>
@ -330,7 +365,7 @@ extends <a href="../../../../../../net/ME1312/SubServers/Bungee/Host/SubCreator.
<pre>public&nbsp;void&nbsp;waitFor()
throws java.lang.InterruptedException</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../net/ME1312/SubServers/Bungee/Host/SubCreator.html#waitFor--">SubCreator</a></code></span></div>
<div class="block">Wait for SubCreator to Finish</div>
<div class="block">Wait for All SubCreator Instances to Finish</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../../net/ME1312/SubServers/Bungee/Host/SubCreator.html#waitFor--">waitFor</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../net/ME1312/SubServers/Bungee/Host/SubCreator.html" title="class in net.ME1312.SubServers.Bungee.Host">SubCreator</a></code></dd>
@ -339,6 +374,26 @@ extends <a href="../../../../../../net/ME1312/SubServers/Bungee/Host/SubCreator.
</dl>
</li>
</ul>
<a name="waitFor-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>waitFor</h4>
<pre>public&nbsp;void&nbsp;waitFor(java.lang.String&nbsp;name)
throws java.lang.InterruptedException</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../net/ME1312/SubServers/Bungee/Host/SubCreator.html#waitFor-java.lang.String-">SubCreator</a></code></span></div>
<div class="block">Wait for SubCreator to Finish</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../../net/ME1312/SubServers/Bungee/Host/SubCreator.html#waitFor-java.lang.String-">waitFor</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../net/ME1312/SubServers/Bungee/Host/SubCreator.html" title="class in net.ME1312.SubServers.Bungee.Host">SubCreator</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>name</code> - Name of current creating server</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.InterruptedException</code></dd>
</dl>
</li>
</ul>
<a name="getHost--">
<!-- -->
</a>
@ -379,30 +434,50 @@ extends <a href="../../../../../../net/ME1312/SubServers/Bungee/Host/SubCreator.
<ul class="blockList">
<li class="blockList">
<h4>getLogger</h4>
<pre>public&nbsp;<a href="../../../../../../net/ME1312/SubServers/Bungee/Host/SubLogger.html" title="class in net.ME1312.SubServers.Bungee.Host">SubLogger</a>&nbsp;getLogger()</pre>
<pre>public&nbsp;java.util.List&lt;<a href="../../../../../../net/ME1312/SubServers/Bungee/Host/SubLogger.html" title="class in net.ME1312.SubServers.Bungee.Host">SubLogger</a>&gt;&nbsp;getLogger()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../net/ME1312/SubServers/Bungee/Host/SubCreator.html#getLogger--">SubCreator</a></code></span></div>
<div class="block">Gets the Logger for the creator</div>
<div class="block">Gets all loggers for All SubCreator Instances</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../../net/ME1312/SubServers/Bungee/Host/SubCreator.html#getLogger--">getLogger</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../net/ME1312/SubServers/Bungee/Host/SubCreator.html" title="class in net.ME1312.SubServers.Bungee.Host">SubCreator</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>SubCreator Loggers</dd>
</dl>
</li>
</ul>
<a name="isBusy--">
<a name="getLogger-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isBusy</h4>
<pre>public&nbsp;boolean&nbsp;isBusy()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../net/ME1312/SubServers/Bungee/Host/SubCreator.html#isBusy--">SubCreator</a></code></span></div>
<div class="block">Gets the status of SubCreator</div>
<h4>getLogger</h4>
<pre>public&nbsp;<a href="../../../../../../net/ME1312/SubServers/Bungee/Host/SubLogger.html" title="class in net.ME1312.SubServers.Bungee.Host">SubLogger</a>&nbsp;getLogger(java.lang.String&nbsp;thread)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../net/ME1312/SubServers/Bungee/Host/SubCreator.html#getLogger-java.lang.String-">SubCreator</a></code></span></div>
<div class="block">Gets the Logger for a SubCreator Instance</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../../net/ME1312/SubServers/Bungee/Host/SubCreator.html#isBusy--">isBusy</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../net/ME1312/SubServers/Bungee/Host/SubCreator.html" title="class in net.ME1312.SubServers.Bungee.Host">SubCreator</a></code></dd>
<dd><code><a href="../../../../../../net/ME1312/SubServers/Bungee/Host/SubCreator.html#getLogger-java.lang.String-">getLogger</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../net/ME1312/SubServers/Bungee/Host/SubCreator.html" title="class in net.ME1312.SubServers.Bungee.Host">SubCreator</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>thread</code> - Thread ID</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>SubCreator Status</dd>
<dd>SubCreator Logger</dd>
</dl>
</li>
</ul>
<a name="getReservedNames--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getReservedNames</h4>
<pre>public&nbsp;java.util.List&lt;java.lang.String&gt;&nbsp;getReservedNames()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../net/ME1312/SubServers/Bungee/Host/SubCreator.html#getReservedNames--">SubCreator</a></code></span></div>
<div class="block">Get a list of currently reserved Server names</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../../net/ME1312/SubServers/Bungee/Host/SubCreator.html#getReservedNames--">getReservedNames</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../net/ME1312/SubServers/Bungee/Host/SubCreator.html" title="class in net.ME1312.SubServers.Bungee.Host">SubCreator</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Reserved Names</dd>
</dl>
</li>
</ul>

View File

@ -17,7 +17,7 @@
catch(err) {
}
//-->
var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10};
var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
@ -191,38 +191,56 @@ extends <a href="../../../../../../net/ME1312/SubServers/Bungee/Host/SubCreator.
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code><a href="../../../../../../net/ME1312/SubServers/Bungee/Host/SubLogger.html" title="class in net.ME1312.SubServers.Bungee.Host">SubLogger</a></code></td>
<td class="colFirst"><code>java.util.List&lt;<a href="../../../../../../net/ME1312/SubServers/Bungee/Host/SubLogger.html" title="class in net.ME1312.SubServers.Bungee.Host">SubLogger</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../net/ME1312/SubServers/Bungee/Host/Internal/InternalSubCreator.html#getLogger--">getLogger</a></span>()</code>
<div class="block">Gets the Logger for the creator</div>
<div class="block">Gets all loggers for All SubCreator Instances</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code><a href="../../../../../../net/ME1312/SubServers/Bungee/Host/SubLogger.html" title="class in net.ME1312.SubServers.Bungee.Host">SubLogger</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../net/ME1312/SubServers/Bungee/Host/Internal/InternalSubCreator.html#getLogger-java.lang.String-">getLogger</a></span>(java.lang.String&nbsp;thread)</code>
<div class="block">Gets the Logger for a SubCreator Instance</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>java.util.List&lt;java.lang.String&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../net/ME1312/SubServers/Bungee/Host/Internal/InternalSubCreator.html#getReservedNames--">getReservedNames</a></span>()</code>
<div class="block">Get a list of currently reserved Server names</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code><a href="../../../../../../net/ME1312/SubServers/Bungee/Host/SubCreator.ServerTemplate.html" title="class in net.ME1312.SubServers.Bungee.Host">SubCreator.ServerTemplate</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../net/ME1312/SubServers/Bungee/Host/Internal/InternalSubCreator.html#getTemplate-java.lang.String-">getTemplate</a></span>(java.lang.String&nbsp;name)</code>
<div class="block">Gets a SubCreator Template by name</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<tr id="i7" class="rowColor">
<td class="colFirst"><code>java.util.Map&lt;java.lang.String,<a href="../../../../../../net/ME1312/SubServers/Bungee/Host/SubCreator.ServerTemplate.html" title="class in net.ME1312.SubServers.Bungee.Host">SubCreator.ServerTemplate</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../net/ME1312/SubServers/Bungee/Host/Internal/InternalSubCreator.html#getTemplates--">getTemplates</a></span>()</code>
<div class="block">Gets the Templates that can be used in this SubCreator instance</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../net/ME1312/SubServers/Bungee/Host/Internal/InternalSubCreator.html#isBusy--">isBusy</a></span>()</code>
<div class="block">Gets the status of SubCreator</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../net/ME1312/SubServers/Bungee/Host/Internal/InternalSubCreator.html#terminate--">terminate</a></span>()</code>
<div class="block">Terminate SubCreator</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../net/ME1312/SubServers/Bungee/Host/Internal/InternalSubCreator.html#terminate--">terminate</a></span>()</code>
<div class="block">Terminate All SubCreator Instances on this host</div>
</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../net/ME1312/SubServers/Bungee/Host/Internal/InternalSubCreator.html#terminate-java.lang.String-">terminate</a></span>(java.lang.String&nbsp;name)</code>
<div class="block">Terminate a SubCreator Instance</div>
</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../net/ME1312/SubServers/Bungee/Host/Internal/InternalSubCreator.html#waitFor--">waitFor</a></span>()</code>
<div class="block">Wait for All SubCreator Instances to Finish</div>
</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../net/ME1312/SubServers/Bungee/Host/Internal/InternalSubCreator.html#waitFor-java.lang.String-">waitFor</a></span>(java.lang.String&nbsp;name)</code>
<div class="block">Wait for SubCreator to Finish</div>
</td>
</tr>
@ -232,7 +250,7 @@ extends <a href="../../../../../../net/ME1312/SubServers/Bungee/Host/SubCreator.
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;net.ME1312.SubServers.Bungee.Host.<a href="../../../../../../net/ME1312/SubServers/Bungee/Host/SubCreator.html" title="class in net.ME1312.SubServers.Bungee.Host">SubCreator</a></h3>
<code><a href="../../../../../../net/ME1312/SubServers/Bungee/Host/SubCreator.html#create-java.lang.String-net.ME1312.SubServers.Bungee.Host.SubCreator.ServerTemplate-net.ME1312.SubServers.Bungee.Library.Version.Version-int-">create</a></code></li>
<code><a href="../../../../../../net/ME1312/SubServers/Bungee/Host/SubCreator.html#create-java.lang.String-net.ME1312.SubServers.Bungee.Host.SubCreator.ServerTemplate-net.ME1312.SubServers.Bungee.Library.Version.Version-int-">create</a>, <a href="../../../../../../net/ME1312/SubServers/Bungee/Host/SubCreator.html#getAllReservedNames--">getAllReservedNames</a>, <a href="../../../../../../net/ME1312/SubServers/Bungee/Host/SubCreator.html#isReserved-java.lang.String-">isReserved</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
@ -314,13 +332,30 @@ extends <a href="../../../../../../net/ME1312/SubServers/Bungee/Host/SubCreator.
<h4>terminate</h4>
<pre>public&nbsp;void&nbsp;terminate()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../net/ME1312/SubServers/Bungee/Host/SubCreator.html#terminate--">SubCreator</a></code></span></div>
<div class="block">Terminate SubCreator</div>
<div class="block">Terminate All SubCreator Instances on this host</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../../net/ME1312/SubServers/Bungee/Host/SubCreator.html#terminate--">terminate</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../net/ME1312/SubServers/Bungee/Host/SubCreator.html" title="class in net.ME1312.SubServers.Bungee.Host">SubCreator</a></code></dd>
</dl>
</li>
</ul>
<a name="terminate-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>terminate</h4>
<pre>public&nbsp;void&nbsp;terminate(java.lang.String&nbsp;name)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../net/ME1312/SubServers/Bungee/Host/SubCreator.html#terminate-java.lang.String-">SubCreator</a></code></span></div>
<div class="block">Terminate a SubCreator Instance</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../../net/ME1312/SubServers/Bungee/Host/SubCreator.html#terminate-java.lang.String-">terminate</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../net/ME1312/SubServers/Bungee/Host/SubCreator.html" title="class in net.ME1312.SubServers.Bungee.Host">SubCreator</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>name</code> - Name of current creating server</dd>
</dl>
</li>
</ul>
<a name="waitFor--">
<!-- -->
</a>
@ -330,7 +365,7 @@ extends <a href="../../../../../../net/ME1312/SubServers/Bungee/Host/SubCreator.
<pre>public&nbsp;void&nbsp;waitFor()
throws java.lang.InterruptedException</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../net/ME1312/SubServers/Bungee/Host/SubCreator.html#waitFor--">SubCreator</a></code></span></div>
<div class="block">Wait for SubCreator to Finish</div>
<div class="block">Wait for All SubCreator Instances to Finish</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../../net/ME1312/SubServers/Bungee/Host/SubCreator.html#waitFor--">waitFor</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../net/ME1312/SubServers/Bungee/Host/SubCreator.html" title="class in net.ME1312.SubServers.Bungee.Host">SubCreator</a></code></dd>
@ -339,6 +374,26 @@ extends <a href="../../../../../../net/ME1312/SubServers/Bungee/Host/SubCreator.
</dl>
</li>
</ul>
<a name="waitFor-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>waitFor</h4>
<pre>public&nbsp;void&nbsp;waitFor(java.lang.String&nbsp;name)
throws java.lang.InterruptedException</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../net/ME1312/SubServers/Bungee/Host/SubCreator.html#waitFor-java.lang.String-">SubCreator</a></code></span></div>
<div class="block">Wait for SubCreator to Finish</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../../net/ME1312/SubServers/Bungee/Host/SubCreator.html#waitFor-java.lang.String-">waitFor</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../net/ME1312/SubServers/Bungee/Host/SubCreator.html" title="class in net.ME1312.SubServers.Bungee.Host">SubCreator</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>name</code> - Name of current creating server</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.InterruptedException</code></dd>
</dl>
</li>
</ul>
<a name="getHost--">
<!-- -->
</a>
@ -379,30 +434,50 @@ extends <a href="../../../../../../net/ME1312/SubServers/Bungee/Host/SubCreator.
<ul class="blockList">
<li class="blockList">
<h4>getLogger</h4>
<pre>public&nbsp;<a href="../../../../../../net/ME1312/SubServers/Bungee/Host/SubLogger.html" title="class in net.ME1312.SubServers.Bungee.Host">SubLogger</a>&nbsp;getLogger()</pre>
<pre>public&nbsp;java.util.List&lt;<a href="../../../../../../net/ME1312/SubServers/Bungee/Host/SubLogger.html" title="class in net.ME1312.SubServers.Bungee.Host">SubLogger</a>&gt;&nbsp;getLogger()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../net/ME1312/SubServers/Bungee/Host/SubCreator.html#getLogger--">SubCreator</a></code></span></div>
<div class="block">Gets the Logger for the creator</div>
<div class="block">Gets all loggers for All SubCreator Instances</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../../net/ME1312/SubServers/Bungee/Host/SubCreator.html#getLogger--">getLogger</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../net/ME1312/SubServers/Bungee/Host/SubCreator.html" title="class in net.ME1312.SubServers.Bungee.Host">SubCreator</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>SubCreator Loggers</dd>
</dl>
</li>
</ul>
<a name="isBusy--">
<a name="getLogger-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isBusy</h4>
<pre>public&nbsp;boolean&nbsp;isBusy()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../net/ME1312/SubServers/Bungee/Host/SubCreator.html#isBusy--">SubCreator</a></code></span></div>
<div class="block">Gets the status of SubCreator</div>
<h4>getLogger</h4>
<pre>public&nbsp;<a href="../../../../../../net/ME1312/SubServers/Bungee/Host/SubLogger.html" title="class in net.ME1312.SubServers.Bungee.Host">SubLogger</a>&nbsp;getLogger(java.lang.String&nbsp;thread)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../net/ME1312/SubServers/Bungee/Host/SubCreator.html#getLogger-java.lang.String-">SubCreator</a></code></span></div>
<div class="block">Gets the Logger for a SubCreator Instance</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../../net/ME1312/SubServers/Bungee/Host/SubCreator.html#isBusy--">isBusy</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../net/ME1312/SubServers/Bungee/Host/SubCreator.html" title="class in net.ME1312.SubServers.Bungee.Host">SubCreator</a></code></dd>
<dd><code><a href="../../../../../../net/ME1312/SubServers/Bungee/Host/SubCreator.html#getLogger-java.lang.String-">getLogger</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../net/ME1312/SubServers/Bungee/Host/SubCreator.html" title="class in net.ME1312.SubServers.Bungee.Host">SubCreator</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>thread</code> - Thread ID</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>SubCreator Status</dd>
<dd>SubCreator Logger</dd>
</dl>
</li>
</ul>
<a name="getReservedNames--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getReservedNames</h4>
<pre>public&nbsp;java.util.List&lt;java.lang.String&gt;&nbsp;getReservedNames()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../net/ME1312/SubServers/Bungee/Host/SubCreator.html#getReservedNames--">SubCreator</a></code></span></div>
<div class="block">Get a list of currently reserved Server names</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../../net/ME1312/SubServers/Bungee/Host/SubCreator.html#getReservedNames--">getReservedNames</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../net/ME1312/SubServers/Bungee/Host/SubCreator.html" title="class in net.ME1312.SubServers.Bungee.Host">SubCreator</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Reserved Names</dd>
</dl>
</li>
</ul>

View File

@ -17,8 +17,8 @@
catch(err) {
}
//-->
var methods = {"i0":10,"i1":6,"i2":6,"i3":6,"i4":6,"i5":6,"i6":6,"i7":6,"i8":6,"i9":6};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"],8:["t4","Concrete Methods"]};
var methods = {"i0":10,"i1":6,"i2":9,"i3":6,"i4":6,"i5":6,"i6":6,"i7":6,"i8":6,"i9":6,"i10":9,"i11":6,"i12":6,"i13":6,"i14":6};
var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
@ -167,7 +167,7 @@ extends java.lang.Object</pre>
</a>
<h3>Method Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t3" class="tableTab"><span><a href="javascript:show(4);">Abstract Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t3" class="tableTab"><span><a href="javascript:show(4);">Abstract Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
@ -192,50 +192,80 @@ extends java.lang.Object</pre>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>static java.util.Map&lt;<a href="../../../../../net/ME1312/SubServers/Bungee/Host/Host.html" title="class in net.ME1312.SubServers.Bungee.Host">Host</a>,java.util.List&lt;java.lang.String&gt;&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../net/ME1312/SubServers/Bungee/Host/SubCreator.html#getAllReservedNames--">getAllReservedNames</a></span>()</code>
<div class="block">Get a list of all currently reserved Server names across all hosts</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>abstract java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../net/ME1312/SubServers/Bungee/Host/SubCreator.html#getBashDirectory--">getBashDirectory</a></span>()</code>
<div class="block">Gets the Git Bash install directory</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<tr id="i4" class="altColor">
<td class="colFirst"><code>abstract <a href="../../../../../net/ME1312/SubServers/Bungee/Host/Host.html" title="class in net.ME1312.SubServers.Bungee.Host">Host</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../net/ME1312/SubServers/Bungee/Host/SubCreator.html#getHost--">getHost</a></span>()</code>
<div class="block">Gets the host this creator belongs to</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>abstract <a href="../../../../../net/ME1312/SubServers/Bungee/Host/SubLogger.html" title="class in net.ME1312.SubServers.Bungee.Host">SubLogger</a></code></td>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>abstract java.util.List&lt;<a href="../../../../../net/ME1312/SubServers/Bungee/Host/SubLogger.html" title="class in net.ME1312.SubServers.Bungee.Host">SubLogger</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../net/ME1312/SubServers/Bungee/Host/SubCreator.html#getLogger--">getLogger</a></span>()</code>
<div class="block">Gets the Logger for the creator</div>
<div class="block">Gets all loggers for All SubCreator Instances</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<tr id="i6" class="altColor">
<td class="colFirst"><code>abstract <a href="../../../../../net/ME1312/SubServers/Bungee/Host/SubLogger.html" title="class in net.ME1312.SubServers.Bungee.Host">SubLogger</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../net/ME1312/SubServers/Bungee/Host/SubCreator.html#getLogger-java.lang.String-">getLogger</a></span>(java.lang.String&nbsp;thread)</code>
<div class="block">Gets the Logger for a SubCreator Instance</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>abstract java.util.List&lt;java.lang.String&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../net/ME1312/SubServers/Bungee/Host/SubCreator.html#getReservedNames--">getReservedNames</a></span>()</code>
<div class="block">Get a list of currently reserved Server names</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>abstract <a href="../../../../../net/ME1312/SubServers/Bungee/Host/SubCreator.ServerTemplate.html" title="class in net.ME1312.SubServers.Bungee.Host">SubCreator.ServerTemplate</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../net/ME1312/SubServers/Bungee/Host/SubCreator.html#getTemplate-java.lang.String-">getTemplate</a></span>(java.lang.String&nbsp;name)</code>
<div class="block">Gets a SubCreator Template by name</div>
</td>
</tr>
<tr id="i6" class="altColor">
<tr id="i9" class="rowColor">
<td class="colFirst"><code>abstract java.util.Map&lt;java.lang.String,<a href="../../../../../net/ME1312/SubServers/Bungee/Host/SubCreator.ServerTemplate.html" title="class in net.ME1312.SubServers.Bungee.Host">SubCreator.ServerTemplate</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../net/ME1312/SubServers/Bungee/Host/SubCreator.html#getTemplates--">getTemplates</a></span>()</code>
<div class="block">Gets the Templates that can be used in this SubCreator instance</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>abstract boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../net/ME1312/SubServers/Bungee/Host/SubCreator.html#isBusy--">isBusy</a></span>()</code>
<div class="block">Gets the status of SubCreator</div>
<tr id="i10" class="altColor">
<td class="colFirst"><code>static boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../net/ME1312/SubServers/Bungee/Host/SubCreator.html#isReserved-java.lang.String-">isReserved</a></span>(java.lang.String&nbsp;name)</code>
<div class="block">Check if a name has been reserved</div>
</td>
</tr>
<tr id="i8" class="altColor">
<tr id="i11" class="rowColor">
<td class="colFirst"><code>abstract void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../net/ME1312/SubServers/Bungee/Host/SubCreator.html#terminate--">terminate</a></span>()</code>
<div class="block">Terminate SubCreator</div>
<div class="block">Terminate All SubCreator Instances on this host</div>
</td>
</tr>
<tr id="i9" class="rowColor">
<tr id="i12" class="altColor">
<td class="colFirst"><code>abstract void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../net/ME1312/SubServers/Bungee/Host/SubCreator.html#terminate-java.lang.String-">terminate</a></span>(java.lang.String&nbsp;name)</code>
<div class="block">Terminate a SubCreator Instance</div>
</td>
</tr>
<tr id="i13" class="rowColor">
<td class="colFirst"><code>abstract void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../net/ME1312/SubServers/Bungee/Host/SubCreator.html#waitFor--">waitFor</a></span>()</code>
<div class="block">Wait for All SubCreator Instances to Finish</div>
</td>
</tr>
<tr id="i14" class="altColor">
<td class="colFirst"><code>abstract void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../net/ME1312/SubServers/Bungee/Host/SubCreator.html#waitFor-java.lang.String-">waitFor</a></span>(java.lang.String&nbsp;name)</code>
<div class="block">Wait for SubCreator to Finish</div>
</td>
</tr>
@ -331,7 +361,21 @@ extends java.lang.Object</pre>
<li class="blockList">
<h4>terminate</h4>
<pre>public abstract&nbsp;void&nbsp;terminate()</pre>
<div class="block">Terminate SubCreator</div>
<div class="block">Terminate All SubCreator Instances on this host</div>
</li>
</ul>
<a name="terminate-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>terminate</h4>
<pre>public abstract&nbsp;void&nbsp;terminate(java.lang.String&nbsp;name)</pre>
<div class="block">Terminate a SubCreator Instance</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>name</code> - Name of current creating server</dd>
</dl>
</li>
</ul>
<a name="waitFor--">
@ -342,8 +386,25 @@ extends java.lang.Object</pre>
<h4>waitFor</h4>
<pre>public abstract&nbsp;void&nbsp;waitFor()
throws java.lang.InterruptedException</pre>
<div class="block">Wait for All SubCreator Instances to Finish</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.InterruptedException</code></dd>
</dl>
</li>
</ul>
<a name="waitFor-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>waitFor</h4>
<pre>public abstract&nbsp;void&nbsp;waitFor(java.lang.String&nbsp;name)
throws java.lang.InterruptedException</pre>
<div class="block">Wait for SubCreator to Finish</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>name</code> - Name of current creating server</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.InterruptedException</code></dd>
</dl>
@ -383,24 +444,71 @@ extends java.lang.Object</pre>
<ul class="blockList">
<li class="blockList">
<h4>getLogger</h4>
<pre>public abstract&nbsp;<a href="../../../../../net/ME1312/SubServers/Bungee/Host/SubLogger.html" title="class in net.ME1312.SubServers.Bungee.Host">SubLogger</a>&nbsp;getLogger()</pre>
<div class="block">Gets the Logger for the creator</div>
<pre>public abstract&nbsp;java.util.List&lt;<a href="../../../../../net/ME1312/SubServers/Bungee/Host/SubLogger.html" title="class in net.ME1312.SubServers.Bungee.Host">SubLogger</a>&gt;&nbsp;getLogger()</pre>
<div class="block">Gets all loggers for All SubCreator Instances</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>SubCreator Loggers</dd>
</dl>
</li>
</ul>
<a name="isBusy--">
<a name="getLogger-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isBusy</h4>
<pre>public abstract&nbsp;boolean&nbsp;isBusy()</pre>
<div class="block">Gets the status of SubCreator</div>
<h4>getLogger</h4>
<pre>public abstract&nbsp;<a href="../../../../../net/ME1312/SubServers/Bungee/Host/SubLogger.html" title="class in net.ME1312.SubServers.Bungee.Host">SubLogger</a>&nbsp;getLogger(java.lang.String&nbsp;thread)</pre>
<div class="block">Gets the Logger for a SubCreator Instance</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>thread</code> - Thread ID</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>SubCreator Logger</dd>
</dl>
</li>
</ul>
<a name="getReservedNames--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getReservedNames</h4>
<pre>public abstract&nbsp;java.util.List&lt;java.lang.String&gt;&nbsp;getReservedNames()</pre>
<div class="block">Get a list of currently reserved Server names</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>SubCreator Status</dd>
<dd>Reserved Names</dd>
</dl>
</li>
</ul>
<a name="isReserved-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isReserved</h4>
<pre>public static&nbsp;boolean&nbsp;isReserved(java.lang.String&nbsp;name)</pre>
<div class="block">Check if a name has been reserved</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>name</code> - Name to check</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Reserved Status</dd>
</dl>
</li>
</ul>
<a name="getAllReservedNames--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getAllReservedNames</h4>
<pre>public static&nbsp;java.util.Map&lt;<a href="../../../../../net/ME1312/SubServers/Bungee/Host/Host.html" title="class in net.ME1312.SubServers.Bungee.Host">Host</a>,java.util.List&lt;java.lang.String&gt;&gt;&nbsp;getAllReservedNames()</pre>
<div class="block">Get a list of all currently reserved Server names across all hosts</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>All Reserved Names</dd>
</dl>
</li>
</ul>

View File

@ -42,7 +42,7 @@
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../../net/ME1312/SubServers/Bungee/Library/Exception/InvalidServerException.html" title="class in net.ME1312.SubServers.Bungee.Library.Exception"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li>Next&nbsp;Class</li>
<li><a href="../../../../../../net/ME1312/SubServers/Bungee/Library/Exception/SubCreatorException.html" title="class in net.ME1312.SubServers.Bungee.Library.Exception"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../../index.html?net/ME1312/SubServers/Bungee/Library/Exception/InvalidTemplateException.html" target="_top">Frames</a></li>
@ -238,7 +238,7 @@ extends java.lang.IllegalStateException</pre>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../../net/ME1312/SubServers/Bungee/Library/Exception/InvalidServerException.html" title="class in net.ME1312.SubServers.Bungee.Library.Exception"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li>Next&nbsp;Class</li>
<li><a href="../../../../../../net/ME1312/SubServers/Bungee/Library/Exception/SubCreatorException.html" title="class in net.ME1312.SubServers.Bungee.Library.Exception"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../../index.html?net/ME1312/SubServers/Bungee/Library/Exception/InvalidTemplateException.html" target="_top">Frames</a></li>

View File

@ -0,0 +1,282 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc -->
<title>SubCreatorException (SubServers.Bungee)</title>
<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../../../../script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="SubCreatorException (SubServers.Bungee)";
}
}
catch(err) {
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../../net/ME1312/SubServers/Bungee/Library/Exception/InvalidTemplateException.html" title="class in net.ME1312.SubServers.Bungee.Library.Exception"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li>Next&nbsp;Class</li>
</ul>
<ul class="navList">
<li><a href="../../../../../../index.html?net/ME1312/SubServers/Bungee/Library/Exception/SubCreatorException.html" target="_top">Frames</a></li>
<li><a href="SubCreatorException.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#methods.inherited.from.class.java.lang.Throwable">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li>Method</li>
</ul>
</div>
<a name="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">net.ME1312.SubServers.Bungee.Library.Exception</div>
<h2 title="Class SubCreatorException" class="title">Class SubCreatorException</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li>java.lang.Throwable</li>
<li>
<ul class="inheritance">
<li>java.lang.Exception</li>
<li>
<ul class="inheritance">
<li>java.lang.RuntimeException</li>
<li>
<ul class="inheritance">
<li>java.lang.IllegalStateException</li>
<li>
<ul class="inheritance">
<li>net.ME1312.SubServers.Bungee.Library.Exception.SubCreatorException</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Implemented Interfaces:</dt>
<dd>java.io.Serializable</dd>
</dl>
<hr>
<br>
<pre>public class <span class="typeNameLabel">SubCreatorException</span>
extends java.lang.IllegalStateException</pre>
<div class="block">Invalid Template Exception</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../../serialized-form.html#net.ME1312.SubServers.Bungee.Library.Exception.SubCreatorException">Serialized Form</a></dd>
</dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Constructor and Description</th>
</tr>
<tr class="altColor">
<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../../net/ME1312/SubServers/Bungee/Library/Exception/SubCreatorException.html#SubCreatorException--">SubCreatorException</a></span>()</code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../../net/ME1312/SubServers/Bungee/Library/Exception/SubCreatorException.html#SubCreatorException-java.lang.String-">SubCreatorException</a></span>(java.lang.String&nbsp;s)</code>&nbsp;</td>
</tr>
</table>
</li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Throwable">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.Throwable</h3>
<code>addSuppressed, fillInStackTrace, getCause, getLocalizedMessage, getMessage, getStackTrace, getSuppressed, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace, toString</code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.Object</h3>
<code>equals, getClass, hashCode, notify, notifyAll, wait, wait, wait</code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a name="SubCreatorException--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>SubCreatorException</h4>
<pre>public&nbsp;SubCreatorException()</pre>
</li>
</ul>
<a name="SubCreatorException-java.lang.String-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>SubCreatorException</h4>
<pre>public&nbsp;SubCreatorException(java.lang.String&nbsp;s)</pre>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../../net/ME1312/SubServers/Bungee/Library/Exception/InvalidTemplateException.html" title="class in net.ME1312.SubServers.Bungee.Library.Exception"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li>Next&nbsp;Class</li>
</ul>
<ul class="navList">
<li><a href="../../../../../../index.html?net/ME1312/SubServers/Bungee/Library/Exception/SubCreatorException.html" target="_top">Frames</a></li>
<li><a href="SubCreatorException.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#methods.inherited.from.class.java.lang.Throwable">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li>Method</li>
</ul>
</div>
<a name="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</body>
</html>

View File

@ -17,6 +17,7 @@
<li><a href="InvalidHostException.html" title="class in net.ME1312.SubServers.Bungee.Library.Exception" target="classFrame">InvalidHostException</a></li>
<li><a href="InvalidServerException.html" title="class in net.ME1312.SubServers.Bungee.Library.Exception" target="classFrame">InvalidServerException</a></li>
<li><a href="InvalidTemplateException.html" title="class in net.ME1312.SubServers.Bungee.Library.Exception" target="classFrame">InvalidTemplateException</a></li>
<li><a href="SubCreatorException.html" title="class in net.ME1312.SubServers.Bungee.Library.Exception" target="classFrame">SubCreatorException</a></li>
</ul>
</div>
</body>

View File

@ -110,6 +110,12 @@
<div class="block">Invalid Template Exception</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../../net/ME1312/SubServers/Bungee/Library/Exception/SubCreatorException.html" title="class in net.ME1312.SubServers.Bungee.Library.Exception">SubCreatorException</a></td>
<td class="colLast">
<div class="block">Invalid Template Exception</div>
</td>
</tr>
</tbody>
</table>
</li>

View File

@ -92,6 +92,7 @@
<li type="circle">net.ME1312.SubServers.Bungee.Library.Exception.<a href="../../../../../../net/ME1312/SubServers/Bungee/Library/Exception/InvalidHostException.html" title="class in net.ME1312.SubServers.Bungee.Library.Exception"><span class="typeNameLink">InvalidHostException</span></a></li>
<li type="circle">net.ME1312.SubServers.Bungee.Library.Exception.<a href="../../../../../../net/ME1312/SubServers/Bungee/Library/Exception/InvalidServerException.html" title="class in net.ME1312.SubServers.Bungee.Library.Exception"><span class="typeNameLink">InvalidServerException</span></a></li>
<li type="circle">net.ME1312.SubServers.Bungee.Library.Exception.<a href="../../../../../../net/ME1312/SubServers/Bungee/Library/Exception/InvalidTemplateException.html" title="class in net.ME1312.SubServers.Bungee.Library.Exception"><span class="typeNameLink">InvalidTemplateException</span></a></li>
<li type="circle">net.ME1312.SubServers.Bungee.Library.Exception.<a href="../../../../../../net/ME1312/SubServers/Bungee/Library/Exception/SubCreatorException.html" title="class in net.ME1312.SubServers.Bungee.Library.Exception"><span class="typeNameLink">SubCreatorException</span></a></li>
</ul>
</li>
</ul>

View File

@ -17,7 +17,7 @@
catch(err) {
}
//-->
var methods = {"i0":9,"i1":9,"i2":9,"i3":9,"i4":9,"i5":9,"i6":9,"i7":9,"i8":9,"i9":9};
var methods = {"i0":9,"i1":9,"i2":9,"i3":9,"i4":9,"i5":9,"i6":9,"i7":9,"i8":9,"i9":9,"i10":9,"i11":9};
var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
@ -217,6 +217,16 @@ extends java.lang.Object</pre>
<div class="block">Parse escapes in a Java String</div>
</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code>static void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../net/ME1312/SubServers/Bungee/Library/Util.html#unzip-java.io.InputStream-java.io.File-">unzip</a></span>(java.io.InputStream&nbsp;zip,
java.io.File&nbsp;dir)</code>&nbsp;</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code>static void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../net/ME1312/SubServers/Bungee/Library/Util.html#zip-java.io.File-java.io.OutputStream-">zip</a></span>(java.io.File&nbsp;file,
java.io.OutputStream&nbsp;zip)</code>&nbsp;</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
@ -381,6 +391,26 @@ extends java.lang.Object</pre>
</dl>
</li>
</ul>
<a name="zip-java.io.File-java.io.OutputStream-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>zip</h4>
<pre>public static&nbsp;void&nbsp;zip(java.io.File&nbsp;file,
java.io.OutputStream&nbsp;zip)</pre>
</li>
</ul>
<a name="unzip-java.io.InputStream-java.io.File-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>unzip</h4>
<pre>public static&nbsp;void&nbsp;unzip(java.io.InputStream&nbsp;zip,
java.io.File&nbsp;dir)</pre>
</li>
</ul>
<a name="random-int-int-">
<!-- -->
</a>

View File

@ -133,7 +133,7 @@ implements <a href="../../../../../../net/ME1312/SubServers/Bungee/Network/Packe
<th class="colOne" scope="col">Constructor and Description</th>
</tr>
<tr class="altColor">
<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../../net/ME1312/SubServers/Bungee/Network/Packet/PacketExCreateServer.html#PacketExCreateServer--">PacketExCreateServer</a></span>()</code>
<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../../net/ME1312/SubServers/Bungee/Network/Packet/PacketExCreateServer.html#PacketExCreateServer-java.lang.String-">PacketExCreateServer</a></span>(java.lang.String&nbsp;name)</code>
<div class="block">New PacketExCreateServer</div>
</td>
</tr>
@ -203,13 +203,13 @@ implements <a href="../../../../../../net/ME1312/SubServers/Bungee/Network/Packe
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a name="PacketExCreateServer--">
<a name="PacketExCreateServer-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>PacketExCreateServer</h4>
<pre>public&nbsp;PacketExCreateServer()</pre>
<pre>public&nbsp;PacketExCreateServer(java.lang.String&nbsp;name)</pre>
<div class="block">New PacketExCreateServer</div>
</li>
</ul>
@ -232,6 +232,7 @@ implements <a href="../../../../../../net/ME1312/SubServers/Bungee/Network/Packe
<dd><code>template</code> - Server Template</dd>
<dd><code>version</code> - Server Version</dd>
<dd><code>port</code> - Server Port Number</dd>
<dd><code>log</code> - Log Address</dd>
<dd><code>callback</code> - Callbacks</dd>
</dl>
</li>

View File

@ -212,6 +212,7 @@
<li type="circle">net.ME1312.SubServers.Bungee.Library.Exception.<a href="net/ME1312/SubServers/Bungee/Library/Exception/InvalidHostException.html" title="class in net.ME1312.SubServers.Bungee.Library.Exception"><span class="typeNameLink">InvalidHostException</span></a></li>
<li type="circle">net.ME1312.SubServers.Bungee.Library.Exception.<a href="net/ME1312/SubServers/Bungee/Library/Exception/InvalidServerException.html" title="class in net.ME1312.SubServers.Bungee.Library.Exception"><span class="typeNameLink">InvalidServerException</span></a></li>
<li type="circle">net.ME1312.SubServers.Bungee.Library.Exception.<a href="net/ME1312/SubServers/Bungee/Library/Exception/InvalidTemplateException.html" title="class in net.ME1312.SubServers.Bungee.Library.Exception"><span class="typeNameLink">InvalidTemplateException</span></a></li>
<li type="circle">net.ME1312.SubServers.Bungee.Library.Exception.<a href="net/ME1312/SubServers/Bungee/Library/Exception/SubCreatorException.html" title="class in net.ME1312.SubServers.Bungee.Library.Exception"><span class="typeNameLink">SubCreatorException</span></a></li>
</ul>
</li>
</ul>

View File

@ -139,6 +139,11 @@
</a>
<h3>Class <a href="net/ME1312/SubServers/Bungee/Library/Exception/InvalidTemplateException.html" title="class in net.ME1312.SubServers.Bungee.Library.Exception">net.ME1312.SubServers.Bungee.Library.Exception.InvalidTemplateException</a> extends java.lang.IllegalStateException implements Serializable</h3>
</li>
<li class="blockList"><a name="net.ME1312.SubServers.Bungee.Library.Exception.SubCreatorException">
<!-- -->
</a>
<h3>Class <a href="net/ME1312/SubServers/Bungee/Library/Exception/SubCreatorException.html" title="class in net.ME1312.SubServers.Bungee.Library.Exception">net.ME1312.SubServers.Bungee.Library.Exception.SubCreatorException</a> extends java.lang.IllegalStateException implements Serializable</h3>
</li>
</ul>
</li>
<li class="blockList">

View File

@ -72,6 +72,7 @@
<li><a href="net/ME1312/SubServers/Host/Executable/SubCreator.html" title="class in net.ME1312.SubServers.Host.Executable" target="classFrame">SubCreator</a></li>
<li><a href="net/ME1312/SubServers/Host/Executable/SubCreator.ServerTemplate.html" title="class in net.ME1312.SubServers.Host.Executable" target="classFrame">SubCreator.ServerTemplate</a></li>
<li><a href="net/ME1312/SubServers/Host/Executable/SubCreator.ServerType.html" title="enum in net.ME1312.SubServers.Host.Executable" target="classFrame">SubCreator.ServerType</a></li>
<li><a href="net/ME1312/SubServers/Host/Library/Exception/SubCreatorException.html" title="class in net.ME1312.SubServers.Host.Library.Exception" target="classFrame">SubCreatorException</a></li>
<li><a href="net/ME1312/SubServers/Host/Network/SubDataClient.html" title="class in net.ME1312.SubServers.Host.Network" target="classFrame">SubDataClient</a></li>
<li><a href="net/ME1312/SubServers/Host/Network/SubDataClient.Encryption.html" title="enum in net.ME1312.SubServers.Host.Network" target="classFrame">SubDataClient.Encryption</a></li>
<li><a href="net/ME1312/SubServers/Host/API/Event/SubDisableEvent.html" title="class in net.ME1312.SubServers.Host.API.Event" target="classFrame">SubDisableEvent</a></li>

View File

@ -72,6 +72,7 @@
<li><a href="net/ME1312/SubServers/Host/Executable/SubCreator.html" title="class in net.ME1312.SubServers.Host.Executable">SubCreator</a></li>
<li><a href="net/ME1312/SubServers/Host/Executable/SubCreator.ServerTemplate.html" title="class in net.ME1312.SubServers.Host.Executable">SubCreator.ServerTemplate</a></li>
<li><a href="net/ME1312/SubServers/Host/Executable/SubCreator.ServerType.html" title="enum in net.ME1312.SubServers.Host.Executable">SubCreator.ServerType</a></li>
<li><a href="net/ME1312/SubServers/Host/Library/Exception/SubCreatorException.html" title="class in net.ME1312.SubServers.Host.Library.Exception">SubCreatorException</a></li>
<li><a href="net/ME1312/SubServers/Host/Network/SubDataClient.html" title="class in net.ME1312.SubServers.Host.Network">SubDataClient</a></li>
<li><a href="net/ME1312/SubServers/Host/Network/SubDataClient.Encryption.html" title="enum in net.ME1312.SubServers.Host.Network">SubDataClient.Encryption</a></li>
<li><a href="net/ME1312/SubServers/Host/API/Event/SubDisableEvent.html" title="class in net.ME1312.SubServers.Host.API.Event">SubDisableEvent</a></li>

View File

@ -67,7 +67,7 @@
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<div class="contentContainer"><a href="#I:A">A</a>&nbsp;<a href="#I:B">B</a>&nbsp;<a href="#I:C">C</a>&nbsp;<a href="#I:D">D</a>&nbsp;<a href="#I:E">E</a>&nbsp;<a href="#I:F">F</a>&nbsp;<a href="#I:G">G</a>&nbsp;<a href="#I:H">H</a>&nbsp;<a href="#I:I">I</a>&nbsp;<a href="#I:J">J</a>&nbsp;<a href="#I:L">L</a>&nbsp;<a href="#I:M">M</a>&nbsp;<a href="#I:N">N</a>&nbsp;<a href="#I:P">P</a>&nbsp;<a href="#I:R">R</a>&nbsp;<a href="#I:S">S</a>&nbsp;<a href="#I:T">T</a>&nbsp;<a href="#I:U">U</a>&nbsp;<a href="#I:V">V</a>&nbsp;<a href="#I:W">W</a>&nbsp;<a href="#I:Y">Y</a>&nbsp;<a name="I:A">
<div class="contentContainer"><a href="#I:A">A</a>&nbsp;<a href="#I:B">B</a>&nbsp;<a href="#I:C">C</a>&nbsp;<a href="#I:D">D</a>&nbsp;<a href="#I:E">E</a>&nbsp;<a href="#I:F">F</a>&nbsp;<a href="#I:G">G</a>&nbsp;<a href="#I:H">H</a>&nbsp;<a href="#I:I">I</a>&nbsp;<a href="#I:J">J</a>&nbsp;<a href="#I:L">L</a>&nbsp;<a href="#I:M">M</a>&nbsp;<a href="#I:N">N</a>&nbsp;<a href="#I:P">P</a>&nbsp;<a href="#I:R">R</a>&nbsp;<a href="#I:S">S</a>&nbsp;<a href="#I:T">T</a>&nbsp;<a href="#I:U">U</a>&nbsp;<a href="#I:V">V</a>&nbsp;<a href="#I:W">W</a>&nbsp;<a href="#I:Y">Y</a>&nbsp;<a href="#I:Z">Z</a>&nbsp;<a name="I:A">
<!-- -->
</a>
<h2 class="title">A</h2>
@ -743,6 +743,8 @@
</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Host/Executable/SubCreator.html#getLogger--">getLogger()</a></span> - Method in class net.ME1312.SubServers.Host.Executable.<a href="net/ME1312/SubServers/Host/Executable/SubCreator.html" title="class in net.ME1312.SubServers.Host.Executable">SubCreator</a></dt>
<dd>&nbsp;</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Host/Executable/SubCreator.html#getLogger-java.lang.String-">getLogger(String)</a></span> - Method in class net.ME1312.SubServers.Host.Executable.<a href="net/ME1312/SubServers/Host/Executable/SubCreator.html" title="class in net.ME1312.SubServers.Host.Executable">SubCreator</a></dt>
<dd>&nbsp;</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Host/Executable/SubServer.html#getLogger--">getLogger()</a></span> - Method in class net.ME1312.SubServers.Host.Executable.<a href="net/ME1312/SubServers/Host/Executable/SubServer.html" title="class in net.ME1312.SubServers.Host.Executable">SubServer</a></dt>
<dd>
<div class="block">Get Process Logger</div>
@ -1151,8 +1153,6 @@
<dd>
<div class="block">Check if object is a Boolean</div>
</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Host/Executable/SubCreator.html#isBusy--">isBusy()</a></span> - Method in class net.ME1312.SubServers.Host.Executable.<a href="net/ME1312/SubServers/Host/Executable/SubCreator.html" title="class in net.ME1312.SubServers.Host.Executable">SubCreator</a></dt>
<dd>&nbsp;</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Host/API/Event/CommandPreProcessEvent.html#isCancelled--">isCancelled()</a></span> - Method in class net.ME1312.SubServers.Host.API.Event.<a href="net/ME1312/SubServers/Host/API/Event/CommandPreProcessEvent.html" title="class in net.ME1312.SubServers.Host.API.Event">CommandPreProcessEvent</a></dt>
<dd>&nbsp;</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Host/Library/Event/Cancellable.html#isCancelled--">isCancelled()</a></span> - Method in interface net.ME1312.SubServers.Host.Library.Event.<a href="net/ME1312/SubServers/Host/Library/Event/Cancellable.html" title="interface in net.ME1312.SubServers.Host.Library.Event">Cancellable</a></dt>
@ -1403,7 +1403,7 @@
<dd>
<div class="block">New PacketCreateServer (In)</div>
</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Host/Network/Packet/PacketCreateServer.html#PacketCreateServer-java.util.UUID-java.lang.String-java.lang.String-net.ME1312.SubServers.Host.Executable.SubCreator.ServerType-net.ME1312.SubServers.Host.Library.Version.Version-int-int-net.ME1312.SubServers.Host.Library.JSONCallback...-">PacketCreateServer(UUID, String, String, SubCreator.ServerType, Version, int, int, JSONCallback...)</a></span> - Constructor for class net.ME1312.SubServers.Host.Network.Packet.<a href="net/ME1312/SubServers/Host/Network/Packet/PacketCreateServer.html" title="class in net.ME1312.SubServers.Host.Network.Packet">PacketCreateServer</a></dt>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Host/Network/Packet/PacketCreateServer.html#PacketCreateServer-java.util.UUID-java.lang.String-java.lang.String-java.lang.String-net.ME1312.SubServers.Host.Library.Version.Version-int-net.ME1312.SubServers.Host.Library.JSONCallback...-">PacketCreateServer(UUID, String, String, String, Version, int, JSONCallback...)</a></span> - Constructor for class net.ME1312.SubServers.Host.Network.Packet.<a href="net/ME1312/SubServers/Host/Network/Packet/PacketCreateServer.html" title="class in net.ME1312.SubServers.Host.Network.Packet">PacketCreateServer</a></dt>
<dd>
<div class="block">New PacketCreateServer (Out)</div>
</dd>
@ -1735,6 +1735,8 @@
<dd>&nbsp;</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Host/Library/Util.ReturnRunnable.html#run--">run()</a></span> - Method in interface net.ME1312.SubServers.Host.Library.<a href="net/ME1312/SubServers/Host/Library/Util.ReturnRunnable.html" title="interface in net.ME1312.SubServers.Host.Library">Util.ReturnRunnable</a></dt>
<dd>&nbsp;</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Host/ExHost.html#runtime">runtime</a></span> - Variable in class net.ME1312.SubServers.Host.<a href="net/ME1312/SubServers/Host/ExHost.html" title="class in net.ME1312.SubServers.Host">ExHost</a></dt>
<dd>&nbsp;</dd>
</dl>
<a name="I:S">
<!-- -->
@ -1913,6 +1915,14 @@
<dd>&nbsp;</dd>
<dt><a href="net/ME1312/SubServers/Host/Executable/SubCreator.ServerType.html" title="enum in net.ME1312.SubServers.Host.Executable"><span class="typeNameLink">SubCreator.ServerType</span></a> - Enum in <a href="net/ME1312/SubServers/Host/Executable/package-summary.html">net.ME1312.SubServers.Host.Executable</a></dt>
<dd>&nbsp;</dd>
<dt><a href="net/ME1312/SubServers/Host/Library/Exception/SubCreatorException.html" title="class in net.ME1312.SubServers.Host.Library.Exception"><span class="typeNameLink">SubCreatorException</span></a> - Exception in <a href="net/ME1312/SubServers/Host/Library/Exception/package-summary.html">net.ME1312.SubServers.Host.Library.Exception</a></dt>
<dd>
<div class="block">Invalid Template Exception</div>
</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Host/Library/Exception/SubCreatorException.html#SubCreatorException--">SubCreatorException()</a></span> - Constructor for exception net.ME1312.SubServers.Host.Library.Exception.<a href="net/ME1312/SubServers/Host/Library/Exception/SubCreatorException.html" title="class in net.ME1312.SubServers.Host.Library.Exception">SubCreatorException</a></dt>
<dd>&nbsp;</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Host/Library/Exception/SubCreatorException.html#SubCreatorException-java.lang.String-">SubCreatorException(String)</a></span> - Constructor for exception net.ME1312.SubServers.Host.Library.Exception.<a href="net/ME1312/SubServers/Host/Library/Exception/SubCreatorException.html" title="class in net.ME1312.SubServers.Host.Library.Exception">SubCreatorException</a></dt>
<dd>&nbsp;</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Host/ExHost.html#subdata">subdata</a></span> - Variable in class net.ME1312.SubServers.Host.<a href="net/ME1312/SubServers/Host/ExHost.html" title="class in net.ME1312.SubServers.Host">ExHost</a></dt>
<dd>&nbsp;</dd>
<dt><a href="net/ME1312/SubServers/Host/Network/SubDataClient.html" title="class in net.ME1312.SubServers.Host.Network"><span class="typeNameLink">SubDataClient</span></a> - Class in <a href="net/ME1312/SubServers/Host/Network/package-summary.html">net.ME1312.SubServers.Host.Network</a></dt>
@ -2046,6 +2056,8 @@
<dd>&nbsp;</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Host/Executable/SubCreator.html#terminate--">terminate()</a></span> - Method in class net.ME1312.SubServers.Host.Executable.<a href="net/ME1312/SubServers/Host/Executable/SubCreator.html" title="class in net.ME1312.SubServers.Host.Executable">SubCreator</a></dt>
<dd>&nbsp;</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Host/Executable/SubCreator.html#terminate-java.lang.String-">terminate(String)</a></span> - Method in class net.ME1312.SubServers.Host.Executable.<a href="net/ME1312/SubServers/Host/Executable/SubCreator.html" title="class in net.ME1312.SubServers.Host.Executable">SubCreator</a></dt>
<dd>&nbsp;</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Host/Executable/SubServer.html#terminate--">terminate()</a></span> - Method in class net.ME1312.SubServers.Host.Executable.<a href="net/ME1312/SubServers/Host/Executable/SubServer.html" title="class in net.ME1312.SubServers.Host.Executable">SubServer</a></dt>
<dd>
<div class="block">Terminates the Server</div>
@ -2118,6 +2130,8 @@
<dd>
<div class="block">Unregister PacketOut to the Network</div>
</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Host/Library/Util.html#unzip-java.io.InputStream-java.io.File-">unzip(InputStream, File)</a></span> - Static method in class net.ME1312.SubServers.Host.Library.<a href="net/ME1312/SubServers/Host/Library/Util.html" title="class in net.ME1312.SubServers.Host.Library">Util</a></dt>
<dd>&nbsp;</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Host/API/Command.html#usage--">usage()</a></span> - Method in class net.ME1312.SubServers.Host.API.<a href="net/ME1312/SubServers/Host/API/Command.html" title="class in net.ME1312.SubServers.Host.API">Command</a></dt>
<dd>
<div class="block">Get the Usage of this Command</div>
@ -2200,6 +2214,8 @@ the order they are declared.</div>
<dl>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Host/Executable/SubCreator.html#waitFor--">waitFor()</a></span> - Method in class net.ME1312.SubServers.Host.Executable.<a href="net/ME1312/SubServers/Host/Executable/SubCreator.html" title="class in net.ME1312.SubServers.Host.Executable">SubCreator</a></dt>
<dd>&nbsp;</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Host/Executable/SubCreator.html#waitFor-java.lang.String-">waitFor(String)</a></span> - Method in class net.ME1312.SubServers.Host.Executable.<a href="net/ME1312/SubServers/Host/Executable/SubCreator.html" title="class in net.ME1312.SubServers.Host.Executable">SubCreator</a></dt>
<dd>&nbsp;</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Host/Executable/SubServer.html#waitFor--">waitFor()</a></span> - Method in class net.ME1312.SubServers.Host.Executable.<a href="net/ME1312/SubServers/Host/Executable/SubServer.html" title="class in net.ME1312.SubServers.Host.Executable">SubServer</a></dt>
<dd>
<div class="block">Waits for the Server to Stop</div>
@ -2253,7 +2269,15 @@ the order they are declared.</div>
<div class="block">YAML Value Class</div>
</dd>
</dl>
<a href="#I:A">A</a>&nbsp;<a href="#I:B">B</a>&nbsp;<a href="#I:C">C</a>&nbsp;<a href="#I:D">D</a>&nbsp;<a href="#I:E">E</a>&nbsp;<a href="#I:F">F</a>&nbsp;<a href="#I:G">G</a>&nbsp;<a href="#I:H">H</a>&nbsp;<a href="#I:I">I</a>&nbsp;<a href="#I:J">J</a>&nbsp;<a href="#I:L">L</a>&nbsp;<a href="#I:M">M</a>&nbsp;<a href="#I:N">N</a>&nbsp;<a href="#I:P">P</a>&nbsp;<a href="#I:R">R</a>&nbsp;<a href="#I:S">S</a>&nbsp;<a href="#I:T">T</a>&nbsp;<a href="#I:U">U</a>&nbsp;<a href="#I:V">V</a>&nbsp;<a href="#I:W">W</a>&nbsp;<a href="#I:Y">Y</a>&nbsp;</div>
<a name="I:Z">
<!-- -->
</a>
<h2 class="title">Z</h2>
<dl>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Host/Library/Util.html#zip-java.io.File-java.io.OutputStream-">zip(File, OutputStream)</a></span> - Static method in class net.ME1312.SubServers.Host.Library.<a href="net/ME1312/SubServers/Host/Library/Util.html" title="class in net.ME1312.SubServers.Host.Library">Util</a></dt>
<dd>&nbsp;</dd>
</dl>
<a href="#I:A">A</a>&nbsp;<a href="#I:B">B</a>&nbsp;<a href="#I:C">C</a>&nbsp;<a href="#I:D">D</a>&nbsp;<a href="#I:E">E</a>&nbsp;<a href="#I:F">F</a>&nbsp;<a href="#I:G">G</a>&nbsp;<a href="#I:H">H</a>&nbsp;<a href="#I:I">I</a>&nbsp;<a href="#I:J">J</a>&nbsp;<a href="#I:L">L</a>&nbsp;<a href="#I:M">M</a>&nbsp;<a href="#I:N">N</a>&nbsp;<a href="#I:P">P</a>&nbsp;<a href="#I:R">R</a>&nbsp;<a href="#I:S">S</a>&nbsp;<a href="#I:T">T</a>&nbsp;<a href="#I:U">U</a>&nbsp;<a href="#I:V">V</a>&nbsp;<a href="#I:W">W</a>&nbsp;<a href="#I:Y">Y</a>&nbsp;<a href="#I:Z">Z</a>&nbsp;</div>
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!-- -->

View File

@ -161,18 +161,22 @@ extends java.lang.Object</pre>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../net/ME1312/SubServers/Host/ExHost.html#log">log</a></span></code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="../../../../net/ME1312/SubServers/Host/Library/UniversalFile.html" title="class in net.ME1312.SubServers.Host.Library">UniversalFile</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../net/ME1312/SubServers/Host/ExHost.html#runtime">runtime</a></span></code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>java.util.HashMap&lt;java.lang.String,<a href="../../../../net/ME1312/SubServers/Host/Executable/SubServer.html" title="class in net.ME1312.SubServers.Host.Executable">SubServer</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../net/ME1312/SubServers/Host/ExHost.html#servers">servers</a></span></code>&nbsp;</td>
</tr>
<tr class="rowColor">
<tr class="altColor">
<td class="colFirst"><code><a href="../../../../net/ME1312/SubServers/Host/Network/SubDataClient.html" title="class in net.ME1312.SubServers.Host.Network">SubDataClient</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../net/ME1312/SubServers/Host/ExHost.html#subdata">subdata</a></span></code>&nbsp;</td>
</tr>
<tr class="altColor">
<tr class="rowColor">
<td class="colFirst"><code>java.util.HashMap&lt;java.lang.String,<a href="../../../../net/ME1312/SubServers/Host/Executable/SubCreator.ServerTemplate.html" title="class in net.ME1312.SubServers.Host.Executable">SubCreator.ServerTemplate</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../net/ME1312/SubServers/Host/ExHost.html#templates">templates</a></span></code>&nbsp;</td>
</tr>
<tr class="rowColor">
<tr class="altColor">
<td class="colFirst"><code><a href="../../../../net/ME1312/SubServers/Host/Library/Version/Version.html" title="class in net.ME1312.SubServers.Host.Library.Version">Version</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../net/ME1312/SubServers/Host/ExHost.html#version">version</a></span></code>&nbsp;</td>
</tr>
@ -270,6 +274,15 @@ extends java.lang.Object</pre>
<pre>public final&nbsp;<a href="../../../../net/ME1312/SubServers/Host/Library/UniversalFile.html" title="class in net.ME1312.SubServers.Host.Library">UniversalFile</a> dir</pre>
</li>
</ul>
<a name="runtime">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>runtime</h4>
<pre>public final&nbsp;<a href="../../../../net/ME1312/SubServers/Host/Library/UniversalFile.html" title="class in net.ME1312.SubServers.Host.Library">UniversalFile</a> runtime</pre>
</li>
</ul>
<a name="config">
<!-- -->
</a>

View File

@ -17,7 +17,7 @@
catch(err) {
}
//-->
var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10};
var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
@ -180,12 +180,12 @@ extends java.lang.Object</pre>
java.lang.String&nbsp;id)</code>&nbsp;</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code><a href="../../../../../net/ME1312/SubServers/Host/Executable/SubLogger.html" title="class in net.ME1312.SubServers.Host.Executable">SubLogger</a></code></td>
<td class="colFirst"><code>java.util.List&lt;<a href="../../../../../net/ME1312/SubServers/Host/Executable/SubLogger.html" title="class in net.ME1312.SubServers.Host.Executable">SubLogger</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../net/ME1312/SubServers/Host/Executable/SubCreator.html#getLogger--">getLogger</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../net/ME1312/SubServers/Host/Executable/SubCreator.html#isBusy--">isBusy</a></span>()</code>&nbsp;</td>
<td class="colFirst"><code><a href="../../../../../net/ME1312/SubServers/Host/Executable/SubLogger.html" title="class in net.ME1312.SubServers.Host.Executable">SubLogger</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../net/ME1312/SubServers/Host/Executable/SubCreator.html#getLogger-java.lang.String-">getLogger</a></span>(java.lang.String&nbsp;thread)</code>&nbsp;</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>void</code></td>
@ -193,8 +193,16 @@ extends java.lang.Object</pre>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../net/ME1312/SubServers/Host/Executable/SubCreator.html#terminate-java.lang.String-">terminate</a></span>(java.lang.String&nbsp;thread)</code>&nbsp;</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../net/ME1312/SubServers/Host/Executable/SubCreator.html#waitFor--">waitFor</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../net/ME1312/SubServers/Host/Executable/SubCreator.html#waitFor-java.lang.String-">waitFor</a></span>(java.lang.String&nbsp;thread)</code>&nbsp;</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
@ -262,6 +270,15 @@ extends java.lang.Object</pre>
<pre>public&nbsp;void&nbsp;terminate()</pre>
</li>
</ul>
<a name="terminate-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>terminate</h4>
<pre>public&nbsp;void&nbsp;terminate(java.lang.String&nbsp;thread)</pre>
</li>
</ul>
<a name="waitFor--">
<!-- -->
</a>
@ -276,22 +293,36 @@ extends java.lang.Object</pre>
</dl>
</li>
</ul>
<a name="waitFor-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>waitFor</h4>
<pre>public&nbsp;void&nbsp;waitFor(java.lang.String&nbsp;thread)
throws java.lang.InterruptedException</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.InterruptedException</code></dd>
</dl>
</li>
</ul>
<a name="getLogger--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getLogger</h4>
<pre>public&nbsp;<a href="../../../../../net/ME1312/SubServers/Host/Executable/SubLogger.html" title="class in net.ME1312.SubServers.Host.Executable">SubLogger</a>&nbsp;getLogger()</pre>
<pre>public&nbsp;java.util.List&lt;<a href="../../../../../net/ME1312/SubServers/Host/Executable/SubLogger.html" title="class in net.ME1312.SubServers.Host.Executable">SubLogger</a>&gt;&nbsp;getLogger()</pre>
</li>
</ul>
<a name="isBusy--">
<a name="getLogger-java.lang.String-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>isBusy</h4>
<pre>public&nbsp;boolean&nbsp;isBusy()</pre>
<h4>getLogger</h4>
<pre>public&nbsp;<a href="../../../../../net/ME1312/SubServers/Host/Executable/SubLogger.html" title="class in net.ME1312.SubServers.Host.Executable">SubLogger</a>&nbsp;getLogger(java.lang.String&nbsp;thread)</pre>
</li>
</ul>
</li>

View File

@ -42,7 +42,7 @@
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../../net/ME1312/SubServers/Host/Library/Exception/InvalidServerException.html" title="class in net.ME1312.SubServers.Host.Library.Exception"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li>Next&nbsp;Class</li>
<li><a href="../../../../../../net/ME1312/SubServers/Host/Library/Exception/SubCreatorException.html" title="class in net.ME1312.SubServers.Host.Library.Exception"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../../index.html?net/ME1312/SubServers/Host/Library/Exception/InvalidTemplateException.html" target="_top">Frames</a></li>
@ -238,7 +238,7 @@ extends java.lang.IllegalStateException</pre>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../../net/ME1312/SubServers/Host/Library/Exception/InvalidServerException.html" title="class in net.ME1312.SubServers.Host.Library.Exception"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li>Next&nbsp;Class</li>
<li><a href="../../../../../../net/ME1312/SubServers/Host/Library/Exception/SubCreatorException.html" title="class in net.ME1312.SubServers.Host.Library.Exception"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../../index.html?net/ME1312/SubServers/Host/Library/Exception/InvalidTemplateException.html" target="_top">Frames</a></li>

View File

@ -0,0 +1,282 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc -->
<title>SubCreatorException (SubServers.Host)</title>
<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../../../../script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="SubCreatorException (SubServers.Host)";
}
}
catch(err) {
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../../net/ME1312/SubServers/Host/Library/Exception/InvalidTemplateException.html" title="class in net.ME1312.SubServers.Host.Library.Exception"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li>Next&nbsp;Class</li>
</ul>
<ul class="navList">
<li><a href="../../../../../../index.html?net/ME1312/SubServers/Host/Library/Exception/SubCreatorException.html" target="_top">Frames</a></li>
<li><a href="SubCreatorException.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#methods.inherited.from.class.java.lang.Throwable">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li>Method</li>
</ul>
</div>
<a name="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">net.ME1312.SubServers.Host.Library.Exception</div>
<h2 title="Class SubCreatorException" class="title">Class SubCreatorException</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li>java.lang.Throwable</li>
<li>
<ul class="inheritance">
<li>java.lang.Exception</li>
<li>
<ul class="inheritance">
<li>java.lang.RuntimeException</li>
<li>
<ul class="inheritance">
<li>java.lang.IllegalStateException</li>
<li>
<ul class="inheritance">
<li>net.ME1312.SubServers.Host.Library.Exception.SubCreatorException</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Implemented Interfaces:</dt>
<dd>java.io.Serializable</dd>
</dl>
<hr>
<br>
<pre>public class <span class="typeNameLabel">SubCreatorException</span>
extends java.lang.IllegalStateException</pre>
<div class="block">Invalid Template Exception</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../../serialized-form.html#net.ME1312.SubServers.Host.Library.Exception.SubCreatorException">Serialized Form</a></dd>
</dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Constructor and Description</th>
</tr>
<tr class="altColor">
<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../../net/ME1312/SubServers/Host/Library/Exception/SubCreatorException.html#SubCreatorException--">SubCreatorException</a></span>()</code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../../net/ME1312/SubServers/Host/Library/Exception/SubCreatorException.html#SubCreatorException-java.lang.String-">SubCreatorException</a></span>(java.lang.String&nbsp;s)</code>&nbsp;</td>
</tr>
</table>
</li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Throwable">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.Throwable</h3>
<code>addSuppressed, fillInStackTrace, getCause, getLocalizedMessage, getMessage, getStackTrace, getSuppressed, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace, toString</code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.Object</h3>
<code>equals, getClass, hashCode, notify, notifyAll, wait, wait, wait</code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a name="SubCreatorException--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>SubCreatorException</h4>
<pre>public&nbsp;SubCreatorException()</pre>
</li>
</ul>
<a name="SubCreatorException-java.lang.String-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>SubCreatorException</h4>
<pre>public&nbsp;SubCreatorException(java.lang.String&nbsp;s)</pre>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../../net/ME1312/SubServers/Host/Library/Exception/InvalidTemplateException.html" title="class in net.ME1312.SubServers.Host.Library.Exception"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li>Next&nbsp;Class</li>
</ul>
<ul class="navList">
<li><a href="../../../../../../index.html?net/ME1312/SubServers/Host/Library/Exception/SubCreatorException.html" target="_top">Frames</a></li>
<li><a href="SubCreatorException.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#methods.inherited.from.class.java.lang.Throwable">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li>Method</li>
</ul>
</div>
<a name="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</body>
</html>

View File

@ -17,6 +17,7 @@
<li><a href="IllegalStringValueException.html" title="class in net.ME1312.SubServers.Host.Library.Exception" target="classFrame">IllegalStringValueException</a></li>
<li><a href="InvalidServerException.html" title="class in net.ME1312.SubServers.Host.Library.Exception" target="classFrame">InvalidServerException</a></li>
<li><a href="InvalidTemplateException.html" title="class in net.ME1312.SubServers.Host.Library.Exception" target="classFrame">InvalidTemplateException</a></li>
<li><a href="SubCreatorException.html" title="class in net.ME1312.SubServers.Host.Library.Exception" target="classFrame">SubCreatorException</a></li>
</ul>
</div>
</body>

View File

@ -110,6 +110,12 @@
<div class="block">Invalid Template Exception</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../../net/ME1312/SubServers/Host/Library/Exception/SubCreatorException.html" title="class in net.ME1312.SubServers.Host.Library.Exception">SubCreatorException</a></td>
<td class="colLast">
<div class="block">Invalid Template Exception</div>
</td>
</tr>
</tbody>
</table>
</li>

View File

@ -100,6 +100,7 @@
<li type="circle">net.ME1312.SubServers.Host.Library.Exception.<a href="../../../../../../net/ME1312/SubServers/Host/Library/Exception/IllegalStringValueException.html" title="class in net.ME1312.SubServers.Host.Library.Exception"><span class="typeNameLink">IllegalStringValueException</span></a></li>
<li type="circle">net.ME1312.SubServers.Host.Library.Exception.<a href="../../../../../../net/ME1312/SubServers/Host/Library/Exception/InvalidServerException.html" title="class in net.ME1312.SubServers.Host.Library.Exception"><span class="typeNameLink">InvalidServerException</span></a></li>
<li type="circle">net.ME1312.SubServers.Host.Library.Exception.<a href="../../../../../../net/ME1312/SubServers/Host/Library/Exception/InvalidTemplateException.html" title="class in net.ME1312.SubServers.Host.Library.Exception"><span class="typeNameLink">InvalidTemplateException</span></a></li>
<li type="circle">net.ME1312.SubServers.Host.Library.Exception.<a href="../../../../../../net/ME1312/SubServers/Host/Library/Exception/SubCreatorException.html" title="class in net.ME1312.SubServers.Host.Library.Exception"><span class="typeNameLink">SubCreatorException</span></a></li>
</ul>
</li>
</ul>

View File

@ -17,7 +17,7 @@
catch(err) {
}
//-->
var methods = {"i0":9,"i1":9,"i2":9,"i3":9,"i4":9,"i5":9,"i6":9,"i7":9,"i8":9,"i9":9};
var methods = {"i0":9,"i1":9,"i2":9,"i3":9,"i4":9,"i5":9,"i6":9,"i7":9,"i8":9,"i9":9,"i10":9,"i11":9};
var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
@ -217,6 +217,16 @@ extends java.lang.Object</pre>
<div class="block">Parse escapes in a Java String</div>
</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code>static void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../net/ME1312/SubServers/Host/Library/Util.html#unzip-java.io.InputStream-java.io.File-">unzip</a></span>(java.io.InputStream&nbsp;zip,
java.io.File&nbsp;dir)</code>&nbsp;</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code>static void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../net/ME1312/SubServers/Host/Library/Util.html#zip-java.io.File-java.io.OutputStream-">zip</a></span>(java.io.File&nbsp;file,
java.io.OutputStream&nbsp;zip)</code>&nbsp;</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
@ -381,6 +391,26 @@ extends java.lang.Object</pre>
</dl>
</li>
</ul>
<a name="zip-java.io.File-java.io.OutputStream-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>zip</h4>
<pre>public static&nbsp;void&nbsp;zip(java.io.File&nbsp;file,
java.io.OutputStream&nbsp;zip)</pre>
</li>
</ul>
<a name="unzip-java.io.InputStream-java.io.File-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>unzip</h4>
<pre>public static&nbsp;void&nbsp;unzip(java.io.InputStream&nbsp;zip,
java.io.File&nbsp;dir)</pre>
</li>
</ul>
<a name="random-int-int-">
<!-- -->
</a>

View File

@ -138,13 +138,12 @@ implements <a href="../../../../../../net/ME1312/SubServers/Host/Network/PacketI
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../../net/ME1312/SubServers/Host/Network/Packet/PacketCreateServer.html#PacketCreateServer-java.util.UUID-java.lang.String-java.lang.String-net.ME1312.SubServers.Host.Executable.SubCreator.ServerType-net.ME1312.SubServers.Host.Library.Version.Version-int-int-net.ME1312.SubServers.Host.Library.JSONCallback...-">PacketCreateServer</a></span>(java.util.UUID&nbsp;player,
<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../../net/ME1312/SubServers/Host/Network/Packet/PacketCreateServer.html#PacketCreateServer-java.util.UUID-java.lang.String-java.lang.String-java.lang.String-net.ME1312.SubServers.Host.Library.Version.Version-int-net.ME1312.SubServers.Host.Library.JSONCallback...-">PacketCreateServer</a></span>(java.util.UUID&nbsp;player,
java.lang.String&nbsp;name,
java.lang.String&nbsp;host,
<a href="../../../../../../net/ME1312/SubServers/Host/Executable/SubCreator.ServerType.html" title="enum in net.ME1312.SubServers.Host.Executable">SubCreator.ServerType</a>&nbsp;type,
java.lang.String&nbsp;template,
<a href="../../../../../../net/ME1312/SubServers/Host/Library/Version/Version.html" title="class in net.ME1312.SubServers.Host.Library.Version">Version</a>&nbsp;version,
int&nbsp;port,
int&nbsp;memory,
<a href="../../../../../../net/ME1312/SubServers/Host/Library/JSONCallback.html" title="interface in net.ME1312.SubServers.Host.Library">JSONCallback</a>...&nbsp;callback)</code>
<div class="block">New PacketCreateServer (Out)</div>
</td>
@ -214,7 +213,7 @@ implements <a href="../../../../../../net/ME1312/SubServers/Host/Network/PacketI
<div class="block">New PacketCreateServer (In)</div>
</li>
</ul>
<a name="PacketCreateServer-java.util.UUID-java.lang.String-java.lang.String-net.ME1312.SubServers.Host.Executable.SubCreator.ServerType-net.ME1312.SubServers.Host.Library.Version.Version-int-int-net.ME1312.SubServers.Host.Library.JSONCallback...-">
<a name="PacketCreateServer-java.util.UUID-java.lang.String-java.lang.String-java.lang.String-net.ME1312.SubServers.Host.Library.Version.Version-int-net.ME1312.SubServers.Host.Library.JSONCallback...-">
<!-- -->
</a>
<ul class="blockListLast">
@ -223,10 +222,9 @@ implements <a href="../../../../../../net/ME1312/SubServers/Host/Network/PacketI
<pre>public&nbsp;PacketCreateServer(java.util.UUID&nbsp;player,
java.lang.String&nbsp;name,
java.lang.String&nbsp;host,
<a href="../../../../../../net/ME1312/SubServers/Host/Executable/SubCreator.ServerType.html" title="enum in net.ME1312.SubServers.Host.Executable">SubCreator.ServerType</a>&nbsp;type,
java.lang.String&nbsp;template,
<a href="../../../../../../net/ME1312/SubServers/Host/Library/Version/Version.html" title="class in net.ME1312.SubServers.Host.Library.Version">Version</a>&nbsp;version,
int&nbsp;port,
int&nbsp;memory,
<a href="../../../../../../net/ME1312/SubServers/Host/Library/JSONCallback.html" title="interface in net.ME1312.SubServers.Host.Library">JSONCallback</a>...&nbsp;callback)</pre>
<div class="block">New PacketCreateServer (Out)</div>
<dl>
@ -234,10 +232,9 @@ implements <a href="../../../../../../net/ME1312/SubServers/Host/Network/PacketI
<dd><code>player</code> - Player Creating</dd>
<dd><code>name</code> - Server Name</dd>
<dd><code>host</code> - Host to use</dd>
<dd><code>type</code> - Server Type</dd>
<dd><code>template</code> - Server Template</dd>
<dd><code>version</code> - Server Version</dd>
<dd><code>port</code> - Server Port</dd>
<dd><code>memory</code> - Server Memory</dd>
<dd><code>callback</code> - Callbacks</dd>
</dl>
</li>

View File

@ -190,6 +190,7 @@
<li type="circle">net.ME1312.SubServers.Host.Library.Exception.<a href="net/ME1312/SubServers/Host/Library/Exception/IllegalStringValueException.html" title="class in net.ME1312.SubServers.Host.Library.Exception"><span class="typeNameLink">IllegalStringValueException</span></a></li>
<li type="circle">net.ME1312.SubServers.Host.Library.Exception.<a href="net/ME1312/SubServers/Host/Library/Exception/InvalidServerException.html" title="class in net.ME1312.SubServers.Host.Library.Exception"><span class="typeNameLink">InvalidServerException</span></a></li>
<li type="circle">net.ME1312.SubServers.Host.Library.Exception.<a href="net/ME1312/SubServers/Host/Library/Exception/InvalidTemplateException.html" title="class in net.ME1312.SubServers.Host.Library.Exception"><span class="typeNameLink">InvalidTemplateException</span></a></li>
<li type="circle">net.ME1312.SubServers.Host.Library.Exception.<a href="net/ME1312/SubServers/Host/Library/Exception/SubCreatorException.html" title="class in net.ME1312.SubServers.Host.Library.Exception"><span class="typeNameLink">SubCreatorException</span></a></li>
</ul>
</li>
</ul>

View File

@ -139,6 +139,11 @@
</a>
<h3>Class <a href="net/ME1312/SubServers/Host/Library/Exception/InvalidTemplateException.html" title="class in net.ME1312.SubServers.Host.Library.Exception">net.ME1312.SubServers.Host.Library.Exception.InvalidTemplateException</a> extends java.lang.IllegalStateException implements Serializable</h3>
</li>
<li class="blockList"><a name="net.ME1312.SubServers.Host.Library.Exception.SubCreatorException">
<!-- -->
</a>
<h3>Class <a href="net/ME1312/SubServers/Host/Library/Exception/SubCreatorException.html" title="class in net.ME1312.SubServers.Host.Library.Exception">net.ME1312.SubServers.Host.Library.Exception.SubCreatorException</a> extends java.lang.IllegalStateException implements Serializable</h3>
</li>
</ul>
</li>
<li class="blockList">

View File

@ -2,4 +2,4 @@ Manifest-Version: 1.0
Class-Path: BungeeCord.jar
Main-Class: net.ME1312.SubServers.Bungee.Launch
Implementation-Version: 2.12b
Specification-Version: 2
Specification-Version: 3

View File

@ -2,18 +2,18 @@ package net.ME1312.SubServers.Bungee.Host.External;
import net.ME1312.SubServers.Bungee.Event.SubCreateEvent;
import net.ME1312.SubServers.Bungee.Host.*;
import net.ME1312.SubServers.Bungee.Library.Config.YAMLConfig;
import net.ME1312.SubServers.Bungee.Library.Config.YAMLSection;
import net.ME1312.SubServers.Bungee.Library.Container;
import net.ME1312.SubServers.Bungee.Library.JSONCallback;
import net.ME1312.SubServers.Bungee.Library.UniversalFile;
import net.ME1312.SubServers.Bungee.Library.Util;
import net.ME1312.SubServers.Bungee.Library.Version.Version;
import net.ME1312.SubServers.Bungee.Network.Packet.PacketExCreateServer;
import net.ME1312.SubServers.Bungee.SubAPI;
import java.io.File;
import java.util.HashMap;
import java.util.Map;
import java.util.TreeMap;
import java.util.UUID;
import java.util.*;
/**
* External SubCreator Class
@ -22,8 +22,7 @@ public class ExternalSubCreator extends SubCreator {
private HashMap<String, ServerTemplate> templates = new HashMap<String, ServerTemplate>();
private ExternalHost host;
private String gitBash;
private ExternalSubLogger logger;
private boolean running;
private TreeMap<String, ExternalSubLogger> thread;
/**
* Creates an External SubCreator
@ -35,24 +34,39 @@ public class ExternalSubCreator extends SubCreator {
if (Util.isNull(host, gitBash)) throw new NullPointerException();
this.host = host;
this.gitBash = gitBash;
this.logger = new ExternalSubLogger(this, host.getName() + "/Creator", new Container<Boolean>(host.plugin.config.get().getSection("Settings").getBoolean("Log-Creator")), null);
this.running = false;
this.thread = new TreeMap<String, ExternalSubLogger>();
if (new UniversalFile(host.plugin.dir, "SubServers:Templates").exists()) for (File file : new UniversalFile(host.plugin.dir, "SubServers:Templates").listFiles()) {
try {
if (file.isDirectory()) {
YAMLSection config = (new UniversalFile(file, "template.yml").exists())?new YAMLConfig(new UniversalFile(file, "template.yml")).get().getSection("Template", new YAMLSection()):new YAMLSection();
ServerTemplate template = new ServerTemplate(file.getName(), config.getBoolean("Enabled", true), config.getRawString("Icon", "::NULL::"), file, config.getSection("Build", new YAMLSection()), config.getSection("Settings", new YAMLSection()));
templates.put(file.getName().toLowerCase(), template);
if (config.getKeys().contains("Display")) template.setDisplayName(config.getString("Display"));
}
} catch (Exception e) {
System.out.println(host.getName() + "/Creator > Couldn't load template: " + file.getName());
e.printStackTrace();
}
}
}
@Override
public boolean create(UUID player, String name, ServerTemplate template, Version version, int port) {
if (Util.isNull(name, template, version, port)) throw new NullPointerException();
if (!isBusy()) {
if (template.isEnabled() && !SubAPI.getInstance().getSubServers().keySet().contains(name.toLowerCase()) && !SubCreator.isReserved(name)) {
final SubCreateEvent event = new SubCreateEvent(player, host, name, template, version, port);
host.plugin.getPluginManager().callEvent(event);
if (!event.isCancelled()) {
running = true;
ExternalSubLogger logger = new ExternalSubLogger(this, name + "/Creator", new Container<Boolean>(host.plugin.config.get().getSection("Settings").getBoolean("Log-Creator")), null);
thread.put(name.toLowerCase(), logger);
logger.start();
host.queue(new PacketExCreateServer(name, template, version, port, logger.getExternalAddress(), (JSONCallback) json -> {
try {
if (json.getInt("r") == 0) {
System.out.println(host.getName() + "/Creator > Saving...");
if (host.plugin.exServers.keySet().contains(name.toLowerCase())) host.plugin.exServers.remove(name.toLowerCase());
System.out.println(name + "/Creator > Saving...");
if (host.plugin.exServers.keySet().contains(name.toLowerCase()))
host.plugin.exServers.remove(name.toLowerCase());
YAMLSection server = new YAMLSection(json.getJSONObject("c"));
for (String option : server.getKeys()) {
@ -82,13 +96,13 @@ public class ExternalSubCreator extends SubCreator {
subserver.start(player);
} else {
System.out.println(host.getName() + "/Creator > " + json.getString("m"));
System.out.println(name + "/Creator > " + json.getString("m"));
}
} catch (Exception e) {
e.printStackTrace();
}
logger.stop();
running = false;
this.thread.remove(name.toLowerCase());
}));
return true;
} else return false;
@ -97,14 +111,32 @@ public class ExternalSubCreator extends SubCreator {
@Override
public void terminate() {
if (running) {
host.getSubData().sendPacket(new PacketExCreateServer());
HashMap<String, ExternalSubLogger> thread = new HashMap<String, ExternalSubLogger>();
thread.putAll(this.thread);
for (String i : thread.keySet()) {
terminate(i);
}
}
@Override
public void terminate(String name) {
if (this.thread.keySet().contains(name)) {
host.getSubData().sendPacket(new PacketExCreateServer(name));
}
}
@Override
public void waitFor() throws InterruptedException {
while (running) {
HashMap<String, ExternalSubLogger> thread = new HashMap<String, ExternalSubLogger>();
thread.putAll(this.thread);
for (String i : thread.keySet()) {
waitFor(i);
}
}
@Override
public void waitFor(String name) throws InterruptedException {
while (this.thread.keySet().contains(name)) {
Thread.sleep(250);
}
}
@ -120,13 +152,18 @@ public class ExternalSubCreator extends SubCreator {
}
@Override
public SubLogger getLogger() {
return logger;
public List<SubLogger> getLogger() {
return new LinkedList<SubLogger>(thread.values());
}
@Override
public boolean isBusy() {
return running;
public SubLogger getLogger(String thread) {
return this.thread.get(thread);
}
@Override
public List<String> getReservedNames() {
return new ArrayList<String>(thread.keySet());
}
@Override

View File

@ -6,9 +6,12 @@ import net.ME1312.SubServers.Bungee.Library.Config.YAMLConfig;
import net.ME1312.SubServers.Bungee.Library.Config.YAMLSection;
import net.ME1312.SubServers.Bungee.Library.Container;
import net.ME1312.SubServers.Bungee.Library.Exception.InvalidServerException;
import net.ME1312.SubServers.Bungee.Library.Exception.SubCreatorException;
import net.ME1312.SubServers.Bungee.Library.NamedContainer;
import net.ME1312.SubServers.Bungee.Library.UniversalFile;
import net.ME1312.SubServers.Bungee.Library.Util;
import net.ME1312.SubServers.Bungee.Library.Version.Version;
import net.ME1312.SubServers.Bungee.SubAPI;
import net.ME1312.SubServers.Bungee.SubPlugin;
import org.json.JSONObject;
import org.w3c.dom.Document;
@ -21,6 +24,7 @@ import java.io.*;
import java.net.URL;
import java.nio.charset.Charset;
import java.util.*;
import java.util.logging.Logger;
/**
* Internal SubCreator Class
@ -29,9 +33,7 @@ public class InternalSubCreator extends SubCreator {
private HashMap<String, ServerTemplate> templates = new HashMap<String, ServerTemplate>();
private InternalHost host;
private String gitBash;
private InternalSubLogger logger;
private Process process = null;
private Thread thread = null;
private TreeMap<String, NamedContainer<Thread, NamedContainer<InternalSubLogger, Process>>> thread;
/**
* Creates an Internal SubCreator
@ -43,7 +45,7 @@ public class InternalSubCreator extends SubCreator {
if (Util.isNull(host, gitBash)) throw new NullPointerException();
this.host = host;
this.gitBash = gitBash;
this.logger = new InternalSubLogger(null, this, host.getName() + "/Creator", new Container<Boolean>(false), null);
this.thread = new TreeMap<String, NamedContainer<Thread, NamedContainer<InternalSubLogger, Process>>>();
if (new UniversalFile(host.plugin.dir, "SubServers:Templates").exists()) for (File file : new UniversalFile(host.plugin.dir, "SubServers:Templates").listFiles()) {
try {
@ -60,18 +62,27 @@ public class InternalSubCreator extends SubCreator {
}
}
private void run(UUID player, String name, ServerTemplate template, Version version, int port) {
UniversalFile dir = new UniversalFile(new File(host.getPath()), name);
dir.mkdirs();
System.out.println(host.getName() + "/Creator > Generating Server Files...");
private YAMLSection build(NamedContainer<InternalSubLogger, Process> thread, File dir, String name, ServerTemplate template, Version version, List<ServerTemplate> history) throws SubCreatorException {
YAMLSection server = new YAMLSection();
boolean error = false;
if (history.contains(template)) throw new IllegalStateException("Template Import loop detected");
history.add(template);
for (String other : template.getBuildOptions().getStringList("Import", new ArrayList<String>())) {
if (templates.keySet().contains(other.toLowerCase())) {
YAMLSection config = build(thread, dir, other, templates.get(other.toLowerCase()), version, history);
if (config == null) {
throw new SubCreatorException();
} else {
server.setAll(config);
}
}
}
server.setAll(template.getConfigOptions());
try {
System.out.println(name + "/Creator > Loading Template: " + template.getDisplayName());
Util.copyDirectory(template.getDirectory(), dir);
generateProperties(dir, port);
generateClient(dir, template.getType(), name);
if (template.getType() == ServerType.SPONGE) {
System.out.println(host.getName() + "/Creator > Searching Versions...");
System.out.println(name + "/Creator > Searching Versions...");
Document spongexml = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new InputSource(new StringReader(Util.readAll(new BufferedReader(new InputStreamReader(new URL("http://files.minecraftforge.net/maven/org/spongepowered/spongeforge/maven-metadata.xml").openStream(), Charset.forName("UTF-8")))))));
Document forgexml = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new InputSource(new StringReader(Util.readAll(new BufferedReader(new InputStreamReader(new URL("http://files.minecraftforge.net/maven/net/minecraftforge/forge/maven-metadata.xml").openStream(), Charset.forName("UTF-8")))))));
@ -87,7 +98,7 @@ public class InternalSubCreator extends SubCreator {
}
if (spversion == null)
throw new InvalidServerException("Cannot find sponge version for Minecraft " + version.toString());
System.out.println(host.getName() + "/Creator > Found \"spongeforge-" + spversion.toString() + '"');
System.out.println(name + "/Creator > Found \"spongeforge-" + spversion.toString() + '"');
NodeList mcfnodeList = forgexml.getElementsByTagName("version");
Version mcfversion = null;
@ -101,7 +112,7 @@ public class InternalSubCreator extends SubCreator {
}
if (mcfversion == null)
throw new InvalidServerException("Cannot find forge version for Sponge " + spversion.toString());
System.out.println(host.getName() + "/Creator > Found \"forge-" + mcfversion.toString() + '"');
System.out.println(name + "/Creator > Found \"forge-" + mcfversion.toString() + '"');
version = new Version(mcfversion.toString() + " " + spversion.toString());
}
@ -109,7 +120,6 @@ public class InternalSubCreator extends SubCreator {
e.printStackTrace();
}
boolean error = false;
if (template.getBuildOptions().contains("Shell-Location")) {
File gitBash = new File(this.gitBash, "bin" + File.separatorChar + "bash.exe");
if (!(System.getProperty("os.name").toLowerCase().indexOf("win") >= 0) && template.getBuildOptions().contains("Permission")) {
@ -117,26 +127,26 @@ public class InternalSubCreator extends SubCreator {
Process process = Runtime.getRuntime().exec("chmod " + template.getBuildOptions().getRawString("Permission") + ' ' + template.getBuildOptions().getRawString("Shell-Location"), null, dir);
Thread.sleep(500);
if (process.exitValue() != 0) {
System.out.println(host.getName() + "/Creator > Couldn't set " + template.getBuildOptions().getRawString("Permission") + " permissions to " + template.getBuildOptions().getRawString("Shell-Location"));
System.out.println(name + "/Creator > Couldn't set " + template.getBuildOptions().getRawString("Permission") + " permissions to " + template.getBuildOptions().getRawString("Shell-Location"));
}
} catch (Exception e) {
System.out.println(host.getName() + "/Creator > Couldn't set " + template.getBuildOptions().getRawString("Permission") + " permissions to " + template.getBuildOptions().getRawString("Shell-Location"));
System.out.println(name + "/Creator > Couldn't set " + template.getBuildOptions().getRawString("Permission") + " permissions to " + template.getBuildOptions().getRawString("Shell-Location"));
e.printStackTrace();
}
}
try {
System.out.println(host.getName() + "/Creator > Launching " + template.getBuildOptions().getRawString("Shell-Location"));
process = Runtime.getRuntime().exec((System.getProperty("os.name").toLowerCase().indexOf("win") >= 0)?"\"" + gitBash + "\" --login -i -c \"bash " + template.getBuildOptions().getRawString("Shell-Location") + ' ' + version.toString() + '\"':("bash " + template.getBuildOptions().getRawString("Shell-Location") + ' ' + version.toString() + " " + System.getProperty("user.home")), null, dir);
logger.process = this.process;
logger.log.set(host.plugin.config.get().getSection("Settings").getBoolean("Log-Creator"));
logger.file = new File(dir, "SubCreator-" + template.getType().toString() + "-" + version.toString().replace(" ", "@") + ".log");
logger.start();
System.out.println(name + "/Creator > Launching " + template.getBuildOptions().getRawString("Shell-Location"));
thread.set(Runtime.getRuntime().exec((System.getProperty("os.name").toLowerCase().indexOf("win") >= 0)?"\"" + gitBash + "\" --login -i -c \"bash " + template.getBuildOptions().getRawString("Shell-Location") + ' ' + version.toString() + '\"':("bash " + template.getBuildOptions().getRawString("Shell-Location") + ' ' + version.toString() + " " + System.getProperty("user.home")), null, dir));
thread.name().log.set(host.plugin.config.get().getSection("Settings").getBoolean("Log-Creator"));
thread.name().file = new File(dir, "SubCreator-" + template.getName() + "-" + version.toString().replace(" ", "@") + ".log");
thread.name().process = thread.get();
thread.name().start();
process.waitFor();
thread.get().waitFor();
Thread.sleep(500);
if (process.exitValue() != 0) error = true;
if (thread.get().exitValue() != 0) error = true;
} catch (Exception e) {
error = true;
e.printStackTrace();
@ -144,12 +154,31 @@ public class InternalSubCreator extends SubCreator {
}
new UniversalFile(dir, "template.yml").delete();
if (!error) {
if (error) throw new SubCreatorException();
return server;
}
private void run(UUID player, String name, ServerTemplate template, Version version, int port) {
NamedContainer<InternalSubLogger, Process> thread = this.thread.get(name.toLowerCase()).get();
UniversalFile dir = new UniversalFile(new File(host.getPath()), name);
dir.mkdirs();
YAMLSection server;
try {
server = build(thread, dir, name, template, version, new LinkedList<>());
generateProperties(dir, port);
generateClient(dir, template.getType(), name);
} catch (SubCreatorException e) {
server = null;
} catch (Exception e) {
server = null;
e.printStackTrace();
}
if (server != null) {
try {
System.out.println(host.getName() + "/Creator > Saving...");
System.out.println(name + "/Creator > Saving...");
if (host.plugin.exServers.keySet().contains(name.toLowerCase())) host.plugin.exServers.remove(name.toLowerCase());
YAMLSection server = template.getConfigOptions().clone();
for (String option : server.getKeys()) {
if (server.isString(option)) {
server.set(option, server.getRawString(option).replace("$name$", name).replace("$template$", template.getName()).replace("$type$", template.getType().toString())
@ -180,20 +209,21 @@ public class InternalSubCreator extends SubCreator {
e.printStackTrace();
}
} else {
System.out.println(host.getName() + "/Creator > Couldn't build the server jar. See \"SubCreator-" + template.getType().toString() + "-" + version.toString().replace(" ", "@") + ".log\" for more details.");
System.out.println(name + "/Creator > Couldn't build the server jar. Check the SubCreator logs for more detail.");
}
this.thread.remove(name.toLowerCase());
}
@Override
public boolean create(UUID player, String name, ServerTemplate template, Version version, int port) {
if (Util.isNull(name, template, version, port)) throw new NullPointerException();
if (!isBusy() && template.isEnabled()) {
if (template.isEnabled() && !SubAPI.getInstance().getSubServers().keySet().contains(name.toLowerCase()) && !SubCreator.isReserved(name)) {
final SubCreateEvent event = new SubCreateEvent(player, host, name, template, version, port);
host.plugin.getPluginManager().callEvent(event);
if (!event.isCancelled()) {
(thread = new Thread(() -> {
InternalSubCreator.this.run(player, name, event.getTemplate(), event.getVersion(), port);
})).start();
NamedContainer<Thread, NamedContainer<InternalSubLogger, Process>> thread = new NamedContainer<Thread, NamedContainer<InternalSubLogger, Process>>(new Thread(() -> InternalSubCreator.this.run(player, name, event.getTemplate(), event.getVersion(), port)), new NamedContainer<InternalSubLogger, Process>(new InternalSubLogger(null, this, name + "/Creator", new Container<Boolean>(false), null), null));
this.thread.put(name.toLowerCase(), thread);
thread.name().start();
return true;
} else return false;
} else return false;
@ -201,16 +231,35 @@ public class InternalSubCreator extends SubCreator {
@Override
public void terminate() {
if (process != null && this.process.isAlive()) {
process.destroyForcibly();
} else if (thread != null && this.thread.isAlive()) {
thread.interrupt();
HashMap<String, NamedContainer<Thread, NamedContainer<InternalSubLogger, Process>>> temp = new HashMap<String, NamedContainer<Thread, NamedContainer<InternalSubLogger, Process>>>();
temp.putAll(thread);
for (String i : temp.keySet()) {
terminate(i);
}
}
@Override
public void terminate(String name) {
if (this.thread.get(name).get().get() != null && this.thread.get(name).get().get().isAlive()) {
this.thread.get(name).get().get().destroyForcibly();
}
if (this.thread.get(name).name() != null && this.thread.get(name).name().isAlive()) {
this.thread.get(name).name().interrupt();
}
}
@Override
public void waitFor() throws InterruptedException {
while (thread != null && thread.isAlive()) {
HashMap<String, NamedContainer<Thread, NamedContainer<InternalSubLogger, Process>>> temp = new HashMap<String, NamedContainer<Thread, NamedContainer<InternalSubLogger, Process>>>();
temp.putAll(thread);
for (String i : temp.keySet()) {
waitFor(i);
}
}
@Override
public void waitFor(String name) throws InterruptedException {
while (this.thread.get(name).name() != null && this.thread.get(name).name().isAlive()) {
Thread.sleep(250);
}
}
@ -226,13 +275,24 @@ public class InternalSubCreator extends SubCreator {
}
@Override
public SubLogger getLogger() {
return logger;
public List<SubLogger> getLogger() {
List<SubLogger> loggers = new ArrayList<SubLogger>();
HashMap<String, NamedContainer<Thread, NamedContainer<InternalSubLogger, Process>>> temp = new HashMap<String, NamedContainer<Thread, NamedContainer<InternalSubLogger, Process>>>();
temp.putAll(thread);
for (String i : temp.keySet()) {
loggers.add(getLogger(i));
}
return loggers;
}
@Override
public boolean isBusy() {
return thread != null && thread.isAlive();
public SubLogger getLogger(String thread) {
return this.thread.get(thread).get().name();
}
@Override
public List<String> getReservedNames() {
return new ArrayList<String>(thread.keySet());
}
@Override

View File

@ -4,8 +4,11 @@ import net.ME1312.SubServers.Bungee.Library.Config.YAMLSection;
import net.ME1312.SubServers.Bungee.Library.Exception.InvalidTemplateException;
import net.ME1312.SubServers.Bungee.Library.Util;
import net.ME1312.SubServers.Bungee.Library.Version.Version;
import net.ME1312.SubServers.Bungee.SubAPI;
import java.io.File;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;
@ -185,17 +188,32 @@ public abstract class SubCreator {
}
/**
* Terminate SubCreator
* Terminate All SubCreator Instances on this host
*/
public abstract void terminate();
/**
* Wait for SubCreator to Finish
* Terminate a SubCreator Instance
*
* @param name Name of current creating server
*/
public abstract void terminate(String name);
/**
* Wait for All SubCreator Instances to Finish
*
* @throws InterruptedException
*/
public abstract void waitFor() throws InterruptedException;
/**
* Wait for SubCreator to Finish
*
* @param name Name of current creating server
* @throws InterruptedException
*/
public abstract void waitFor(String name) throws InterruptedException;
/**
* Gets the host this creator belongs to
*
@ -211,18 +229,51 @@ public abstract class SubCreator {
public abstract String getBashDirectory();
/**
* Gets the Logger for the creator
* Gets all loggers for All SubCreator Instances
*
* @return
* @return SubCreator Loggers
*/
public abstract SubLogger getLogger();
public abstract List<SubLogger> getLogger();
/**
* Gets the status of SubCreator
* Gets the Logger for a SubCreator Instance
*
* @return SubCreator Status
* @param thread Thread ID
* @return SubCreator Logger
*/
public abstract boolean isBusy();
public abstract SubLogger getLogger(String thread);
/**
* Get a list of currently reserved Server names
*
* @return Reserved Names
*/
public abstract List<String> getReservedNames();
/**
* Check if a name has been reserved
*
* @param name Name to check
* @return Reserved Status
*/
public static boolean isReserved(String name) {
boolean reserved = false;
for (List<String> list : getAllReservedNames().values()) for (String reserve : list) {
if (reserve.equalsIgnoreCase(name)) reserved = true;
}
return reserved;
}
/**
* Get a list of all currently reserved Server names across all hosts
*
* @return All Reserved Names
*/
public static Map<Host, List<String>> getAllReservedNames() {
HashMap<Host, List<String>> names = new HashMap<Host, List<String>>();
for (Host host : SubAPI.getInstance().getHosts().values()) names.put(host, host.getCreator().getReservedNames());
return names;
}
/**
* Gets the Templates that can be used in this SubCreator instance

View File

@ -0,0 +1,11 @@
package net.ME1312.SubServers.Bungee.Library.Exception;
/**
* Invalid Template Exception
*/
public class SubCreatorException extends IllegalStateException {
public SubCreatorException() {}
public SubCreatorException(String s) {
super(s);
}
}

View File

@ -55,7 +55,6 @@ Lang:
'Command.Creator': '&aSubServers \u00BB Creating SubServer'
'Command.Creator.Exists': '&cSubServers \u00BB There is already a SubServer with that name'
'Command.Creator.Unknown-Host': '&cSubServers \u00BB There is no host with that name'
'Command.Creator.Running': '&cSubServers \u00BB The SubCreator instance on that host is already running'
'Command.Creator.Invalid-Template': '&cSubServers \u00BB There is no template with that name'
'Command.Creator.Invalid-Version': '&cSubServers \u00BB SubCreator cannot create servers before Minecraft 1.8'
'Command.Creator.Invalid-Port': '&cSubServers \u00BB Invalid Port Number'
@ -76,7 +75,6 @@ Lang:
'Interface.Host-Menu.SubServer-Menu': '&a&lSubServer Menu'
'Interface.Host-Admin.Title': 'Host/$str$'
'Interface.Host-Admin.Creator': '&eCreate a SubServer'
'Interface.Host-Admin.Creator-Busy': '&4SubCreator is already running'
'Interface.Host-Admin.SubServers': '&aView SubServers'
'Interface.Host-Admin.Plugins': '&bPlugins...'
'Interface.Host-Creator.Title': 'Host/$str$/Create'

View File

@ -2,6 +2,9 @@ package net.ME1312.SubServers.Bungee.Library;
import java.io.*;
import java.util.*;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import java.util.zip.ZipOutputStream;
/**
* SubServers Utility Class
@ -162,12 +165,15 @@ public final class Util {
copyDirectory(srcFile, destFile);
}
} else {
if (to.exists()) {
to.delete();
}
InputStream in = null;
OutputStream out = null;
try {
in = new FileInputStream(from);
out = new FileOutputStream(to);
out = new FileOutputStream(to, false);
byte[] buffer = new byte[1024];
@ -191,6 +197,80 @@ public final class Util {
}
}
private static List<String> zipsearch(File origin, File file) {
List<String> list = new LinkedList<String>();
if (file.isFile()) {
list.add(file.getAbsoluteFile().toString().substring(origin.getAbsoluteFile().toString().length()+1, file.getAbsoluteFile().toString().length()));
}
if (file.isDirectory()) for (File next : file.listFiles()) {
list.addAll(zipsearch(origin, next));
}
return list;
}
public static void zip(File file, OutputStream zip) {
byte[] buffer = new byte[1024];
try{
ZipOutputStream zos = new ZipOutputStream(zip);
for(String next : zipsearch(file, file)){
ZipEntry ze= new ZipEntry(next);
zos.putNextEntry(ze);
FileInputStream in = new FileInputStream(file.getAbsolutePath() + File.separator + next);
int len;
while ((len = in.read(buffer)) > 0) {
zos.write(buffer, 0, len);
}
in.close();
}
zos.closeEntry();
zos.close();
} catch(IOException ex){
ex.printStackTrace();
}
}
public static void unzip(InputStream zip, File dir) {
byte[] buffer = new byte[1024];
try{
ZipInputStream zis = new ZipInputStream(zip);
ZipEntry ze;
while ((ze = zis.getNextEntry()) != null) {
File newFile = new File(dir + File.separator + ze.getName());
if (newFile.exists()) {
if (newFile.isDirectory()) {
Util.deleteDirectory(newFile);
} else {
newFile.delete();
}
}
if (ze.isDirectory()) {
newFile.mkdirs();
continue;
} else if (!newFile.getParentFile().exists()) {
newFile.getParentFile().mkdirs();
}
FileOutputStream fos = new FileOutputStream(newFile);
int len;
while ((len = zis.read(buffer)) > 0) {
fos.write(buffer, 0, len);
}
fos.close();
}
zis.closeEntry();
zis.close();
} catch(IOException ex) {
ex.printStackTrace();
}
}
/**
* Get a Random Integer
*

View File

@ -57,6 +57,7 @@ public final class PacketAuthorization implements PacketIn, PacketOut {
}
} catch (Exception e) {
client.sendPacket(new PacketAuthorization(1, e.getClass().getCanonicalName() + ": " + e.getMessage()));
e.printStackTrace();
}
}

View File

@ -90,6 +90,7 @@ public class PacketCommandServer implements PacketIn, PacketOut {
}
} catch (Throwable e) {
client.sendPacket(new PacketCommandServer(2, e.getClass().getCanonicalName() + ": " + e.getMessage(), (data.keySet().contains("id")) ? data.getString("id") : null));
e.printStackTrace();
}
}

View File

@ -56,12 +56,10 @@ public class PacketCreateServer implements PacketIn, PacketOut {
try {
if (data.getJSONObject("creator").getString("name").contains(" ")) {
client.sendPacket(new PacketCreateServer(3, "server names cannot have spaces", (data.keySet().contains("id")) ? data.getString("id") : null));
} else if (plugin.api.getSubServers().keySet().contains(data.getJSONObject("creator").getString("name").toLowerCase())) {
} else if (plugin.api.getSubServers().keySet().contains(data.getJSONObject("creator").getString("name").toLowerCase()) || SubCreator.isReserved(data.getJSONObject("creator").getString("name"))) {
client.sendPacket(new PacketCreateServer(3, "There is already a subserver with that name", (data.keySet().contains("id")) ? data.getString("id") : null));
} else if (!plugin.hosts.keySet().contains(data.getJSONObject("creator").getString("host").toLowerCase())) {
client.sendPacket(new PacketCreateServer(4, "There is no Host with that name", (data.keySet().contains("id")) ? data.getString("id") : null));
} else if (plugin.hosts.get(data.getJSONObject("creator").getString("host").toLowerCase()).getCreator().isBusy()) {
client.sendPacket(new PacketCreateServer(5, "The SubCreator instance on that host is already running", (data.keySet().contains("id")) ? data.getString("id") : null));
} else if (!plugin.hosts.get(data.getJSONObject("creator").getString("host").toLowerCase()).getCreator().getTemplates().keySet().contains(data.getJSONObject("creator").getString("template").toLowerCase()) ||
!plugin.hosts.get(data.getJSONObject("creator").getString("host").toLowerCase()).getCreator().getTemplate(data.getJSONObject("creator").getString("template")).isEnabled()) {
client.sendPacket(new PacketCreateServer(6, "There is no template with that name", (data.keySet().contains("id")) ? data.getString("id") : null));
@ -90,6 +88,7 @@ public class PacketCreateServer implements PacketIn, PacketOut {
}
} catch (Throwable e) {
client.sendPacket(new PacketCreateServer(2, e.getClass().getCanonicalName() + ": " + e.getMessage(), (data.keySet().contains("id")) ? data.getString("id") : null));
e.printStackTrace();
}
}

View File

@ -59,7 +59,6 @@ public class PacketDownloadHostInfo implements PacketIn, PacketOut {
info.put("dir", host.getPath());
JSONObject cinfo = new JSONObject();
cinfo.put("busy", host.getCreator().isBusy());
JSONObject templates = new JSONObject();
for (SubCreator.ServerTemplate template : host.getCreator().getTemplates().values()) {
JSONObject tinfo = new JSONObject();

View File

@ -4,6 +4,7 @@ import net.ME1312.SubServers.Bungee.Host.External.ExternalHost;
import net.ME1312.SubServers.Bungee.Host.External.ExternalSubCreator;
import net.ME1312.SubServers.Bungee.Host.SubCreator;
import net.ME1312.SubServers.Bungee.Library.Config.YAMLSection;
import net.ME1312.SubServers.Bungee.Library.Util;
import net.ME1312.SubServers.Bungee.Library.Version.Version;
import net.ME1312.SubServers.Bungee.Network.Client;
import net.ME1312.SubServers.Bungee.Network.PacketIn;
@ -11,9 +12,16 @@ import net.ME1312.SubServers.Bungee.Network.PacketOut;
import net.ME1312.SubServers.Bungee.SubPlugin;
import org.json.JSONObject;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.IOException;
import java.io.OutputStream;
import java.lang.reflect.Field;
import java.nio.charset.StandardCharsets;
import java.util.Base64;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
/**
* External Host Configuration Packet
@ -41,6 +49,32 @@ public class PacketExConfigureHost implements PacketIn, PacketOut {
public JSONObject generate() {
JSONObject json = new JSONObject();
json.put("host", plugin.config.get().getSection("Hosts").getSection(host.getName()).toJSON());
JSONObject templates = new JSONObject();
for (SubCreator.ServerTemplate template : host.getCreator().getTemplates().values()) {
try {
JSONObject tinfo = new JSONObject();
tinfo.put("enabled", template.isEnabled());
tinfo.put("display", template.getDisplayName());
tinfo.put("icon", template.getIcon());
List<Byte> list = new LinkedList<Byte>();
Util.zip(template.getDirectory(), new OutputStream() {
@Override
public void write(int b) throws IOException {
list.add((byte) b);
}
});
byte[] array = new byte[list.size()];
for (int i = 0; i < list.size(); i++) array[i] = list.get(i);
tinfo.put("files", Base64.getEncoder().encodeToString(array));
tinfo.put("build", template.getBuildOptions().toJSON());
tinfo.put("settings", template.getConfigOptions().toJSON());
templates.put(template.getName(), tinfo);
} catch (Exception e) {
System.out.println("SubServers > Problem encoding template files: " + template.getName());
e.printStackTrace();
}
}
json.put("templates", templates);
return json;
}
@ -48,25 +82,6 @@ public class PacketExConfigureHost implements PacketIn, PacketOut {
@SuppressWarnings("unchecked")
public void execute(Client client, JSONObject data) {
if (client.getHandler() != null && client.getHandler() instanceof ExternalHost && plugin.config.get().getSection("Hosts").getKeys().contains(((ExternalHost) client.getHandler()).getName())) {
try {
Field field = ExternalSubCreator.class.getDeclaredField("templates");
field.setAccessible(true);
HashMap<String, SubCreator.ServerTemplate> templates = new HashMap<String, SubCreator.ServerTemplate>();
for (String name : data.getJSONObject("templates").keySet()) {
try {
SubCreator.ServerTemplate template = new SubCreator.ServerTemplate(name, data.getJSONObject("templates").getJSONObject(name).getBoolean("enabled"), data.getJSONObject("templates").getJSONObject(name).getString("icon"),
new File(data.getJSONObject("templates").getJSONObject(name).getString("dir")), new YAMLSection(data.getJSONObject("templates").getJSONObject(name).getJSONObject("build")), new YAMLSection(data.getJSONObject("templates").getJSONObject(name).getJSONObject("options")));
templates.put(name.toLowerCase(), template);
if (data.getJSONObject("templates").getJSONObject(name).keySet().contains("display")) template.setDisplayName(data.getJSONObject("templates").getJSONObject(name).getString("display"));
} catch (Exception e) {
e.printStackTrace();
}
}
field.set(((ExternalHost) client.getHandler()).getCreator(), templates);
field.setAccessible(false);
} catch (Exception e) {
e.printStackTrace();
}
client.sendPacket(new PacketExConfigureHost(plugin, (ExternalHost) client.getHandler()));
}
}

View File

@ -27,7 +27,9 @@ public class PacketExCreateServer implements PacketIn, PacketOut {
/**
* New PacketExCreateServer
*/
public PacketExCreateServer() {}
public PacketExCreateServer(String name) {
this.name = name;
}
/**
* New PacketExCreateServer (Out)
@ -36,6 +38,7 @@ public class PacketExCreateServer implements PacketIn, PacketOut {
* @param template Server Template
* @param version Server Version
* @param port Server Port Number
* @param log Log Address
* @param callback Callbacks
*/
public PacketExCreateServer(String name, SubCreator.ServerTemplate template, Version version, int port, UUID log, JSONCallback... callback) {
@ -52,7 +55,9 @@ public class PacketExCreateServer implements PacketIn, PacketOut {
@Override
public JSONObject generate() {
if (id == null) {
return null;
JSONObject json = new JSONObject();
json.put("thread", name);
return json;
} else {
JSONObject json = new JSONObject();
json.put("id", id);

View File

@ -72,6 +72,7 @@ public class PacketLinkExHost implements PacketIn, PacketOut {
}
} catch (Exception e) {
client.sendPacket(new PacketLinkExHost(1, e.getClass().getCanonicalName() + ": " + e.getMessage()));
e.printStackTrace();
}
}

View File

@ -69,6 +69,7 @@ public class PacketLinkServer implements PacketIn, PacketOut {
}
} catch (Exception e) {
client.sendPacket(new PacketLinkServer(1, e.getClass().getCanonicalName() + ": " + e.getMessage()));
e.printStackTrace();
}
}

View File

@ -72,13 +72,13 @@ public class PacketListenLog implements PacketIn, PacketOut {
register(client, data.getString("id"), servers.get(data.getString("server").toLowerCase()).getLogger());
}
}
} else if (data.keySet().contains("host")) {
if (data.getString("host").length() == 0) {
} else if (data.keySet().contains("creator")) {
if (data.getString("creator").length() == 0) {
unregister(data.getString("id"));
} else {
Map<String, Host> hosts = plugin.api.getHosts();
if (hosts.keySet().contains(data.getString("host").toLowerCase())) {
register(client, data.getString("id"), hosts.get(data.getString("host").toLowerCase()).getCreator().getLogger());
if (hosts.keySet().contains(data.getString("creator").toLowerCase())) {
register(client, data.getString("id"), hosts.get(data.getString("creator").toLowerCase()).getCreator().getLogger(data.getString("name")));
}
}
}

View File

@ -85,6 +85,7 @@ public class PacketStartServer implements PacketIn, PacketOut {
}
} catch (Throwable e) {
client.sendPacket(new PacketStartServer(2, e.getClass().getCanonicalName() + ": " + e.getMessage(), (data.keySet().contains("id"))?data.getString("id"):null));
e.printStackTrace();
}
}

View File

@ -80,6 +80,7 @@ public class PacketStopServer implements PacketIn, PacketOut {
}
} catch (Throwable e) {
client.sendPacket(new PacketStopServer(2, e.getClass().getCanonicalName() + ": " + e.getMessage(), (data.keySet().contains("id"))?data.getString("id"):null));
e.printStackTrace();
}
}

View File

@ -68,6 +68,7 @@ public class PacketTeleportPlayer implements PacketIn, PacketOut {
}
} catch (Throwable e) {
client.sendPacket(new PacketTeleportPlayer(1, e.getClass().getCanonicalName() + ": " + e.getMessage(), (data.keySet().contains("id"))?data.getString("id"):null));
e.printStackTrace();
}
}

View File

@ -86,7 +86,7 @@ public final class SubDataServer {
registerPacket(new PacketEditServer(plugin), "SubEditServer");
registerPacket(new PacketExAddServer(), "SubExAddServer");
registerPacket(new PacketExConfigureHost(plugin), "SubExConfigureHost");
registerPacket(new PacketExCreateServer(), "SubExCreateServer");
registerPacket(new PacketExCreateServer(null), "SubExCreateServer");
registerPacket(new PacketExDeleteServer(), "SubExDeleteServer");
registerPacket(new PacketExRemoveServer(), "SubExRemoveServer");
registerPacket(new PacketExUpdateServer(plugin), "SubExUpdateServer");

View File

@ -143,12 +143,10 @@ public final class SubCommand extends Command implements TabExecutor {
}
} else if (args[0].equalsIgnoreCase("create")) {
if (args.length > 5) {
if (plugin.api.getSubServers().keySet().contains(args[1].toLowerCase())) {
if (plugin.api.getSubServers().keySet().contains(args[1].toLowerCase()) || SubCreator.isReserved(args[1])) {
sender.sendMessage("SubServers > There is already a SubServer with that name");
} else if (!plugin.hosts.keySet().contains(args[2].toLowerCase())) {
sender.sendMessage("SubServers > There is no host with that name");
} else if (plugin.hosts.get(args[2].toLowerCase()).getCreator().isBusy()) {
sender.sendMessage("SubServers > The SubCreator instance on that host is already running");
} else if (!plugin.hosts.get(args[2].toLowerCase()).getCreator().getTemplates().keySet().contains(args[3].toLowerCase()) || !plugin.hosts.get(args[2].toLowerCase()).getCreator().getTemplate(args[3]).isEnabled()) {
sender.sendMessage("SubServers > There is no template with that name");
} else if (new Version("1.8").compareTo(new Version(args[4])) > 0) {

View File

@ -90,27 +90,27 @@ public final class SubPlugin extends BungeeCord {
if (!(new UniversalFile(dir, "Templates").exists())) new UniversalFile(dir, "Templates").mkdirs();
if (!(new UniversalFile(dir, "Templates:Vanilla:template.yml").exists())) {
unzip(SubPlugin.class.getResourceAsStream("/net/ME1312/SubServers/Bungee/Library/Files/Templates/vanilla.zip"), new UniversalFile(dir, "Templates"));
Util.unzip(SubPlugin.class.getResourceAsStream("/net/ME1312/SubServers/Bungee/Library/Files/Templates/vanilla.zip"), new UniversalFile(dir, "Templates"));
System.out.println("SubServers > Created ~/SubServers/Templates/Vanilla");
} else if ((new Version((new YAMLConfig(new UniversalFile(dir, "Templates:Vanilla:template.yml"))).get().getString("Version", "0")).compareTo(new Version("2.11.2m+"))) != 0) {
Files.move(new UniversalFile(dir, "Templates:Vanilla").toPath(), new UniversalFile(dir, "Templates:Vanilla.old" + Math.round(Math.random() * 100000)).toPath());
unzip(SubPlugin.class.getResourceAsStream("/net/ME1312/SubServers/Bungee/Library/Files/Templates/vanilla.zip"), new UniversalFile(dir, "Templates"));
Util.unzip(SubPlugin.class.getResourceAsStream("/net/ME1312/SubServers/Bungee/Library/Files/Templates/vanilla.zip"), new UniversalFile(dir, "Templates"));
System.out.println("SubServers > Updated ~/SubServers/Templates/Vanilla");
}
if (!(new UniversalFile(dir, "Templates:Spigot:template.yml").exists())) {
unzip(SubPlugin.class.getResourceAsStream("/net/ME1312/SubServers/Bungee/Library/Files/Templates/spigot.zip"), new UniversalFile(dir, "Templates"));
Util.unzip(SubPlugin.class.getResourceAsStream("/net/ME1312/SubServers/Bungee/Library/Files/Templates/spigot.zip"), new UniversalFile(dir, "Templates"));
System.out.println("SubServers > Created ~/SubServers/Templates/Spigot");
} else if ((new Version((new YAMLConfig(new UniversalFile(dir, "Templates:Spigot:template.yml"))).get().getString("Version", "0")).compareTo(new Version("2.11.2m+"))) != 0) {
Files.move(new UniversalFile(dir, "Templates:Vanilla").toPath(), new UniversalFile(dir, "Templates:Spigot.old" + Math.round(Math.random() * 100000)).toPath());
unzip(SubPlugin.class.getResourceAsStream("/net/ME1312/SubServers/Bungee/Library/Files/Templates/spigot.zip"), new UniversalFile(dir, "Templates"));
Util.unzip(SubPlugin.class.getResourceAsStream("/net/ME1312/SubServers/Bungee/Library/Files/Templates/spigot.zip"), new UniversalFile(dir, "Templates"));
System.out.println("SubServers > Updated ~/SubServers/Templates/Spigot");
}
if (!(new UniversalFile(dir, "Templates:Sponge:template.yml").exists())) {
unzip(SubPlugin.class.getResourceAsStream("/net/ME1312/SubServers/Bungee/Library/Files/Templates/sponge.zip"), new UniversalFile(dir, "Templates"));
Util.unzip(SubPlugin.class.getResourceAsStream("/net/ME1312/SubServers/Bungee/Library/Files/Templates/sponge.zip"), new UniversalFile(dir, "Templates"));
System.out.println("SubServers > Created ~/SubServers/Templates/Sponge");
} else if ((new Version((new YAMLConfig(new UniversalFile(dir, "Templates:Sponge:template.yml"))).get().getString("Version", "0")).compareTo(new Version("2.11.2m+"))) != 0) {
Files.move(new UniversalFile(dir, "Templates:Vanilla").toPath(), new UniversalFile(dir, "Templates:Sponge.old" + Math.round(Math.random() * 100000)).toPath());
unzip(SubPlugin.class.getResourceAsStream("/net/ME1312/SubServers/Bungee/Library/Files/Templates/sponge.zip"), new UniversalFile(dir, "Templates"));
Util.unzip(SubPlugin.class.getResourceAsStream("/net/ME1312/SubServers/Bungee/Library/Files/Templates/sponge.zip"), new UniversalFile(dir, "Templates"));
System.out.println("SubServers > Updated ~/SubServers/Templates/Sponge");
}
@ -350,10 +350,8 @@ public final class SubPlugin extends BungeeCord {
this.hosts.get(host).removeSubServer(server);
}
subservers.clear();
if (this.hosts.get(host).getCreator().isBusy()) {
this.hosts.get(host).getCreator().terminate();
this.hosts.get(host).getCreator().waitFor();
}
this.hosts.get(host).getCreator().terminate();
this.hosts.get(host).getCreator().waitFor();
this.hosts.remove(host);
}
hosts.clear();
@ -366,39 +364,4 @@ public final class SubPlugin extends BungeeCord {
super.stopListeners();
}
private void unzip(InputStream zip, File dir) {
byte[] buffer = new byte[1024];
try{
ZipInputStream zis = new ZipInputStream(zip);
ZipEntry ze;
while ((ze = zis.getNextEntry()) != null) {
File newFile = new File(dir + File.separator + ze.getName());
if (newFile.exists()) {
if (newFile.isDirectory()) {
Util.deleteDirectory(newFile);
} else {
newFile.delete();
}
}
if (ze.isDirectory()) {
newFile.mkdirs();
continue;
} else if (!newFile.getParentFile().exists()) {
newFile.getParentFile().mkdirs();
}
FileOutputStream fos = new FileOutputStream(newFile);
int len;
while ((len = zis.read(buffer)) > 0) {
fos.write(buffer, 0, len);
}
fos.close();
}
zis.closeEntry();
zis.close();
} catch(IOException ex) {
ex.printStackTrace();
}
}
}

View File

@ -252,11 +252,10 @@ public class InternalUIRenderer extends UIRenderer {
blockMeta = block.getItemMeta();
blockMeta.setDisplayName(ChatColor.GRAY+ChatColor.stripColor(plugin.lang.getSection("Lang").getColoredString("Interface.Host-Admin.Creator", '&')));
blockMeta.setLore(Arrays.asList(plugin.lang.getSection("Lang").getColoredString("Interface.Generic.Invalid-Permission", '&').replace("$str$", "subservers.host.create." + host.toLowerCase())));
} else if (!json.getJSONObject("host").getBoolean("enabled") || json.getJSONObject("host").getJSONObject("creator").getBoolean("busy")) {
} else if (!json.getJSONObject("host").getBoolean("enabled")) {
block = new ItemStack(Material.STAINED_GLASS_PANE, 1, (short) 7);
blockMeta = block.getItemMeta();
blockMeta.setDisplayName(ChatColor.GRAY+ChatColor.stripColor(plugin.lang.getSection("Lang").getColoredString("Interface.Host-Admin.Creator", '&')));
blockMeta.setLore(Arrays.asList(plugin.lang.getSection("Lang").getColoredString("Interface.Host-Admin.Creator-Busy", '&')));
} else {
block = new ItemStack(Material.STAINED_GLASS_PANE, 1, (short) 4);
blockMeta = block.getItemMeta();
@ -343,7 +342,7 @@ public class InternalUIRenderer extends UIRenderer {
}
plugin.subdata.sendPacket(new PacketDownloadHostInfo(options.getHost(), json -> {
if (!json.getBoolean("valid")|| !json.getJSONObject("host").getBoolean("enabled") || json.getJSONObject("host").getJSONObject("creator").getBoolean("busy")) {
if (!json.getBoolean("valid")|| !json.getJSONObject("host").getBoolean("enabled")) {
lastUsedOptions = null;
if (hasHistory()) back();
} else {
@ -475,7 +474,7 @@ public class InternalUIRenderer extends UIRenderer {
lastUsedOptions = options;
if (!options.init()) lastVistedObject = options.getHost();
plugin.subdata.sendPacket(new PacketDownloadHostInfo(options.getHost(), (json) -> {
if (!json.getBoolean("valid")|| !json.getJSONObject("host").getBoolean("enabled") || json.getJSONObject("host").getJSONObject("creator").getBoolean("busy")) {
if (!json.getBoolean("valid")|| !json.getJSONObject("host").getBoolean("enabled")) {
lastUsedOptions = null;
if (hasHistory()) back();
} else {

View File

@ -359,9 +359,6 @@ public final class SubCommand implements CommandExecutor {
case 4:
sender.sendMessage(plugin.lang.getSection("Lang").getColoredString("Command.Creator.Unknown-Host", '&'));
break;
case 5:
sender.sendMessage(plugin.lang.getSection("Lang").getColoredString("Command.Creator.Running", '&'));
break;
case 6:
sender.sendMessage(plugin.lang.getSection("Lang").getColoredString("Command.Creator.Invalid-Template", '&'));
break;
@ -376,7 +373,7 @@ public final class SubCommand implements CommandExecutor {
sender.sendMessage(plugin.lang.getSection("Lang").getColoredString("Command.Creator", '&'));
break;
default:
Bukkit.getLogger().warning("SubData > PacketCreateServer(" + ((sender instanceof Player)?((Player) sender).getUniqueId().toString():"null") + ", " + args[1] + ", " + args[2] + ", " + args[3].toUpperCase() + ", " + args[4] + ", " + args[5] + ", " + ((args.length > 6)?args[6]:"1024") + ") responded with: " + json.getString("m"));
Bukkit.getLogger().warning("SubData > PacketCreateServer(" + ((sender instanceof Player)?((Player) sender).getUniqueId().toString():"null") + ", " + args[1] + ", " + args[2] + ", " + args[3] + ", " + args[4] + ", " + args[5] + ") responded with: " + json.getString("m"));
sender.sendMessage(plugin.lang.getSection("Lang").getColoredString("Command.Creator", '&'));
break;
}

View File

@ -27,7 +27,7 @@ public final class SubPlugin extends JavaPlugin {
public UIHandler gui = null;
public final Version version;
public final Version bversion = new Version(2);
public final Version bversion = new Version(3);
public final SubAPI api = new SubAPI(this);
public SubPlugin() {

View File

@ -41,13 +41,14 @@ public final class ExHost {
public Logger log;
public final UniversalFile dir = new UniversalFile(new File(System.getProperty("user.dir")));
public final UniversalFile runtime;
public YAMLConfig config;
public YAMLSection host = null;
public YAMLSection lang = null;
public SubDataClient subdata = null;
public final Version version = new Version("2.12c");
public final Version bversion = new Version(2);
public final Version bversion = new Version(3);
public final SubAPI api = new SubAPI(this);
private boolean running;
@ -59,9 +60,10 @@ public final class ExHost {
* @throws Exception
*/
public static void main(String[] args) throws Exception {
new ExHost(args);
new ExHost(new File(URLDecoder.decode(System.getProperty("subservers.host.runtime"), "UTF-8")), args);
}
private ExHost(String[] args) {
private ExHost(File runtime, String[] args) {
this.runtime = new UniversalFile(runtime);
log = new Logger("SubServers");
try {
Logger.setup(System.out, System.err, dir);
@ -77,32 +79,7 @@ public final class ExHost {
Util.copyFromJar(ExHost.class.getClassLoader(), "net/ME1312/SubServers/Host/Library/Files/config.yml", new UniversalFile(dir, "config.yml").getPath());
log.info.println("Updated ~/config.yml");
}
if (!(new UniversalFile(dir, "Templates").exists())) new UniversalFile(dir, "Templates").mkdirs();
if (!(new UniversalFile(dir, "Templates:Vanilla:template.yml").exists())) {
unzip(SubPlugin.class.getResourceAsStream("/net/ME1312/SubServers/Host/Library/Files/Templates/vanilla.zip"), new UniversalFile(dir, "Templates"));
log.info.println("Created ~/SubServers/Templates/Vanilla");
} else if ((new Version((new YAMLConfig(new UniversalFile(dir, "Templates:Vanilla:template.yml"))).get().getString("Version", "0")).compareTo(new Version("2.11.2m+"))) != 0) {
Files.move(new UniversalFile(dir, "Templates:Vanilla").toPath(), new UniversalFile(dir, "Templates:Vanilla.old" + Math.round(Math.random() * 100000)).toPath());
unzip(SubPlugin.class.getResourceAsStream("/net/ME1312/SubServers/Host/Library/Files/Templates/vanilla.zip"), new UniversalFile(dir, "Templates"));
log.info.println("Updated ~/SubServers/Templates/Vanilla");
}
if (!(new UniversalFile(dir, "Templates:Spigot:template.yml").exists())) {
unzip(SubPlugin.class.getResourceAsStream("/net/ME1312/SubServers/Host/Library/Files/Templates/spigot.zip"), new UniversalFile(dir, "Templates"));
log.info.println("Created ~/SubServers/Templates/Spigot");
} else if ((new Version((new YAMLConfig(new UniversalFile(dir, "Templates:Spigot:template.yml"))).get().getString("Version", "0")).compareTo(new Version("2.11.2m+"))) != 0) {
Files.move(new UniversalFile(dir, "Templates:Vanilla").toPath(), new UniversalFile(dir, "Templates:Spigot.old" + Math.round(Math.random() * 100000)).toPath());
unzip(SubPlugin.class.getResourceAsStream("/net/ME1312/SubServers/Host/Library/Files/Templates/spigot.zip"), new UniversalFile(dir, "Templates"));
log.info.println("Updated ~/SubServers/Templates/Spigot");
}
if (!(new UniversalFile(dir, "Templates:Sponge:template.yml").exists())) {
unzip(SubPlugin.class.getResourceAsStream("/net/ME1312/SubServers/Host/Library/Files/Templates/sponge.zip"), new UniversalFile(dir, "Templates"));
log.info.println("Created ~/SubServers/Templates/Sponge");
} else if ((new Version((new YAMLConfig(new UniversalFile(dir, "Templates:Sponge:template.yml"))).get().getString("Version", "0")).compareTo(new Version("2.11.2m+"))) != 0) {
Files.move(new UniversalFile(dir, "Templates:Vanilla").toPath(), new UniversalFile(dir, "Templates:Sponge.old" + Math.round(Math.random() * 100000)).toPath());
unzip(SubPlugin.class.getResourceAsStream("/net/ME1312/SubServers/Host/Library/Files/Templates/sponge.zip"), new UniversalFile(dir, "Templates"));
log.info.println("Updated ~/SubServers/Templates/Sponge");
}
config = new YAMLConfig(new UniversalFile(dir, "config.yml"));
if (new UniversalFile(dir, "Recently Deleted").exists()) {
int f = new UniversalFile(dir, "Recently Deleted").listFiles().length;
@ -141,7 +118,6 @@ public final class ExHost {
}
}
config = new YAMLConfig(new UniversalFile(dir, "config.yml"));
SubDataClient.Encryption encryption = SubDataClient.Encryption.NONE;
if (config.get().getSection("Settings").getSection("SubData").getString("Password", "").length() == 0) {
log.info.println("Cannot encrypt connection without a password");
@ -155,20 +131,6 @@ public final class ExHost {
Integer.parseInt(config.get().getSection("Settings").getSection("SubData").getString("Address", "127.0.0.1:4391").split(":")[1]), encryption);
creator = new SubCreator(this);
if (new UniversalFile(dir, "Templates").exists()) for (File file : new UniversalFile(dir, "Templates").listFiles()) {
try {
if (file.isDirectory()) {
YAMLSection config = (new UniversalFile(file, "template.yml").exists())?new YAMLConfig(new UniversalFile(file, "template.yml")).get().getSection("Template", new YAMLSection()):new YAMLSection();
SubCreator.ServerTemplate template = new SubCreator.ServerTemplate(file.getName(), config.getBoolean("Enabled", true), config.getRawString("Icon", "::NULL::"), file, config.getSection("Build", new YAMLSection()), config.getSection("Settings", new YAMLSection()));
templates.put(file.getName().toLowerCase(), template);
if (config.getKeys().contains("Display")) template.setDisplayName(config.getString("Display"));
}
} catch (Exception e) {
System.out.println("SubCreator > Couldn't load template: " + file.getName());
e.printStackTrace();
}
}
if (System.getProperty("subservers.host.plugins", "").length() > 0) {
long begin = Calendar.getInstance().getTime().getTime();
long i = 0;
@ -357,13 +319,11 @@ public final class ExHost {
subservers.clear();
servers.clear();
if (creator.isBusy()) {
creator.terminate();
try {
creator.waitFor();
} catch (Exception e) {
log.error.println(e);
}
creator.terminate();
try {
creator.waitFor();
} catch (Exception e) {
log.error.println(e);
}
try {

View File

@ -4,6 +4,8 @@ import net.ME1312.SubServers.Host.Library.Config.YAMLSection;
import net.ME1312.SubServers.Host.Library.Container;
import net.ME1312.SubServers.Host.Library.Exception.InvalidServerException;
import net.ME1312.SubServers.Host.Library.Exception.InvalidTemplateException;
import net.ME1312.SubServers.Host.Library.Exception.SubCreatorException;
import net.ME1312.SubServers.Host.Library.NamedContainer;
import net.ME1312.SubServers.Host.Library.UniversalFile;
import net.ME1312.SubServers.Host.Library.Util;
import net.ME1312.SubServers.Host.Library.Version.Version;
@ -20,16 +22,14 @@ import javax.xml.parsers.DocumentBuilderFactory;
import java.io.*;
import java.net.URL;
import java.nio.charset.Charset;
import java.util.UUID;
import java.util.*;
/**
* Internal SubCreator Class
*/
public class SubCreator {
private ExHost host;
private SubLogger logger;
private Process process = null;
private Thread thread = null;
private TreeMap<String, NamedContainer<Thread, NamedContainer<SubLogger, Process>>> thread;
public static class ServerTemplate {
private String name;
@ -185,22 +185,31 @@ public class SubCreator {
public SubCreator(ExHost host) {
if (Util.isNull(host)) throw new NullPointerException();
this.host = host;
this.logger = new SubLogger(null, this, "SubCreator", null, new Container<Boolean>(false), null);
this.thread = new TreeMap<>();
}
private void run(String name, ServerTemplate template, Version version, int port, UUID address, String id) {
UniversalFile dir = new UniversalFile(new File(host.host.getRawString("Directory")), name);
dir.mkdirs();
logger.logger.info.println("Generating Server Files...");
host.subdata.sendPacket(new PacketOutExLogMessage(address, "Generating Server Files..."));
private YAMLSection build(NamedContainer<SubLogger, Process> thread, File dir, String name, ServerTemplate template, Version version, UUID address, List<ServerTemplate> history) throws SubCreatorException {
YAMLSection server = new YAMLSection();
boolean error = false;
if (history.contains(template)) throw new IllegalStateException("Template Import loop detected");
history.add(template);
for (String other : template.getBuildOptions().getStringList("Import", new ArrayList<String>())) {
if (host.templates.keySet().contains(other.toLowerCase())) {
YAMLSection config = build(thread, dir, other, host.templates.get(other.toLowerCase()), version, address, history);
if (config == null) {
throw new SubCreatorException();
} else {
server.setAll(config);
}
}
}
server.setAll(template.getConfigOptions());
try {
thread.name().logger.info.println("Loading Template: " + template.getDisplayName());
host.subdata.sendPacket(new PacketOutExLogMessage(address, "Loading Template: " + template.getDisplayName()));
Util.copyDirectory(template.getDirectory(), dir);
generateProperties(dir, port);
generateClient(dir, template.getType(), name);
if (template.getType() == ServerType.SPONGE) {
logger.logger.info.println("Searching Versions...");
thread.name().logger.info.println("Searching Versions...");
host.subdata.sendPacket(new PacketOutExLogMessage(address, "Searching Versions..."));
Document spongexml = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new InputSource(new StringReader(Util.readAll(new BufferedReader(new InputStreamReader(new URL("http://files.minecraftforge.net/maven/org/spongepowered/spongeforge/maven-metadata.xml").openStream(), Charset.forName("UTF-8")))))));
Document forgexml = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new InputSource(new StringReader(Util.readAll(new BufferedReader(new InputStreamReader(new URL("http://files.minecraftforge.net/maven/net/minecraftforge/forge/maven-metadata.xml").openStream(), Charset.forName("UTF-8")))))));
@ -217,7 +226,7 @@ public class SubCreator {
}
if (spversion == null)
throw new InvalidServerException("Cannot find sponge version for Minecraft " + version.toString());
logger.logger.info.println("Found \"spongeforge-" + spversion.toString() + '"');
thread.name().logger.info.println("Found \"spongeforge-" + spversion.toString() + '"');
host.subdata.sendPacket(new PacketOutExLogMessage(address, "Found \"spongeforge-" + spversion.toString() + '"'));
NodeList mcfnodeList = forgexml.getElementsByTagName("version");
@ -232,16 +241,15 @@ public class SubCreator {
}
if (mcfversion == null)
throw new InvalidServerException("Cannot find forge version for Sponge " + spversion.toString());
logger.logger.info.println("Found \"forge-" + mcfversion.toString() + '"');
thread.name().logger.info.println("Found \"forge-" + mcfversion.toString() + '"');
host.subdata.sendPacket(new PacketOutExLogMessage(address, "Found \"forge-" + mcfversion.toString() + '"'));
version = new Version(mcfversion.toString() + " " + spversion.toString());
}
} catch (Exception e) {
e.printStackTrace();
thread.name().logger.error.println(e);
}
boolean error = false;
if (template.getBuildOptions().contains("Shell-Location")) {
File gitBash = new File(host.host.getRawString("Git-Bash"), "bin" + File.separatorChar + "bash.exe");
if (!(System.getProperty("os.name").toLowerCase().indexOf("win") >= 0) && template.getBuildOptions().contains("Permission")) {
@ -249,75 +257,115 @@ public class SubCreator {
Process process = Runtime.getRuntime().exec("chmod " + template.getBuildOptions().getRawString("Permission") + ' ' + template.getBuildOptions().getRawString("Shell-Location"), null, dir);
Thread.sleep(500);
if (process.exitValue() != 0) {
logger.logger.info.println("Couldn't set " + template.getBuildOptions().getRawString("Permission") + " permissions to " + template.getBuildOptions().getRawString("Shell-Location"));
thread.name().logger.info.println("Couldn't set " + template.getBuildOptions().getRawString("Permission") + " permissions to " + template.getBuildOptions().getRawString("Shell-Location"));
host.subdata.sendPacket(new PacketOutExLogMessage(address, "Couldn't set " + template.getBuildOptions().getRawString("Permission") + " permissions to " + template.getBuildOptions().getRawString("Shell-Location")));
}
} catch (Exception e) {
logger.logger.info.println("Couldn't set " + template.getBuildOptions().getRawString("Permission") + " permissions to " + template.getBuildOptions().getRawString("Shell-Location"));
thread.name().logger.info.println("Couldn't set " + template.getBuildOptions().getRawString("Permission") + " permissions to " + template.getBuildOptions().getRawString("Shell-Location"));
host.subdata.sendPacket(new PacketOutExLogMessage(address, "Couldn't set " + template.getBuildOptions().getRawString("Permission") + " permissions to " + template.getBuildOptions().getRawString("Shell-Location")));
e.printStackTrace();
thread.name().logger.error.println(e);
}
}
try {
logger.logger.info.println("/Creator > Launching " + template.getBuildOptions().getRawString("Shell-Location"));
host.subdata.sendPacket(new PacketOutExLogMessage(address,"/Creator > Launching " + template.getBuildOptions().getRawString("Shell-Location")));
process = Runtime.getRuntime().exec((System.getProperty("os.name").toLowerCase().indexOf("win") >= 0)?"\"" + gitBash + "\" --login -i -c \"bash " + template.getBuildOptions().getRawString("Shell-Location") + ' ' + version.toString() + '\"':("bash " + template.getBuildOptions().getRawString("Shell-Location") + ' ' + version.toString() + " " + System.getProperty("user.home")), null, dir);
logger.process = this.process;
logger.log.set(true);
logger.address = address;
logger.file = new File(dir, "SubCreator-" + template.getType().toString() + "-" + version.toString().replace(" ", "@") + ".log");
logger.start();
thread.name().logger.info.println("Launching " + template.getBuildOptions().getRawString("Shell-Location"));
host.subdata.sendPacket(new PacketOutExLogMessage(address, "Launching " + template.getBuildOptions().getRawString("Shell-Location")));
thread.set(Runtime.getRuntime().exec((System.getProperty("os.name").toLowerCase().indexOf("win") >= 0)?"\"" + gitBash + "\" --login -i -c \"bash " + template.getBuildOptions().getRawString("Shell-Location") + ' ' + version.toString() + '\"':("bash " + template.getBuildOptions().getRawString("Shell-Location") + ' ' + version.toString() + " " + System.getProperty("user.home")), null, dir));
thread.name().file = new File(dir, "SubCreator-" + template.getName() + "-" + version.toString().replace(" ", "@") + ".log");
thread.name().process = thread.get();
thread.name().start();
process.waitFor();
thread.get().waitFor();
Thread.sleep(500);
if (process.exitValue() != 0) error = true;
if (thread.get().exitValue() != 0) error = true;
} catch (Exception e) {
error = true;
e.printStackTrace();
thread.name().logger.error.println(e);
}
}
new UniversalFile(dir, "template.yml").delete();
if (!error) {
if (error) throw new SubCreatorException();
return server;
}
private void run(String name, ServerTemplate template, Version version, int port, UUID address, String id) {
NamedContainer<SubLogger, Process> thread = this.thread.get(name.toLowerCase()).get();
UniversalFile dir = new UniversalFile(new File(host.host.getRawString("Directory")), name);
dir.mkdirs();
YAMLSection server;
try {
server = build(thread, dir, name, template, version, address, new LinkedList<>());
generateProperties(dir, port);
generateClient(dir, template.getType(), name);
} catch (SubCreatorException e) {
server = null;
} catch (Exception e) {
server = null;
thread.name().logger.error.println(e);
}
if (server != null) {
host.subdata.sendPacket(new PacketExCreateServer(0, "Created Server Successfully", template.getConfigOptions().toJSON(), id));
} else {
logger.logger.info.println("Couldn't build the server jar. See \"SubCreator-" + template.getType().toString() + "-" + version.toString().replace(" ", "@") + ".log\" for more details.");
host.subdata.sendPacket(new PacketOutExLogMessage(address, "Couldn't build the server jar. See \"SubCreator-" + template.getType().toString() + "-" + version.toString().replace(" ", "@") + ".log\" for more details."));
thread.name().logger.info.println("Couldn't build the server jar. Check the SubCreator logs for more detail.");
host.subdata.sendPacket(new PacketExCreateServer(-1, "Couldn't build the server jar. Check the SubCreator logs for more detail.", template.getConfigOptions().toJSON(), id));
}
this.thread.remove(name.toLowerCase());
}
public boolean create(String name, ServerTemplate template, Version version, int port, UUID address, String id) {
if (Util.isNull(name, template, version, port, address)) throw new NullPointerException();
if (!isBusy()) {
(thread = new Thread(() -> {
SubCreator.this.run(name, template, version, port, address, id);
})).start();
return true;
} else return false;
NamedContainer<Thread, NamedContainer<SubLogger, Process>> run = new NamedContainer<Thread, NamedContainer<SubLogger, Process>>(new Thread(() -> SubCreator.this.run(name, template, version, port, address, id)), new NamedContainer<SubLogger, Process>(new SubLogger(null, this, name + File.separator + "Creator", address, new Container<Boolean>(true), null), null));
this.thread.put(name.toLowerCase(), run);
run.name().start();
return true;
}
public void terminate() {
if (process != null && this.process.isAlive()) {
process.destroyForcibly();
} else if (thread != null && this.thread.isAlive()) {
thread.interrupt();
HashMap<String, NamedContainer<Thread, NamedContainer<SubLogger, Process>>> temp = new HashMap<String, NamedContainer<Thread, NamedContainer<SubLogger, Process>>>();
temp.putAll(thread);
for (String i : temp.keySet()) {
terminate(i);
}
}
public void terminate(String thread) {
if (this.thread.get(thread).get().get() != null && this.thread.get(thread).get().get().isAlive()) {
this.thread.get(thread).get().get().destroyForcibly();
}
if (this.thread.get(thread).name() != null && this.thread.get(thread).name().isAlive()) {
this.thread.get(thread).name().interrupt();
}
}
public void waitFor() throws InterruptedException {
while (thread != null && thread.isAlive()) {
HashMap<String, NamedContainer<Thread, NamedContainer<SubLogger, Process>>> temp = new HashMap<String, NamedContainer<Thread, NamedContainer<SubLogger, Process>>>();
temp.putAll(thread);
for (String i : temp.keySet()) {
waitFor(i);
}
}
public void waitFor(String thread) throws InterruptedException {
while (this.thread.get(thread).name() != null && this.thread.get(thread).name().isAlive()) {
Thread.sleep(250);
}
}
public SubLogger getLogger() {
return logger;
public List<SubLogger> getLogger() {
List<SubLogger> loggers = new ArrayList<SubLogger>();
HashMap<String, NamedContainer<Thread, NamedContainer<SubLogger, Process>>> temp = new HashMap<String, NamedContainer<Thread, NamedContainer<SubLogger, Process>>>();
temp.putAll(thread);
for (String i : temp.keySet()) {
loggers.add(getLogger(i));
}
return loggers;
}
public boolean isBusy() {
return thread != null && thread.isAlive();
public SubLogger getLogger(String thread) {
return this.thread.get(thread).get().name();
}
private void generateClient(File dir, ServerType type, String name) throws IOException {
@ -349,47 +397,4 @@ public class SubCreator {
writer.write(content);
writer.close();
}
private void copyFolder(File source, File destination) {
if (source.isDirectory()) {
if (!destination.exists()) {
destination.mkdirs();
}
String files[] = source.list();
for (String file : files) {
File srcFile = new File(source, file);
File destFile = new File(destination, file);
copyFolder(srcFile, destFile);
}
} else {
InputStream in = null;
OutputStream out = null;
try {
in = new FileInputStream(source);
out = new FileOutputStream(destination);
byte[] buffer = new byte[1024];
int length;
while ((length = in.read(buffer)) > 0) {
out.write(buffer, 0, length);
}
} catch (Exception e) {
try {
in.close();
} catch (IOException e1) {
e1.printStackTrace();
}
try {
out.close();
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
}
}

View File

@ -0,0 +1,11 @@
package net.ME1312.SubServers.Host.Library.Exception;
/**
* Invalid Template Exception
*/
public class SubCreatorException extends IllegalStateException {
public SubCreatorException() {}
public SubCreatorException(String s) {
super(s);
}
}

View File

@ -1,14 +1,14 @@
package net.ME1312.SubServers.Host.Library;
import net.ME1312.SubServers.Host.SubAPI;
import java.io.*;
import java.util.*;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import java.util.zip.ZipOutputStream;
/**
* SubServers Utility Class
*/
@SuppressWarnings("deprecation")
public final class Util {
private Util(){}
public interface ExceptionRunnable {
@ -106,7 +106,7 @@ public final class Util {
resStreamOut.close();
resStreamIn.close();
} catch (Exception ex) {
SubAPI.getInstance().getInternals().log.error.println(ex);
ex.printStackTrace();
}
}
@ -165,12 +165,15 @@ public final class Util {
copyDirectory(srcFile, destFile);
}
} else {
if (to.exists()) {
to.delete();
}
InputStream in = null;
OutputStream out = null;
try {
in = new FileInputStream(from);
out = new FileOutputStream(to);
out = new FileOutputStream(to, false);
byte[] buffer = new byte[1024];
@ -182,18 +185,92 @@ public final class Util {
try {
if (in != null) in.close();
} catch (IOException e1) {
SubAPI.getInstance().getInternals().log.error.println(e1);
e1.printStackTrace();
}
try {
if (out != null) out.close();
} catch (IOException e2) {
SubAPI.getInstance().getInternals().log.error.println(e2);
e2.printStackTrace();
}
}
}
}
private static List<String> zipsearch(File origin, File file) {
List<String> list = new LinkedList<String>();
if (file.isFile()) {
list.add(file.getAbsoluteFile().toString().substring(origin.getAbsoluteFile().toString().length()+1, file.getAbsoluteFile().toString().length()));
}
if (file.isDirectory()) for (File next : file.listFiles()) {
list.addAll(zipsearch(origin, next));
}
return list;
}
public static void zip(File file, OutputStream zip) {
byte[] buffer = new byte[1024];
try{
ZipOutputStream zos = new ZipOutputStream(zip);
for(String next : zipsearch(file, file)){
ZipEntry ze= new ZipEntry(next);
zos.putNextEntry(ze);
FileInputStream in = new FileInputStream(file.getAbsolutePath() + File.separator + next);
int len;
while ((len = in.read(buffer)) > 0) {
zos.write(buffer, 0, len);
}
in.close();
}
zos.closeEntry();
zos.close();
} catch(IOException ex){
ex.printStackTrace();
}
}
public static void unzip(InputStream zip, File dir) {
byte[] buffer = new byte[1024];
try{
ZipInputStream zis = new ZipInputStream(zip);
ZipEntry ze;
while ((ze = zis.getNextEntry()) != null) {
File newFile = new File(dir + File.separator + ze.getName());
if (newFile.exists()) {
if (newFile.isDirectory()) {
Util.deleteDirectory(newFile);
} else {
newFile.delete();
}
}
if (ze.isDirectory()) {
newFile.mkdirs();
continue;
} else if (!newFile.getParentFile().exists()) {
newFile.getParentFile().mkdirs();
}
FileOutputStream fos = new FileOutputStream(newFile);
int len;
while ((len = zis.read(buffer)) > 0) {
fos.write(buffer, 0, len);
}
fos.close();
}
zis.closeEntry();
zis.close();
} catch(IOException ex) {
ex.printStackTrace();
}
}
/**
* Get a Random Integer
*

View File

@ -1,6 +1,4 @@
package net.ME1312.SubServers.Host.Network.Packet;
import net.ME1312.SubServers.Host.Executable.SubCreator;
import net.ME1312.SubServers.Host.Library.JSONCallback;
import net.ME1312.SubServers.Host.Library.Util;
import net.ME1312.SubServers.Host.Library.Version.Version;
@ -19,10 +17,9 @@ public class PacketCreateServer implements PacketIn, PacketOut {
private UUID player;
private String name;
private String host;
private SubCreator.ServerType type;
private String template;
private Version version;
private int port;
private int ram;
private String id;
/**
@ -36,21 +33,19 @@ public class PacketCreateServer implements PacketIn, PacketOut {
* @param player Player Creating
* @param name Server Name
* @param host Host to use
* @param type Server Type
* @param template Server Template
* @param version Server Version
* @param port Server Port
* @param memory Server Memory
* @param callback Callbacks
*/
public PacketCreateServer(UUID player, String name, String host, SubCreator.ServerType type, Version version, int port, int memory, JSONCallback... callback) {
if (Util.isNull(name, host, type, version, port, memory, callback)) throw new NullPointerException();
public PacketCreateServer(UUID player, String name, String host, String template, Version version, int port, JSONCallback... callback) {
if (Util.isNull(name, host, template, version, port, callback)) throw new NullPointerException();
this.player = player;
this.name = name;
this.host = host;
this.type = type;
this.template = template;
this.version = version;
this.port = port;
this.ram = memory;
this.id = Util.getNew(callbacks.keySet(), UUID::randomUUID).toString();
callbacks.put(id, callback);
}
@ -63,10 +58,9 @@ public class PacketCreateServer implements PacketIn, PacketOut {
JSONObject creator = new JSONObject();
creator.put("name", name);
creator.put("host", host);
creator.put("type", type.toString());
creator.put("template", template);
creator.put("version", version.toString());
creator.put("port", port);
creator.put("ram", ram);
json.put("creator", creator);
return json;
}

View File

@ -78,7 +78,7 @@ public class PacketExAddServer implements PacketIn, PacketOut {
}
} catch (Throwable e) {
host.subdata.sendPacket(new PacketExAddServer(1, e.getClass().getCanonicalName() + ": " + e.getMessage(), (data.keySet().contains("id"))?data.getString("id"):null));
e.printStackTrace();
host.log.error.println(e);
}
}

View File

@ -1,8 +1,11 @@
package net.ME1312.SubServers.Host.Network.Packet;
import net.ME1312.SubServers.Host.Executable.SubCreator;
import net.ME1312.SubServers.Host.Library.Config.YAMLConfig;
import net.ME1312.SubServers.Host.Library.Config.YAMLSection;
import net.ME1312.SubServers.Host.Library.Log.Logger;
import net.ME1312.SubServers.Host.Library.UniversalFile;
import net.ME1312.SubServers.Host.Library.Util;
import net.ME1312.SubServers.Host.Library.Version.Version;
import net.ME1312.SubServers.Host.Network.PacketIn;
import net.ME1312.SubServers.Host.Network.PacketOut;
@ -10,7 +13,9 @@ import net.ME1312.SubServers.Host.Network.SubDataClient;
import net.ME1312.SubServers.Host.ExHost;
import org.json.JSONObject;
import java.io.ByteArrayInputStream;
import java.lang.reflect.Field;
import java.util.Base64;
/**
* External Host Configuration Packet
@ -34,26 +39,27 @@ public class PacketExConfigureHost implements PacketIn, PacketOut {
@Override
public JSONObject generate() {
JSONObject json = new JSONObject();
JSONObject templates = new JSONObject();
for (SubCreator.ServerTemplate template : host.templates.values()) {
JSONObject tinfo = new JSONObject();
tinfo.put("enabled", template.isEnabled());
tinfo.put("display", template.getDisplayName());
tinfo.put("icon", template.getIcon());
tinfo.put("type", template.getType().toString());
tinfo.put("dir", template.getDirectory().toString());
tinfo.put("build", template.getBuildOptions().toJSON());
tinfo.put("options", template.getConfigOptions().toJSON());
templates.put(template.getName(), tinfo);
}
json.put("templates", templates);
return json;
return null;
}
@Override
public void execute(JSONObject data) {
host.host = new YAMLSection(data.getJSONObject("host"));
UniversalFile templates = new UniversalFile(host.runtime, "net:ME1312:SubServers:Host:Library:Files:Templates");
templates.mkdirs();
for (String name : data.getJSONObject("templates").keySet()) {
try {
UniversalFile dir = new UniversalFile(templates, name);
Util.unzip(new ByteArrayInputStream(Base64.getDecoder().decode(data.getJSONObject("templates").getJSONObject(name).getString("files"))), dir);
SubCreator.ServerTemplate template = new SubCreator.ServerTemplate(name, data.getJSONObject("templates").getJSONObject(name).getBoolean("enabled"), data.getJSONObject("templates").getJSONObject(name).getString("icon"), dir,
new YAMLSection(data.getJSONObject("templates").getJSONObject(name).getJSONObject("build")), new YAMLSection(data.getJSONObject("templates").getJSONObject(name).getJSONObject("settings")));
host.templates.put(name.toLowerCase(), template);
if (!data.getJSONObject("templates").getJSONObject(name).getString("display").equals(name)) template.setDisplayName(data.getJSONObject("templates").getJSONObject(name).getString("display"));
} catch (Exception e) {
host.log.error.println("Couldn't load template: " + name);
host.log.error.println(e);
}
}
log.info.println("Host Settings Downloaded");
}

View File

@ -1,6 +1,5 @@
package net.ME1312.SubServers.Host.Network.Packet;
import net.ME1312.SubServers.Host.Executable.SubCreator;
import net.ME1312.SubServers.Host.Library.Util;
import net.ME1312.SubServers.Host.Library.Version.Version;
import net.ME1312.SubServers.Host.Network.PacketIn;
@ -62,7 +61,13 @@ public class PacketExCreateServer implements PacketIn, PacketOut {
host.creator.create(data.getJSONObject("creator").getString("name"), host.templates.get(data.getJSONObject("creator").getString("template").toLowerCase()), new Version(data.getJSONObject("creator").getString("version")),
data.getJSONObject("creator").getInt("port"), UUID.fromString(data.getJSONObject("creator").getString("log")), (data.keySet().contains("id"))?data.getString("id"):null);
} catch (Throwable e) {
if (data.keySet().contains("thread")) {
host.creator.terminate(data.getString("thread"));
} else {
host.creator.terminate();
}
host.subdata.sendPacket(new PacketExCreateServer(1, e.getClass().getCanonicalName() + ": " + e.getMessage(), null, (data.keySet().contains("id"))?data.getString("id"):null));
host.log.error.println(e);
}
}

View File

@ -108,6 +108,7 @@ public class PacketExDeleteServer implements PacketIn, PacketOut {
}
} catch (Throwable e) {
host.subdata.sendPacket(new PacketExDeleteServer(1, e.getClass().getCanonicalName() + ": " + e.getMessage(), (data.keySet().contains("id"))?data.getString("id"):null));
host.log.error.println(e);
}
}

View File

@ -69,11 +69,12 @@ public class PacketExRemoveServer implements PacketIn, PacketOut {
host.subdata.sendPacket(new PacketExRemoveServer(2, "That server is still running.", (data.keySet().contains("id"))?data.getString("id"):null));
} else {
host.servers.remove(data.getString("server").toLowerCase());
log.info.println("Removed Server - " + data.getString("name"));
log.info.println("Removed Server - " + data.getString("server"));
host.subdata.sendPacket(new PacketExRemoveServer(0, "Server Removed Successfully", (data.keySet().contains("id"))?data.getString("id"):null));
}
} catch (Throwable e) {
host.subdata.sendPacket(new PacketExRemoveServer(1, e.getClass().getCanonicalName() + ": " + e.getMessage(), (data.keySet().contains("id"))?data.getString("id"):null));
host.log.error.println(e);
}
}

View File

@ -5,6 +5,7 @@ import net.ME1312.SubServers.Host.Executable.SubCreator;
import net.ME1312.SubServers.Host.Library.Config.YAMLConfig;
import net.ME1312.SubServers.Host.Library.Config.YAMLSection;
import net.ME1312.SubServers.Host.Library.UniversalFile;
import net.ME1312.SubServers.Host.Library.Util;
import net.ME1312.SubServers.Host.Library.Version.Version;
import net.ME1312.SubServers.Host.Network.PacketIn;
import net.ME1312.SubServers.Host.ExHost;
@ -41,29 +42,16 @@ public class PacketInReset implements PacketIn {
subservers.clear();
host.servers.clear();
if (host.creator.isBusy()) {
host.creator.terminate();
try {
host.creator.waitFor();
} catch (Exception e) {
host.log.error.println(e);
}
host.creator.terminate();
try {
host.creator.waitFor();
} catch (Exception e) {
host.log.error.println(e);
}
for (SubCreator.ServerTemplate template : host.templates.values()) {
Util.deleteDirectory(template.getDirectory());
}
host.templates.clear();
if (new UniversalFile(host.dir, "Templates").exists()) for (File file : new UniversalFile(host.dir, "Templates").listFiles()) {
try {
if (file.isDirectory()) {
YAMLSection config = (new UniversalFile(file, "template.yml").exists())?new YAMLConfig(new UniversalFile(file, "template.yml")).get().getSection("Template", new YAMLSection()):new YAMLSection();
SubCreator.ServerTemplate template = new SubCreator.ServerTemplate(file.getName(), config.getBoolean("Enabled", true), config.getRawString("Icon", "::NULL::"), file, config.getSection("Build", new YAMLSection()), config.getSection("Settings", new YAMLSection()));
host.templates.put(file.getName().toLowerCase(), template);
if (config.getKeys().contains("Display")) template.setDisplayName(config.getString("Display"));
}
} catch (Exception e) {
System.out.println("SubCreator > Couldn't load template: " + file.getName());
e.printStackTrace();
}
}
}
}

View File

@ -251,14 +251,10 @@ public class SubCommand {
@Override
public void command(String handle, String[] args) {
if (args.length > 4) {
if (Util.isException(() -> SubCreator.ServerType.valueOf(args[2].toUpperCase()))) {
host.log.message.println("There is no server type with that name");
} else if (Util.isException(() -> Integer.parseInt(args[4]))) {
if (Util.isException(() -> Integer.parseInt(args[4]))) {
host.log.message.println("Invalid Port Number");
} else if (args.length > 6 && Util.isException(() -> Integer.parseInt(args[5]))) {
host.log.message.println("Invalid Ram Amount");
} else {
host.subdata.sendPacket(new PacketCreateServer(null, args[0], args[1], SubCreator.ServerType.valueOf(args[2].toUpperCase()), new Version(args[3]), Integer.parseInt(args[4]), (args.length > 6)?Integer.parseInt(args[5]):1024, json -> {
host.subdata.sendPacket(new PacketCreateServer(null, args[0], args[1],args[2], new Version(args[3]), Integer.parseInt(args[4]), json -> {
switch (json.getInt("r")) {
case 3:
host.log.message.println("There is already a SubServer with that name");
@ -266,11 +262,8 @@ public class SubCommand {
case 4:
host.log.message.println("There is no host with that name");
break;
case 5:
host.log.message.println("The SubCreator instance on that host is already running");
break;
case 6:
host.log.message.println("There is no server type with that name");
host.log.message.println("There is no template with that name");
break;
case 7:
host.log.message.println("SubCreator cannot create servers before Minecraft 1.8");
@ -278,26 +271,24 @@ public class SubCommand {
case 8:
host.log.message.println("Invalid Port Number");
break;
case 9:
host.log.message.println("Invalid Ram Amount");
break;
case 0:
case 1:
host.log.message.println("Launching SubCreator...");
break;
default:
host.log.warn.println("PacketCreateServer(null, " + args[0] + ", " + args[1] + ", " + args[2].toUpperCase() + ", " + args[3] + ", " + args[4] + ", " + ((args.length > 5)?args[5]:"1024") + ") responded with: " + json.getString("m"));
host.log.warn.println("PacketCreateServer(null, " + args[0] + ", " + args[1] + ", " + args[2] + ", " + args[3] + ", " + args[4] + ") responded with: " + json.getString("m"));
host.log.message.println("Launching SubCreator...");
break;
}
}));
}
} else {
host.log.message.println("Usage: " + handle + " <Name> <Host> <Type> <Version> <Port> [RAM]");
host.log.message.println("Usage: " + handle + " <Name> <Host> <Template> <Version> <Port>");
}
}
}.usage("<Name>", "<Host>", "<Type>", "<Version>", "<Port>", "[RAM]").description("Creates a SubServer").help(
}.usage("<Name>", "<Host>", "<Template>", "<Version>", "<Port>").description("Creates a SubServer").help(
"This command is used to create and launch a SubServer on the specified host via the network.",
"You may also create custom templates in ~/Templates.",
"",
"The <Name> argument is required, and should be the name of",
"the SubServer you want to create.",
@ -318,8 +309,7 @@ public class SubCommand {
"the amount of RAM that the server will use after it has been created",
"",
"Examples:",
" /create ExampleServer ExampleHost Spigot 1.11 25565",
" /create ExampleServer ExampleHost Spigot 1.11 25565 1024"
" /create ExampleServer ExampleHost Spigot 1.11 25565"
).register("create");
new Command(null) {
public void command(String handle, String[] args) {