Rewrite Launch & PluginLoader for SubServers.Host

This commit changes the way SubServers.Host launches itself and loads it's plugins. Overall loading plugins this way is more efficient, faster, and can cause less problems than before.

Plugins will still use the package.xml & @SubPlugin annotation system to be loaded.

Also, there are some changes to the logger that better support async logging.
This commit is contained in:
ME1312 2018-01-21 15:45:27 -05:00
parent e5ad3f55d2
commit eb18c01b22
57 changed files with 1082 additions and 1288 deletions

3
.gitignore vendored
View File

@ -57,6 +57,7 @@ crashlytics-build.properties
/Artifacts/-Icon/
/Artifacts/SubServers.Patched.jar
/Artifacts/SubServers.Test.jar
/Artifacts/SubServers.Test.Maven.jar
/SubServers.Test/
/build.ant
.DS_STORE
@ -323,4 +324,4 @@ __pycache__/
*.btp.cs
*.btm.cs
*.odx.cs
*.xsd.cs
*.xsd.cs

Binary file not shown.

Binary file not shown.

10
Artifacts/config.yml Normal file
View File

@ -0,0 +1,10 @@
Settings:
Version: '2.11.2a+'
Console-Log: true
Network-Log: true
Server-Bind: '127.0.0.1'
SubData:
Name: 'undefined'
Address: '127.0.0.1:4391'
Password: 'default'
Encryption: 'AES'

Binary file not shown.

View File

@ -1490,10 +1490,6 @@
<dd>
<div class="block">Gets a Server</div>
</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Bungee/SubPlugin.html#getServerInfo-java.lang.String-">getServerInfo(String)</a></span> - Method 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>
<div class="block">Emulate BungeeCord's getServerInfo()</div>
</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Bungee/SubAPI.html#getServers--">getServers()</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 Servers (including SubServers)</div>
@ -3266,6 +3262,8 @@
<dd>&nbsp;</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Bungee/Host/ServerContainer.html#toString--">toString()</a></span> - Method in class net.ME1312.SubServers.Bungee.Host.<a href="net/ME1312/SubServers/Bungee/Host/ServerContainer.html" title="class in net.ME1312.SubServers.Bungee.Host">ServerContainer</a></dt>
<dd>&nbsp;</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Bungee/Host/SubCreator.ServerTemplate.html#toString--">toString()</a></span> - Method in class net.ME1312.SubServers.Bungee.Host.<a href="net/ME1312/SubServers/Bungee/Host/SubCreator.ServerTemplate.html" title="class in net.ME1312.SubServers.Bungee.Host">SubCreator.ServerTemplate</a></dt>
<dd>&nbsp;</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Bungee/Host/SubCreator.ServerType.html#toString--">toString()</a></span> - Method in enum net.ME1312.SubServers.Bungee.Host.<a href="net/ME1312/SubServers/Bungee/Host/SubCreator.ServerType.html" title="enum in net.ME1312.SubServers.Bungee.Host">SubCreator.ServerType</a></dt>
<dd>&nbsp;</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Bungee/Host/SubServerContainer.html#toString--">toString()</a></span> - Method in class net.ME1312.SubServers.Bungee.Host.<a href="net/ME1312/SubServers/Bungee/Host/SubServerContainer.html" title="class in net.ME1312.SubServers.Bungee.Host">SubServerContainer</a></dt>

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,"i9":10,"i10":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";
@ -221,13 +221,17 @@ extends java.lang.Object</pre>
<div class="block">Set the Item Icon for this Template</div>
</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code>java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../net/ME1312/SubServers/Bungee/Host/SubCreator.ServerTemplate.html#toString--">toString</a></span>()</code>&nbsp;</td>
</tr>
</table>
<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, toString, wait, wait, wait</code></li>
<code>equals, getClass, hashCode, notify, notifyAll, wait, wait, wait</code></li>
</ul>
</li>
</ul>
@ -416,7 +420,7 @@ extends java.lang.Object</pre>
<a name="getConfigOptions--">
<!-- -->
</a>
<ul class="blockListLast">
<ul class="blockList">
<li class="blockList">
<h4>getConfigOptions</h4>
<pre>public&nbsp;<a href="../../../../../net/ME1312/SubServers/Bungee/Library/Config/YAMLSection.html" title="class in net.ME1312.SubServers.Bungee.Library.Config">YAMLSection</a>&nbsp;getConfigOptions()</pre>
@ -427,6 +431,19 @@ extends java.lang.Object</pre>
</dl>
</li>
</ul>
<a name="toString--">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>toString</h4>
<pre>public&nbsp;java.lang.String&nbsp;toString()</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code>toString</code>&nbsp;in class&nbsp;<code>java.lang.Object</code></dd>
</dl>
</li>
</ul>
</li>
</ul>
</li>

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,"i9":10};
var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
@ -224,51 +224,45 @@ implements net.md_5.bungee.api.plugin.Listener</pre>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>net.md_5.bungee.api.config.ServerInfo</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../net/ME1312/SubServers/Bungee/SubPlugin.html#getServerInfo-java.lang.String-">getServerInfo</a></span>(java.lang.String&nbsp;name)</code>
<div class="block">Emulate BungeeCord's getServerInfo()</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>java.util.Map&lt;java.lang.String,net.md_5.bungee.api.config.ServerInfo&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../net/ME1312/SubServers/Bungee/SubPlugin.html#getServers--">getServers</a></span>()</code>
<div class="block">Emulate BungeeCord's getServers()</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<tr id="i2" class="altColor">
<td class="colFirst"><code>java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../net/ME1312/SubServers/Bungee/SubPlugin.html#getVersion--">getVersion</a></span>()</code>
<div class="block">Further override BungeeCord's signature when patched into the same jar</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>&lt;T&gt;&nbsp;java.lang.Object</code></td>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>java.lang.Object</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../net/ME1312/SubServers/Bungee/SubPlugin.html#redis-java.lang.String-net.ME1312.SubServers.Bungee.Library.NamedContainer...-">redis</a></span>(java.lang.String&nbsp;method,
<a href="../../../../net/ME1312/SubServers/Bungee/Library/NamedContainer.html" title="class in net.ME1312.SubServers.Bungee.Library">NamedContainer</a>&lt;java.lang.Class&lt;?&gt;,?&gt;...&nbsp;args)</code>
<div class="block">Reference a RedisBungee method via reflection</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<tr id="i4" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../net/ME1312/SubServers/Bungee/SubPlugin.html#reload--">reload</a></span>()</code>
<div class="block">Load data from the config (will attempt to merge with current configuration)</div>
</td>
</tr>
<tr id="i6" class="altColor">
<tr id="i5" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../net/ME1312/SubServers/Bungee/SubPlugin.html#reroute-net.md_5.bungee.api.event.ServerConnectEvent-">reroute</a></span>(net.md_5.bungee.api.event.ServerConnectEvent&nbsp;e)</code>&nbsp;</td>
</tr>
<tr id="i7" class="rowColor">
<tr id="i6" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../net/ME1312/SubServers/Bungee/SubPlugin.html#resetSudo-net.ME1312.SubServers.Bungee.Event.SubStoppedEvent-">resetSudo</a></span>(<a href="../../../../net/ME1312/SubServers/Bungee/Event/SubStoppedEvent.html" title="class in net.ME1312.SubServers.Bungee.Event">SubStoppedEvent</a>&nbsp;e)</code>&nbsp;</td>
</tr>
<tr id="i8" class="altColor">
<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/SubPlugin.html#startListeners--">startListeners</a></span>()</code>
<div class="block">Load SubServers before BungeeCord finishes</div>
</td>
</tr>
<tr id="i9" class="rowColor">
<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/SubPlugin.html#stopListeners--">stopListeners</a></span>()</code>
<div class="block">Reset all changes made by startListeners</div>
@ -280,7 +274,7 @@ implements net.md_5.bungee.api.plugin.Listener</pre>
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;net.md_5.bungee.BungeeCord</h3>
<code>addConnection, broadcast, broadcast, broadcast, broadcast, constructServerInfo, createTitle, getChannels, getConfig, getConfigurationAdapter, getConnectionThrottle, getConsole, getConsoleReader, getDisabledCommands, getGameVersion, getInstance, getLogger, getOnlineCount, getPlayer, getPlayer, getPlayerByOfflineUUID, getPlayers, getPluginManager, getPluginsFolder, getProtocolVersion, getReconnectHandler, getScheduler, getTranslation, matchPlayer, registerChannel, registerChannels, removeConnection, setConfigurationAdapter, setReconnectHandler, start, stop, stop, unregisterChannel</code></li>
<code>addConnection, broadcast, broadcast, broadcast, broadcast, constructServerInfo, createTitle, getChannels, getConfig, getConfigurationAdapter, getConnectionThrottle, getConsole, getConsoleReader, getDisabledCommands, getGameVersion, getInstance, getLogger, getOnlineCount, getPlayer, getPlayer, getPlayerByOfflineUUID, getPlayers, getPluginManager, getPluginsFolder, getProtocolVersion, getReconnectHandler, getScheduler, getServerInfo, getTranslation, matchPlayer, registerChannel, registerChannels, removeConnection, setConfigurationAdapter, setReconnectHandler, start, stop, stop, unregisterChannel</code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.net.md_5.bungee.api.ProxyServer">
@ -486,15 +480,13 @@ implements net.md_5.bungee.api.plugin.Listener</pre>
<ul class="blockList">
<li class="blockList">
<h4>redis</h4>
<pre>public&nbsp;&lt;T&gt;&nbsp;java.lang.Object&nbsp;redis(java.lang.String&nbsp;method,
<a href="../../../../net/ME1312/SubServers/Bungee/Library/NamedContainer.html" title="class in net.ME1312.SubServers.Bungee.Library">NamedContainer</a>&lt;java.lang.Class&lt;?&gt;,?&gt;...&nbsp;args)
throws java.lang.NoSuchMethodException,
java.lang.reflect.InvocationTargetException,
java.lang.IllegalAccessException</pre>
<pre>public&nbsp;java.lang.Object&nbsp;redis(java.lang.String&nbsp;method,
<a href="../../../../net/ME1312/SubServers/Bungee/Library/NamedContainer.html" title="class in net.ME1312.SubServers.Bungee.Library">NamedContainer</a>&lt;java.lang.Class&lt;?&gt;,?&gt;...&nbsp;args)
throws java.lang.NoSuchMethodException,
java.lang.reflect.InvocationTargetException,
java.lang.IllegalAccessException</pre>
<div class="block">Reference a RedisBungee method via reflection</div>
<dl>
<dt><span class="paramLabel">Type Parameters:</span></dt>
<dd><code>T</code> - Class Type</dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>method</code> - Method to reference</dd>
<dd><code>args</code> - Method arguments</dd>
@ -557,26 +549,6 @@ implements net.md_5.bungee.api.plugin.Listener</pre>
</dl>
</li>
</ul>
<a name="getServerInfo-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getServerInfo</h4>
<pre>public&nbsp;net.md_5.bungee.api.config.ServerInfo&nbsp;getServerInfo(java.lang.String&nbsp;name)</pre>
<div class="block">Emulate BungeeCord's getServerInfo()</div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code>getServerInfo</code>&nbsp;in class&nbsp;<code>net.md_5.bungee.BungeeCord</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>name</code> - Server Name (Case Sensitive)</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Server Info</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../net/ME1312/SubServers/Bungee/SubAPI.html#getServer-java.lang.String-"><code>SubAPI.getServer(String)</code></a></dd>
</dl>
</li>
</ul>
<a name="reroute-net.md_5.bungee.api.event.ServerConnectEvent-">
<!-- -->
</a>

Binary file not shown.

View File

@ -20,6 +20,7 @@
<li><a href="net/ME1312/SubServers/Host/Network/Cipher.html" title="interface in net.ME1312.SubServers.Host.Network" target="classFrame"><span class="interfaceName">Cipher</span></a></li>
<li><a href="net/ME1312/SubServers/Host/API/Command.html" title="class in net.ME1312.SubServers.Host.API" target="classFrame">Command</a></li>
<li><a href="net/ME1312/SubServers/Host/API/Event/CommandPreProcessEvent.html" title="class in net.ME1312.SubServers.Host.API.Event" target="classFrame">CommandPreProcessEvent</a></li>
<li><a href="net/ME1312/SubServers/Host/Library/Log/ConsoleStream.html" title="class in net.ME1312.SubServers.Host.Library.Log" target="classFrame">ConsoleStream</a></li>
<li><a href="net/ME1312/SubServers/Host/Library/Container.html" title="class in net.ME1312.SubServers.Host.Library" target="classFrame">Container</a></li>
<li><a href="net/ME1312/SubServers/Host/Library/Log/ErrorStream.html" title="class in net.ME1312.SubServers.Host.Library.Log" target="classFrame">ErrorStream</a></li>
<li><a href="net/ME1312/SubServers/Host/Library/Event/Event.html" title="class in net.ME1312.SubServers.Host.Library.Event" target="classFrame">Event</a></li>
@ -35,7 +36,6 @@
<li><a href="net/ME1312/SubServers/Host/Library/Exception/InvalidServerException.html" title="class in net.ME1312.SubServers.Host.Library.Exception" target="classFrame">InvalidServerException</a></li>
<li><a href="net/ME1312/SubServers/Host/Library/Exception/InvalidTemplateException.html" title="class in net.ME1312.SubServers.Host.Library.Exception" target="classFrame">InvalidTemplateException</a></li>
<li><a href="net/ME1312/SubServers/Host/Library/JSONCallback.html" title="interface in net.ME1312.SubServers.Host.Library" target="classFrame"><span class="interfaceName">JSONCallback</span></a></li>
<li><a href="net/ME1312/SubServers/Host/Launch.html" title="class in net.ME1312.SubServers.Host" target="classFrame">Launch</a></li>
<li><a href="net/ME1312/SubServers/Host/Library/Event/Listener.html" title="interface in net.ME1312.SubServers.Host.Library.Event" target="classFrame"><span class="interfaceName">Listener</span></a></li>
<li><a href="net/ME1312/SubServers/Host/Library/Log/Logger.html" title="class in net.ME1312.SubServers.Host.Library.Log" target="classFrame">Logger</a></li>
<li><a href="net/ME1312/SubServers/Host/Library/Log/LogStream.html" title="class in net.ME1312.SubServers.Host.Library.Log" target="classFrame">LogStream</a></li>
@ -67,6 +67,7 @@
<li><a href="net/ME1312/SubServers/Host/Network/Packet/PacketOutExRequestQueue.html" title="class in net.ME1312.SubServers.Host.Network.Packet" target="classFrame">PacketOutExRequestQueue</a></li>
<li><a href="net/ME1312/SubServers/Host/Network/Packet/PacketStartServer.html" title="class in net.ME1312.SubServers.Host.Network.Packet" target="classFrame">PacketStartServer</a></li>
<li><a href="net/ME1312/SubServers/Host/Network/Packet/PacketStopServer.html" title="class in net.ME1312.SubServers.Host.Network.Packet" target="classFrame">PacketStopServer</a></li>
<li><a href="net/ME1312/SubServers/Host/Library/PluginClassLoader.html" title="class in net.ME1312.SubServers.Host.Library" target="classFrame">PluginClassLoader</a></li>
<li><a href="net/ME1312/SubServers/Host/API/Event/SubAddHostEvent.html" title="class in net.ME1312.SubServers.Host.API.Event" target="classFrame">SubAddHostEvent</a></li>
<li><a href="net/ME1312/SubServers/Host/API/Event/SubAddServerEvent.html" title="class in net.ME1312.SubServers.Host.API.Event" target="classFrame">SubAddServerEvent</a></li>
<li><a href="net/ME1312/SubServers/Host/SubAPI.html" title="class in net.ME1312.SubServers.Host" target="classFrame">SubAPI</a></li>

View File

