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/-Icon/
/Artifacts/SubServers.Patched.jar /Artifacts/SubServers.Patched.jar
/Artifacts/SubServers.Test.jar /Artifacts/SubServers.Test.jar
/Artifacts/SubServers.Test.Maven.jar
/SubServers.Test/ /SubServers.Test/
/build.ant /build.ant
.DS_STORE .DS_STORE
@ -323,4 +324,4 @@ __pycache__/
*.btp.cs *.btp.cs
*.btm.cs *.btm.cs
*.odx.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> <dd>
<div class="block">Gets a Server</div> <div class="block">Gets a Server</div>
</dd> </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> <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> <dd>
<div class="block">Gets the Servers (including SubServers)</div> <div class="block">Gets the Servers (including SubServers)</div>
@ -3266,6 +3262,8 @@
<dd>&nbsp;</dd> <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> <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> <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> <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> <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> <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) { 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 tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor"; var altColor = "altColor";
var rowColor = "rowColor"; var rowColor = "rowColor";
@ -221,13 +221,17 @@ extends java.lang.Object</pre>
<div class="block">Set the Item Icon for this Template</div> <div class="block">Set the Item Icon for this Template</div>
</td> </td>
</tr> </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> </table>
<ul class="blockList"> <ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object"> <li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
<!-- --> <!-- -->
</a> </a>
<h3>Methods inherited from class&nbsp;java.lang.Object</h3> <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> </ul>
</li> </li>
</ul> </ul>
@ -416,7 +420,7 @@ extends java.lang.Object</pre>
<a name="getConfigOptions--"> <a name="getConfigOptions--">
<!-- --> <!-- -->
</a> </a>
<ul class="blockListLast"> <ul class="blockList">
<li class="blockList"> <li class="blockList">
<h4>getConfigOptions</h4> <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> <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> </dl>
</li> </li>
</ul> </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> </li>
</ul> </ul>
</li> </li>

View File

@ -17,7 +17,7 @@
catch(err) { 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 tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor"; var altColor = "altColor";
var rowColor = "rowColor"; var rowColor = "rowColor";
@ -224,51 +224,45 @@ implements net.md_5.bungee.api.plugin.Listener</pre>
</td> </td>
</tr> </tr>
<tr id="i1" class="rowColor"> <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="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> <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> <div class="block">Emulate BungeeCord's getServers()</div>
</td> </td>
</tr> </tr>
<tr id="i3" class="rowColor"> <tr id="i2" class="altColor">
<td class="colFirst"><code>java.lang.String</code></td> <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> <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> <div class="block">Further override BungeeCord's signature when patched into the same jar</div>
</td> </td>
</tr> </tr>
<tr id="i4" class="altColor"> <tr id="i3" class="rowColor">
<td class="colFirst"><code>&lt;T&gt;&nbsp;java.lang.Object</code></td> <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, <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> <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> <div class="block">Reference a RedisBungee method via reflection</div>
</td> </td>
</tr> </tr>
<tr id="i5" class="rowColor"> <tr id="i4" class="altColor">
<td class="colFirst"><code>void</code></td> <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> <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> <div class="block">Load data from the config (will attempt to merge with current configuration)</div>
</td> </td>
</tr> </tr>
<tr id="i6" class="altColor"> <tr id="i5" class="rowColor">
<td class="colFirst"><code>void</code></td> <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> <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>
<tr id="i7" class="rowColor"> <tr id="i6" class="altColor">
<td class="colFirst"><code>void</code></td> <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> <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>
<tr id="i8" class="altColor"> <tr id="i7" class="rowColor">
<td class="colFirst"><code>void</code></td> <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> <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> <div class="block">Load SubServers before BungeeCord finishes</div>
</td> </td>
</tr> </tr>
<tr id="i9" class="rowColor"> <tr id="i8" class="altColor">
<td class="colFirst"><code>void</code></td> <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> <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> <div class="block">Reset all changes made by startListeners</div>
@ -280,7 +274,7 @@ implements net.md_5.bungee.api.plugin.Listener</pre>
<!-- --> <!-- -->
</a> </a>
<h3>Methods inherited from class&nbsp;net.md_5.bungee.BungeeCord</h3> <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>
<ul class="blockList"> <ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.net.md_5.bungee.api.ProxyServer"> <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"> <ul class="blockList">
<li class="blockList"> <li class="blockList">
<h4>redis</h4> <h4>redis</h4>
<pre>public&nbsp;&lt;T&gt;&nbsp;java.lang.Object&nbsp;redis(java.lang.String&nbsp;method, <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) <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, throws java.lang.NoSuchMethodException,
java.lang.reflect.InvocationTargetException, java.lang.reflect.InvocationTargetException,
java.lang.IllegalAccessException</pre> java.lang.IllegalAccessException</pre>
<div class="block">Reference a RedisBungee method via reflection</div> <div class="block">Reference a RedisBungee method via reflection</div>
<dl> <dl>
<dt><span class="paramLabel">Type Parameters:</span></dt>
<dd><code>T</code> - Class Type</dd>
<dt><span class="paramLabel">Parameters:</span></dt> <dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>method</code> - Method to reference</dd> <dd><code>method</code> - Method to reference</dd>
<dd><code>args</code> - Method arguments</dd> <dd><code>args</code> - Method arguments</dd>
@ -557,26 +549,6 @@ implements net.md_5.bungee.api.plugin.Listener</pre>
</dl> </dl>
</li> </li>
</ul> </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 name="reroute-net.md_5.bungee.api.event.ServerConnectEvent-">
<!-- --> <!-- -->
</a> </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/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/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/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/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/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> <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/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/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/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/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/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> <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/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/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/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/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/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> <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/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/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/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/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/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> <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/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/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/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/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/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> <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/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/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/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/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/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> <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> </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> <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> <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> <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> <dd>
<div class="block">Get Object as Boolean</div> <div class="block">Get Object as Boolean</div>
@ -161,6 +165,10 @@
<dd> <dd>
<div class="block">Get Object as Long List</div> <div class="block">Get Object as Long List</div>
</dd> </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> <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> <dd>
<div class="block">Get Object</div> <div class="block">Get Object</div>
@ -283,6 +291,12 @@
</dd> </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> <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> <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> <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> <dd>
<div class="block">Container Class</div> <div class="block">Container Class</div>
@ -295,6 +309,14 @@
<dd> <dd>
<div class="block">Check if a Handle exists</div> <div class="block">Check if a Handle exists</div>
</dd> </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> <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> <dd>
<div class="block">Copy a Directory</div> <div class="block">Copy a Directory</div>
@ -645,8 +667,6 @@
<dd> <dd>
<div class="block">Gets the Client Socket</div> <div class="block">Gets the Client Socket</div>
</dd> </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> <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> <dd>
<div class="block">Get a Colored String by Handle</div> <div class="block">Get a Colored String by Handle</div>
@ -1127,8 +1147,6 @@
<dd> <dd>
<div class="block">Get a UUID List by Handle</div> <div class="block">Get a UUID List by Handle</div>
</dd> </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> <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> <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> <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> <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> <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> <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> <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> <dd>
<div class="block">Simple Listener Layout Class</div> <div class="block">Simple Listener Layout Class</div>
@ -1443,10 +1455,6 @@
<dd> <dd>
<div class="block">SubServers.Host Launch</div> <div class="block">SubServers.Host Launch</div>
</dd> </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> <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> <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> <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> <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> <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> <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> <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> <dd>
<div class="block">Gets the Plugin that registering this Command</div> <div class="block">Gets the Plugin that registering this Command</div>
@ -1759,6 +1769,18 @@
<dd> <dd>
<div class="block">Get the Plugin that created this task</div> <div class="block">Get the Plugin that created this task</div>
</dd> </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> <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> <dd>
<div class="block">Print an Exception</div> <div class="block">Print an Exception</div>
@ -1869,8 +1891,6 @@
<dd>&nbsp;</dd> <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> <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> <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> </dl>
<a name="I:S"> <a name="I:S">
<!-- --> <!-- -->
@ -2009,7 +2029,7 @@
<dd> <dd>
<div class="block">Set the Command that Stops the Server</div> <div class="block">Set the Command that Stops the Server</div>
</dd> </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> <dd>
<div class="block">Setup the SubServers Log System</div> <div class="block">Setup the SubServers Log System</div>
</dd> </dd>
@ -2040,7 +2060,9 @@
<div class="block">Stop SubServers.Host</div> <div class="block">Stop SubServers.Host</div>
</dd> </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> <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> <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> <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> <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> <div class="block">Terminates the Server</div>
</dd> </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> <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> <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> <dd>
<div class="block">Get Executable File</div> <div class="block">Get Executable File</div>
@ -2415,6 +2439,8 @@ the order they are declared.</div>
</dd> </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> <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> <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> <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> <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> <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"> <div class="subNav">
<ul class="navList"> <ul class="navList">
<li>Prev&nbsp;Class</li> <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>
<ul class="navList"> <ul class="navList">
<li><a href="../../../../index.html?net/ME1312/SubServers/Host/ExHost.html" target="_top">Frames</a></li> <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> <td class="colLast"><code><span class="memberNameLink"><a href="../../../../net/ME1312/SubServers/Host/ExHost.html#log">log</a></span></code>&nbsp;</td>
</tr> </tr>
<tr class="rowColor"> <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="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> <td class="colLast"><code><span class="memberNameLink"><a href="../../../../net/ME1312/SubServers/Host/ExHost.html#servers">servers</a></span></code>&nbsp;</td>
</tr> </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="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> <td class="colLast"><code><span class="memberNameLink"><a href="../../../../net/ME1312/SubServers/Host/ExHost.html#subdata">subdata</a></span></code>&nbsp;</td>
</tr> </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="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> <td class="colLast"><code><span class="memberNameLink"><a href="../../../../net/ME1312/SubServers/Host/ExHost.html#templates">templates</a></span></code>&nbsp;</td>
</tr> </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="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> <td class="colLast"><code><span class="memberNameLink"><a href="../../../../net/ME1312/SubServers/Host/ExHost.html#version">version</a></span></code>&nbsp;</td>
</tr> </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> <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> </li>
</ul> </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 name="config">
<!-- --> <!-- -->
</a> </a>
@ -418,7 +405,7 @@ extends java.lang.Object</pre>
<div class="subNav"> <div class="subNav">
<ul class="navList"> <ul class="navList">
<li>Prev&nbsp;Class</li> <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>
<ul class="navList"> <ul class="navList">
<li><a href="../../../../index.html?net/ME1312/SubServers/Host/ExHost.html" target="_top">Frames</a></li> <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>
<div class="subNav"> <div class="subNav">
<ul class="navList"> <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> <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>
<ul class="navList"> <ul class="navList">
@ -229,7 +229,7 @@ extends <a href="../../../../../../net/ME1312/SubServers/Host/Library/Log/LogStr
</div> </div>
<div class="subNav"> <div class="subNav">
<ul class="navList"> <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> <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>
<ul class="navList"> <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> <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>
<tr class="altColor"> <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> <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> </tr>
</table> </table>
@ -184,8 +184,9 @@ extends java.lang.Object</pre>
</tr> </tr>
<tr id="i0" class="altColor"> <tr id="i0" class="altColor">
<td class="colFirst"><code>static void</code></td> <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, java.io.PrintStream&nbsp;err,
jline.console.ConsoleReader&nbsp;in,
java.io.File&nbsp;dir)</code> java.io.File&nbsp;dir)</code>
<div class="block">Setup the SubServers Log System</div> <div class="block">Setup the SubServers Log System</div>
</td> </td>
@ -236,7 +237,7 @@ extends java.lang.Object</pre>
<ul class="blockList"> <ul class="blockList">
<li class="blockList"> <li class="blockList">
<h4>warn</h4> <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> </li>
</ul> </ul>
<a name="error"> <a name="error">
@ -287,7 +288,7 @@ extends java.lang.Object</pre>
<!-- --> <!-- -->
</a> </a>
<h3>Method Detail</h3> <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> </a>
<ul class="blockListLast"> <ul class="blockListLast">
@ -295,6 +296,7 @@ extends java.lang.Object</pre>
<h4>setup</h4> <h4>setup</h4>
<pre>public static&nbsp;void&nbsp;setup(java.io.PrintStream&nbsp;out, <pre>public static&nbsp;void&nbsp;setup(java.io.PrintStream&nbsp;out,
java.io.PrintStream&nbsp;err, java.io.PrintStream&nbsp;err,
jline.console.ConsoleReader&nbsp;in,
java.io.File&nbsp;dir) java.io.File&nbsp;dir)
throws java.io.IOException</pre> throws java.io.IOException</pre>
<div class="block">Setup the SubServers Log System</div> <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> <dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>out</code> - System.out</dd> <dd><code>out</code> - System.out</dd>
<dd><code>err</code> - System.err</dd> <dd><code>err</code> - System.err</dd>
<dd><code>in</code> - jline.in</dd>
<dd><code>dir</code> - Runtime Directory</dd> <dd><code>dir</code> - Runtime Directory</dd>
<dt><span class="throwsLabel">Throws:</span></dt> <dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.io.IOException</code></dd> <dd><code>java.io.IOException</code></dd>