@ -20,6 +20,7 @@
<li><a href="net/ME1312/SubServers/Host/Network/Cipher.html" title="interface in net.ME1312.SubServers.Host.Network"><span class="interfaceName">Cipher</span></a></li>
<li><a href="net/ME1312/SubServers/Host/API/Command.html" title="class in net.ME1312.SubServers.Host.API">Command</a></li>
<li><a href="net/ME1312/SubServers/Host/API/Event/CommandPreProcessEvent.html" title="class in net.ME1312.SubServers.Host.API.Event">CommandPreProcessEvent</a></li>
<li><a href="net/ME1312/SubServers/Host/Library/Log/ConsoleStream.html" title="class in net.ME1312.SubServers.Host.Library.Log">ConsoleStream</a></li>
<li><a href="net/ME1312/SubServers/Host/Library/Container.html" title="class in net.ME1312.SubServers.Host.Library">Container</a></li>
<li><a href="net/ME1312/SubServers/Host/Library/Log/ErrorStream.html" title="class in net.ME1312.SubServers.Host.Library.Log">ErrorStream</a></li>
<li><a href="net/ME1312/SubServers/Host/Library/Event/Event.html" title="class in net.ME1312.SubServers.Host.Library.Event">Event</a></li>
@ -35,7 +36,6 @@
<li><a href="net/ME1312/SubServers/Host/Library/Exception/InvalidServerException.html" title="class in net.ME1312.SubServers.Host.Library.Exception">InvalidServerException</a></li>
<li><a href="net/ME1312/SubServers/Host/Library/Exception/InvalidTemplateException.html" title="class in net.ME1312.SubServers.Host.Library.Exception">InvalidTemplateException</a></li>
<li><a href="net/ME1312/SubServers/Host/Library/JSONCallback.html" title="interface in net.ME1312.SubServers.Host.Library"><span class="interfaceName">JSONCallback</span></a></li>
<li><a href="net/ME1312/SubServers/Host/Launch.html" title="class in net.ME1312.SubServers.Host">Launch</a></li>
<li><a href="net/ME1312/SubServers/Host/Library/Event/Listener.html" title="interface in net.ME1312.SubServers.Host.Library.Event"><span class="interfaceName">Listener</span></a></li>
<li><a href="net/ME1312/SubServers/Host/Library/Log/Logger.html" title="class in net.ME1312.SubServers.Host.Library.Log">Logger</a></li>
<li><a href="net/ME1312/SubServers/Host/Library/Log/LogStream.html" title="class in net.ME1312.SubServers.Host.Library.Log">LogStream</a></li>
@ -67,6 +67,7 @@
<li><a href="net/ME1312/SubServers/Host/Network/Packet/PacketOutExRequestQueue.html" title="class in net.ME1312.SubServers.Host.Network.Packet">PacketOutExRequestQueue</a></li>
<li><a href="net/ME1312/SubServers/Host/Network/Packet/PacketStartServer.html" title="class in net.ME1312.SubServers.Host.Network.Packet">PacketStartServer</a></li>
<li><a href="net/ME1312/SubServers/Host/Network/Packet/PacketStopServer.html" title="class in net.ME1312.SubServers.Host.Network.Packet">PacketStopServer</a></li>
<li><a href="net/ME1312/SubServers/Host/Library/PluginClassLoader.html" title="class in net.ME1312.SubServers.Host.Library">PluginClassLoader</a></li>
<li><a href="net/ME1312/SubServers/Host/API/Event/SubAddHostEvent.html" title="class in net.ME1312.SubServers.Host.API.Event">SubAddHostEvent</a></li>
<li><a href="net/ME1312/SubServers/Host/API/Event/SubAddServerEvent.html" title="class in net.ME1312.SubServers.Host.API.Event">SubAddServerEvent</a></li>
<li><a href="net/ME1312/SubServers/Host/SubAPI.html" title="class in net.ME1312.SubServers.Host">SubAPI</a></li>

View File

@ -113,6 +113,10 @@
</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Host/ExHost.html#api">api</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><span class="memberNameLink"><a href="net/ME1312/SubServers/Host/Library/TextColor.html#asAnsiCode--">asAnsiCode()</a></span> - Method in enum net.ME1312.SubServers.Host.Library.<a href="net/ME1312/SubServers/Host/Library/TextColor.html" title="enum in net.ME1312.SubServers.Host.Library">TextColor</a></dt>
<dd>
<div class="block">Get this color as an Ansi Color Code</div>
</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Host/Library/Config/YAMLValue.html#asBoolean--">asBoolean()</a></span> - Method in class net.ME1312.SubServers.Host.Library.Config.<a href="net/ME1312/SubServers/Host/Library/Config/YAMLValue.html" title="class in net.ME1312.SubServers.Host.Library.Config">YAMLValue</a></dt>
<dd>
<div class="block">Get Object as Boolean</div>
@ -161,6 +165,10 @@
<dd>
<div class="block">Get Object as Long List</div>
</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Host/Library/TextColor.html#asMinecraftCode--">asMinecraftCode()</a></span> - Method in enum net.ME1312.SubServers.Host.Library.<a href="net/ME1312/SubServers/Host/Library/TextColor.html" title="enum in net.ME1312.SubServers.Host.Library">TextColor</a></dt>
<dd>
<div class="block">Get this color as a Minecraft Color Code</div>
</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Host/Library/Config/YAMLValue.html#asObject--">asObject()</a></span> - Method in class net.ME1312.SubServers.Host.Library.Config.<a href="net/ME1312/SubServers/Host/Library/Config/YAMLValue.html" title="class in net.ME1312.SubServers.Host.Library.Config">YAMLValue</a></dt>
<dd>
<div class="block">Get Object</div>
@ -283,6 +291,12 @@
</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Host/ExHost.html#config">config</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/Library/Log/ConsoleStream.html" title="class in net.ME1312.SubServers.Host.Library.Log"><span class="typeNameLink">ConsoleStream</span></a> - Class in <a href="net/ME1312/SubServers/Host/Library/Log/package-summary.html">net.ME1312.SubServers.Host.Library.Log</a></dt>
<dd>
<div class="block">Console Log Stream Class</div>
</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Host/Library/Log/ConsoleStream.html#ConsoleStream-jline.console.ConsoleReader-java.io.PrintStream-">ConsoleStream(ConsoleReader, PrintStream)</a></span> - Constructor for class net.ME1312.SubServers.Host.Library.Log.<a href="net/ME1312/SubServers/Host/Library/Log/ConsoleStream.html" title="class in net.ME1312.SubServers.Host.Library.Log">ConsoleStream</a></dt>
<dd>&nbsp;</dd>
<dt><a href="net/ME1312/SubServers/Host/Library/Container.html" title="class in net.ME1312.SubServers.Host.Library"><span class="typeNameLink">Container</span></a>&lt;<a href="net/ME1312/SubServers/Host/Library/Container.html" title="type parameter in Container">V</a>&gt; - Class in <a href="net/ME1312/SubServers/Host/Library/package-summary.html">net.ME1312.SubServers.Host.Library</a></dt>
<dd>
<div class="block">Container Class</div>
@ -295,6 +309,14 @@
<dd>
<div class="block">Check if a Handle exists</div>
</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Host/Library/TextColor.html#convertColor-java.lang.String-">convertColor(String)</a></span> - Static method in enum net.ME1312.SubServers.Host.Library.<a href="net/ME1312/SubServers/Host/Library/TextColor.html" title="enum in net.ME1312.SubServers.Host.Library">TextColor</a></dt>
<dd>
<div class="block">Convert Minecraft color codes to Ansi color codes</div>
</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Host/Library/TextColor.html#convertColor-char-java.lang.String-">convertColor(char, String)</a></span> - Static method in enum net.ME1312.SubServers.Host.Library.<a href="net/ME1312/SubServers/Host/Library/TextColor.html" title="enum in net.ME1312.SubServers.Host.Library">TextColor</a></dt>
<dd>
<div class="block">Convert Minecraft color codes starting with character to Ansi color codes</div>
</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Host/Library/Util.html#copyDirectory-java.io.File-java.io.File-">copyDirectory(File, 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>
<div class="block">Copy a Directory</div>
@ -645,8 +667,6 @@
<dd>
<div class="block">Gets the Client Socket</div>
</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Host/Library/TextColor.html#getColorChar--">getColorChar()</a></span> - Static method in enum net.ME1312.SubServers.Host.Library.<a href="net/ME1312/SubServers/Host/Library/TextColor.html" title="enum in net.ME1312.SubServers.Host.Library">TextColor</a></dt>
<dd>&nbsp;</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Host/Library/Config/YAMLSection.html#getColoredString-java.lang.String-char-">getColoredString(String, char)</a></span> - Method in class net.ME1312.SubServers.Host.Library.Config.<a href="net/ME1312/SubServers/Host/Library/Config/YAMLSection.html" title="class in net.ME1312.SubServers.Host.Library.Config">YAMLSection</a></dt>
<dd>
<div class="block">Get a Colored String by Handle</div>
@ -1127,8 +1147,6 @@
<dd>
<div class="block">Get a UUID List by Handle</div>
</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Host/Library/TextColor.html#getValue--">getValue()</a></span> - Method in enum net.ME1312.SubServers.Host.Library.<a href="net/ME1312/SubServers/Host/Library/TextColor.html" title="enum in net.ME1312.SubServers.Host.Library">TextColor</a></dt>
<dd>&nbsp;</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Host/Network/Packet/PacketExUpdateServer.UpdateType.html#getValue--">getValue()</a></span> - Method in enum net.ME1312.SubServers.Host.Network.Packet.<a href="net/ME1312/SubServers/Host/Network/Packet/PacketExUpdateServer.UpdateType.html" title="enum in net.ME1312.SubServers.Host.Network.Packet">PacketExUpdateServer.UpdateType</a></dt>
<dd>&nbsp;</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Host/Library/Config/YAMLSection.html#getValues--">getValues()</a></span> - Method in class net.ME1312.SubServers.Host.Library.Config.<a href="net/ME1312/SubServers/Host/Library/Config/YAMLSection.html" title="class in net.ME1312.SubServers.Host.Library.Config">YAMLSection</a></dt>
@ -1409,12 +1427,6 @@
<dd>&nbsp;</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Host/Library/Event/EventOrder.html#LATE">LATE</a></span> - Static variable in class net.ME1312.SubServers.Host.Library.Event.<a href="net/ME1312/SubServers/Host/Library/Event/EventOrder.html" title="class in net.ME1312.SubServers.Host.Library.Event">EventOrder</a></dt>
<dd>&nbsp;</dd>
<dt><a href="net/ME1312/SubServers/Host/Launch.html" title="class in net.ME1312.SubServers.Host"><span class="typeNameLink">Launch</span></a> - Class in <a href="net/ME1312/SubServers/Host/package-summary.html">net.ME1312.SubServers.Host</a></dt>
<dd>
<div class="block">SubServers.Host Launcher Class</div>
</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Host/Launch.html#Launch--">Launch()</a></span> - Constructor for class net.ME1312.SubServers.Host.<a href="net/ME1312/SubServers/Host/Launch.html" title="class in net.ME1312.SubServers.Host">Launch</a></dt>
<dd>&nbsp;</dd>
<dt><a href="net/ME1312/SubServers/Host/Library/Event/Listener.html" title="interface in net.ME1312.SubServers.Host.Library.Event"><span class="typeNameLink">Listener</span></a> - Interface in <a href="net/ME1312/SubServers/Host/Library/Event/package-summary.html">net.ME1312.SubServers.Host.Library.Event</a></dt>
<dd>
<div class="block">Simple Listener Layout Class</div>
@ -1443,10 +1455,6 @@
<dd>
<div class="block">SubServers.Host Launch</div>
</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Host/Launch.html#main-java.lang.String:A-">main(String[])</a></span> - Static method in class net.ME1312.SubServers.Host.<a href="net/ME1312/SubServers/Host/Launch.html" title="class in net.ME1312.SubServers.Host">Launch</a></dt>
<dd>
<div class="block">Prepare and launch SubServers.Host</div>
</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Host/Library/Log/Logger.html#message">message</a></span> - Variable in class net.ME1312.SubServers.Host.Library.Log.<a href="net/ME1312/SubServers/Host/Library/Log/Logger.html" title="class in net.ME1312.SubServers.Host.Library.Log">Logger</a></dt>
<dd>&nbsp;</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Host/Network/Packet/PacketExDeleteServer.html#move-java.io.File-java.io.File-">move(File, File)</a></span> - Method in class net.ME1312.SubServers.Host.Network.Packet.<a href="net/ME1312/SubServers/Host/Network/Packet/PacketExDeleteServer.html" title="class in net.ME1312.SubServers.Host.Network.Packet">PacketExDeleteServer</a></dt>
@ -1750,7 +1758,9 @@
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Host/Network/Packet/PacketStopServer.html#PacketStopServer-java.util.UUID-java.lang.String-boolean-net.ME1312.SubServers.Host.Library.JSONCallback...-">PacketStopServer(UUID, String, boolean, JSONCallback...)</a></span> - Constructor for class net.ME1312.SubServers.Host.Network.Packet.<a href="net/ME1312/SubServers/Host/Network/Packet/PacketStopServer.html" title="class in net.ME1312.SubServers.Host.Network.Packet">PacketStopServer</a></dt>
<dd>&nbsp;</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Host/Library/TextColor.html#parseColor-char-java.lang.String-">parseColor(char, String)</a></span> - Static method in enum net.ME1312.SubServers.Host.Library.<a href="net/ME1312/SubServers/Host/Library/TextColor.html" title="enum in net.ME1312.SubServers.Host.Library">TextColor</a></dt>
<dd>&nbsp;</dd>
<dd>
<div class="block">Parse Minecraft color codes starting with character</div>
</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Host/API/Command.html#plugin--">plugin()</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">Gets the Plugin that registering this Command</div>
@ -1759,6 +1769,18 @@
<dd>
<div class="block">Get the Plugin that created this task</div>
</dd>
<dt><a href="net/ME1312/SubServers/Host/Library/PluginClassLoader.html" title="class in net.ME1312.SubServers.Host.Library"><span class="typeNameLink">PluginClassLoader</span></a> - Class in <a href="net/ME1312/SubServers/Host/Library/package-summary.html">net.ME1312.SubServers.Host.Library</a></dt>
<dd>
<div class="block">Plugin ClassLoader Class</div>
</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Host/Library/PluginClassLoader.html#PluginClassLoader-java.net.URL:A-">PluginClassLoader(URL[])</a></span> - Constructor for class net.ME1312.SubServers.Host.Library.<a href="net/ME1312/SubServers/Host/Library/PluginClassLoader.html" title="class in net.ME1312.SubServers.Host.Library">PluginClassLoader</a></dt>
<dd>
<div class="block">Load Classes from URLs</div>
</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Host/Library/PluginClassLoader.html#PluginClassLoader-java.lang.ClassLoader-java.net.URL...-">PluginClassLoader(ClassLoader, URL...)</a></span> - Constructor for class net.ME1312.SubServers.Host.Library.<a href="net/ME1312/SubServers/Host/Library/PluginClassLoader.html" title="class in net.ME1312.SubServers.Host.Library">PluginClassLoader</a></dt>
<dd>
<div class="block">Load Classes from URLs with a parent loader</div>
</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Host/Library/Log/ErrorStream.html#print-java.lang.Throwable-">print(Throwable)</a></span> - Method in class net.ME1312.SubServers.Host.Library.Log.<a href="net/ME1312/SubServers/Host/Library/Log/ErrorStream.html" title="class in net.ME1312.SubServers.Host.Library.Log">ErrorStream</a></dt>
<dd>
<div class="block">Print an Exception</div>
@ -1869,8 +1891,6 @@
<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">
<!-- -->
@ -2009,7 +2029,7 @@
<dd>
<div class="block">Set the Command that Stops the Server</div>
</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Host/Library/Log/Logger.html#setup-java.io.PrintStream-java.io.PrintStream-java.io.File-">setup(PrintStream, PrintStream, File)</a></span> - Static method in class net.ME1312.SubServers.Host.Library.Log.<a href="net/ME1312/SubServers/Host/Library/Log/Logger.html" title="class in net.ME1312.SubServers.Host.Library.Log">Logger</a></dt>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Host/Library/Log/Logger.html#setup-java.io.PrintStream-java.io.PrintStream-jline.console.ConsoleReader-java.io.File-">setup(PrintStream, PrintStream, ConsoleReader, File)</a></span> - Static method in class net.ME1312.SubServers.Host.Library.Log.<a href="net/ME1312/SubServers/Host/Library/Log/Logger.html" title="class in net.ME1312.SubServers.Host.Library.Log">Logger</a></dt>
<dd>
<div class="block">Setup the SubServers Log System</div>
</dd>
@ -2040,7 +2060,9 @@
<div class="block">Stop SubServers.Host</div>
</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Host/Library/TextColor.html#stripColor-java.lang.String-">stripColor(String)</a></span> - Static method in enum net.ME1312.SubServers.Host.Library.<a href="net/ME1312/SubServers/Host/Library/TextColor.html" title="enum in net.ME1312.SubServers.Host.Library">TextColor</a></dt>
<dd>&nbsp;</dd>
<dd>
<div class="block">Removes all Minecraft/Ansi color codes from a string</div>
</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Host/Network/Encryption/AES.StrongEncryptionNotAvailableException.html#StrongEncryptionNotAvailableException-int-">StrongEncryptionNotAvailableException(int)</a></span> - Constructor for exception net.ME1312.SubServers.Host.Network.Encryption.<a href="net/ME1312/SubServers/Host/Network/Encryption/AES.StrongEncryptionNotAvailableException.html" title="class in net.ME1312.SubServers.Host.Network.Encryption">AES.StrongEncryptionNotAvailableException</a></dt>
<dd>&nbsp;</dd>
<dt><a href="net/ME1312/SubServers/Host/API/Event/SubAddHostEvent.html" title="class in net.ME1312.SubServers.Host.API.Event"><span class="typeNameLink">SubAddHostEvent</span></a> - Class in <a href="net/ME1312/SubServers/Host/API/Event/package-summary.html">net.ME1312.SubServers.Host.API.Event</a></dt>
@ -2257,7 +2279,9 @@
<div class="block">Terminates the Server</div>
</dd>
<dt><a href="net/ME1312/SubServers/Host/Library/TextColor.html" title="enum in net.ME1312.SubServers.Host.Library"><span class="typeNameLink">TextColor</span></a> - Enum in <a href="net/ME1312/SubServers/Host/Library/package-summary.html">net.ME1312.SubServers.Host.Library</a></dt>
<dd>&nbsp;</dd>
<dd>
<div class="block">Color Code Converter Enum</div>
</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Host/Executable/Executable.html#toFile--">toFile()</a></span> - Method in class net.ME1312.SubServers.Host.Executable.<a href="net/ME1312/SubServers/Host/Executable/Executable.html" title="class in net.ME1312.SubServers.Host.Executable">Executable</a></dt>
<dd>
<div class="block">Get Executable File</div>
@ -2415,6 +2439,8 @@ the order they are declared.</div>
</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Host/Library/Log/Logger.html#warn">warn</a></span> - Variable in class net.ME1312.SubServers.Host.Library.Log.<a href="net/ME1312/SubServers/Host/Library/Log/Logger.html" title="class in net.ME1312.SubServers.Host.Library.Log">Logger</a></dt>
<dd>&nbsp;</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Host/Library/Log/ConsoleStream.html#write-int-">write(int)</a></span> - Method in class net.ME1312.SubServers.Host.Library.Log.<a href="net/ME1312/SubServers/Host/Library/Log/ConsoleStream.html" title="class in net.ME1312.SubServers.Host.Library.Log">ConsoleStream</a></dt>
<dd>&nbsp;</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Host/Library/Log/FileLogger.html#write-int-">write(int)</a></span> - Method in class net.ME1312.SubServers.Host.Library.Log.<a href="net/ME1312/SubServers/Host/Library/Log/FileLogger.html" title="class in net.ME1312.SubServers.Host.Library.Log">FileLogger</a></dt>
<dd>&nbsp;</dd>
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Host/Library/Log/SystemLogger.html#write-int-">write(int)</a></span> - Method in class net.ME1312.SubServers.Host.Library.Log.<a href="net/ME1312/SubServers/Host/Library/Log/SystemLogger.html" title="class in net.ME1312.SubServers.Host.Library.Log">SystemLogger</a></dt>

View File

@ -48,7 +48,7 @@ var activeTableTab = "activeTableTab";
<div class="subNav">
<ul class="navList">
<li>Prev&nbsp;Class</li>
<li><a href="../../../../net/ME1312/SubServers/Host/Launch.html" title="class in net.ME1312.SubServers.Host"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
<li><a href="../../../../net/ME1312/SubServers/Host/SubAPI.html" title="class in net.ME1312.SubServers.Host"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?net/ME1312/SubServers/Host/ExHost.html" target="_top">Frames</a></li>
@ -157,22 +157,18 @@ 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="rowColor">
<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="altColor">
<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>
@ -274,15 +270,6 @@ 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>
@ -418,7 +405,7 @@ extends java.lang.Object</pre>
<div class="subNav">
<ul class="navList">
<li>Prev&nbsp;Class</li>
<li><a href="../../../../net/ME1312/SubServers/Host/Launch.html" title="class in net.ME1312.SubServers.Host"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
<li><a href="../../../../net/ME1312/SubServers/Host/SubAPI.html" title="class in net.ME1312.SubServers.Host"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?net/ME1312/SubServers/Host/ExHost.html" target="_top">Frames</a></li>

View File

@ -1,279 +0,0 @@
<!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>Launch (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="Launch (SubServers.Host)";
}
}
catch(err) {
}
//-->
var methods = {"i0":9};
var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</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/ExHost.html" title="class in net.ME1312.SubServers.Host"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../net/ME1312/SubServers/Host/SubAPI.html" title="class in net.ME1312.SubServers.Host"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?net/ME1312/SubServers/Host/Launch.html" target="_top">Frames</a></li>
<li><a href="Launch.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="#method.summary">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><a href="#method.detail">Method</a></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</div>
<h2 title="Class Launch" class="title">Class Launch</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li>net.ME1312.SubServers.Host.Launch</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<br>
<pre>public final class <span class="typeNameLabel">Launch</span>
extends java.lang.Object</pre>
<div class="block">SubServers.Host Launcher Class</div>
</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/Launch.html#Launch--">Launch</a></span>()</code>&nbsp;</td>
</tr>
</table>
</li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method.summary">
<!-- -->
</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="t1" class="tableTab"><span><a href="javascript:show(1);">Static 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>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>static void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../net/ME1312/SubServers/Host/Launch.html#main-java.lang.String:A-">main</a></span>(java.lang.String[]&nbsp;args)</code>
<div class="block">Prepare and launch SubServers.Host</div>
</td>
</tr>
</table>
<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, toString, 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="Launch--">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>Launch</h4>
<pre>public&nbsp;Launch()</pre>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="main-java.lang.String:A-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>main</h4>
<pre>public static&nbsp;void&nbsp;main(java.lang.String[]&nbsp;args)
throws java.lang.Exception</pre>
<div class="block">Prepare and launch SubServers.Host</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>args</code> - Args</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</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/ExHost.html" title="class in net.ME1312.SubServers.Host"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../net/ME1312/SubServers/Host/SubAPI.html" title="class in net.ME1312.SubServers.Host"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?net/ME1312/SubServers/Host/Launch.html" target="_top">Frames</a></li>
<li><a href="Launch.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="#method.summary">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><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</body>
</html>

View File

@ -47,7 +47,7 @@ var activeTableTab = "activeTableTab";
</div>
<div class="subNav">
<ul class="navList">
<li>Prev&nbsp;Class</li>
<li><a href="../../../../../../net/ME1312/SubServers/Host/Library/Log/ConsoleStream.html" title="class in net.ME1312.SubServers.Host.Library.Log"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../../net/ME1312/SubServers/Host/Library/Log/FileLogger.html" title="class in net.ME1312.SubServers.Host.Library.Log"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
@ -229,7 +229,7 @@ extends <a href="../../../../../../net/ME1312/SubServers/Host/Library/Log/LogStr
</div>
<div class="subNav">
<ul class="navList">
<li>Prev&nbsp;Class</li>
<li><a href="../../../../../../net/ME1312/SubServers/Host/Library/Log/ConsoleStream.html" title="class in net.ME1312.SubServers.Host.Library.Log"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../../net/ME1312/SubServers/Host/Library/Log/FileLogger.html" title="class in net.ME1312.SubServers.Host.Library.Log"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">

View File

@ -145,7 +145,7 @@ extends java.lang.Object</pre>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../net/ME1312/SubServers/Host/Library/Log/Logger.html#severe">severe</a></span></code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="../../../../../../net/ME1312/SubServers/Host/Library/Log/LogStream.html" title="class in net.ME1312.SubServers.Host.Library.Log">LogStream</a></code></td>
<td class="colFirst"><code><a href="../../../../../../net/ME1312/SubServers/Host/Library/Log/ErrorStream.html" title="class in net.ME1312.SubServers.Host.Library.Log">ErrorStream</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../net/ME1312/SubServers/Host/Library/Log/Logger.html#warn">warn</a></span></code>&nbsp;</td>
</tr>
</table>
@ -184,8 +184,9 @@ extends java.lang.Object</pre>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>static void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../net/ME1312/SubServers/Host/Library/Log/Logger.html#setup-java.io.PrintStream-java.io.PrintStream-java.io.File-">setup</a></span>(java.io.PrintStream&nbsp;out,
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../net/ME1312/SubServers/Host/Library/Log/Logger.html#setup-java.io.PrintStream-java.io.PrintStream-jline.console.ConsoleReader-java.io.File-">setup</a></span>(java.io.PrintStream&nbsp;out,
java.io.PrintStream&nbsp;err,
jline.console.ConsoleReader&nbsp;in,
java.io.File&nbsp;dir)</code>
<div class="block">Setup the SubServers Log System</div>
</td>
@ -236,7 +237,7 @@ extends java.lang.Object</pre>
<ul class="blockList">
<li class="blockList">
<h4>warn</h4>
<pre>public final&nbsp;<a href="../../../../../../net/ME1312/SubServers/Host/Library/Log/LogStream.html" title="class in net.ME1312.SubServers.Host.Library.Log">LogStream</a> warn</pre>
<pre>public final&nbsp;<a href="../../../../../../net/ME1312/SubServers/Host/Library/Log/ErrorStream.html" title="class in net.ME1312.SubServers.Host.Library.Log">ErrorStream</a> warn</pre>
</li>
</ul>
<a name="error">
@ -287,7 +288,7 @@ extends java.lang.Object</pre>
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="setup-java.io.PrintStream-java.io.PrintStream-java.io.File-">
<a name="setup-java.io.PrintStream-java.io.PrintStream-jline.console.ConsoleReader-java.io.File-">
<!-- -->
</a>
<ul class="blockListLast">
@ -295,6 +296,7 @@ extends java.lang.Object</pre>
<h4>setup</h4>
<pre>public static&nbsp;void&nbsp;setup(java.io.PrintStream&nbsp;out,
java.io.PrintStream&nbsp;err,
jline.console.ConsoleReader&nbsp;in,
java.io.File&nbsp;dir)
throws java.io.IOException</pre>
<div class="block">Setup the SubServers Log System</div>
@ -302,6 +304,7 @@ extends java.lang.Object</pre>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>out</code> - System.out</dd>
<dd><code>err</code> - System.err</dd>
<dd><code>in</code> - jline.in</dd>
<dd><code>dir</code> - Runtime Directory</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.io.IOException</code></dd>

View File

@ -12,6 +12,7 @@
<div class="indexContainer">
<h2 title="Classes">Classes</h2>
<ul title="Classes">
<li><a href="ConsoleStream.html" title="class in net.ME1312.SubServers.Host.Library.Log" target="classFrame">ConsoleStream</a></li>
<li><a href="ErrorStream.html" title="class in net.ME1312.SubServers.Host.Library.Log" target="classFrame">ErrorStream</a></li>
<li><a href="FileLogger.html" title="class in net.ME1312.SubServers.Host.Library.Log" target="classFrame">FileLogger</a></li>
<li><a href="Logger.html" title="class in net.ME1312.SubServers.Host.Library.Log" target="classFrame">Logger</a></li>

View File

@ -81,30 +81,36 @@
</tr>
<tbody>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../../net/ME1312/SubServers/Host/Library/Log/ConsoleStream.html" title="class in net.ME1312.SubServers.Host.Library.Log">ConsoleStream</a></td>
<td class="colLast">
<div class="block">Console Log Stream Class</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../../net/ME1312/SubServers/Host/Library/Log/ErrorStream.html" title="class in net.ME1312.SubServers.Host.Library.Log">ErrorStream</a></td>
<td class="colLast">
<div class="block">Error Log Stream Class</div>
</td>
</tr>
<tr class="rowColor">
<tr class="altColor">
<td class="colFirst"><a href="../../../../../../net/ME1312/SubServers/Host/Library/Log/FileLogger.html" title="class in net.ME1312.SubServers.Host.Library.Log">FileLogger</a></td>
<td class="colLast">
<div class="block">Log File Writer Class</div>
</td>
</tr>
<tr class="altColor">
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../../net/ME1312/SubServers/Host/Library/Log/Logger.html" title="class in net.ME1312.SubServers.Host.Library.Log">Logger</a></td>
<td class="colLast">
<div class="block">Logger Class</div>
</td>
</tr>
<tr class="rowColor">
<tr class="altColor">
<td class="colFirst"><a href="../../../../../../net/ME1312/SubServers/Host/Library/Log/LogStream.html" title="class in net.ME1312.SubServers.Host.Library.Log">LogStream</a></td>
<td class="colLast">
<div class="block">Log Stream Class</div>
</td>
</tr>
<tr class="altColor">
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../../net/ME1312/SubServers/Host/Library/Log/SystemLogger.html" title="class in net.ME1312.SubServers.Host.Library.Log">SystemLogger</a></td>
<td class="colLast">
<div class="block">System.out and System.err Override Class</div>

View File

@ -88,6 +88,15 @@
<li type="circle">java.io.OutputStream (implements java.io.Closeable, java.io.Flushable)
<ul>
<li type="circle">net.ME1312.SubServers.Host.Library.Log.<a href="../../../../../../net/ME1312/SubServers/Host/Library/Log/FileLogger.html" title="class in net.ME1312.SubServers.Host.Library.Log"><span class="typeNameLink">FileLogger</span></a></li>
<li type="circle">java.io.FilterOutputStream
<ul>
<li type="circle">java.io.PrintStream (implements java.lang.Appendable, java.io.Closeable)
<ul>
<li type="circle">net.ME1312.SubServers.Host.Library.Log.<a href="../../../../../../net/ME1312/SubServers/Host/Library/Log/ConsoleStream.html" title="class in net.ME1312.SubServers.Host.Library.Log"><span class="typeNameLink">ConsoleStream</span></a></li>
</ul>
</li>
</ul>
</li>
<li type="circle">net.ME1312.SubServers.Host.Library.Log.<a href="../../../../../../net/ME1312/SubServers/Host/Library/Log/SystemLogger.html" title="class in net.ME1312.SubServers.Host.Library.Log"><span class="typeNameLink">SystemLogger</span></a></li>
</ul>
</li>

View File

@ -48,7 +48,7 @@ var activeTableTab = "activeTableTab";
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../net/ME1312/SubServers/Host/Library/JSONCallback.html" title="interface in net.ME1312.SubServers.Host.Library"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../net/ME1312/SubServers/Host/Library/TextColor.html" title="enum in net.ME1312.SubServers.Host.Library"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
<li><a href="../../../../../net/ME1312/SubServers/Host/Library/PluginClassLoader.html" title="class in net.ME1312.SubServers.Host.Library"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?net/ME1312/SubServers/Host/Library/NamedContainer.html" target="_top">Frames</a></li>
@ -300,7 +300,7 @@ extends <a href="../../../../../net/ME1312/SubServers/Host/Library/Container.htm
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../net/ME1312/SubServers/Host/Library/JSONCallback.html" title="interface in net.ME1312.SubServers.Host.Library"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../net/ME1312/SubServers/Host/Library/TextColor.html" title="enum in net.ME1312.SubServers.Host.Library"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
<li><a href="../../../../../net/ME1312/SubServers/Host/Library/PluginClassLoader.html" title="class in net.ME1312.SubServers.Host.Library"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?net/ME1312/SubServers/Host/Library/NamedContainer.html" target="_top">Frames</a></li>

View File