View File

@ -12,6 +12,7 @@
<div class="indexContainer"> <div class="indexContainer">
<h2 title="Classes">Classes</h2> <h2 title="Classes">Classes</h2>
<ul title="Classes"> <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="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="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> <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> </tr>
<tbody> <tbody>
<tr class="altColor"> <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="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"> <td class="colLast">
<div class="block">Error Log Stream Class</div> <div class="block">Error Log Stream Class</div>
</td> </td>
</tr> </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="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"> <td class="colLast">
<div class="block">Log File Writer Class</div> <div class="block">Log File Writer Class</div>
</td> </td>
</tr> </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="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"> <td class="colLast">
<div class="block">Logger Class</div> <div class="block">Logger Class</div>
</td> </td>
</tr> </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="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"> <td class="colLast">
<div class="block">Log Stream Class</div> <div class="block">Log Stream Class</div>
</td> </td>
</tr> </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="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"> <td class="colLast">
<div class="block">System.out and System.err Override Class</div> <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) <li type="circle">java.io.OutputStream (implements java.io.Closeable, java.io.Flushable)
<ul> <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">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> <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> </ul>
</li> </li>

View File

@ -48,7 +48,7 @@ var activeTableTab = "activeTableTab";
<div class="subNav"> <div class="subNav">
<ul class="navList"> <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/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>
<ul class="navList"> <ul class="navList">
<li><a href="../../../../../index.html?net/ME1312/SubServers/Host/Library/NamedContainer.html" target="_top">Frames</a></li> <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"> <div class="subNav">
<ul class="navList"> <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/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>
<ul class="navList"> <ul class="navList">
<li><a href="../../../../../index.html?net/ME1312/SubServers/Host/Library/NamedContainer.html" target="_top">Frames</a></li> <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) { 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 tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor"; var altColor = "altColor";
var rowColor = "rowColor"; var rowColor = "rowColor";
@ -47,7 +47,7 @@ var activeTableTab = "activeTableTab";
</div> </div>
<div class="subNav"> <div class="subNav">
<ul class="navList"> <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> <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>
<ul class="navList"> <ul class="navList">
@ -118,6 +118,7 @@ var activeTableTab = "activeTableTab";
<br> <br>
<pre>public enum <span class="typeNameLabel">TextColor</span> <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> 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> </li>
</ul> </ul>
</div> </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> <th class="colLast" scope="col">Method and Description</th>
</tr> </tr>
<tr id="i0" class="altColor"> <tr id="i0" class="altColor">
<td class="colFirst"><code>static char</code></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#getColorChar--">getColorChar</a></span>()</code>&nbsp;</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>
<tr id="i1" class="rowColor"> <tr id="i1" class="rowColor">
<td class="colFirst"><code>java.lang.String</code></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#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>
<tr id="i2" class="altColor"> <tr id="i2" class="altColor">
<td class="colFirst"><code>static java.lang.String</code></td> <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, <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>&nbsp;</td> java.lang.String&nbsp;str)</code>
<div class="block">Convert Minecraft color codes starting with character to Ansi color codes</div>
</td>
</tr> </tr>
<tr id="i3" class="rowColor"> <tr id="i3" class="rowColor">
<td class="colFirst"><code>static java.lang.String</code></td> <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>
<tr id="i4" class="altColor"> <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="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> <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>
<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="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> <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> <div class="block">Returns the enum constant of this type with the specified name.</div>
</td> </td>
</tr> </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="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> <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 <div class="block">Returns an array containing the constants of this enum type, in
@ -527,6 +549,34 @@ not permitted.)</div>
</dl> </dl>
</li> </li>
</ul> </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 name="toString--">
<!-- --> <!-- -->
</a> </a>
@ -540,24 +590,6 @@ not permitted.)</div>
</dl> </dl>
</li> </li>
</ul> </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 name="parseColor-char-java.lang.String-">
<!-- --> <!-- -->
</a> </a>
@ -566,6 +598,48 @@ not permitted.)</div>
<h4>parseColor</h4> <h4>parseColor</h4>
<pre>public static&nbsp;java.lang.String&nbsp;parseColor(char&nbsp;character, <pre>public static&nbsp;java.lang.String&nbsp;parseColor(char&nbsp;character,
java.lang.String&nbsp;str)</pre> 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> </li>
</ul> </ul>
<a name="stripColor-java.lang.String-"> <a name="stripColor-java.lang.String-">
@ -575,6 +649,13 @@ not permitted.)</div>
<li class="blockList"> <li class="blockList">
<h4>stripColor</h4> <h4>stripColor</h4>
<pre>public static&nbsp;java.lang.String&nbsp;stripColor(java.lang.String&nbsp;str)</pre> <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> </li>
</ul> </ul>
</li> </li>
@ -604,7 +685,7 @@ not permitted.)</div>
</div> </div>
<div class="subNav"> <div class="subNav">
<ul class="navList"> <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> <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>
<ul class="navList"> <ul class="navList">