@ -0,0 +1,297 @@
<!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>PluginClassLoader (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="PluginClassLoader (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/NamedContainer.html" title="class in net.ME1312.SubServers.Host.Library"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../net/ME1312/SubServers/Host/Library/TextColor.html" title="enum in net.ME1312.SubServers.Host.Library"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?net/ME1312/SubServers/Host/Library/PluginClassLoader.html" target="_top">Frames</a></li>
<li><a href="PluginClassLoader.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.net.URLClassLoader">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</div>
<h2 title="Class PluginClassLoader" class="title">Class PluginClassLoader</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li>java.lang.ClassLoader</li>
<li>
<ul class="inheritance">
<li>java.security.SecureClassLoader</li>
<li>
<ul class="inheritance">
<li>java.net.URLClassLoader</li>
<li>
<ul class="inheritance">
<li>net.ME1312.SubServers.Host.Library.PluginClassLoader</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.Closeable, java.lang.AutoCloseable</dd>
</dl>
<hr>
<br>
<pre>public class <span class="typeNameLabel">PluginClassLoader</span>
extends java.net.URLClassLoader</pre>
<div class="block">Plugin ClassLoader Class</div>
</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/PluginClassLoader.html#PluginClassLoader-java.lang.ClassLoader-java.net.URL...-">PluginClassLoader</a></span>(java.lang.ClassLoader&nbsp;parent,
java.net.URL...&nbsp;urls)</code>
<div class="block">Load Classes from URLs with a parent loader</div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../net/ME1312/SubServers/Host/Library/PluginClassLoader.html#PluginClassLoader-java.net.URL:A-">PluginClassLoader</a></span>(java.net.URL[]&nbsp;urls)</code>
<div class="block">Load Classes from URLs</div>
</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.net.URLClassLoader">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.net.URLClassLoader</h3>
<code>close, findResource, findResources, getResourceAsStream, getURLs, newInstance, newInstance</code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.java.lang.ClassLoader">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.ClassLoader</h3>
<code>clearAssertionStatus, getParent, getResource, getResources, getSystemClassLoader, getSystemResource, getSystemResourceAsStream, getSystemResources, loadClass, setClassAssertionStatus, setDefaultAssertionStatus, setPackageAssertionStatus</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, toString, 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="PluginClassLoader-java.net.URL:A-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>PluginClassLoader</h4>
<pre>public&nbsp;PluginClassLoader(java.net.URL[]&nbsp;urls)</pre>
<div class="block">Load Classes from URLs</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>urls</code> - URLs</dd>
</dl>
</li>
</ul>
<a name="PluginClassLoader-java.lang.ClassLoader-java.net.URL...-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>PluginClassLoader</h4>
<pre>public&nbsp;PluginClassLoader(java.lang.ClassLoader&nbsp;parent,
java.net.URL...&nbsp;urls)</pre>
<div class="block">Load Classes from URLs with a parent loader</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>parent</code> - Parent loader</dd>
<dd><code>urls</code> - URLs</dd>
</dl>
</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/NamedContainer.html" title="class in net.ME1312.SubServers.Host.Library"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../net/ME1312/SubServers/Host/Library/TextColor.html" title="enum in net.ME1312.SubServers.Host.Library"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?net/ME1312/SubServers/Host/Library/PluginClassLoader.html" target="_top">Frames</a></li>
<li><a href="PluginClassLoader.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.net.URLClassLoader">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,7 +17,7 @@
catch(err) {
}
//-->
var methods = {"i0":9,"i1":10,"i2":9,"i3":9,"i4":10,"i5":9,"i6":9};
var methods = {"i0":10,"i1":10,"i2":9,"i3":9,"i4":9,"i5":9,"i6":10,"i7":9,"i8":9};
var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
@ -47,7 +47,7 @@ var activeTableTab = "activeTableTab";
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../net/ME1312/SubServers/Host/Library/NamedContainer.html" title="class in net.ME1312.SubServers.Host.Library"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../net/ME1312/SubServers/Host/Library/PluginClassLoader.html" title="class in net.ME1312.SubServers.Host.Library"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../net/ME1312/SubServers/Host/Library/UniversalFile.html" title="class in net.ME1312.SubServers.Host.Library"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
@ -118,6 +118,7 @@ var activeTableTab = "activeTableTab";
<br>
<pre>public enum <span class="typeNameLabel">TextColor</span>
extends java.lang.Enum&lt;<a href="../../../../../net/ME1312/SubServers/Host/Library/TextColor.html" title="enum in net.ME1312.SubServers.Host.Library">TextColor</a>&gt;</pre>
<div class="block">Color Code Converter Enum</div>
</li>
</ul>
</div>
@ -217,33 +218,54 @@ extends java.lang.Enum&lt;<a href="../../../../../net/ME1312/SubServers/Host/Lib
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>static char</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../net/ME1312/SubServers/Host/Library/TextColor.html#getColorChar--">getColorChar</a></span>()</code>&nbsp;</td>
<td class="colFirst"><code>java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../net/ME1312/SubServers/Host/Library/TextColor.html#asAnsiCode--">asAnsiCode</a></span>()</code>
<div class="block">Get this color as an Ansi Color Code</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../net/ME1312/SubServers/Host/Library/TextColor.html#getValue--">getValue</a></span>()</code>&nbsp;</td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../net/ME1312/SubServers/Host/Library/TextColor.html#asMinecraftCode--">asMinecraftCode</a></span>()</code>
<div class="block">Get this color as a Minecraft Color Code</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../net/ME1312/SubServers/Host/Library/TextColor.html#parseColor-char-java.lang.String-">parseColor</a></span>(char&nbsp;character,
java.lang.String&nbsp;str)</code>&nbsp;</td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../net/ME1312/SubServers/Host/Library/TextColor.html#convertColor-char-java.lang.String-">convertColor</a></span>(char&nbsp;character,
java.lang.String&nbsp;str)</code>
<div class="block">Convert Minecraft color codes starting with character to Ansi color codes</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../net/ME1312/SubServers/Host/Library/TextColor.html#stripColor-java.lang.String-">stripColor</a></span>(java.lang.String&nbsp;str)</code>&nbsp;</td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../net/ME1312/SubServers/Host/Library/TextColor.html#convertColor-java.lang.String-">convertColor</a></span>(java.lang.String&nbsp;str)</code>
<div class="block">Convert Minecraft color codes to Ansi color codes</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../net/ME1312/SubServers/Host/Library/TextColor.html#parseColor-char-java.lang.String-">parseColor</a></span>(char&nbsp;character,
java.lang.String&nbsp;str)</code>
<div class="block">Parse Minecraft color codes starting with character</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../net/ME1312/SubServers/Host/Library/TextColor.html#stripColor-java.lang.String-">stripColor</a></span>(java.lang.String&nbsp;str)</code>
<div class="block">Removes all Minecraft/Ansi color codes from a string</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../net/ME1312/SubServers/Host/Library/TextColor.html#toString--">toString</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i5" class="rowColor">
<tr id="i7" class="rowColor">
<td class="colFirst"><code>static <a href="../../../../../net/ME1312/SubServers/Host/Library/TextColor.html" title="enum in net.ME1312.SubServers.Host.Library">TextColor</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../net/ME1312/SubServers/Host/Library/TextColor.html#valueOf-java.lang.String-">valueOf</a></span>(java.lang.String&nbsp;name)</code>
<div class="block">Returns the enum constant of this type with the specified name.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<tr id="i8" class="altColor">
<td class="colFirst"><code>static <a href="../../../../../net/ME1312/SubServers/Host/Library/TextColor.html" title="enum in net.ME1312.SubServers.Host.Library">TextColor</a>[]</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../net/ME1312/SubServers/Host/Library/TextColor.html#values--">values</a></span>()</code>
<div class="block">Returns an array containing the constants of this enum type, in
@ -527,6 +549,34 @@ not permitted.)</div>
</dl>
</li>
</ul>
<a name="asMinecraftCode--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>asMinecraftCode</h4>
<pre>public&nbsp;java.lang.String&nbsp;asMinecraftCode()</pre>
<div class="block">Get this color as a Minecraft Color Code</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Minecraft Color Code</dd>
</dl>
</li>
</ul>
<a name="asAnsiCode--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>asAnsiCode</h4>
<pre>public&nbsp;java.lang.String&nbsp;asAnsiCode()</pre>
<div class="block">Get this color as an Ansi Color Code</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Ansi Color Code</dd>
</dl>
</li>
</ul>
<a name="toString--">
<!-- -->
</a>
@ -540,24 +590,6 @@ not permitted.)</div>
</dl>
</li>
</ul>
<a name="getValue--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getValue</h4>
<pre>public&nbsp;java.lang.String&nbsp;getValue()</pre>
</li>
</ul>
<a name="getColorChar--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getColorChar</h4>
<pre>public static&nbsp;char&nbsp;getColorChar()</pre>
</li>
</ul>
<a name="parseColor-char-java.lang.String-">
<!-- -->
</a>
@ -566,6 +598,48 @@ not permitted.)</div>
<h4>parseColor</h4>
<pre>public static&nbsp;java.lang.String&nbsp;parseColor(char&nbsp;character,
java.lang.String&nbsp;str)</pre>
<div class="block">Parse Minecraft color codes starting with character</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>character</code> - Character</dd>
<dd><code>str</code> - String to parse</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Minecraft colored string</dd>
</dl>
</li>
</ul>
<a name="convertColor-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>convertColor</h4>
<pre>public static&nbsp;java.lang.String&nbsp;convertColor(java.lang.String&nbsp;str)</pre>
<div class="block">Convert Minecraft color codes to Ansi color codes</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>str</code> - Minecraft colored string</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Ansi colored string</dd>
</dl>
</li>
</ul>
<a name="convertColor-char-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>convertColor</h4>
<pre>public static&nbsp;java.lang.String&nbsp;convertColor(char&nbsp;character,
java.lang.String&nbsp;str)</pre>
<div class="block">Convert Minecraft color codes starting with character to Ansi color codes</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>character</code> - Character</dd>
<dd><code>str</code> - String to parse</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Ansi colored string</dd>
</dl>
</li>
</ul>
<a name="stripColor-java.lang.String-">
@ -575,6 +649,13 @@ not permitted.)</div>
<li class="blockList">
<h4>stripColor</h4>
<pre>public static&nbsp;java.lang.String&nbsp;stripColor(java.lang.String&nbsp;str)</pre>
<div class="block">Removes all Minecraft/Ansi color codes from a string</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>str</code> - String to parse</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>String without color</dd>
</dl>
</li>
</ul>
</li>
@ -604,7 +685,7 @@ not permitted.)</div>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../net/ME1312/SubServers/Host/Library/NamedContainer.html" title="class in net.ME1312.SubServers.Host.Library"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../net/ME1312/SubServers/Host/Library/PluginClassLoader.html" title="class in net.ME1312.SubServers.Host.Library"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../net/ME1312/SubServers/Host/Library/UniversalFile.html" title="class in net.ME1312.SubServers.Host.Library"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">

View File

@ -21,6 +21,7 @@
<ul title="Classes">
<li><a href="Container.html" title="class in net.ME1312.SubServers.Host.Library" target="classFrame">Container</a></li>
<li><a href="NamedContainer.html" title="class in net.ME1312.SubServers.Host.Library" target="classFrame">NamedContainer</a></li>
<li><a href="PluginClassLoader.html" title="class in net.ME1312.SubServers.Host.Library" target="classFrame">PluginClassLoader</a></li>
<li><a href="UniversalFile.html" title="class in net.ME1312.SubServers.Host.Library" target="classFrame">UniversalFile</a></li>
<li><a href="Util.html" title="class in net.ME1312.SubServers.Host.Library" target="classFrame">Util</a></li>
</ul>

View File

@ -124,12 +124,18 @@
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../net/ME1312/SubServers/Host/Library/PluginClassLoader.html" title="class in net.ME1312.SubServers.Host.Library">PluginClassLoader</a></td>
<td class="colLast">
<div class="block">Plugin ClassLoader Class</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../../net/ME1312/SubServers/Host/Library/UniversalFile.html" title="class in net.ME1312.SubServers.Host.Library">UniversalFile</a></td>
<td class="colLast">
<div class="block">Universal File Class</div>
</td>
</tr>
<tr class="rowColor">
<tr class="altColor">
<td class="colFirst"><a href="../../../../../net/ME1312/SubServers/Host/Library/Util.html" title="class in net.ME1312.SubServers.Host.Library">Util</a></td>
<td class="colLast">
<div class="block">SubServers Utility Class</div>
@ -148,7 +154,9 @@
<tbody>
<tr class="altColor">
<td class="colFirst"><a href="../../../../../net/ME1312/SubServers/Host/Library/TextColor.html" title="enum in net.ME1312.SubServers.Host.Library">TextColor</a></td>
<td class="colLast">&nbsp;</td>
<td class="colLast">
<div class="block">Color Code Converter Enum</div>
</td>
</tr>
</tbody>
</table>

View File

@ -79,6 +79,19 @@
<ul>
<li type="circle">java.lang.Object
<ul>
<li type="circle">java.lang.ClassLoader
<ul>
<li type="circle">java.security.SecureClassLoader
<ul>
<li type="circle">java.net.URLClassLoader (implements java.io.Closeable)
<ul>
<li type="circle">net.ME1312.SubServers.Host.Library.<a href="../../../../../net/ME1312/SubServers/Host/Library/PluginClassLoader.html" title="class in net.ME1312.SubServers.Host.Library"><span class="typeNameLink">PluginClassLoader</span></a></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li type="circle">net.ME1312.SubServers.Host.Library.<a href="../../../../../net/ME1312/SubServers/Host/Library/Container.html" title="class in net.ME1312.SubServers.Host.Library"><span class="typeNameLink">Container</span></a>&lt;V&gt;
<ul>
<li type="circle">net.ME1312.SubServers.Host.Library.<a href="../../../../../net/ME1312/SubServers/Host/Library/NamedContainer.html" title="class in net.ME1312.SubServers.Host.Library"><span class="typeNameLink">NamedContainer</span></a>&lt;T,V&gt;</li>

View File

@ -47,7 +47,7 @@ var activeTableTab = "activeTableTab";
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../net/ME1312/SubServers/Host/Launch.html" title="class in net.ME1312.SubServers.Host"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../net/ME1312/SubServers/Host/ExHost.html" title="class in net.ME1312.SubServers.Host"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../net/ME1312/SubServers/Host/SubCommand.html" title="class in net.ME1312.SubServers.Host"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
@ -656,7 +656,7 @@ public&nbsp;<a href="../../../../net/ME1312/SubServers/Host/ExHost.html" title="
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../net/ME1312/SubServers/Host/Launch.html" title="class in net.ME1312.SubServers.Host"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../net/ME1312/SubServers/Host/ExHost.html" title="class in net.ME1312.SubServers.Host"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../net/ME1312/SubServers/Host/SubCommand.html" title="class in net.ME1312.SubServers.Host"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">

View File

@ -13,7 +13,6 @@
<h2 title="Classes">Classes</h2>
<ul title="Classes">
<li><a href="ExHost.html" title="class in net.ME1312.SubServers.Host" target="classFrame">ExHost</a></li>
<li><a href="Launch.html" title="class in net.ME1312.SubServers.Host" target="classFrame">Launch</a></li>
<li><a href="SubAPI.html" title="class in net.ME1312.SubServers.Host" target="classFrame">SubAPI</a></li>
<li><a href="SubCommand.html" title="class in net.ME1312.SubServers.Host" target="classFrame">SubCommand</a></li>
</ul>

View File

@ -87,18 +87,12 @@
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../net/ME1312/SubServers/Host/Launch.html" title="class in net.ME1312.SubServers.Host">Launch</a></td>
<td class="colLast">
<div class="block">SubServers.Host Launcher Class</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../net/ME1312/SubServers/Host/SubAPI.html" title="class in net.ME1312.SubServers.Host">SubAPI</a></td>
<td class="colLast">
<div class="block">SubAPI Class</div>
</td>
</tr>
<tr class="rowColor">
<tr class="altColor">
<td class="colFirst"><a href="../../../../net/ME1312/SubServers/Host/SubCommand.html" title="class in net.ME1312.SubServers.Host">SubCommand</a></td>
<td class="colLast">
<div class="block">Command Class</div>

View File

@ -80,7 +80,6 @@
<li type="circle">java.lang.Object
<ul>
<li type="circle">net.ME1312.SubServers.Host.<a href="../../../../net/ME1312/SubServers/Host/ExHost.html" title="class in net.ME1312.SubServers.Host"><span class="typeNameLink">ExHost</span></a></li>
<li type="circle">net.ME1312.SubServers.Host.<a href="../../../../net/ME1312/SubServers/Host/Launch.html" title="class in net.ME1312.SubServers.Host"><span class="typeNameLink">Launch</span></a></li>
<li type="circle">net.ME1312.SubServers.Host.<a href="../../../../net/ME1312/SubServers/Host/SubAPI.html" title="class in net.ME1312.SubServers.Host"><span class="typeNameLink">SubAPI</span></a></li>
<li type="circle">net.ME1312.SubServers.Host.<a href="../../../../net/ME1312/SubServers/Host/SubCommand.html" title="class in net.ME1312.SubServers.Host"><span class="typeNameLink">SubCommand</span></a></li>
</ul>

View File

@ -92,6 +92,19 @@
<li type="circle">java.lang.Object
<ul>
<li type="circle">net.ME1312.SubServers.Host.Network.Encryption.<a href="net/ME1312/SubServers/Host/Network/Encryption/AES.html" title="class in net.ME1312.SubServers.Host.Network.Encryption"><span class="typeNameLink">AES</span></a> (implements net.ME1312.SubServers.Host.Network.<a href="net/ME1312/SubServers/Host/Network/Cipher.html" title="interface in net.ME1312.SubServers.Host.Network">Cipher</a>)</li>
<li type="circle">java.lang.ClassLoader
<ul>
<li type="circle">java.security.SecureClassLoader
<ul>
<li type="circle">java.net.URLClassLoader (implements java.io.Closeable)
<ul>
<li type="circle">net.ME1312.SubServers.Host.Library.<a href="net/ME1312/SubServers/Host/Library/PluginClassLoader.html" title="class in net.ME1312.SubServers.Host.Library"><span class="typeNameLink">PluginClassLoader</span></a></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li type="circle">net.ME1312.SubServers.Host.API.<a href="net/ME1312/SubServers/Host/API/Command.html" title="class in net.ME1312.SubServers.Host.API"><span class="typeNameLink">Command</span></a></li>
<li type="circle">net.ME1312.SubServers.Host.Library.<a href="net/ME1312/SubServers/Host/Library/Container.html" title="class in net.ME1312.SubServers.Host.Library"><span class="typeNameLink">Container</span></a>&lt;V&gt;
<ul>
@ -126,7 +139,6 @@
<li type="circle">net.ME1312.SubServers.Host.Library.<a href="net/ME1312/SubServers/Host/Library/UniversalFile.html" title="class in net.ME1312.SubServers.Host.Library"><span class="typeNameLink">UniversalFile</span></a></li>
</ul>
</li>
<li type="circle">net.ME1312.SubServers.Host.<a href="net/ME1312/SubServers/Host/Launch.html" title="class in net.ME1312.SubServers.Host"><span class="typeNameLink">Launch</span></a></li>
<li type="circle">net.ME1312.SubServers.Host.Library.Log.<a href="net/ME1312/SubServers/Host/Library/Log/Logger.html" title="class in net.ME1312.SubServers.Host.Library.Log"><span class="typeNameLink">Logger</span></a></li>
<li type="circle">net.ME1312.SubServers.Host.Library.Log.<a href="net/ME1312/SubServers/Host/Library/Log/LogStream.html" title="class in net.ME1312.SubServers.Host.Library.Log"><span class="typeNameLink">LogStream</span></a>
<ul>
@ -136,6 +148,15 @@
<li type="circle">java.io.OutputStream (implements java.io.Closeable, java.io.Flushable)
<ul>
<li type="circle">net.ME1312.SubServers.Host.Library.Log.<a href="net/ME1312/SubServers/Host/Library/Log/FileLogger.html" title="class in net.ME1312.SubServers.Host.Library.Log"><span class="typeNameLink">FileLogger</span></a></li>
<li type="circle">java.io.FilterOutputStream
<ul>
<li type="circle">java.io.PrintStream (implements java.lang.Appendable, java.io.Closeable)
<ul>
<li type="circle">net.ME1312.SubServers.Host.Library.Log.<a href="net/ME1312/SubServers/Host/Library/Log/ConsoleStream.html" title="class in net.ME1312.SubServers.Host.Library.Log"><span class="typeNameLink">ConsoleStream</span></a></li>
</ul>
</li>
</ul>
</li>
<li type="circle">net.ME1312.SubServers.Host.Library.Log.<a href="net/ME1312/SubServers/Host/Library/Log/SystemLogger.html" title="class in net.ME1312.SubServers.Host.Library.Log"><span class="typeNameLink">SystemLogger</span></a></li>
</ul>
</li>

View File

@ -1,88 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project name="module_subservers.bungee" default="compile.module.subservers.bungee">
<dirname property="module.subservers.bungee.basedir" file="${ant.file.module_subservers.bungee}"/>
<property name="module.jdk.home.subservers.bungee" value="${project.jdk.home}"/>
<property name="module.jdk.bin.subservers.bungee" value="${project.jdk.bin}"/>
<property name="module.jdk.classpath.subservers.bungee" value="${project.jdk.classpath}"/>
<property name="compiler.args.subservers.bungee" value="-encoding UTF-8 -source 1.8 -target 1.8 ${compiler.args}"/>
<property name="subservers.bungee.output.dir" value="${module.subservers.bungee.basedir}/../out/compile/production/SubServers.Bungee"/>
<property name="subservers.bungee.testoutput.dir" value="${module.subservers.bungee.basedir}/../out/compile/test/SubServers.Bungee"/>
<path id="subservers.bungee.module.bootclasspath">
<!-- Paths to be included in compilation bootclasspath -->
</path>
<path id="subservers.bungee.module.production.classpath">
<path refid="${module.jdk.classpath.subservers.bungee}"/>
<pathelement location="${basedir}/../~lib/json.jar"/>
<pathelement location="${basedir}/../~lib/BungeeCord-1.8.jar"/>
<pathelement location="${basedir}/../~lib/RedisBungee.jar"/>
</path>
<path id="subservers.bungee.runtime.production.module.classpath">
<pathelement location="${subservers.bungee.output.dir}"/>
<pathelement location="${basedir}/../~lib/json.jar"/>
</path>
<path id="subservers.bungee.module.classpath">
<path refid="${module.jdk.classpath.subservers.bungee}"/>
<pathelement location="${subservers.bungee.output.dir}"/>
<pathelement location="${basedir}/../~lib/json.jar"/>
<pathelement location="${basedir}/../~lib/BungeeCord-1.8.jar"/>
<pathelement location="${basedir}/../~lib/RedisBungee.jar"/>
</path>
<path id="subservers.bungee.runtime.module.classpath">
<pathelement location="${subservers.bungee.testoutput.dir}"/>
<pathelement location="${subservers.bungee.output.dir}"/>
<pathelement location="${basedir}/../~lib/json.jar"/>
<pathelement location="${basedir}/../~lib/BungeeCord-1.8.jar"/>
<pathelement location="${basedir}/../~lib/RedisBungee.jar"/>
</path>
<patternset id="excluded.from.module.subservers.bungee">
<patternset refid="ignored.files"/>
</patternset>
<patternset id="excluded.from.compilation.subservers.bungee">
<patternset refid="excluded.from.module.subservers.bungee"/>
</patternset>
<path id="subservers.bungee.module.sourcepath">
<dirset dir="${module.subservers.bungee.basedir}">
<include name="src"/>
</dirset>
</path>
<target name="compile.module.subservers.bungee" depends="compile.module.subservers.bungee.production,compile.module.subservers.bungee.tests" description="Compile module SubServers.Bungee"/>
<target name="compile.module.subservers.bungee.production" depends="register.custom.compilers" description="Compile module SubServers.Bungee; production classes">
<mkdir dir="${subservers.bungee.output.dir}"/>
<javac2 destdir="${subservers.bungee.output.dir}" debug="${compiler.debug}" nowarn="${compiler.generate.no.warnings}" memorymaximumsize="${compiler.max.memory}" fork="true" executable="${module.jdk.bin.subservers.bungee}/javac">
<compilerarg line="${compiler.args.subservers.bungee}"/>
<bootclasspath refid="subservers.bungee.module.bootclasspath"/>
<classpath refid="subservers.bungee.module.production.classpath"/>
<src refid="subservers.bungee.module.sourcepath"/>
<patternset refid="excluded.from.compilation.subservers.bungee"/>
</javac2>
<copy todir="${subservers.bungee.output.dir}">
<fileset dir="${module.subservers.bungee.basedir}/src">
<patternset refid="compiler.resources"/>
<type type="file"/>
</fileset>
</copy>
</target>
<target name="compile.module.subservers.bungee.tests" depends="register.custom.compilers,compile.module.subservers.bungee.production" description="compile module SubServers.Bungee; test classes" unless="skip.tests"/>
<target name="clean.module.subservers.bungee" description="cleanup module">
<delete dir="${subservers.bungee.output.dir}"/>
<delete dir="${subservers.bungee.testoutput.dir}"/>
</target>
</project>

Binary file not shown.

View File

@ -389,14 +389,8 @@ public abstract class Host implements ExtraDataHandler {
JSONObject cinfo = new JSONObject();
JSONObject templates = new JSONObject();
for (SubCreator.ServerTemplate template : getCreator().getTemplates().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());
templates.put(template.getName(), tinfo);
}
for (SubCreator.ServerTemplate template : getCreator().getTemplates().values())
templates.put(template.getName(), new JSONObject(template.toString()));
cinfo.put("templates", templates);
hinfo.put("creator", cinfo);

View File