View File

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

View File

@ -124,12 +124,18 @@
</td> </td>
</tr> </tr>
<tr class="altColor"> <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="colFirst"><a href="../../../../../net/ME1312/SubServers/Host/Library/UniversalFile.html" title="class in net.ME1312.SubServers.Host.Library">UniversalFile</a></td>
<td class="colLast"> <td class="colLast">
<div class="block">Universal File Class</div> <div class="block">Universal File Class</div>
</td> </td>
</tr> </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="colFirst"><a href="../../../../../net/ME1312/SubServers/Host/Library/Util.html" title="class in net.ME1312.SubServers.Host.Library">Util</a></td>
<td class="colLast"> <td class="colLast">
<div class="block">SubServers Utility Class</div> <div class="block">SubServers Utility Class</div>
@ -148,7 +154,9 @@
<tbody> <tbody>
<tr class="altColor"> <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="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> </tr>
</tbody> </tbody>
</table> </table>

View File

@ -79,6 +79,19 @@
<ul> <ul>
<li type="circle">java.lang.Object <li type="circle">java.lang.Object
<ul> <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; <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> <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> <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>
<div class="subNav"> <div class="subNav">
<ul class="navList"> <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> <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>
<ul class="navList"> <ul class="navList">
@ -656,7 +656,7 @@ public&nbsp;<a href="../../../../net/ME1312/SubServers/Host/ExHost.html" title="
</div> </div>
<div class="subNav"> <div class="subNav">
<ul class="navList"> <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> <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>
<ul class="navList"> <ul class="navList">