@ -90,6 +90,7 @@ public class InternalSubServer extends SubServerContainer {
new UniversalFile(this.directory, "plugins:SubServers.Client.jar").delete();
Util.copyFromJar(SubPlugin.class.getClassLoader(), "net/ME1312/SubServers/Bungee/Library/Files/Client/spigot.jar", new UniversalFile(this.directory, "plugins:SubServers.Client.jar").getPath());
}
jar.close();
} catch (Throwable e) {
System.out.println("Couldn't auto-update SubServers.Client.jar");
e.printStackTrace();

View File

@ -7,6 +7,7 @@ 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 org.json.JSONObject;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
@ -134,7 +135,6 @@ public abstract class SubCreator {
return directory;
}
/**
* Get the Type of this Template
*
@ -161,6 +161,16 @@ public abstract class SubCreator {
public YAMLSection getConfigOptions() {
return options;
}
@Override
public String toString() {
JSONObject tinfo = new JSONObject();
tinfo.put("enabled", isEnabled());
tinfo.put("display", getDisplayName());
tinfo.put("icon", getIcon());
tinfo.put("type", getType().toString());
return tinfo.toString();
}
}
public enum ServerType {
SPIGOT,

View File

@ -84,7 +84,7 @@ Lang:
'Interface.Host-Menu.Host-Server-Count': '&9$int$ Server(s)'
'Interface.Host-Menu.No-Hosts': '&c&oThere are No Hosts'
'Interface.Host-Menu.Group-Menu': '&6&lView Servers by Group'
'Interface.Host-Menu.SubServer-Menu': '&a&lView Servers'
'Interface.Host-Menu.Server-Menu': '&a&lView Servers'
'Interface.Host-Admin.Title': 'Host/$str$'
'Interface.Host-Admin.Creator': '&eCreate a SubServer'
'Interface.Host-Admin.SubServers': '&aView SubServers'

View File

@ -64,14 +64,8 @@ public class PacketDownloadHostInfo implements PacketIn, PacketOut {
JSONObject cinfo = new JSONObject();
JSONObject templates = new JSONObject();
for (SubCreator.ServerTemplate template : host.getCreator().getTemplates().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());
templates.put(template.getName(), tinfo);
}
for (SubCreator.ServerTemplate template : host.getCreator().getTemplates().values())
templates.put(template.getName(), new JSONObject(template.toString()));
cinfo.put("templates", templates);
info.put("creator", cinfo);

View File

@ -90,7 +90,7 @@ public class PacketOutRunEvent implements Listener, PacketOut {
args.put("player", ((event.getPlayer() == null)?null:event.getPlayer().toString()));
args.put("host", event.getHost().getName());
args.put("name", event.getName());
args.put("template", event.getTemplate().toString());
args.put("template", event.getTemplate().getName());
args.put("version", event.getVersion().toString());
args.put("port", event.getPort());
plugin.subdata.broadcastPacket(new PacketOutRunEvent(event.getClass(), args));

View File

@ -224,6 +224,7 @@ public final class SubCommand extends CommandX {
if (!server.getName().equals(server.getDisplayName())) sender.sendMessage(" - Real Name: " + server.getName());
sender.sendMessage(" - Host: " + server.getHost().getDisplayName() + ((!server.getHost().getName().equals(server.getHost().getDisplayName()))?" ("+server.getHost().getName()+')':""));
sender.sendMessage(" - Enabled: " + ((server.isEnabled())?"yes":"no"));
sender.sendMessage(" - Editable: " + ((server.isEditable())?"yes":"no"));
if (server.getGroups().size() > 0) {
sender.sendMessage(" - Groups:");
for (String group : server.getGroups()) sender.sendMessage(" - " + group);
@ -239,6 +240,7 @@ public final class SubCommand extends CommandX {
sender.sendMessage(" - Incompatibilities:");
for (SubServer other : server.getIncompatibilities()) sender.sendMessage(" - " + other.getDisplayName() + ((current.contains(other))?"*":"") + ((!other.getName().equals(other.getDisplayName()))?" ("+other.getName()+')':""));
}
sender.sendMessage(" - Signature: " + server.getSignature());
}
} else {

View File

@ -63,7 +63,7 @@ public final class SubPlugin extends BungeeCord implements Listener {
public long resetDate = 0;
private boolean running = false;
private boolean posted = false;
private static BigInteger lastSignature = new BigInteger("-1");
private static BigInteger lastSignature = BigInteger.valueOf(-1);
@SuppressWarnings("unchecked")
protected SubPlugin(PrintStream out) throws IOException {
@ -563,7 +563,7 @@ public final class SubPlugin extends BungeeCord implements Listener {
String getNewSignature() {
BigInteger number = (lastSignature = lastSignature.add(BigInteger.ONE));
final String DIGITS = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz+/";
final String DIGITS = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_";
final BigInteger BASE = BigInteger.valueOf(DIGITS.length());
StringBuilder result = new StringBuilder();
@ -581,11 +581,10 @@ public final class SubPlugin extends BungeeCord implements Listener {
*
* @param method Method to reference
* @param args Method arguments
* @param <T> Class Type
* @return Method Response
*/
@SuppressWarnings("unchecked")
public <T> Object redis(String method, NamedContainer<Class<?>, ?>... args) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
public Object redis(String method, NamedContainer<Class<?>, ?>... args) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
if (redis) {
Object api = getPluginManager().getPlugin("RedisBungee").getClass().getMethod("getApi").invoke(null);
Class<?>[] classargs = new Class<?>[args.length];
@ -642,18 +641,6 @@ public final class SubPlugin extends BungeeCord implements Listener {
return servers;
}
/**
* Emulate BungeeCord's getServerInfo()
*
* @param name Server Name (Case Sensitive)
* @see SubAPI#getServer(String)
* @return Server Info
*/
@Override
public ServerInfo getServerInfo(String name) {
return getServers().get(name);
}
@EventHandler(priority = Byte.MAX_VALUE)
public void reroute(ServerConnectEvent e) {
Map<String, ServerInfo> servers = new TreeMap<String, ServerInfo>(api.getServers());

View File

@ -1,85 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project name="module_subservers.console" default="compile.module.subservers.console">
<dirname property="module.subservers.console.basedir" file="${ant.file.module_subservers.console}"/>
<property name="module.jdk.home.subservers.console" value="${project.jdk.home}"/>
<property name="module.jdk.bin.subservers.console" value="${project.jdk.bin}"/>
<property name="module.jdk.classpath.subservers.console" value="${project.jdk.classpath}"/>
<property name="compiler.args.subservers.console" value="-encoding UTF-8 -source 1.8 -target 1.8 ${compiler.args}"/>
<property name="subservers.console.output.dir" value="${module.subservers.console.basedir}/../out/compile/production/SubServers.Console"/>
<property name="subservers.console.testoutput.dir" value="${module.subservers.console.basedir}/../out/compile/test/SubServers.Console"/>
<path id="subservers.console.module.bootclasspath">
<!-- Paths to be included in compilation bootclasspath -->
</path>
<path id="subservers.console.module.production.classpath">
<path refid="${module.jdk.classpath.subservers.console}"/>
<pathelement location="${basedir}/../~lib/BungeeCord-1.8.jar"/>
<pathelement location="${subservers.bungee.output.dir}"/>
</path>
<path id="subservers.console.runtime.production.module.classpath">
<pathelement location="${subservers.console.output.dir}"/>
</path>
<path id="subservers.console.module.classpath">
<path refid="${module.jdk.classpath.subservers.console}"/>
<pathelement location="${subservers.console.output.dir}"/>
<pathelement location="${basedir}/../~lib/BungeeCord-1.8.jar"/>
<pathelement location="${subservers.bungee.testoutput.dir}"/>
<pathelement location="${subservers.bungee.output.dir}"/>
</path>
<path id="subservers.console.runtime.module.classpath">
<pathelement location="${subservers.console.testoutput.dir}"/>
<pathelement location="${subservers.console.output.dir}"/>
<pathelement location="${basedir}/../~lib/BungeeCord-1.8.jar"/>
<path refid="subservers.bungee.runtime.module.classpath"/>
</path>
<patternset id="excluded.from.module.subservers.console">
<patternset refid="ignored.files"/>
</patternset>
<patternset id="excluded.from.compilation.subservers.console">
<patternset refid="excluded.from.module.subservers.console"/>
</patternset>
<path id="subservers.console.module.sourcepath">
<dirset dir="${module.subservers.console.basedir}">
<include name="src"/>
</dirset>
</path>
<target name="compile.module.subservers.console" depends="compile.module.subservers.console.production,compile.module.subservers.console.tests" description="Compile module SubServers.Console"/>
<target name="compile.module.subservers.console.production" depends="register.custom.compilers,compile.module.subservers.bungee" description="Compile module SubServers.Console; production classes">
<mkdir dir="${subservers.console.output.dir}"/>
<javac2 destdir="${subservers.console.output.dir}" debug="${compiler.debug}" nowarn="${compiler.generate.no.warnings}" memorymaximumsize="${compiler.max.memory}" fork="true" executable="${module.jdk.bin.subservers.console}/javac">
<compilerarg line="${compiler.args.subservers.console}"/>
<bootclasspath refid="subservers.console.module.bootclasspath"/>
<classpath refid="subservers.console.module.production.classpath"/>
<src refid="subservers.console.module.sourcepath"/>
<patternset refid="excluded.from.compilation.subservers.console"/>
</javac2>
<copy todir="${subservers.console.output.dir}">
<fileset dir="${module.subservers.console.basedir}/src">
<patternset refid="compiler.resources"/>
<type type="file"/>
</fileset>
</copy>
</target>
<target name="compile.module.subservers.console.tests" depends="register.custom.compilers,compile.module.subservers.console.production" description="compile module SubServers.Console; test classes" unless="skip.tests"/>
<target name="clean.module.subservers.console" description="cleanup module">
<delete dir="${subservers.console.output.dir}"/>
<delete dir="${subservers.console.testoutput.dir}"/>
</target>
</project>

View File

@ -1,2 +1,2 @@
Manifest-Version: 1.0
Main-Class: net.ME1312.SubServers.Host.Launch
Main-Class: net.ME1312.SubServers.Host.ExHost

View File

@ -1,90 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project name="module_subservers.host" default="compile.module.subservers.host">
<dirname property="module.subservers.host.basedir" file="${ant.file.module_subservers.host}"/>
<property name="module.jdk.home.subservers.host" value="${project.jdk.home}"/>
<property name="module.jdk.bin.subservers.host" value="${project.jdk.bin}"/>
<property name="module.jdk.classpath.subservers.host" value="${project.jdk.classpath}"/>
<property name="compiler.args.subservers.host" value="-encoding UTF-8 -source 1.8 -target 1.8 ${compiler.args}"/>
<property name="subservers.host.output.dir" value="${module.subservers.host.basedir}/../out/compile/production/SubServers.Host"/>
<property name="subservers.host.testoutput.dir" value="${module.subservers.host.basedir}/../out/compile/test/SubServers.Host"/>
<path id="subservers.host.module.bootclasspath">
<!-- Paths to be included in compilation bootclasspath -->
</path>
<path id="subservers.host.module.production.classpath">
<path refid="${module.jdk.classpath.subservers.host}"/>
<pathelement location="${basedir}/../~lib/json.jar"/>
<pathelement location="${basedir}/../~lib/jline-2.12.jar"/>
<pathelement location="${basedir}/../~lib/jansi-1.16.jar"/>
</path>
<path id="subservers.host.runtime.production.module.classpath">
<pathelement location="${subservers.host.output.dir}"/>
<pathelement location="${basedir}/../~lib/json.jar"/>
<pathelement location="${basedir}/../~lib/jline-2.12.jar"/>
<pathelement location="${basedir}/../~lib/jansi-1.16.jar"/>
</path>
<path id="subservers.host.module.classpath">
<path refid="${module.jdk.classpath.subservers.host}"/>
<pathelement location="${subservers.host.output.dir}"/>
<pathelement location="${basedir}/../~lib/json.jar"/>
<pathelement location="${basedir}/../~lib/jline-2.12.jar"/>
<pathelement location="${basedir}/../~lib/jansi-1.16.jar"/>
</path>
<path id="subservers.host.runtime.module.classpath">
<pathelement location="${subservers.host.testoutput.dir}"/>
<pathelement location="${subservers.host.output.dir}"/>
<pathelement location="${basedir}/../~lib/json.jar"/>
<pathelement location="${basedir}/../~lib/jline-2.12.jar"/>
<pathelement location="${basedir}/../~lib/jansi-1.16.jar"/>
</path>
<patternset id="excluded.from.module.subservers.host">
<patternset refid="ignored.files"/>
</patternset>
<patternset id="excluded.from.compilation.subservers.host">
<patternset refid="excluded.from.module.subservers.host"/>
</patternset>
<path id="subservers.host.module.sourcepath">
<dirset dir="${module.subservers.host.basedir}">
<include name="src"/>
</dirset>
</path>
<target name="compile.module.subservers.host" depends="compile.module.subservers.host.production,compile.module.subservers.host.tests" description="Compile module SubServers.Host"/>
<target name="compile.module.subservers.host.production" depends="register.custom.compilers" description="Compile module SubServers.Host; production classes">
<mkdir dir="${subservers.host.output.dir}"/>
<javac2 destdir="${subservers.host.output.dir}" debug="${compiler.debug}" nowarn="${compiler.generate.no.warnings}" memorymaximumsize="${compiler.max.memory}" fork="true" executable="${module.jdk.bin.subservers.host}/javac">
<compilerarg line="${compiler.args.subservers.host}"/>
<bootclasspath refid="subservers.host.module.bootclasspath"/>
<classpath refid="subservers.host.module.production.classpath"/>
<src refid="subservers.host.module.sourcepath"/>
<patternset refid="excluded.from.compilation.subservers.host"/>
</javac2>
<copy todir="${subservers.host.output.dir}">
<fileset dir="${module.subservers.host.basedir}/src">
<patternset refid="compiler.resources"/>
<type type="file"/>
</fileset>
</copy>
</target>
<target name="compile.module.subservers.host.tests" depends="register.custom.compilers,compile.module.subservers.host.production" description="compile module SubServers.Host; test classes" unless="skip.tests"/>
<target name="clean.module.subservers.host" description="cleanup module">
<delete dir="${subservers.host.output.dir}"/>
<delete dir="${subservers.host.testoutput.dir}"/>
</target>
</project>

Binary file not shown.

View File

@ -1,5 +1,6 @@
package net.ME1312.SubServers.Host;
import jline.console.ConsoleReader;
import net.ME1312.SubServers.Host.API.Event.CommandPreProcessEvent;
import net.ME1312.SubServers.Host.API.Event.SubDisableEvent;
import net.ME1312.SubServers.Host.API.Event.SubEnableEvent;
@ -13,12 +14,14 @@ import net.ME1312.SubServers.Host.Library.Config.YAMLSection;
import net.ME1312.SubServers.Host.Library.Exception.IllegalPluginException;
import net.ME1312.SubServers.Host.Library.Log.FileLogger;
import net.ME1312.SubServers.Host.Library.Log.Logger;
import net.ME1312.SubServers.Host.Library.PluginClassLoader;
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;
import net.ME1312.SubServers.Host.Network.Cipher;
import net.ME1312.SubServers.Host.Network.SubDataClient;
import org.fusesource.jansi.AnsiConsole;
import org.json.JSONObject;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
@ -30,14 +33,14 @@ import java.io.*;
import java.lang.reflect.InvocationTargetException;
import java.net.InetAddress;
import java.net.URL;
import java.net.URLDecoder;
import java.net.URLClassLoader;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.text.DecimalFormat;
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
/**
* SubServers.Host Main Class
@ -50,7 +53,6 @@ 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 SubDataClient subdata = null;
@ -59,6 +61,7 @@ public final class ExHost {
public final Version bversion = new Version(2);
public final SubAPI api = new SubAPI(this);
private ConsoleReader jline;
private boolean running = false;
private boolean ready = false;
@ -70,18 +73,34 @@ public final class ExHost {
*/
public static void main(String[] args) throws Exception {
if (System.getProperty("RM.subservers", "true").equalsIgnoreCase("true")) {
new ExHost(new File(URLDecoder.decode(System.getProperty("subservers.host.runtime"), "UTF-8")), args);
new ExHost(args);
} else {
System.out.println(">> SubServers code has been disallowed to work on this machine");
System.out.println(">> Check with your provider for more information");
System.exit(1);
}
}
private ExHost(File runtime, String[] args) {
this.runtime = new UniversalFile(runtime);
private ExHost(String[] args) {
try {
JarFile jarFile = new JarFile(new File(ExHost.class.getProtectionDomain().getCodeSource().getLocation().toURI()));
Enumeration<JarEntry> entries = jarFile.entries();
boolean isplugin = false;
while (entries.hasMoreElements()) {
JarEntry entry = entries.nextElement();
if (!entry.isDirectory() && entry.getName().endsWith(".class")) {
api.knownClasses.add(entry.getName().substring(0, entry.getName().length() - 6).replace('/', '.'));
}
}
} catch (Exception e) {
e.printStackTrace();
}
log = new Logger("SubServers");
try {
Logger.setup(System.out, System.err, dir);
jline = new ConsoleReader(System.in, AnsiConsole.out());
Logger.setup(AnsiConsole.out(), AnsiConsole.err(), jline, dir);
log.info.println("Loading SubServers.Host v" + version.toString() + " Libraries");
dir.mkdirs();
new File(dir, "Plugins").mkdir();
@ -96,6 +115,11 @@ public final class ExHost {
}
config = new YAMLConfig(new UniversalFile(dir, "config.yml"));
if (!(new UniversalFile(dir, "Templates").exists())) {
new UniversalFile(dir, "Templates").mkdir();
log.info.println("Created ~/Templates/");
}
if (new UniversalFile(dir, "Recently Deleted").exists()) {
int f = new UniversalFile(dir, "Recently Deleted").listFiles().length;
for (File file : new UniversalFile(dir, "Recently Deleted").listFiles()) {
@ -154,49 +178,152 @@ public final class ExHost {
}));
creator = new SubCreator(this);
if (System.getProperty("subservers.host.plugins", "").length() > 0) {
UniversalFile pldir = new UniversalFile(dir, "Plugins");
if (pldir.exists() && pldir.listFiles().length > 0) {
long begin = Calendar.getInstance().getTime().getTime();
long i = 0;
log.info.println("Loading SubAPI Plugins...");
/*
* Decode Plugin List Variable
* Find Jars
*/
String decoded = URLDecoder.decode(System.getProperty("subservers.host.plugins"), "UTF-8");
List<String> classes = new LinkedList<String>();
HashMap<String, SubPluginInfo> plugins = new LinkedHashMap<String, SubPluginInfo>();
if (!decoded.contains(" ")) {
classes.add(decoded);
} else {
classes.addAll(Arrays.asList(decoded.split(" ")));
LinkedList<URL> jars = new LinkedList<URL>();
for (File file : pldir.listFiles()) {
if (file.getName().endsWith(".jar")) {
jars.add(file.toURI().toURL());
}
}
/*
* Load Main Classes & Plugin Descriptions
* Find & Pre-Load Main Classes
* (Unordered)
*/
for (String main : classes) {
try {
Class<?> clazz = Class.forName(main);
if (!clazz.isAnnotationPresent(SubPlugin.class)) throw new ClassCastException("Cannot find plugin descriptor");
Object obj = clazz.getConstructor().newInstance();
URLClassLoader superloader = new URLClassLoader(jars.toArray(new URL[jars.size()]), this.getClass().getClassLoader());
LinkedHashMap<String, NamedContainer<LinkedList<String>, LinkedHashMap<String, String>>> classes = new LinkedHashMap<String, NamedContainer<LinkedList<String>, LinkedHashMap<String, String>>>();
for (File file : pldir.listFiles()) {
if (file.getName().endsWith(".jar")) {
try {
SubPluginInfo plugin = new SubPluginInfo(this, obj, clazz.getAnnotation(SubPlugin.class).name(), new Version(clazz.getAnnotation(SubPlugin.class).version()),
Arrays.asList(clazz.getAnnotation(SubPlugin.class).authors()), (clazz.getAnnotation(SubPlugin.class).description().length() > 0)?clazz.getAnnotation(SubPlugin.class).description():null,
(clazz.getAnnotation(SubPlugin.class).website().length() > 0)?new URL(clazz.getAnnotation(SubPlugin.class).website()):null, Arrays.asList(clazz.getAnnotation(SubPlugin.class).loadBefore()),
Arrays.asList(clazz.getAnnotation(SubPlugin.class).dependencies()), Arrays.asList(clazz.getAnnotation(SubPlugin.class).softDependencies()));
if (plugins.keySet().contains(plugin.getName().toLowerCase())) log.warn.println("Duplicate plugin: " + plugin.getName().toLowerCase());
plugin.addExtra("subservers.plugin.loadafter", new ArrayList<String>());
plugins.put(plugin.getName().toLowerCase(), plugin);
JarFile jar = new JarFile(file);
Enumeration<JarEntry> entries = jar.entries();
LinkedList<String> mains = new LinkedList<String>();
List<String> contents = new ArrayList<String>();
if (jar.getJarEntry("package.xml") != null) {
try {
NodeList xml = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(jar.getInputStream(jar.getJarEntry("package.xml"))).getElementsByTagName("class");
if (xml.getLength() > 0) {
for (int i = 0; i < xml.getLength(); i++) {
mains.add(xml.item(i).getTextContent());
}
}
} catch (Exception e) {
log.error.println(new IllegalPluginException(e, "Couldn't load package.xml for " + file.getName()));
}
} else {
log.error.println(new IllegalPluginException(new FileNotFoundException(), "Couldn't find package.xml for " + file.getName()));
}
boolean isplugin = false;
while (entries.hasMoreElements()) {
JarEntry entry = entries.nextElement();
if (!entry.isDirectory() && entry.getName().endsWith(".class")) {
String cname = entry.getName().substring(0, entry.getName().length() - 6).replace('/', '.');
contents.add(cname);
if (mains.contains(cname)) {
try {
Class<?> clazz = superloader.loadClass(cname);
if (clazz.isAnnotationPresent(SubPlugin.class)) {
NamedContainer<LinkedList<String>, LinkedHashMap<String, String>> jarmap = (classes.keySet().contains(file.getName()))?classes.get(file.getName()):new NamedContainer<LinkedList<String>, LinkedHashMap<String, String>>(new LinkedList<String>(), new LinkedHashMap<>());
for (String dependancy : clazz.getAnnotation(SubPlugin.class).dependencies()) jarmap.name().add(dependancy);
for (String dependancy : clazz.getAnnotation(SubPlugin.class).softDependencies()) jarmap.name().add(dependancy);
jarmap.get().put(clazz.getAnnotation(SubPlugin.class).name(), cname);
classes.put(file.getName(), jarmap);
isplugin = true;
mains.remove(cname);
} else {
log.error.println(new IllegalPluginException(new ClassCastException(), "Main class isn't annotated as a SubPlugin: " + cname));
}
} catch (Throwable e) {
log.error.println(new IllegalPluginException(e, "Couldn't load main class: " + cname));
}
}
}
}
for (String main : mains) {
log.error.println(new IllegalPluginException(new ClassNotFoundException(), "Couldn't find main class: " + main));
}
if (isplugin) api.knownClasses.addAll(contents);
jar.close();
} catch (Throwable e) {
log.error.println(new IllegalPluginException(e, "Cannot load plugin descriptor for main class: " + main));
log.error.println(new InvocationTargetException(e, "Problem searching plugin jar: " + file.getName()));
}
}
}
superloader.close();
/*
* Load Main Classes & Plugin Descriptions
* (Ordered by Known Dependencies)
*/
int progress = 1;
HashMap<String, PluginClassLoader> loaders = new HashMap<String, PluginClassLoader>();
HashMap<String, SubPluginInfo> plugins = new LinkedHashMap<String, SubPluginInfo>();
while (classes.size() > 0) {
LinkedHashMap<String, LinkedList<String>> loaded = new LinkedHashMap<String, LinkedList<String>>();
for (String jar : classes.keySet()) {
LinkedList<String> loadedlist = new LinkedList<String>();
if (!loaders.keySet().contains(jar)) loaders.put(jar, new PluginClassLoader(this.getClass().getClassLoader(), new File(pldir, jar).toURI().toURL()));
for (String name : classes.get(jar).get().keySet()) {
boolean load = true;
for (String depend : classes.get(jar).name()) {
if (!plugins.keySet().contains(depend.toLowerCase())) {
load = progress <= 0;
}
}
if (load) {
String main = classes.get(jar).get().get(name);
try {
Class<?> clazz = loaders.get(jar).loadClass(main);
if (!clazz.isAnnotationPresent(SubPlugin.class))
throw new ClassCastException("Cannot find plugin descriptor");
Object obj = clazz.getConstructor().newInstance();
try {
SubPluginInfo plugin = new SubPluginInfo(this, obj, clazz.getAnnotation(SubPlugin.class).name(), new Version(clazz.getAnnotation(SubPlugin.class).version()),
Arrays.asList(clazz.getAnnotation(SubPlugin.class).authors()), (clazz.getAnnotation(SubPlugin.class).description().length() > 0) ? clazz.getAnnotation(SubPlugin.class).description() : null,
(clazz.getAnnotation(SubPlugin.class).website().length() > 0) ? new URL(clazz.getAnnotation(SubPlugin.class).website()) : null, Arrays.asList(clazz.getAnnotation(SubPlugin.class).loadBefore()),
Arrays.asList(clazz.getAnnotation(SubPlugin.class).dependencies()), Arrays.asList(clazz.getAnnotation(SubPlugin.class).softDependencies()));
if (plugins.keySet().contains(plugin.getName().toLowerCase()))
log.warn.println("Duplicate plugin: " + plugin.getName().toLowerCase());
plugin.addExtra("subservers.plugin.loadafter", new ArrayList<String>());
plugins.put(plugin.getName().toLowerCase(), plugin);
} catch (Throwable e) {
log.error.println(new IllegalPluginException(e, "Cannot load plugin descriptor for main class: " + main));
}
} catch(ClassCastException e) {
log.error.println(new IllegalPluginException(e, "Main class isn't annotated as a SubPlugin: " + main));
} catch(InvocationTargetException e) {
log.error.println(new IllegalPluginException(e.getTargetException(), "Uncaught exception occurred while loading main class: " + main));
} catch(Throwable e) {
log.error.println(new IllegalPluginException(e, "Couldn't load main class: " + main));
}
loadedlist.add(name);
}
}
if (loadedlist.size() > 0) loaded.put(jar, loadedlist);
}
progress = 0;
for (String jar : loaded.keySet()) {
NamedContainer<LinkedList<String>, LinkedHashMap<String, String>> jarmap = classes.get(jar);
progress++;
for (String main : loaded.get(jar)) jarmap.get().remove(main);
if (jarmap.get().size() > 0) {
classes.put(jar, jarmap);
} else {
classes.remove(jar);
}
} catch (ClassCastException e) {
log.error.println(new IllegalPluginException(e, "Main class isn't annotated as a SubPlugin: " + main));
} catch (InvocationTargetException e) {
log.error.println(new IllegalPluginException(e.getTargetException(), "Uncaught exception occurred while loading main class: " + main));
} catch (Throwable e) {
log.error.println(new IllegalPluginException(e, "Cannot load main class: " + main));
}
}
@ -215,7 +342,9 @@ public final class ExHost {
/*
* Register Plugins
* (Ordered by LoadBefore & Dependencies)
*/
int i = 0;
while (plugins.size() > 0) {
List<String> loaded = new ArrayList<String>();
for (SubPluginInfo plugin : plugins.values()) {
@ -256,7 +385,7 @@ public final class ExHost {
loaded.add(plugin.getName().toLowerCase());
}
}
int progress = 0;
progress = 0;
for (String name : loaded) {
progress++;
plugins.remove(name);
@ -271,7 +400,7 @@ public final class ExHost {
* Enable Plugins
*/
api.executeEvent(new SubEnableEvent(this));
log.info.println(i + " Plugin"+((i == 1)?"":"s") + " loaded in" + new DecimalFormat("0.000").format((Calendar.getInstance().getTime().getTime() - begin) / 1000D) + "s");
log.info.println(i + " Plugin"+((i == 1)?"":"s") + " loaded in " + new DecimalFormat("0.000").format((Calendar.getInstance().getTime().getTime() - begin) / 1000D) + "s");
}
loadDefaults();
@ -329,12 +458,11 @@ public final class ExHost {
SubAPI.getInstance().executeEvent(new SubReloadEvent(this));
}
private void loop() {
Scanner console = new Scanner(System.in);
private void loop() throws Exception {
String umsg;
ready = true;
while (ready && console.hasNextLine()) {
if (!ready) continue;
final String umsg = console.nextLine();
while (ready && (umsg = jline.readLine(">")) != null) {
if (!ready || umsg.equals("")) continue;
final CommandPreProcessEvent event;
api.executeEvent(event = new CommandPreProcessEvent(this, umsg));
if (!event.isCancelled()) {
@ -343,17 +471,15 @@ public final class ExHost {
ArrayList<String> args = new ArrayList<String>();
args.addAll(Arrays.asList(umsg.contains(" ") ? umsg.split(" ") : new String[]{umsg}));
args.remove(0);
new Thread(() -> {
try {
api.commands.get(cmd.toLowerCase()).command(cmd, args.toArray(new String[args.size()]));
} catch (Exception e) {
log.error.println(new InvocationTargetException(e, "Uncaught exception while running command"));
}
}).start();
try {
api.commands.get(cmd.toLowerCase()).command(cmd, args.toArray(new String[args.size()]));
} catch (Exception e) {
log.error.println(new InvocationTargetException(e, "Uncaught exception while running command"));
}
} else {
log.message.println("Unknown Command - " + umsg);
}
jline.getOutput().write("\b \b");
}
}
}
@ -413,32 +539,4 @@ public final class ExHost {
System.exit(exit);
}
}
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 (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

@ -70,6 +70,7 @@ public class SubServer {
new UniversalFile(this.directory, "plugins:SubServers.Client.jar").delete();
Util.copyFromJar(ExHost.class.getClassLoader(), "net/ME1312/SubServers/Host/Library/Files/Client/spigot.jar", new UniversalFile(this.directory, "plugins:SubServers.Client.jar").getPath());
}
jar.close();
} catch (Throwable e) {
host.log.info.println("Couldn't auto-update SubServers.Client.jar");
host.log.error.println(e);

View File

@ -1,321 +0,0 @@
package net.ME1312.SubServers.Host;
import java.io.*;
import java.lang.management.ManagementFactory;
import java.net.URISyntaxException;
import java.net.URLEncoder;
import java.util.*;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
import javax.xml.parsers.DocumentBuilderFactory;
import jline.console.ConsoleReader;
import jline.console.CursorBuffer;
import net.ME1312.SubServers.Host.Library.TextColor;
import net.ME1312.SubServers.Host.Library.Util;
import org.fusesource.jansi.Ansi;
import org.fusesource.jansi.AnsiConsole;
import org.w3c.dom.NodeList;
/**
* SubServers.Host Launcher Class
*/
public final class Launch {
private static File dir = null;
private static Process process = null;
/**
* Prepare and launch SubServers.Host
*
* @param args Args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
if (System.getProperty("RM.subservers", "true").equalsIgnoreCase("true")) {
launch(args);
} else {
System.out.println(">> SubServers code has been disallowed to work on this machine");
System.out.println(">> Check with your provider for more information");
System.exit(1);
}
}
private static void launch(String[] args) throws Exception {
String plugins = "";
File rtdir = new File(System.getProperty("user.dir"));
File pldir = new File(rtdir, "Plugins");
dir = File.createTempFile("SubServers.Host.", ".jar");
dir.delete();
dir.mkdir();
System.out.println(">> Created " + dir.getPath().replace(File.separator, "/"));
extractJar(getCodeSourceLocation(), dir);
System.out.println(">> Extracted ~/" + getCodeSourceLocation().getName());
if (pldir.isDirectory() && pldir.listFiles().length > 0) {
for (File plugin : Arrays.asList(pldir.listFiles())) {
try {
boolean success = false;
if (getFileExtension(plugin.getName()).equalsIgnoreCase("zip")) {
InputStream stream = new FileInputStream(plugin);
Util.unzip(stream, dir);
stream.close();
success = true;
} else if (getFileExtension(plugin.getName()).equalsIgnoreCase("jar")) {
extractJar(plugin, dir);
success = true;
}
if (new File(dir, "package.xml").exists()) {
NodeList xml = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new File(dir, "package.xml")).getElementsByTagName("class");
if (xml.getLength() > 0) {
for (int i = 0; i < xml.getLength(); i++) {
plugins += ((plugins.length() == 0)?"":" ") + xml.item(i).getTextContent().replace(' ', '_');
}
}
new File(dir, "package.xml").delete();
}
if (success) System.out.println(">> Extracted ~/plugins/" + plugin.getName());
} catch (Exception e) {
System.out.println(">> Couldn't extract ~/plugins/" + plugin.getName());
e.printStackTrace();
}
}
}
ArrayList<String> arguments = new ArrayList<String>();
String javaPath = String.valueOf(System.getProperty("java.home")) + File.separator + "bin" + File.separator + "java";
arguments.add(javaPath);
arguments.addAll(getVmArgs());
arguments.add("-Dsubservers.host.runtime=" + URLEncoder.encode(dir.getPath(), "UTF-8"));
if (!plugins.equals(""))
arguments.add("-Dsubservers.host.plugins=" + URLEncoder.encode(plugins, "UTF-8"));
arguments.add("-cp");
arguments.add(dir.getPath());
arguments.add("net.ME1312.SubServers.Host.ExHost");
arguments.addAll(Arrays.asList(args));
ProcessBuilder processBuilder = new ProcessBuilder(arguments);
processBuilder.directory(new File(System.getProperty("user.dir")));
processBuilder.redirectErrorStream(true);
syncConsole(processBuilder.start());
Thread.sleep(250);
int code = process.exitValue();
process = null;
exit(code);
}
private static void syncConsole(Process process) throws Exception {
ConsoleReader console = new ConsoleReader(System.in, (System.getProperty("subservers.host.log.color", "true").equalsIgnoreCase("true"))?AnsiConsole.out:System.out);
console.setExpandEvents(false);
Launch.process = process;
try {
new Thread(() -> {
try {
String line;
BufferedWriter cmd = new BufferedWriter(new OutputStreamWriter(process.getOutputStream()));
Runtime.getRuntime().addShutdownHook(new Thread(() -> {
if (Launch.process != null && Launch.process.isAlive()) {
try {
stashLine(console);
console.println(">> Received request from system to shutdown");
unstashLine(console);
console.flush();
cmd.write("exit");
cmd.newLine();
cmd.flush();
} catch (Exception e) {
e.printStackTrace();
}
}
}));
while (process.isAlive() && (line = console.readLine(">")) != null) {
if (line.equals("")) continue;
cmd.write(line);
cmd.newLine();
cmd.flush();
}
} catch (Exception e) {
e.printStackTrace();
}
}).start();
new Thread(() -> {
try {
String line;
BufferedReader obr = new BufferedReader(new InputStreamReader(process.getErrorStream()));
while (process.isAlive() && (line = obr.readLine()) != null) {
stashLine(console);
if (System.getProperty("subservers.host.log.color", "true").equalsIgnoreCase("true")) {
console.println(ConsoleColor.parseColor(line) + ConsoleColor.RESET);
} else {
console.println(ConsoleColor.stripColor(line.replaceAll("\u001B\\[[;\\d]*m", "")));
}
unstashLine(console);
console.flush();
}
} catch (Exception e) {
e.printStackTrace();
}
}).start();
String line;
BufferedReader obr = new BufferedReader(new InputStreamReader(process.getInputStream()));
while (process.isAlive() && (line = obr.readLine()) != null) {
stashLine(console);
if (System.getProperty("subservers.host.log.color", "true").equalsIgnoreCase("true")) {
console.println(ConsoleColor.parseColor(line) + ConsoleColor.RESET);
} else {
console.println(ConsoleColor.stripColor(line.replaceAll("\u001B\\[[;\\d]*m", "")));
}
unstashLine(console);
console.flush();
}
} catch (Exception e) {
e.printStackTrace();
}
stashLine(console);
}
private static void exit(int code) {
System.out.println(">> Cleaning up");
deleteDir(dir);
System.exit(code);
}
private static void extractJar(File jarFile, File dir) throws Exception {
JarFile jar = new JarFile(jarFile);
Enumeration<JarEntry> files = jar.entries();
ArrayList<JarEntry> entries = new ArrayList<JarEntry>();
while (files.hasMoreElements()) {
entries.add(files.nextElement());
}
for (JarEntry file : entries) {
File f = new File(dir, file.getName());
if (f.exists()) {
continue;
}
if (file.isDirectory()) {
f.mkdirs();
continue;
}
if (!f.getParentFile().exists()) {
f.getParentFile().mkdirs();
}
InputStream is = jar.getInputStream(file);
FileOutputStream fos = new FileOutputStream(f);
while (is.available() > 0) {
fos.write(is.read());
}
fos.close();
is.close();
}
}
private static void deleteDir(File f) {
if (f.isDirectory()) {
for (File c : f.listFiles()) {
deleteDir(c);
}
}
f.delete();
}
private static List<String> getVmArgs() {
ArrayList<String> values = new ArrayList<String>();
values.addAll(ManagementFactory.getRuntimeMXBean().getInputArguments());
return values;
}
private static File getCodeSourceLocation() {
try {
return new File(Launch.class.getProtectionDomain().getCodeSource().getLocation().toURI());
}
catch (URISyntaxException e) {
e.printStackTrace();
return null;
}
}
private static String getFileExtension(String fileName) {
String extension = "";
int i = fileName.lastIndexOf(46);
if (i >= 0) {
extension = fileName.substring(i + 1);
}
return extension;
}
private static CursorBuffer stashed;
private static void stashLine(ConsoleReader console) {
stashed = console.getCursorBuffer().copy();
try {
console.getOutput().write("\u001b[1G\u001b[K");
console.flush();
} catch (IOException e) {
// ignore
}
}
private static void unstashLine(ConsoleReader console) {
try {
console.resetPromptLine(console.getPrompt(),
stashed.toString(), stashed.cursor);
} catch (IOException e) {
// ignore
}
}
private enum ConsoleColor {
AQUA(TextColor.AQUA, Ansi.ansi().a(Ansi.Attribute.RESET).fg(Ansi.Color.CYAN).bold().toString()),
BLACK(TextColor.BLACK, Ansi.ansi().a(Ansi.Attribute.RESET).fg(Ansi.Color.BLACK).boldOff().toString()),
BLUE(TextColor.BLUE, Ansi.ansi().a(Ansi.Attribute.RESET).fg(Ansi.Color.BLUE).bold().toString()),
BOLD(TextColor.BOLD, Ansi.ansi().a(Ansi.Attribute.UNDERLINE_DOUBLE).toString()),
DARK_AQUA(TextColor.DARK_AQUA, Ansi.ansi().a(Ansi.Attribute.RESET).fg(Ansi.Color.CYAN).boldOff().toString()),
DARK_BLUE(TextColor.DARK_BLUE, Ansi.ansi().a(Ansi.Attribute.RESET).fg(Ansi.Color.BLUE).boldOff().toString()),
DARK_GRAY(TextColor.DARK_GRAY, Ansi.ansi().a(Ansi.Attribute.RESET).fg(Ansi.Color.BLACK).bold().toString()),
DARK_GREEN(TextColor.DARK_GREEN, Ansi.ansi().a(Ansi.Attribute.RESET).fg(Ansi.Color.GREEN).boldOff().toString()),
DARK_PURPLE(TextColor.DARK_PURPLE, Ansi.ansi().a(Ansi.Attribute.RESET).fg(Ansi.Color.MAGENTA).boldOff().toString()),
DARK_RED(TextColor.DARK_RED, Ansi.ansi().a(Ansi.Attribute.RESET).fg(Ansi.Color.RED).boldOff().toString()),
GOLD(TextColor.GOLD, Ansi.ansi().a(Ansi.Attribute.RESET).fg(Ansi.Color.YELLOW).boldOff().toString()),
GRAY(TextColor.GRAY, Ansi.ansi().a(Ansi.Attribute.RESET).fg(Ansi.Color.WHITE).boldOff().toString()),
GREEN(TextColor.GREEN, Ansi.ansi().a(Ansi.Attribute.RESET).fg(Ansi.Color.GREEN).bold().toString()),
ITALIC(TextColor.ITALIC, Ansi.ansi().a(Ansi.Attribute.ITALIC).toString()),
LIGHT_PURPLE(TextColor.LIGHT_PURPLE, Ansi.ansi().a(Ansi.Attribute.RESET).fg(Ansi.Color.MAGENTA).bold().toString()),
MAGIC(TextColor.MAGIC, Ansi.ansi().a(Ansi.Attribute.BLINK_SLOW).toString()),
RED(TextColor.RED, Ansi.ansi().a(Ansi.Attribute.RESET).fg(Ansi.Color.RED).bold().toString()),
RESET(TextColor.RESET, Ansi.ansi().a(Ansi.Attribute.RESET).toString()),
STRIKETHROUGH(TextColor.STRIKETHROUGH, Ansi.ansi().a(Ansi.Attribute.STRIKETHROUGH_ON).toString()),
UNDERLINE(TextColor.UNDERLINE, Ansi.ansi().a(Ansi.Attribute.UNDERLINE).toString()),
WHITE(TextColor.WHITE, Ansi.ansi().a(Ansi.Attribute.RESET).fg(Ansi.Color.WHITE).bold().toString()),
YELLOW(TextColor.YELLOW, Ansi.ansi().a(Ansi.Attribute.RESET).fg(Ansi.Color.YELLOW).bold().toString());
private final TextColor color;
private final String value;
ConsoleColor(TextColor color, String value) {
this.color = color;
this.value = value;
}
@Override
public String toString() {
return getConsoleString();
}
public String getValue() {
return color.getValue();
}
public String getConsoleString() {
return value;
}
public static String parseColor(String str) {
for (ConsoleColor color : Arrays.asList(ConsoleColor.values())) {
str = str.replace(color.getValue(), color.getConsoleString());
}
return str;
}
public static String stripColor(String str) {
for (ConsoleColor color : Arrays.asList(ConsoleColor.values())) {
str = str.replace(color.getValue(), "");
}
return str;
}
}
}

View File

@ -20,10 +20,13 @@ public class ErrorStream extends LogStream {
* @param err Exception
*/
public void print(Throwable err) {
sync();
writing++;
StringWriter sw = new StringWriter();
err.printStackTrace(new PrintWriter(sw));
String s = sw.toString();
print(s.substring(0, s.length() - 1));
for (char c : s.substring(0, s.length() - 1).toCharArray()) write(c);
writing--;
}
/**
@ -32,10 +35,13 @@ public class ErrorStream extends LogStream {
* @param err Exceptions
*/
public void println(Throwable... err) {
sync();
writing++;
for (Throwable e : err) {
StringWriter sw = new StringWriter();
e.printStackTrace(new PrintWriter(sw));
print(sw.toString());
for (char c : sw.toString().toCharArray()) write(c);
}
writing--;
}
}

View File

@ -16,6 +16,8 @@ public class LogStream {
private String name;
private Container<PrintStream> stream;
private boolean first = true;
protected long writing = 0;
protected Thread threadwriting = null;
protected LogStream(String prefix, String name, Container<PrintStream> stream) {
this.prefix = prefix;
@ -33,7 +35,14 @@ public class LogStream {
* @param obj Object
*/
public void print(Object obj) {
print(obj.toString());
sync();
writing++;
if (obj == null) {
for (char c : "null".toCharArray()) write(c);
} else {
for (char c : obj.toString().toCharArray()) write(c);
}
writing--;
}
/**
@ -42,7 +51,14 @@ public class LogStream {
* @param str String
*/
public void print(String str) {
print(str.toCharArray());
sync();
writing++;
if (str == null) {
for (char c : "null".toCharArray()) write(c);
} else {
for (char c : str.toCharArray()) write(c);
}
writing--;
}
/**
@ -51,7 +67,10 @@ public class LogStream {
* @param str Character Array
*/
public void print(char[] str) {
for (char c : str) print(c);
sync();
writing++;
for (char c : str) write(c);
writing--;
}
/**
@ -60,25 +79,65 @@ public class LogStream {
* @param c Character
*/
public void print(char c) {
sync();
writing++;
write(c);
writing--;
}
/**
* Write to the PrintStream
*
* @param c Character
*/
protected void write(char c) {
threadwriting = Thread.currentThread();
if (last != this) {
if (last != null && !last.first) last.print('\n');
if (last != null) {
stall();
if (!last.first) last.print('\n');
}
LogStream.last = this;
first = true;
}
if (first) stream.get().print(prefix());
stream.get().print(c);
first = c == '\n';
}
protected void sync() {
try {
while (threadwriting != null && threadwriting != Thread.currentThread() && writing > 0) {
Thread.sleep(125);
}
} catch (Exception e) {}
}
private void stall() {
try {
while (last != null && last != this && last.writing > 0) {
Thread.sleep(125);
}
} catch (Exception e) {}
}
/**
* Print multiple Objects (separated by a new line)
*
* @param obj Objects
*/
public void println(Object... obj) {
sync();
writing++;
for (Object OBJ : obj) {
print(OBJ);
print('\n');
if (OBJ == null) {
for (char c : "null".toCharArray()) write(c);
} else {
for (char c : OBJ.toString().toCharArray()) write(c);
}
write('\n');
}
writing--;
}
/**
@ -87,10 +146,17 @@ public class LogStream {
* @param str Objects
*/
public void println(String... str) {
sync();
writing++;
for (String STR : str) {
print(STR);
print('\n');
if (STR == null) {
for (char c : "null".toCharArray()) write(c);
} else {
for (char c : STR.toCharArray()) write(c);
}
write('\n');
}
writing--;
}
/**
@ -99,10 +165,13 @@ public class LogStream {
* @param str Character Arrays
*/
public void println(char[]... str) {
sync();
writing++;
for (char[] STR : str) {
print(STR);
print('\n');
for (char c : STR) write(c);
write('\n');
}
writing--;
}
/**
@ -111,9 +180,12 @@ public class LogStream {
* @param c Characters
*/
public void println(char... c) {
sync();
writing++;
for (char C : c) {
print(C);
print('\n');
write(C);
write('\n');
}
writing--;
}
}

View File

@ -1,5 +1,6 @@
package net.ME1312.SubServers.Host.Library.Log;
import jline.console.ConsoleReader;
import net.ME1312.SubServers.Host.Library.Container;
import net.ME1312.SubServers.Host.Library.Util;
@ -20,17 +21,17 @@ public final class Logger {
*
* @param out System.out
* @param err System.err
* @param in jline.in
* @param dir Runtime Directory
* @throws IOException
*/
public static void setup(PrintStream out, PrintStream err, File dir) throws IOException {
public static void setup(PrintStream out, PrintStream err, ConsoleReader in, File dir) throws IOException {
if (Util.isNull(out, err, dir)) throw new NullPointerException();
if (pso.get() == null || pse.get() == null) {
File runtime = new File(URLDecoder.decode(System.getProperty("subservers.host.runtime", "./"), "UTF-8"));
pso.set(new PrintStream(new FileLogger(out, dir)));
pse.set(new PrintStream(new FileLogger(err, dir)));
System.setOut(new PrintStream(new SystemLogger(false, runtime)));
System.setErr(new PrintStream(new SystemLogger(true, runtime)));
pso.set(new PrintStream(new FileLogger(new ConsoleStream(in, out), dir)));
pse.set(new PrintStream(new FileLogger(new ConsoleStream(in, err), dir)));
System.setOut(new PrintStream(new SystemLogger(false)));
System.setErr(new PrintStream(new SystemLogger(true)));
}
}
@ -44,14 +45,14 @@ public final class Logger {
if (prefix.length() == 0) throw new StringIndexOutOfBoundsException("Cannot use an empty prefix");
message = new LogStream(prefix, "MESSAGE", pso);
info = new LogStream(prefix, "INFO", pso);
warn = new LogStream(prefix, "WARN", pso);
warn = new ErrorStream(prefix, "WARN", pso);
error = new ErrorStream(prefix, "ERROR", pse);
severe = new ErrorStream(prefix, "SEVERE", pse);
}
public final LogStream message;
public final LogStream info;
public final LogStream warn;
public final ErrorStream warn;
public final ErrorStream error;
public final ErrorStream severe;
}

View File

@ -1,10 +1,13 @@
package net.ME1312.SubServers.Host.Library.Log;
import net.ME1312.SubServers.Host.Library.NamedContainer;
import net.ME1312.SubServers.Host.SubAPI;
import java.io.File;
import java.io.IOException;
import java.io.OutputStream;
import java.lang.reflect.Field;
import java.util.List;
/**
* System.out and System.err Override Class
@ -12,14 +15,21 @@ import java.io.OutputStream;
public final class SystemLogger extends OutputStream {
private NamedContainer<String, Logger> last = new NamedContainer<String, Logger>("", null);
private boolean error;
private File dir;
protected SystemLogger(boolean level, File dir) throws IOException {
if (!new File(dir, SystemLogger.class.getCanonicalName().replace(".", File.separator) + ".class").exists()) {
throw new IOException("Invalid directory for logging:" + dir.getPath());
}
protected SystemLogger(boolean level) throws IOException {
this.error = level;
this.dir = dir;
}
@SuppressWarnings("unchecked")
private List<String> getKnownClasses() {
List<String> value = null;
try {
Field f = SubAPI.class.getDeclaredField("knownClasses");
f.setAccessible(true);
value = (List<String>) f.get(SubAPI.getInstance());
f.setAccessible(false);
} catch (Exception e) {}
return value;
}
@Override
@ -27,7 +37,7 @@ public final class SystemLogger extends OutputStream {
int i = 0;
String origin = java.lang.System.class.getCanonicalName();
for (StackTraceElement element : Thread.currentThread().getStackTrace()) {
if (i > 1 && new File(dir, element.getClassName().replace(".", File.separator) + ".class").exists()) {
if (i > 1 && getKnownClasses().contains(element.getClassName())) {
origin = element.getClassName().replaceFirst("\\$.*", "");
break;
}

View File

@ -0,0 +1,65 @@
package net.ME1312.SubServers.Host.Library;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.Iterator;
import java.util.Set;
import java.util.concurrent.CopyOnWriteArraySet;
/**
* Plugin ClassLoader Class
*/
public class PluginClassLoader extends URLClassLoader {
private static final Set<PluginClassLoader> allLoaders = new CopyOnWriteArraySet<PluginClassLoader>();
/**
* Load Classes from URLs
*
* @param urls URLs
*/
public PluginClassLoader(URL[] urls) {
super(urls);
allLoaders.add(this);
}
/**
* Load Classes from URLs with a parent loader
*
* @param parent Parent loader
* @param urls URLs
*/
public PluginClassLoader(ClassLoader parent, URL... urls) {
super(urls, parent);
allLoaders.add(this);
}
protected Class<?> loadClass(String name, boolean resolve) throws ClassNotFoundException {
return this.loadClass(name, resolve, true);
}
private Class<?> loadClass(String name, boolean resolve, boolean check) throws ClassNotFoundException {
try {
return super.loadClass(name, resolve);
} catch (ClassNotFoundException e) {
if (check) {
Iterator i = allLoaders.iterator();
while (true) {
PluginClassLoader loader;
do {
if (!i.hasNext()) {
throw new ClassNotFoundException(name);
}
loader = (PluginClassLoader) i.next();
} while (loader == this);
try {
return loader.loadClass(name, resolve, false);
} catch (ClassNotFoundException ex) {}
}
} else {
throw new ClassNotFoundException(name);
}
}
}
}

View File

@ -1,58 +1,114 @@
package net.ME1312.SubServers.Host.Library;
import org.fusesource.jansi.Ansi;
import java.util.Arrays;
/**
* Color Code Converter Enum
*/
public enum TextColor {
AQUA('b'),
BLACK('0'),
BLUE('9'),
BOLD('l'),
DARK_AQUA('3'),
DARK_BLUE('1'),
DARK_GRAY('8'),
DARK_GREEN('2'),
DARK_PURPLE('5'),
DARK_RED('4'),
GOLD('6'),
GRAY('7'),
GREEN('a'),
ITALIC('o'),
LIGHT_PURPLE('d'),
MAGIC('k'),
RED('c'),
RESET('r'),
STRIKETHROUGH('m'),
UNDERLINE('n'),
WHITE('f'),
YELLOW('e');
AQUA('b', Ansi.ansi().a(Ansi.Attribute.RESET).fg(Ansi.Color.CYAN).bold()),
BLACK('0', Ansi.ansi().a(Ansi.Attribute.RESET).fg(Ansi.Color.BLACK).boldOff()),
BLUE('9', Ansi.ansi().a(Ansi.Attribute.RESET).fg(Ansi.Color.BLUE).bold()),
BOLD('l', Ansi.ansi().a(Ansi.Attribute.UNDERLINE_DOUBLE)),
DARK_AQUA('3', Ansi.ansi().a(Ansi.Attribute.RESET).fg(Ansi.Color.CYAN).boldOff()),
DARK_BLUE('1', Ansi.ansi().a(Ansi.Attribute.RESET).fg(Ansi.Color.BLUE).boldOff()),
DARK_GRAY('8', Ansi.ansi().a(Ansi.Attribute.RESET).fg(Ansi.Color.BLACK).bold()),
DARK_GREEN('2', Ansi.ansi().a(Ansi.Attribute.RESET).fg(Ansi.Color.GREEN).boldOff()),
DARK_PURPLE('5', Ansi.ansi().a(Ansi.Attribute.RESET).fg(Ansi.Color.MAGENTA).boldOff()),
DARK_RED('4', Ansi.ansi().a(Ansi.Attribute.RESET).fg(Ansi.Color.RED).boldOff()),
GOLD('6', Ansi.ansi().a(Ansi.Attribute.RESET).fg(Ansi.Color.YELLOW).boldOff()),
GRAY('7', Ansi.ansi().a(Ansi.Attribute.RESET).fg(Ansi.Color.WHITE).boldOff()),
GREEN('a', Ansi.ansi().a(Ansi.Attribute.RESET).fg(Ansi.Color.GREEN).bold()),
ITALIC('o', Ansi.ansi().a(Ansi.Attribute.ITALIC)),
LIGHT_PURPLE('d', Ansi.ansi().a(Ansi.Attribute.RESET).fg(Ansi.Color.MAGENTA).bold()),
MAGIC('k', Ansi.ansi().a(Ansi.Attribute.BLINK_SLOW)),
RED('c', Ansi.ansi().a(Ansi.Attribute.RESET).fg(Ansi.Color.RED).bold()),
RESET('r', Ansi.ansi().a(Ansi.Attribute.RESET)),
STRIKETHROUGH('m', Ansi.ansi().a(Ansi.Attribute.STRIKETHROUGH_ON)),
UNDERLINE('n', Ansi.ansi().a(Ansi.Attribute.UNDERLINE)),
WHITE('f', Ansi.ansi().a(Ansi.Attribute.RESET).fg(Ansi.Color.WHITE).bold()),
YELLOW('e', Ansi.ansi().a(Ansi.Attribute.RESET).fg(Ansi.Color.YELLOW).bold());
private final Character value;
private final Character minecraft;
private final Ansi console;
TextColor(Character value) {
this.value = value;
TextColor(Character minecraft, Ansi console) {
this.minecraft = minecraft;
this.console = console;
}
/**
* Get this color as a Minecraft Color Code
*
* @return Minecraft Color Code
*/
public String asMinecraftCode() {
return new String(new char[]{'\u00A7', minecraft});
}
/**
* Get this color as an Ansi Color Code
*
* @return Ansi Color Code
*/
public String asAnsiCode() {
return console.toString();
}
@Override
public String toString() {
return getValue();
}
public String getValue() {
return "\u00A7" + value;
}
public static char getColorChar() {
return '\u00A7';
return asAnsiCode();
}
/**
* Parse Minecraft color codes starting with character
*
* @param character Character
* @param str String to parse
* @return Minecraft colored string
*/
public static String parseColor(char character, String str) {
str = str.replace(character, '\u00A7');
for (TextColor color : Arrays.asList(TextColor.values())) {
str = str.replace(new String(new char[]{character, color.minecraft}), color.asMinecraftCode());
}
return str;
}
/**
* Convert Minecraft color codes to Ansi color codes
*
* @param str Minecraft colored string
* @return Ansi colored string
*/
public static String convertColor(String str) {
return convertColor('\u00A7', str);
}
/**
* Convert Minecraft color codes starting with character to Ansi color codes
*
* @param character Character
* @param str String to parse
* @return Ansi colored string
*/
public static String convertColor(char character, String str) {
for (TextColor color : Arrays.asList(TextColor.values())) {
str = str.replace(new String(new char[]{character, color.minecraft}), color.asAnsiCode());
}
return str;
}
/**
* Removes all Minecraft/Ansi color codes from a string
*
* @param str String to parse
* @return String without color
*/
public static String stripColor(String str) {
for (TextColor color : Arrays.asList(TextColor.values())) {
str = str.replace(color.getValue(), "");
str = str.replace(color.asMinecraftCode(), "").replace(color.asAnsiCode(), "");
}
return str;
}

View File

@ -52,7 +52,9 @@ public class PacketExConfigureHost implements PacketIn, PacketOut {
Util.deleteDirectory(template.getDirectory());
}
host.templates.clear();
UniversalFile templates = new UniversalFile(host.runtime, "net:ME1312:SubServers:Host:Library:Files:Templates");
UniversalFile templates = new UniversalFile(host.dir, "Templates");
Util.deleteDirectory(templates);
templates.mkdirs();
for (String name : data.getJSONObject("templates").keySet()) {
try {
UniversalFile dir = new UniversalFile(templates, name);

View File

@ -23,6 +23,7 @@ public final class SubAPI {
final HashMap<UUID, Timer> schedule = new HashMap<UUID, Timer>();
final TreeMap<String, Command> commands = new TreeMap<String, Command>();
final HashMap<String, SubPluginInfo> plugins = new LinkedHashMap<String, SubPluginInfo>();
final List<String> knownClasses = new ArrayList<String>();
private final ExHost host;
private static SubAPI api;
@ -232,7 +233,7 @@ public final class SubAPI {
for (Object listener : listeners) {
if (Util.isNull(plugin, listener)) throw new NullPointerException();
for (Method method : Arrays.asList(listener.getClass().getMethods())) {
if (!method.isAnnotationPresent(EventHandler.class)) {
if (method.isAnnotationPresent(EventHandler.class)) {
if (method.getParameterTypes().length == 1) {
if (Event.class.isAssignableFrom(method.getParameterTypes()[0])) {
HashMap<Class<? extends Event>, HashMap<SubPluginInfo, HashMap<Object, List<Method>>>> events = (this.listeners.keySet().contains(method.getAnnotation(EventHandler.class).order()))?this.listeners.get(method.getAnnotation(EventHandler.class).order()):new LinkedHashMap<Class<? extends Event>, HashMap<SubPluginInfo, HashMap<Object, List<Method>>>>();
@ -247,7 +248,7 @@ public final class SubAPI {
} else {
this.host.log.error.println(
"Cannot register EventHandler in class \"" + listener.getClass().getCanonicalName() + "\" using method \"" + method.getName() + "\":",
"\"" + method.getParameterTypes()[0].getCanonicalName() + "\" is not an Event");
"\"" + method.getParameterTypes()[0].getCanonicalName() + "\" is not an Event");
}
} else {
this.host.log.error.println(
@ -293,7 +294,7 @@ public final class SubAPI {
public void executeEvent(Event event) {
if (Util.isNull(event)) throw new NullPointerException();
for (Short order : listeners.keySet()) {
if (!listeners.get(order).keySet().contains(event.getClass())) {
if (listeners.get(order).keySet().contains(event.getClass())) {
for (SubPluginInfo plugin : listeners.get(order).get(event.getClass()).keySet()) {
try {
Field pf = Event.class.getDeclaredField("plugin");
@ -305,7 +306,7 @@ public final class SubAPI {
}
for (Object listener : listeners.get(order).get(event.getClass()).get(plugin).keySet()) {
for (Method method : listeners.get(order).get(event.getClass()).get(plugin).get(listener)) {
if (event instanceof Cancellable && ((Cancellable) event).isCancelled() && !method.getAnnotation(EventHandler.class).override()) {
if (!(event instanceof Cancellable) || !((Cancellable) event).isCancelled() || method.getAnnotation(EventHandler.class).override()) {
try {
method.invoke(listener, event);
} catch (InvocationTargetException e) {

View File

@ -435,7 +435,7 @@ public class SubCommand {
}
}.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.",
"Templates are downloaded from SubServers.Bungee to ~/Templates.",
"",
"The <Name> argument is required, and should be the name of",
"the SubServer you want to create.",
@ -443,8 +443,8 @@ public class SubCommand {
"The <Host> argument is required, and should be the name of",
"the host you want to the server to run on.",
"",
"The <Type> argument is required, and should be the name of",
"the type of server you want to create.",
"The <Template> argument is required, and should be the name of",
"the template you want to create your server with.",
"",
"The <Version> argument is required, and should be a version",
"string of the type of server that you want to create",

View File

@ -1,88 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project name="module_subservers.sync" default="compile.module.subservers.sync">
<dirname property="module.subservers.sync.basedir" file="${ant.file.module_subservers.sync}"/>
<property name="module.jdk.home.subservers.sync" value="${project.jdk.home}"/>
<property name="module.jdk.bin.subservers.sync" value="${project.jdk.bin}"/>
<property name="module.jdk.classpath.subservers.sync" value="${project.jdk.classpath}"/>
<property name="compiler.args.subservers.sync" value="-encoding UTF-8 -source 1.8 -target 1.8 ${compiler.args}"/>
<property name="subservers.sync.output.dir" value="${module.subservers.sync.basedir}/../out/compile/production/SubServers.Sync"/>
<property name="subservers.sync.testoutput.dir" value="${module.subservers.sync.basedir}/../out/compile/test/SubServers.Sync"/>
<path id="subservers.sync.module.bootclasspath">
<!-- Paths to be included in compilation bootclasspath -->
</path>
<path id="subservers.sync.module.production.classpath">
<path refid="${module.jdk.classpath.subservers.sync}"/>
<pathelement location="${basedir}/../~lib/json.jar"/>
<pathelement location="${basedir}/../~lib/BungeeCord-1.8.jar"/>
<pathelement location="${basedir}/../~lib/RedisBungee.jar"/>
</path>
<path id="subservers.sync.runtime.production.module.classpath">
<pathelement location="${subservers.sync.output.dir}"/>
<pathelement location="${basedir}/../~lib/json.jar"/>
</path>
<path id="subservers.sync.module.classpath">
<path refid="${module.jdk.classpath.subservers.sync}"/>
<pathelement location="${subservers.sync.output.dir}"/>
<pathelement location="${basedir}/../~lib/json.jar"/>
<pathelement location="${basedir}/../~lib/BungeeCord-1.8.jar"/>
<pathelement location="${basedir}/../~lib/RedisBungee.jar"/>
</path>
<path id="subservers.sync.runtime.module.classpath">
<pathelement location="${subservers.sync.testoutput.dir}"/>
<pathelement location="${subservers.sync.output.dir}"/>
<pathelement location="${basedir}/../~lib/json.jar"/>
<pathelement location="${basedir}/../~lib/BungeeCord-1.8.jar"/>
<pathelement location="${basedir}/../~lib/RedisBungee.jar"/>
</path>
<patternset id="excluded.from.module.subservers.sync">
<patternset refid="ignored.files"/>
</patternset>
<patternset id="excluded.from.compilation.subservers.sync">
<patternset refid="excluded.from.module.subservers.sync"/>
</patternset>
<path id="subservers.sync.module.sourcepath">
<dirset dir="${module.subservers.sync.basedir}">
<include name="src"/>
</dirset>
</path>
<target name="compile.module.subservers.sync" depends="compile.module.subservers.sync.production,compile.module.subservers.sync.tests" description="Compile module SubServers.Sync"/>
<target name="compile.module.subservers.sync.production" depends="register.custom.compilers" description="Compile module SubServers.Sync; production classes">
<mkdir dir="${subservers.sync.output.dir}"/>
<javac2 destdir="${subservers.sync.output.dir}" debug="${compiler.debug}" nowarn="${compiler.generate.no.warnings}" memorymaximumsize="${compiler.max.memory}" fork="true" executable="${module.jdk.bin.subservers.sync}/javac">
<compilerarg line="${compiler.args.subservers.sync}"/>
<bootclasspath refid="subservers.sync.module.bootclasspath"/>
<classpath refid="subservers.sync.module.production.classpath"/>
<src refid="subservers.sync.module.sourcepath"/>
<patternset refid="excluded.from.compilation.subservers.sync"/>
</javac2>
<copy todir="${subservers.sync.output.dir}">
<fileset dir="${module.subservers.sync.basedir}/src">
<patternset refid="compiler.resources"/>
<type type="file"/>
</fileset>
</copy>
</target>
<target name="compile.module.subservers.sync.tests" depends="register.custom.compilers,compile.module.subservers.sync.production" description="compile module SubServers.Sync; test classes" unless="skip.tests"/>
<target name="clean.module.subservers.sync" description="cleanup module">
<delete dir="${subservers.sync.output.dir}"/>
<delete dir="${subservers.sync.testoutput.dir}"/>
</target>
</project>