View File

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

View File

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

View File

@ -80,7 +80,6 @@
<li type="circle">java.lang.Object <li type="circle">java.lang.Object
<ul> <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/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/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> <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> </ul>

View File

@ -92,6 +92,19 @@
<li type="circle">java.lang.Object <li type="circle">java.lang.Object
<ul> <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">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.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; <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> <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> <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> </ul>
</li> </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/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> <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> <ul>
@ -136,6 +148,15 @@
<li type="circle">java.io.OutputStream (implements java.io.Closeable, java.io.Flushable) <li type="circle">java.io.OutputStream (implements java.io.Closeable, java.io.Flushable)
<ul> <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">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> <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> </ul>
</li> </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 cinfo = new JSONObject();
JSONObject templates = new JSONObject(); JSONObject templates = new JSONObject();
for (SubCreator.ServerTemplate template : getCreator().getTemplates().values()) { for (SubCreator.ServerTemplate template : getCreator().getTemplates().values())
JSONObject tinfo = new JSONObject(); templates.put(template.getName(), new JSONObject(template.toString()));
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);
}
cinfo.put("templates", templates); cinfo.put("templates", templates);
hinfo.put("creator", cinfo); hinfo.put("creator", cinfo);

View File

@ -90,6 +90,7 @@ public class InternalSubServer extends SubServerContainer {
new UniversalFile(this.directory, "plugins:SubServers.Client.jar").delete(); 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()); 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) { } catch (Throwable e) {
System.out.println("Couldn't auto-update SubServers.Client.jar"); System.out.println("Couldn't auto-update SubServers.Client.jar");
e.printStackTrace(); 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.Util;
import net.ME1312.SubServers.Bungee.Library.Version.Version; import net.ME1312.SubServers.Bungee.Library.Version.Version;
import net.ME1312.SubServers.Bungee.SubAPI; import net.ME1312.SubServers.Bungee.SubAPI;
import org.json.JSONObject;
import org.w3c.dom.Document; import org.w3c.dom.Document;
import org.w3c.dom.Node; import org.w3c.dom.Node;
import org.w3c.dom.NodeList; import org.w3c.dom.NodeList;
@ -134,7 +135,6 @@ public abstract class SubCreator {
return directory; return directory;
} }
/** /**
* Get the Type of this Template * Get the Type of this Template
* *
@ -161,6 +161,16 @@ public abstract class SubCreator {
public YAMLSection getConfigOptions() { public YAMLSection getConfigOptions() {
return options; 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 { public enum ServerType {
SPIGOT, SPIGOT,

View File

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

View File

@ -64,14 +64,8 @@ public class PacketDownloadHostInfo implements PacketIn, PacketOut {
JSONObject cinfo = new JSONObject(); JSONObject cinfo = new JSONObject();
JSONObject templates = new JSONObject(); JSONObject templates = new JSONObject();
for (SubCreator.ServerTemplate template : host.getCreator().getTemplates().values()) { for (SubCreator.ServerTemplate template : host.getCreator().getTemplates().values())
JSONObject tinfo = new JSONObject(); templates.put(template.getName(), new JSONObject(template.toString()));
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);
}
cinfo.put("templates", templates); cinfo.put("templates", templates);
info.put("creator", cinfo); 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("player", ((event.getPlayer() == null)?null:event.getPlayer().toString()));
args.put("host", event.getHost().getName()); args.put("host", event.getHost().getName());
args.put("name", event.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("version", event.getVersion().toString());
args.put("port", event.getPort()); args.put("port", event.getPort());
plugin.subdata.broadcastPacket(new PacketOutRunEvent(event.getClass(), args)); 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()); 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(" - Host: " + server.getHost().getDisplayName() + ((!server.getHost().getName().equals(server.getHost().getDisplayName()))?" ("+server.getHost().getName()+')':""));
sender.sendMessage(" - Enabled: " + ((server.isEnabled())?"yes":"no")); sender.sendMessage(" - Enabled: " + ((server.isEnabled())?"yes":"no"));
sender.sendMessage(" - Editable: " + ((server.isEditable())?"yes":"no"));
if (server.getGroups().size() > 0) { if (server.getGroups().size() > 0) {
sender.sendMessage(" - Groups:"); sender.sendMessage(" - Groups:");
for (String group : server.getGroups()) sender.sendMessage(" - " + group); for (String group : server.getGroups()) sender.sendMessage(" - " + group);
@ -239,6 +240,7 @@ public final class SubCommand extends CommandX {
sender.sendMessage(" - Incompatibilities:"); sender.sendMessage(" - Incompatibilities:");
for (SubServer other : server.getIncompatibilities()) sender.sendMessage(" - " + other.getDisplayName() + ((current.contains(other))?"*":"") + ((!other.getName().equals(other.getDisplayName()))?" ("+other.getName()+')':"")); 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 { } else {

View File

@ -63,7 +63,7 @@ public final class SubPlugin extends BungeeCord implements Listener {
public long resetDate = 0; public long resetDate = 0;
private boolean running = false; private boolean running = false;
private boolean posted = false; private boolean posted = false;
private static BigInteger lastSignature = new BigInteger("-1"); private static BigInteger lastSignature = BigInteger.valueOf(-1);
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
protected SubPlugin(PrintStream out) throws IOException { protected SubPlugin(PrintStream out) throws IOException {
@ -563,7 +563,7 @@ public final class SubPlugin extends BungeeCord implements Listener {
String getNewSignature() { String getNewSignature() {
BigInteger number = (lastSignature = lastSignature.add(BigInteger.ONE)); BigInteger number = (lastSignature = lastSignature.add(BigInteger.ONE));
final String DIGITS = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz+/"; final String DIGITS = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_";
final BigInteger BASE = BigInteger.valueOf(DIGITS.length()); final BigInteger BASE = BigInteger.valueOf(DIGITS.length());
StringBuilder result = new StringBuilder(); StringBuilder result = new StringBuilder();
@ -581,11 +581,10 @@ public final class SubPlugin extends BungeeCord implements Listener {
* *
* @param method Method to reference * @param method Method to reference
* @param args Method arguments * @param args Method arguments
* @param <T> Class Type
* @return Method Response * @return Method Response
*/ */
@SuppressWarnings("unchecked") @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) { if (redis) {
Object api = getPluginManager().getPlugin("RedisBungee").getClass().getMethod("getApi").invoke(null); Object api = getPluginManager().getPlugin("RedisBungee").getClass().getMethod("getApi").invoke(null);
Class<?>[] classargs = new Class<?>[args.length]; Class<?>[] classargs = new Class<?>[args.length];
@ -642,18 +641,6 @@ public final class SubPlugin extends BungeeCord implements Listener {
return servers; 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) @EventHandler(priority = Byte.MAX_VALUE)
public void reroute(ServerConnectEvent e) { public void reroute(ServerConnectEvent e) {
Map<String, ServerInfo> servers = new TreeMap<String, ServerInfo>(api.getServers()); 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 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; package net.ME1312.SubServers.Host;
import jline.console.ConsoleReader;
import net.ME1312.SubServers.Host.API.Event.CommandPreProcessEvent; import net.ME1312.SubServers.Host.API.Event.CommandPreProcessEvent;
import net.ME1312.SubServers.Host.API.Event.SubDisableEvent; import net.ME1312.SubServers.Host.API.Event.SubDisableEvent;
import net.ME1312.SubServers.Host.API.Event.SubEnableEvent; 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.Exception.IllegalPluginException;
import net.ME1312.SubServers.Host.Library.Log.FileLogger; import net.ME1312.SubServers.Host.Library.Log.FileLogger;
import net.ME1312.SubServers.Host.Library.Log.Logger; 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.NamedContainer;
import net.ME1312.SubServers.Host.Library.UniversalFile; import net.ME1312.SubServers.Host.Library.UniversalFile;
import net.ME1312.SubServers.Host.Library.Util; import net.ME1312.SubServers.Host.Library.Util;
import net.ME1312.SubServers.Host.Library.Version.Version; import net.ME1312.SubServers.Host.Library.Version.Version;
import net.ME1312.SubServers.Host.Network.Cipher; import net.ME1312.SubServers.Host.Network.Cipher;
import net.ME1312.SubServers.Host.Network.SubDataClient; import net.ME1312.SubServers.Host.Network.SubDataClient;
import org.fusesource.jansi.AnsiConsole;
import org.json.JSONObject; import org.json.JSONObject;
import org.w3c.dom.Document; import org.w3c.dom.Document;
import org.w3c.dom.Node; import org.w3c.dom.Node;
@ -30,14 +33,14 @@ import java.io.*;
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.InvocationTargetException;
import java.net.InetAddress; import java.net.InetAddress;
import java.net.URL; import java.net.URL;
import java.net.URLDecoder; import java.net.URLClassLoader;
import java.nio.charset.Charset; import java.nio.charset.Charset;
import java.nio.file.Files; import java.nio.file.Files;
import java.text.DecimalFormat; import java.text.DecimalFormat;
import java.util.*; import java.util.*;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.zip.ZipEntry; import java.util.jar.JarEntry;
import java.util.zip.ZipInputStream; import java.util.jar.JarFile;
/** /**
* SubServers.Host Main Class * SubServers.Host Main Class
@ -50,7 +53,6 @@ public final class ExHost {
public Logger log; public Logger log;
public final UniversalFile dir = new UniversalFile(new File(System.getProperty("user.dir"))); public final UniversalFile dir = new UniversalFile(new File(System.getProperty("user.dir")));
public final UniversalFile runtime;
public YAMLConfig config; public YAMLConfig config;
public YAMLSection host = null; public YAMLSection host = null;
public SubDataClient subdata = null; public SubDataClient subdata = null;
@ -59,6 +61,7 @@ public final class ExHost {
public final Version bversion = new Version(2); public final Version bversion = new Version(2);
public final SubAPI api = new SubAPI(this); public final SubAPI api = new SubAPI(this);
private ConsoleReader jline;
private boolean running = false; private boolean running = false;
private boolean ready = false; private boolean ready = false;
@ -70,18 +73,34 @@ public final class ExHost {
*/ */
public static void main(String[] args) throws Exception { public static void main(String[] args) throws Exception {
if (System.getProperty("RM.subservers", "true").equalsIgnoreCase("true")) { 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 { } else {
System.out.println(">> SubServers code has been disallowed to work on this machine"); System.out.println(">> SubServers code has been disallowed to work on this machine");
System.out.println(">> Check with your provider for more information"); System.out.println(">> Check with your provider for more information");
System.exit(1); 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"); log = new Logger("SubServers");
try { 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"); log.info.println("Loading SubServers.Host v" + version.toString() + " Libraries");
dir.mkdirs(); dir.mkdirs();
new File(dir, "Plugins").mkdir(); new File(dir, "Plugins").mkdir();
@ -96,6 +115,11 @@ public final class ExHost {
} }
config = new YAMLConfig(new UniversalFile(dir, "config.yml")); 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()) { if (new UniversalFile(dir, "Recently Deleted").exists()) {
int f = new UniversalFile(dir, "Recently Deleted").listFiles().length; int f = new UniversalFile(dir, "Recently Deleted").listFiles().length;
for (File file : new UniversalFile(dir, "Recently Deleted").listFiles()) { for (File file : new UniversalFile(dir, "Recently Deleted").listFiles()) {
@ -154,49 +178,152 @@ public final class ExHost {
})); }));
creator = new SubCreator(this); 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 begin = Calendar.getInstance().getTime().getTime();
long i = 0;
log.info.println("Loading SubAPI Plugins..."); log.info.println("Loading SubAPI Plugins...");
/* /*
* Decode Plugin List Variable * Find Jars
*/ */
String decoded = URLDecoder.decode(System.getProperty("subservers.host.plugins"), "UTF-8"); LinkedList<URL> jars = new LinkedList<URL>();
List<String> classes = new LinkedList<String>(); for (File file : pldir.listFiles()) {
HashMap<String, SubPluginInfo> plugins = new LinkedHashMap<String, SubPluginInfo>(); if (file.getName().endsWith(".jar")) {
if (!decoded.contains(" ")) { jars.add(file.toURI().toURL());
classes.add(decoded); }
} else {
classes.addAll(Arrays.asList(decoded.split(" ")));
} }
/* /*
* Load Main Classes & Plugin Descriptions * Find & Pre-Load Main Classes
* (Unordered)
*/ */
for (String main : classes) { URLClassLoader superloader = new URLClassLoader(jars.toArray(new URL[jars.size()]), this.getClass().getClassLoader());
try { LinkedHashMap<String, NamedContainer<LinkedList<String>, LinkedHashMap<String, String>>> classes = new LinkedHashMap<String, NamedContainer<LinkedList<String>, LinkedHashMap<String, String>>>();
Class<?> clazz = Class.forName(main); for (File file : pldir.listFiles()) {
if (!clazz.isAnnotationPresent(SubPlugin.class)) throw new ClassCastException("Cannot find plugin descriptor"); if (file.getName().endsWith(".jar")) {
Object obj = clazz.getConstructor().newInstance();
try { try {
SubPluginInfo plugin = new SubPluginInfo(this, obj, clazz.getAnnotation(SubPlugin.class).name(), new Version(clazz.getAnnotation(SubPlugin.class).version()), JarFile jar = new JarFile(file);
Arrays.asList(clazz.getAnnotation(SubPlugin.class).authors()), (clazz.getAnnotation(SubPlugin.class).description().length() > 0)?clazz.getAnnotation(SubPlugin.class).description():null, Enumeration<JarEntry> entries = jar.entries();
(clazz.getAnnotation(SubPlugin.class).website().length() > 0)?new URL(clazz.getAnnotation(SubPlugin.class).website()):null, Arrays.asList(clazz.getAnnotation(SubPlugin.class).loadBefore()), LinkedList<String> mains = new LinkedList<String>();
Arrays.asList(clazz.getAnnotation(SubPlugin.class).dependencies()), Arrays.asList(clazz.getAnnotation(SubPlugin.class).softDependencies())); List<String> contents = new ArrayList<String>();
if (plugins.keySet().contains(plugin.getName().toLowerCase())) log.warn.println("Duplicate plugin: " + plugin.getName().toLowerCase());
plugin.addExtra("subservers.plugin.loadafter", new ArrayList<String>()); if (jar.getJarEntry("package.xml") != null) {
plugins.put(plugin.getName().toLowerCase(), plugin); 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) { } 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 * Register Plugins
* (Ordered by LoadBefore & Dependencies)
*/ */
int i = 0;
while (plugins.size() > 0) { while (plugins.size() > 0) {
List<String> loaded = new ArrayList<String>(); List<String> loaded = new ArrayList<String>();
for (SubPluginInfo plugin : plugins.values()) { for (SubPluginInfo plugin : plugins.values()) {
@ -256,7 +385,7 @@ public final class ExHost {
loaded.add(plugin.getName().toLowerCase()); loaded.add(plugin.getName().toLowerCase());
} }
} }
int progress = 0; progress = 0;
for (String name : loaded) { for (String name : loaded) {
progress++; progress++;
plugins.remove(name); plugins.remove(name);
@ -271,7 +400,7 @@ public final class ExHost {
* Enable Plugins * Enable Plugins
*/ */
api.executeEvent(new SubEnableEvent(this)); 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(); loadDefaults();
@ -329,12 +458,11 @@ public final class ExHost {
SubAPI.getInstance().executeEvent(new SubReloadEvent(this)); SubAPI.getInstance().executeEvent(new SubReloadEvent(this));
} }
private void loop() { private void loop() throws Exception {
Scanner console = new Scanner(System.in); String umsg;
ready = true; ready = true;
while (ready && console.hasNextLine()) { while (ready && (umsg = jline.readLine(">")) != null) {
if (!ready) continue; if (!ready || umsg.equals("")) continue;
final String umsg = console.nextLine();
final CommandPreProcessEvent event; final CommandPreProcessEvent event;
api.executeEvent(event = new CommandPreProcessEvent(this, umsg)); api.executeEvent(event = new CommandPreProcessEvent(this, umsg));
if (!event.isCancelled()) { if (!event.isCancelled()) {
@ -343,17 +471,15 @@ public final class ExHost {
ArrayList<String> args = new ArrayList<String>(); ArrayList<String> args = new ArrayList<String>();
args.addAll(Arrays.asList(umsg.contains(" ") ? umsg.split(" ") : new String[]{umsg})); args.addAll(Arrays.asList(umsg.contains(" ") ? umsg.split(" ") : new String[]{umsg}));
args.remove(0); args.remove(0);
try {
new Thread(() -> { api.commands.get(cmd.toLowerCase()).command(cmd, args.toArray(new String[args.size()]));
try { } catch (Exception e) {
api.commands.get(cmd.toLowerCase()).command(cmd, args.toArray(new String[args.size()])); log.error.println(new InvocationTargetException(e, "Uncaught exception while running command"));
} catch (Exception e) { }
log.error.println(new InvocationTargetException(e, "Uncaught exception while running command"));
}
}).start();
} else { } else {
log.message.println("Unknown Command - " + umsg); log.message.println("Unknown Command - " + umsg);
} }
jline.getOutput().write("\b \b");
} }
} }
} }
@ -413,32 +539,4 @@ public final class ExHost {
System.exit(exit); 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(); 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()); 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) { } catch (Throwable e) {
host.log.info.println("Couldn't auto-update SubServers.Client.jar"); host.log.info.println("Couldn't auto-update SubServers.Client.jar");
host.log.error.println(e); 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 * @param err Exception
*/ */
public void print(Throwable err) { public void print(Throwable err) {
sync();
writing++;
StringWriter sw = new StringWriter(); StringWriter sw = new StringWriter();
err.printStackTrace(new PrintWriter(sw)); err.printStackTrace(new PrintWriter(sw));
String s = sw.toString(); 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 * @param err Exceptions
*/ */
public void println(Throwable... err) { public void println(Throwable... err) {
sync();
writing++;
for (Throwable e : err) { for (Throwable e : err) {
StringWriter sw = new StringWriter(); StringWriter sw = new StringWriter();
e.printStackTrace(new PrintWriter(sw)); 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 String name;
private Container<PrintStream> stream; private Container<PrintStream> stream;
private boolean first = true; private boolean first = true;
protected long writing = 0;
protected Thread threadwriting = null;
protected LogStream(String prefix, String name, Container<PrintStream> stream) { protected LogStream(String prefix, String name, Container<PrintStream> stream) {
this.prefix = prefix; this.prefix = prefix;
@ -33,7 +35,14 @@ public class LogStream {
* @param obj Object * @param obj Object
*/ */
public void print(Object obj) { 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 * @param str String
*/ */
public void print(String str) { 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 * @param str Character Array
*/ */
public void print(char[] str) { 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 * @param c Character
*/ */
public void print(char c) { 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 != this) {
if (last != null && !last.first) last.print('\n'); if (last != null) {
stall();
if (!last.first) last.print('\n');
}
LogStream.last = this; LogStream.last = this;
first = true;
} }
if (first) stream.get().print(prefix()); if (first) stream.get().print(prefix());
stream.get().print(c); stream.get().print(c);
first = c == '\n'; 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) * Print multiple Objects (separated by a new line)
* *
* @param obj Objects * @param obj Objects
*/ */
public void println(Object... obj) { public void println(Object... obj) {
sync();
writing++;
for (Object OBJ : obj) { for (Object OBJ : obj) {
print(OBJ); if (OBJ == null) {
print('\n'); 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 * @param str Objects
*/ */
public void println(String... str) { public void println(String... str) {
sync();
writing++;
for (String STR : str) { for (String STR : str) {
print(STR); if (STR == null) {
print('\n'); 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 * @param str Character Arrays
*/ */
public void println(char[]... str) { public void println(char[]... str) {
sync();
writing++;
for (char[] STR : str) { for (char[] STR : str) {
print(STR); for (char c : STR) write(c);
print('\n'); write('\n');
} }
writing--;
} }
/** /**
@ -111,9 +180,12 @@ public class LogStream {
* @param c Characters * @param c Characters
*/ */
public void println(char... c) { public void println(char... c) {
sync();
writing++;
for (char C : c) { for (char C : c) {
print(C); write(C);
print('\n'); write('\n');
} }
writing--;
} }
} }

View File

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

View File

@ -1,10 +1,13 @@
package net.ME1312.SubServers.Host.Library.Log; package net.ME1312.SubServers.Host.Library.Log;
import net.ME1312.SubServers.Host.Library.NamedContainer; import net.ME1312.SubServers.Host.Library.NamedContainer;
import net.ME1312.SubServers.Host.SubAPI;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.io.OutputStream; import java.io.OutputStream;
import java.lang.reflect.Field;
import java.util.List;
/** /**
* System.out and System.err Override Class * System.out and System.err Override Class
@ -12,14 +15,21 @@ import java.io.OutputStream;
public final class SystemLogger extends OutputStream { public final class SystemLogger extends OutputStream {
private NamedContainer<String, Logger> last = new NamedContainer<String, Logger>("", null); private NamedContainer<String, Logger> last = new NamedContainer<String, Logger>("", null);
private boolean error; private boolean error;
private File dir;
protected SystemLogger(boolean level, File dir) throws IOException { protected SystemLogger(boolean level) throws IOException {
if (!new File(dir, SystemLogger.class.getCanonicalName().replace(".", File.separator) + ".class").exists()) {
throw new IOException("Invalid directory for logging:" + dir.getPath());
}
this.error = level; 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 @Override
@ -27,7 +37,7 @@ public final class SystemLogger extends OutputStream {
int i = 0; int i = 0;
String origin = java.lang.System.class.getCanonicalName(); String origin = java.lang.System.class.getCanonicalName();
for (StackTraceElement element : Thread.currentThread().getStackTrace()) { 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("\\$.*", ""); origin = element.getClassName().replaceFirst("\\$.*", "");
break; 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; package net.ME1312.SubServers.Host.Library;
import org.fusesource.jansi.Ansi;
import java.util.Arrays; import java.util.Arrays;
/**
* Color Code Converter Enum
*/
public enum TextColor { public enum TextColor {
AQUA('b'), AQUA('b', Ansi.ansi().a(Ansi.Attribute.RESET).fg(Ansi.Color.CYAN).bold()),
BLACK('0'), BLACK('0', Ansi.ansi().a(Ansi.Attribute.RESET).fg(Ansi.Color.BLACK).boldOff()),
BLUE('9'), BLUE('9', Ansi.ansi().a(Ansi.Attribute.RESET).fg(Ansi.Color.BLUE).bold()),
BOLD('l'), BOLD('l', Ansi.ansi().a(Ansi.Attribute.UNDERLINE_DOUBLE)),
DARK_AQUA('3'), DARK_AQUA('3', Ansi.ansi().a(Ansi.Attribute.RESET).fg(Ansi.Color.CYAN).boldOff()),
DARK_BLUE('1'), DARK_BLUE('1', Ansi.ansi().a(Ansi.Attribute.RESET).fg(Ansi.Color.BLUE).boldOff()),
DARK_GRAY('8'), DARK_GRAY('8', Ansi.ansi().a(Ansi.Attribute.RESET).fg(Ansi.Color.BLACK).bold()),
DARK_GREEN('2'), DARK_GREEN('2', Ansi.ansi().a(Ansi.Attribute.RESET).fg(Ansi.Color.GREEN).boldOff()),
DARK_PURPLE('5'), DARK_PURPLE('5', Ansi.ansi().a(Ansi.Attribute.RESET).fg(Ansi.Color.MAGENTA).boldOff()),
DARK_RED('4'), DARK_RED('4', Ansi.ansi().a(Ansi.Attribute.RESET).fg(Ansi.Color.RED).boldOff()),
GOLD('6'), GOLD('6', Ansi.ansi().a(Ansi.Attribute.RESET).fg(Ansi.Color.YELLOW).boldOff()),
GRAY('7'), GRAY('7', Ansi.ansi().a(Ansi.Attribute.RESET).fg(Ansi.Color.WHITE).boldOff()),
GREEN('a'), GREEN('a', Ansi.ansi().a(Ansi.Attribute.RESET).fg(Ansi.Color.GREEN).bold()),
ITALIC('o'), ITALIC('o', Ansi.ansi().a(Ansi.Attribute.ITALIC)),
LIGHT_PURPLE('d'), LIGHT_PURPLE('d', Ansi.ansi().a(Ansi.Attribute.RESET).fg(Ansi.Color.MAGENTA).bold()),
MAGIC('k'), MAGIC('k', Ansi.ansi().a(Ansi.Attribute.BLINK_SLOW)),
RED('c'), RED('c', Ansi.ansi().a(Ansi.Attribute.RESET).fg(Ansi.Color.RED).bold()),
RESET('r'), RESET('r', Ansi.ansi().a(Ansi.Attribute.RESET)),
STRIKETHROUGH('m'), STRIKETHROUGH('m', Ansi.ansi().a(Ansi.Attribute.STRIKETHROUGH_ON)),
UNDERLINE('n'), UNDERLINE('n', Ansi.ansi().a(Ansi.Attribute.UNDERLINE)),
WHITE('f'), WHITE('f', Ansi.ansi().a(Ansi.Attribute.RESET).fg(Ansi.Color.WHITE).bold()),
YELLOW('e'); 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) { TextColor(Character minecraft, Ansi console) {
this.value = value; 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 @Override
public String toString() { public String toString() {
return getValue(); return asAnsiCode();
}
public String getValue() {
return "\u00A7" + value;
}
public static char getColorChar() {
return '\u00A7';
} }
/**
* 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) { 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; 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) { public static String stripColor(String str) {
for (TextColor color : Arrays.asList(TextColor.values())) { for (TextColor color : Arrays.asList(TextColor.values())) {
str = str.replace(color.getValue(), ""); str = str.replace(color.asMinecraftCode(), "").replace(color.asAnsiCode(), "");
} }
return str; return str;
} }

View File

@ -52,7 +52,9 @@ public class PacketExConfigureHost implements PacketIn, PacketOut {
Util.deleteDirectory(template.getDirectory()); Util.deleteDirectory(template.getDirectory());
} }
host.templates.clear(); 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()) { for (String name : data.getJSONObject("templates").keySet()) {
try { try {
UniversalFile dir = new UniversalFile(templates, name); 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 HashMap<UUID, Timer> schedule = new HashMap<UUID, Timer>();
final TreeMap<String, Command> commands = new TreeMap<String, Command>(); final TreeMap<String, Command> commands = new TreeMap<String, Command>();
final HashMap<String, SubPluginInfo> plugins = new LinkedHashMap<String, SubPluginInfo>(); final HashMap<String, SubPluginInfo> plugins = new LinkedHashMap<String, SubPluginInfo>();
final List<String> knownClasses = new ArrayList<String>();
private final ExHost host; private final ExHost host;
private static SubAPI api; private static SubAPI api;
@ -232,7 +233,7 @@ public final class SubAPI {
for (Object listener : listeners) { for (Object listener : listeners) {
if (Util.isNull(plugin, listener)) throw new NullPointerException(); if (Util.isNull(plugin, listener)) throw new NullPointerException();
for (Method method : Arrays.asList(listener.getClass().getMethods())) { for (Method method : Arrays.asList(listener.getClass().getMethods())) {
if (!method.isAnnotationPresent(EventHandler.class)) { if (method.isAnnotationPresent(EventHandler.class)) {
if (method.getParameterTypes().length == 1) { if (method.getParameterTypes().length == 1) {
if (Event.class.isAssignableFrom(method.getParameterTypes()[0])) { 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>>>>(); 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 { } else {
this.host.log.error.println( this.host.log.error.println(
"Cannot register EventHandler in class \"" + listener.getClass().getCanonicalName() + "\" using method \"" + method.getName() + "\":", "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 { } else {
this.host.log.error.println( this.host.log.error.println(
@ -293,7 +294,7 @@ public final class SubAPI {
public void executeEvent(Event event) { public void executeEvent(Event event) {
if (Util.isNull(event)) throw new NullPointerException(); if (Util.isNull(event)) throw new NullPointerException();
for (Short order : listeners.keySet()) { 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()) { for (SubPluginInfo plugin : listeners.get(order).get(event.getClass()).keySet()) {
try { try {
Field pf = Event.class.getDeclaredField("plugin"); 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 (Object listener : listeners.get(order).get(event.getClass()).get(plugin).keySet()) {
for (Method method : listeners.get(order).get(event.getClass()).get(plugin).get(listener)) { 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 { try {
method.invoke(listener, event); method.invoke(listener, event);
} catch (InvocationTargetException e) { } catch (InvocationTargetException e) {

View File

@ -435,7 +435,7 @@ public class SubCommand {
} }
}.usage("<Name>", "<Host>", "<Template>", "<Version>", "<Port>").description("Creates a SubServer").help( }.usage("<Name>", "<Host>", "<Template>", "<Version>", "<Port>").description("Creates a SubServer").help(
"This command is used to create and launch a SubServer on the specified host via the network.", "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 <Name> argument is required, and should be the name of",
"the SubServer you want to create.", "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> argument is required, and should be the name of",
"the host you want to the server to run on.", "the host you want to the server to run on.",
"", "",
"The <Type> argument is required, and should be the name of", "The <Template> argument is required, and should be the name of",
"the type of server you want to create.", "the template you want to create your server with.",
"", "",
"The <Version> argument is required, and should be a version", "The <Version> argument is required, and should be a version",
"string of the type of server that you want to create", "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>