mirror of
https://github.com/ME1312/SubServers-2.git
synced 2025-04-17 09:26:04 +02:00
/sub reload can now perform soft reloads
/sub reload - can now perform soft reloads /greload - still performs hard resets Soft Reloads mean that SubServers will load new data from the config and attempt to merge it with what is already in memory. This is good if you need to make some quick changes, since it will only stop servers if a major change has been made to them. However, this has the potential to cause issues, which is why the Hard Reset will continue to be tied to bungeecord command.
This commit is contained in:
parent
556d947981
commit
0bf5f16e09
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -778,6 +778,10 @@
|
||||
<dd>
|
||||
<div class="block">Get the Build Options for this Template</div>
|
||||
</dd>
|
||||
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Bungee/Library/Util.html#getCaseInsensitively-java.util.Map-java.lang.String-">getCaseInsensitively(Map<String, V>, String)</a></span> - Static method in class net.ME1312.SubServers.Bungee.Library.<a href="net/ME1312/SubServers/Bungee/Library/Util.html" title="class in net.ME1312.SubServers.Bungee.Library">Util</a></dt>
|
||||
<dd>
|
||||
<div class="block">Get an item from a map ignoring case</div>
|
||||
</dd>
|
||||
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Bungee/Network/SubDataServer.html#getClient-java.net.Socket-">getClient(Socket)</a></span> - Method in class net.ME1312.SubServers.Bungee.Network.<a href="net/ME1312/SubServers/Bungee/Network/SubDataServer.html" title="class in net.ME1312.SubServers.Bungee.Network">SubDataServer</a></dt>
|
||||
<dd>
|
||||
<div class="block">Grabs a Client from the Network</div>
|
||||
@ -2436,6 +2440,10 @@
|
||||
<dd>
|
||||
<div class="block">Reload Config Contents</div>
|
||||
</dd>
|
||||
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Bungee/SubPlugin.html#reload--">reload()</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">Load data from the config (will attempt to merge with current configuration)</div>
|
||||
</dd>
|
||||
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Bungee/Library/Config/YAMLSection.html#remove-java.lang.String-">remove(String)</a></span> - Method in class net.ME1312.SubServers.Bungee.Library.Config.<a href="net/ME1312/SubServers/Bungee/Library/Config/YAMLSection.html" title="class in net.ME1312.SubServers.Bungee.Library.Config">YAMLSection</a></dt>
|
||||
<dd>
|
||||
<div class="block">Remove an Object by Handle</div>
|
||||
@ -2818,7 +2826,7 @@
|
||||
</dd>
|
||||
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Bungee/SubPlugin.html#startListeners--">startListeners()</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">Load Hosts, Servers, SubServers, and SubData Direct</div>
|
||||
<div class="block">Load SubServers before BungeeCord finishes</div>
|
||||
</dd>
|
||||
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Bungee/Host/External/ExternalSubLogger.html#stop--">stop()</a></span> - Method in class net.ME1312.SubServers.Bungee.Host.External.<a href="net/ME1312/SubServers/Bungee/Host/External/ExternalSubLogger.html" title="class in net.ME1312.SubServers.Bungee.Host.External">ExternalSubLogger</a></dt>
|
||||
<dd> </dd>
|
||||
|
@ -17,7 +17,7 @@
|
||||
catch(err) {
|
||||
}
|
||||
//-->
|
||||
var methods = {"i0":9,"i1":9,"i2":9,"i3":9,"i4":9,"i5":9,"i6":9,"i7":9,"i8":9,"i9":9,"i10":9,"i11":9};
|
||||
var methods = {"i0":9,"i1":9,"i2":9,"i3":9,"i4":9,"i5":9,"i6":9,"i7":9,"i8":9,"i9":9,"i10":9,"i11":9,"i12":9};
|
||||
var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],8:["t4","Concrete Methods"]};
|
||||
var altColor = "altColor";
|
||||
var rowColor = "rowColor";
|
||||
@ -181,48 +181,55 @@ extends java.lang.Object</pre>
|
||||
</tr>
|
||||
<tr id="i4" class="altColor">
|
||||
<td class="colFirst"><code>static <V> V</code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../net/ME1312/SubServers/Bungee/Library/Util.html#getCaseInsensitively-java.util.Map-java.lang.String-">getCaseInsensitively</a></span>(java.util.Map<java.lang.String,V> map,
|
||||
java.lang.String key)</code>
|
||||
<div class="block">Get an item from a map ignoring case</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i5" class="rowColor">
|
||||
<td class="colFirst"><code>static <V> V</code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../net/ME1312/SubServers/Bungee/Library/Util.html#getNew-java.util.Collection-net.ME1312.SubServers.Bungee.Library.Util.ReturnRunnable-">getNew</a></span>(java.util.Collection<? extends V> existing,
|
||||
<a href="../../../../../net/ME1312/SubServers/Bungee/Library/Util.ReturnRunnable.html" title="interface in net.ME1312.SubServers.Bungee.Library">Util.ReturnRunnable</a><V> generator)</code>
|
||||
<div class="block">Gets a new Variable that doesn't match the existing Variables</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i5" class="rowColor">
|
||||
<tr id="i6" class="altColor">
|
||||
<td class="colFirst"><code>static boolean</code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../net/ME1312/SubServers/Bungee/Library/Util.html#isException-net.ME1312.SubServers.Bungee.Library.Util.ExceptionRunnable-">isException</a></span>(<a href="../../../../../net/ME1312/SubServers/Bungee/Library/Util.ExceptionRunnable.html" title="interface in net.ME1312.SubServers.Bungee.Library">Util.ExceptionRunnable</a> runnable)</code>
|
||||
<div class="block">Determines if an Exception will occur</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i6" class="altColor">
|
||||
<tr id="i7" class="rowColor">
|
||||
<td class="colFirst"><code>static boolean</code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../net/ME1312/SubServers/Bungee/Library/Util.html#isNull-java.lang.Object...-">isNull</a></span>(java.lang.Object... values)</code>
|
||||
<div class="block">Checks values to make sure they're not null</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i7" class="rowColor">
|
||||
<tr id="i8" class="altColor">
|
||||
<td class="colFirst"><code>static int</code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../net/ME1312/SubServers/Bungee/Library/Util.html#random-int-int-">random</a></span>(int min,
|
||||
int max)</code>
|
||||
<div class="block">Get a Random Integer</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i8" class="altColor">
|
||||
<tr id="i9" class="rowColor">
|
||||
<td class="colFirst"><code>static java.lang.String</code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../net/ME1312/SubServers/Bungee/Library/Util.html#readAll-java.io.Reader-">readAll</a></span>(java.io.Reader rd)</code>
|
||||
<div class="block">Read Everything from Reader</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i9" class="rowColor">
|
||||
<tr id="i10" class="altColor">
|
||||
<td class="colFirst"><code>static java.lang.String</code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../net/ME1312/SubServers/Bungee/Library/Util.html#unescapeJavaString-java.lang.String-">unescapeJavaString</a></span>(java.lang.String str)</code>
|
||||
<div class="block">Parse escapes in a Java String</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i10" class="altColor">
|
||||
<tr id="i11" class="rowColor">
|
||||
<td class="colFirst"><code>static void</code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../net/ME1312/SubServers/Bungee/Library/Util.html#unzip-java.io.InputStream-java.io.File-">unzip</a></span>(java.io.InputStream zip,
|
||||
java.io.File dir)</code> </td>
|
||||
</tr>
|
||||
<tr id="i11" class="rowColor">
|
||||
<tr id="i12" class="altColor">
|
||||
<td class="colFirst"><code>static void</code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../net/ME1312/SubServers/Bungee/Library/Util.html#zip-java.io.File-java.io.OutputStream-">zip</a></span>(java.io.File file,
|
||||
java.io.OutputStream zip)</code> </td>
|
||||
@ -288,6 +295,26 @@ extends java.lang.Object</pre>
|
||||
</dl>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="getCaseInsensitively-java.util.Map-java.lang.String-">
|
||||
<!-- -->
|
||||
</a>
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>getCaseInsensitively</h4>
|
||||
<pre>public static <V> V getCaseInsensitively(java.util.Map<java.lang.String,V> map,
|
||||
java.lang.String key)</pre>
|
||||
<div class="block">Get an item from a map ignoring case</div>
|
||||
<dl>
|
||||
<dt><span class="paramLabel">Type Parameters:</span></dt>
|
||||
<dd><code>V</code> - Value</dd>
|
||||
<dt><span class="paramLabel">Parameters:</span></dt>
|
||||
<dd><code>map</code> - Map to search</dd>
|
||||
<dd><code>key</code> - Key to search with</dd>
|
||||
<dt><span class="returnLabel">Returns:</span></dt>
|
||||
<dd>Search Result</dd>
|
||||
</dl>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="getNew-java.util.Collection-net.ME1312.SubServers.Bungee.Library.Util.ReturnRunnable-">
|
||||
<!-- -->
|
||||
</a>
|
||||
|
@ -17,7 +17,7 @@
|
||||
catch(err) {
|
||||
}
|
||||
//-->
|
||||
var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10};
|
||||
var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10};
|
||||
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
|
||||
var altColor = "altColor";
|
||||
var rowColor = "rowColor";
|
||||
@ -250,20 +250,26 @@ implements net.md_5.bungee.api.plugin.Listener</pre>
|
||||
</tr>
|
||||
<tr id="i5" class="rowColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../net/ME1312/SubServers/Bungee/SubPlugin.html#reroute-net.md_5.bungee.api.event.ServerConnectEvent-">reroute</a></span>(net.md_5.bungee.api.event.ServerConnectEvent e)</code> </td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../net/ME1312/SubServers/Bungee/SubPlugin.html#reload--">reload</a></span>()</code>
|
||||
<div class="block">Load data from the config (will attempt to merge with current configuration)</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i6" class="altColor">
|
||||
<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> e)</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 e)</code> </td>
|
||||
</tr>
|
||||
<tr id="i7" class="rowColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../net/ME1312/SubServers/Bungee/SubPlugin.html#startListeners--">startListeners</a></span>()</code>
|
||||
<div class="block">Load Hosts, Servers, SubServers, and SubData Direct</div>
|
||||
</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> e)</code> </td>
|
||||
</tr>
|
||||
<tr id="i8" class="altColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../net/ME1312/SubServers/Bungee/SubPlugin.html#startListeners--">startListeners</a></span>()</code>
|
||||
<div class="block">Load SubServers before BungeeCord finishes</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i9" class="rowColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../net/ME1312/SubServers/Bungee/SubPlugin.html#stopListeners--">stopListeners</a></span>()</code>
|
||||
<div class="block">Reset all changes made by startListeners</div>
|
||||
</td>
|
||||
@ -367,13 +373,13 @@ implements net.md_5.bungee.api.plugin.Listener</pre>
|
||||
<pre>public java.util.HashMap<java.lang.String,java.lang.String> exLang</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="redis">
|
||||
<a name="api">
|
||||
<!-- -->
|
||||
</a>
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>redis</h4>
|
||||
<pre>public boolean redis</pre>
|
||||
<h4>api</h4>
|
||||
<pre>public final <a href="../../../../net/ME1312/SubServers/Bungee/SubAPI.html" title="class in net.ME1312.SubServers.Bungee">SubAPI</a> api</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="subdata">
|
||||
@ -412,13 +418,13 @@ implements net.md_5.bungee.api.plugin.Listener</pre>
|
||||
<pre>public final <a href="../../../../net/ME1312/SubServers/Bungee/Library/Version/Version.html" title="class in net.ME1312.SubServers.Bungee.Library.Version">Version</a> bversion</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="api">
|
||||
<a name="redis">
|
||||
<!-- -->
|
||||
</a>
|
||||
<ul class="blockListLast">
|
||||
<li class="blockList">
|
||||
<h4>api</h4>
|
||||
<pre>public final <a href="../../../../net/ME1312/SubServers/Bungee/SubAPI.html" title="class in net.ME1312.SubServers.Bungee">SubAPI</a> api</pre>
|
||||
<h4>redis</h4>
|
||||
<pre>public boolean redis</pre>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
@ -436,13 +442,28 @@ implements net.md_5.bungee.api.plugin.Listener</pre>
|
||||
<li class="blockList">
|
||||
<h4>startListeners</h4>
|
||||
<pre>public void startListeners()</pre>
|
||||
<div class="block">Load Hosts, Servers, SubServers, and SubData Direct</div>
|
||||
<div class="block">Load SubServers before BungeeCord finishes</div>
|
||||
<dl>
|
||||
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
|
||||
<dd><code>startListeners</code> in class <code>net.md_5.bungee.BungeeCord</code></dd>
|
||||
</dl>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="reload--">
|
||||
<!-- -->
|
||||
</a>
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>reload</h4>
|
||||
<pre>public void reload()
|
||||
throws java.io.IOException</pre>
|
||||
<div class="block">Load data from the config (will attempt to merge with current configuration)</div>
|
||||
<dl>
|
||||
<dt><span class="throwsLabel">Throws:</span></dt>
|
||||
<dd><code>java.io.IOException</code></dd>
|
||||
</dl>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="redis-java.lang.String-net.ME1312.SubServers.Bungee.Library.NamedContainer...-">
|
||||
<!-- -->
|
||||
</a>
|
||||
|
Binary file not shown.
@ -453,6 +453,10 @@
|
||||
<dd>
|
||||
<div class="block">Get a Boolean List by Handle</div>
|
||||
</dd>
|
||||
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Client/Bukkit/Library/Util.html#getCaseInsensitively-java.util.Map-java.lang.String-">getCaseInsensitively(Map<String, V>, String)</a></span> - Static method in class net.ME1312.SubServers.Client.Bukkit.Library.<a href="net/ME1312/SubServers/Client/Bukkit/Library/Util.html" title="class in net.ME1312.SubServers.Client.Bukkit.Library">Util</a></dt>
|
||||
<dd>
|
||||
<div class="block">Get an item from a map ignoring case</div>
|
||||
</dd>
|
||||
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Client/Bukkit/Network/SubDataClient.html#getClient--">getClient()</a></span> - Method in class net.ME1312.SubServers.Client.Bukkit.Network.<a href="net/ME1312/SubServers/Client/Bukkit/Network/SubDataClient.html" title="class in net.ME1312.SubServers.Client.Bukkit.Network">SubDataClient</a></dt>
|
||||
<dd>
|
||||
<div class="block">Gets the Server Socket</div>
|
||||
|
@ -17,7 +17,7 @@
|
||||
catch(err) {
|
||||
}
|
||||
//-->
|
||||
var methods = {"i0":9,"i1":9,"i2":9,"i3":9,"i4":9,"i5":9,"i6":9,"i7":9,"i8":9,"i9":9};
|
||||
var methods = {"i0":9,"i1":9,"i2":9,"i3":9,"i4":9,"i5":9,"i6":9,"i7":9,"i8":9,"i9":9,"i10":9};
|
||||
var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],8:["t4","Concrete Methods"]};
|
||||
var altColor = "altColor";
|
||||
var rowColor = "rowColor";
|
||||
@ -181,37 +181,44 @@ extends java.lang.Object</pre>
|
||||
</tr>
|
||||
<tr id="i4" class="altColor">
|
||||
<td class="colFirst"><code>static <V> V</code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../net/ME1312/SubServers/Client/Bukkit/Library/Util.html#getCaseInsensitively-java.util.Map-java.lang.String-">getCaseInsensitively</a></span>(java.util.Map<java.lang.String,V> map,
|
||||
java.lang.String key)</code>
|
||||
<div class="block">Get an item from a map ignoring case</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i5" class="rowColor">
|
||||
<td class="colFirst"><code>static <V> V</code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../net/ME1312/SubServers/Client/Bukkit/Library/Util.html#getNew-java.util.Collection-net.ME1312.SubServers.Client.Bukkit.Library.Util.ReturnRunnable-">getNew</a></span>(java.util.Collection<? extends V> existing,
|
||||
<a href="../../../../../../net/ME1312/SubServers/Client/Bukkit/Library/Util.ReturnRunnable.html" title="interface in net.ME1312.SubServers.Client.Bukkit.Library">Util.ReturnRunnable</a><V> generator)</code>
|
||||
<div class="block">Gets a new Variable that doesn't match the existing Variables</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i5" class="rowColor">
|
||||
<tr id="i6" class="altColor">
|
||||
<td class="colFirst"><code>static boolean</code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../net/ME1312/SubServers/Client/Bukkit/Library/Util.html#isException-net.ME1312.SubServers.Client.Bukkit.Library.Util.ExceptionRunnable-">isException</a></span>(<a href="../../../../../../net/ME1312/SubServers/Client/Bukkit/Library/Util.ExceptionRunnable.html" title="interface in net.ME1312.SubServers.Client.Bukkit.Library">Util.ExceptionRunnable</a> runnable)</code>
|
||||
<div class="block">Determines if an Exception will occur</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i6" class="altColor">
|
||||
<tr id="i7" class="rowColor">
|
||||
<td class="colFirst"><code>static boolean</code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../net/ME1312/SubServers/Client/Bukkit/Library/Util.html#isNull-java.lang.Object...-">isNull</a></span>(java.lang.Object... values)</code>
|
||||
<div class="block">Checks values to make sure they're not null</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i7" class="rowColor">
|
||||
<tr id="i8" class="altColor">
|
||||
<td class="colFirst"><code>static int</code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../net/ME1312/SubServers/Client/Bukkit/Library/Util.html#random-int-int-">random</a></span>(int min,
|
||||
int max)</code>
|
||||
<div class="block">Get a Random Integer</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i8" class="altColor">
|
||||
<tr id="i9" class="rowColor">
|
||||
<td class="colFirst"><code>static java.lang.String</code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../net/ME1312/SubServers/Client/Bukkit/Library/Util.html#readAll-java.io.Reader-">readAll</a></span>(java.io.Reader rd)</code>
|
||||
<div class="block">Read Everything from Reader</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i9" class="rowColor">
|
||||
<tr id="i10" class="altColor">
|
||||
<td class="colFirst"><code>static java.lang.String</code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../net/ME1312/SubServers/Client/Bukkit/Library/Util.html#unescapeJavaString-java.lang.String-">unescapeJavaString</a></span>(java.lang.String str)</code>
|
||||
<div class="block">Parse escapes in a Java String</div>
|
||||
@ -278,6 +285,26 @@ extends java.lang.Object</pre>
|
||||
</dl>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="getCaseInsensitively-java.util.Map-java.lang.String-">
|
||||
<!-- -->
|
||||
</a>
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>getCaseInsensitively</h4>
|
||||
<pre>public static <V> V getCaseInsensitively(java.util.Map<java.lang.String,V> map,
|
||||
java.lang.String key)</pre>
|
||||
<div class="block">Get an item from a map ignoring case</div>
|
||||
<dl>
|
||||
<dt><span class="paramLabel">Type Parameters:</span></dt>
|
||||
<dd><code>V</code> - Value</dd>
|
||||
<dt><span class="paramLabel">Parameters:</span></dt>
|
||||
<dd><code>map</code> - Map to search</dd>
|
||||
<dd><code>key</code> - Key to search with</dd>
|
||||
<dt><span class="returnLabel">Returns:</span></dt>
|
||||
<dd>Search Result</dd>
|
||||
</dl>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="getNew-java.util.Collection-net.ME1312.SubServers.Client.Bukkit.Library.Util.ReturnRunnable-">
|
||||
<!-- -->
|
||||
</a>
|
||||
|
Binary file not shown.
@ -571,6 +571,10 @@
|
||||
<dd>
|
||||
<div class="block">Get the Build Options for this Template</div>
|
||||
</dd>
|
||||
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Host/Library/Util.html#getCaseInsensitively-java.util.Map-java.lang.String-">getCaseInsensitively(Map<String, V>, String)</a></span> - Static method in class net.ME1312.SubServers.Host.Library.<a href="net/ME1312/SubServers/Host/Library/Util.html" title="class in net.ME1312.SubServers.Host.Library">Util</a></dt>
|
||||
<dd>
|
||||
<div class="block">Get an item from a map ignoring case</div>
|
||||
</dd>
|
||||
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Host/Network/SubDataClient.html#getClient--">getClient()</a></span> - Method in class net.ME1312.SubServers.Host.Network.<a href="net/ME1312/SubServers/Host/Network/SubDataClient.html" title="class in net.ME1312.SubServers.Host.Network">SubDataClient</a></dt>
|
||||
<dd>
|
||||
<div class="block">Gets the Server Socket</div>
|
||||
|
@ -17,7 +17,7 @@
|
||||
catch(err) {
|
||||
}
|
||||
//-->
|
||||
var methods = {"i0":9,"i1":9,"i2":9,"i3":9,"i4":9,"i5":9,"i6":9,"i7":9,"i8":9,"i9":9,"i10":9,"i11":9};
|
||||
var methods = {"i0":9,"i1":9,"i2":9,"i3":9,"i4":9,"i5":9,"i6":9,"i7":9,"i8":9,"i9":9,"i10":9,"i11":9,"i12":9};
|
||||
var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],8:["t4","Concrete Methods"]};
|
||||
var altColor = "altColor";
|
||||
var rowColor = "rowColor";
|
||||
@ -181,48 +181,55 @@ extends java.lang.Object</pre>
|
||||
</tr>
|
||||
<tr id="i4" class="altColor">
|
||||
<td class="colFirst"><code>static <V> V</code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../net/ME1312/SubServers/Host/Library/Util.html#getCaseInsensitively-java.util.Map-java.lang.String-">getCaseInsensitively</a></span>(java.util.Map<java.lang.String,V> map,
|
||||
java.lang.String key)</code>
|
||||
<div class="block">Get an item from a map ignoring case</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i5" class="rowColor">
|
||||
<td class="colFirst"><code>static <V> V</code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../net/ME1312/SubServers/Host/Library/Util.html#getNew-java.util.Collection-net.ME1312.SubServers.Host.Library.Util.ReturnRunnable-">getNew</a></span>(java.util.Collection<? extends V> existing,
|
||||
<a href="../../../../../net/ME1312/SubServers/Host/Library/Util.ReturnRunnable.html" title="interface in net.ME1312.SubServers.Host.Library">Util.ReturnRunnable</a><V> generator)</code>
|
||||
<div class="block">Gets a new Variable that doesn't match the existing Variables</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i5" class="rowColor">
|
||||
<tr id="i6" class="altColor">
|
||||
<td class="colFirst"><code>static boolean</code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../net/ME1312/SubServers/Host/Library/Util.html#isException-net.ME1312.SubServers.Host.Library.Util.ExceptionRunnable-">isException</a></span>(<a href="../../../../../net/ME1312/SubServers/Host/Library/Util.ExceptionRunnable.html" title="interface in net.ME1312.SubServers.Host.Library">Util.ExceptionRunnable</a> runnable)</code>
|
||||
<div class="block">Determines if an Exception will occur</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i6" class="altColor">
|
||||
<tr id="i7" class="rowColor">
|
||||
<td class="colFirst"><code>static boolean</code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../net/ME1312/SubServers/Host/Library/Util.html#isNull-java.lang.Object...-">isNull</a></span>(java.lang.Object... values)</code>
|
||||
<div class="block">Checks values to make sure they're not null</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i7" class="rowColor">
|
||||
<tr id="i8" class="altColor">
|
||||
<td class="colFirst"><code>static int</code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../net/ME1312/SubServers/Host/Library/Util.html#random-int-int-">random</a></span>(int min,
|
||||
int max)</code>
|
||||
<div class="block">Get a Random Integer</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i8" class="altColor">
|
||||
<tr id="i9" 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/Util.html#readAll-java.io.Reader-">readAll</a></span>(java.io.Reader rd)</code>
|
||||
<div class="block">Read Everything from Reader</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i9" class="rowColor">
|
||||
<tr id="i10" 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/Util.html#unescapeJavaString-java.lang.String-">unescapeJavaString</a></span>(java.lang.String str)</code>
|
||||
<div class="block">Parse escapes in a Java String</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i10" class="altColor">
|
||||
<tr id="i11" class="rowColor">
|
||||
<td class="colFirst"><code>static void</code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../net/ME1312/SubServers/Host/Library/Util.html#unzip-java.io.InputStream-java.io.File-">unzip</a></span>(java.io.InputStream zip,
|
||||
java.io.File dir)</code> </td>
|
||||
</tr>
|
||||
<tr id="i11" class="rowColor">
|
||||
<tr id="i12" class="altColor">
|
||||
<td class="colFirst"><code>static void</code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../net/ME1312/SubServers/Host/Library/Util.html#zip-java.io.File-java.io.OutputStream-">zip</a></span>(java.io.File file,
|
||||
java.io.OutputStream zip)</code> </td>
|
||||
@ -288,6 +295,26 @@ extends java.lang.Object</pre>
|
||||
</dl>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="getCaseInsensitively-java.util.Map-java.lang.String-">
|
||||
<!-- -->
|
||||
</a>
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>getCaseInsensitively</h4>
|
||||
<pre>public static <V> V getCaseInsensitively(java.util.Map<java.lang.String,V> map,
|
||||
java.lang.String key)</pre>
|
||||
<div class="block">Get an item from a map ignoring case</div>
|
||||
<dl>
|
||||
<dt><span class="paramLabel">Type Parameters:</span></dt>
|
||||
<dd><code>V</code> - Value</dd>
|
||||
<dt><span class="paramLabel">Parameters:</span></dt>
|
||||
<dd><code>map</code> - Map to search</dd>
|
||||
<dd><code>key</code> - Key to search with</dd>
|
||||
<dt><span class="returnLabel">Returns:</span></dt>
|
||||
<dd>Search Result</dd>
|
||||
</dl>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="getNew-java.util.Collection-net.ME1312.SubServers.Host.Library.Util.ReturnRunnable-">
|
||||
<!-- -->
|
||||
</a>
|
||||
|
Binary file not shown.
@ -427,6 +427,10 @@
|
||||
<dd>
|
||||
<div class="block">Get a Boolean List by Handle</div>
|
||||
</dd>
|
||||
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Sync/Library/Util.html#getCaseInsensitively-java.util.Map-java.lang.String-">getCaseInsensitively(Map<String, V>, String)</a></span> - Static method in class net.ME1312.SubServers.Sync.Library.<a href="net/ME1312/SubServers/Sync/Library/Util.html" title="class in net.ME1312.SubServers.Sync.Library">Util</a></dt>
|
||||
<dd>
|
||||
<div class="block">Get an item from a map ignoring case</div>
|
||||
</dd>
|
||||
<dt><span class="memberNameLink"><a href="net/ME1312/SubServers/Sync/Network/SubDataClient.html#getClient--">getClient()</a></span> - Method in class net.ME1312.SubServers.Sync.Network.<a href="net/ME1312/SubServers/Sync/Network/SubDataClient.html" title="class in net.ME1312.SubServers.Sync.Network">SubDataClient</a></dt>
|
||||
<dd>
|
||||
<div class="block">Gets the Server Socket</div>
|
||||
|
@ -17,7 +17,7 @@
|
||||
catch(err) {
|
||||
}
|
||||
//-->
|
||||
var methods = {"i0":9,"i1":9,"i2":9,"i3":9,"i4":9,"i5":9,"i6":9,"i7":9,"i8":9,"i9":9};
|
||||
var methods = {"i0":9,"i1":9,"i2":9,"i3":9,"i4":9,"i5":9,"i6":9,"i7":9,"i8":9,"i9":9,"i10":9};
|
||||
var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],8:["t4","Concrete Methods"]};
|
||||
var altColor = "altColor";
|
||||
var rowColor = "rowColor";
|
||||
@ -181,37 +181,44 @@ extends java.lang.Object</pre>
|
||||
</tr>
|
||||
<tr id="i4" class="altColor">
|
||||
<td class="colFirst"><code>static <V> V</code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../net/ME1312/SubServers/Sync/Library/Util.html#getCaseInsensitively-java.util.Map-java.lang.String-">getCaseInsensitively</a></span>(java.util.Map<java.lang.String,V> map,
|
||||
java.lang.String key)</code>
|
||||
<div class="block">Get an item from a map ignoring case</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i5" class="rowColor">
|
||||
<td class="colFirst"><code>static <V> V</code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../net/ME1312/SubServers/Sync/Library/Util.html#getNew-java.util.Collection-net.ME1312.SubServers.Sync.Library.Util.ReturnRunnable-">getNew</a></span>(java.util.Collection<? extends V> existing,
|
||||
<a href="../../../../../net/ME1312/SubServers/Sync/Library/Util.ReturnRunnable.html" title="interface in net.ME1312.SubServers.Sync.Library">Util.ReturnRunnable</a><V> generator)</code>
|
||||
<div class="block">Gets a new Variable that doesn't match the existing Variables</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i5" class="rowColor">
|
||||
<tr id="i6" class="altColor">
|
||||
<td class="colFirst"><code>static boolean</code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../net/ME1312/SubServers/Sync/Library/Util.html#isException-net.ME1312.SubServers.Sync.Library.Util.ExceptionRunnable-">isException</a></span>(<a href="../../../../../net/ME1312/SubServers/Sync/Library/Util.ExceptionRunnable.html" title="interface in net.ME1312.SubServers.Sync.Library">Util.ExceptionRunnable</a> runnable)</code>
|
||||
<div class="block">Determines if an Exception will occur</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i6" class="altColor">
|
||||
<tr id="i7" class="rowColor">
|
||||
<td class="colFirst"><code>static boolean</code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../net/ME1312/SubServers/Sync/Library/Util.html#isNull-java.lang.Object...-">isNull</a></span>(java.lang.Object... values)</code>
|
||||
<div class="block">Checks values to make sure they're not null</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i7" class="rowColor">
|
||||
<tr id="i8" class="altColor">
|
||||
<td class="colFirst"><code>static int</code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../net/ME1312/SubServers/Sync/Library/Util.html#random-int-int-">random</a></span>(int min,
|
||||
int max)</code>
|
||||
<div class="block">Get a Random Integer</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i8" class="altColor">
|
||||
<tr id="i9" class="rowColor">
|
||||
<td class="colFirst"><code>static java.lang.String</code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../net/ME1312/SubServers/Sync/Library/Util.html#readAll-java.io.Reader-">readAll</a></span>(java.io.Reader rd)</code>
|
||||
<div class="block">Read Everything from Reader</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i9" class="rowColor">
|
||||
<tr id="i10" class="altColor">
|
||||
<td class="colFirst"><code>static java.lang.String</code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../net/ME1312/SubServers/Sync/Library/Util.html#unescapeJavaString-java.lang.String-">unescapeJavaString</a></span>(java.lang.String str)</code>
|
||||
<div class="block">Parse escapes in a Java String</div>
|
||||
@ -278,6 +285,26 @@ extends java.lang.Object</pre>
|
||||
</dl>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="getCaseInsensitively-java.util.Map-java.lang.String-">
|
||||
<!-- -->
|
||||
</a>
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>getCaseInsensitively</h4>
|
||||
<pre>public static <V> V getCaseInsensitively(java.util.Map<java.lang.String,V> map,
|
||||
java.lang.String key)</pre>
|
||||
<div class="block">Get an item from a map ignoring case</div>
|
||||
<dl>
|
||||
<dt><span class="paramLabel">Type Parameters:</span></dt>
|
||||
<dd><code>V</code> - Value</dd>
|
||||
<dt><span class="paramLabel">Parameters:</span></dt>
|
||||
<dd><code>map</code> - Map to search</dd>
|
||||
<dd><code>key</code> - Key to search with</dd>
|
||||
<dt><span class="returnLabel">Returns:</span></dt>
|
||||
<dd>Search Result</dd>
|
||||
</dl>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="getNew-java.util.Collection-net.ME1312.SubServers.Sync.Library.Util.ReturnRunnable-">
|
||||
<!-- -->
|
||||
</a>
|
||||
|
Binary file not shown.
@ -180,12 +180,6 @@ public class ExternalSubServer extends SubServerContainer {
|
||||
if (value.isString() && host.removeSubServer(player, getName())) {
|
||||
SubServer server = host.addSubServer(player, value.asRawString(), isEnabled(), getAddress().getPort(), getMotd(), isLogging(), getPath(), getExecutable(), getStopCommand(), false, willAutoRestart(), isHidden(), isRestricted(), isTemporary());
|
||||
if (server != null) {
|
||||
if (!getName().equals(getDisplayName())) server.setDisplayName(getDisplayName());
|
||||
for (String group : getGroups()) {
|
||||
removeGroup(group);
|
||||
server.addGroup(group);
|
||||
}
|
||||
for (String extra : getExtra().getKeys()) server.addExtra(extra, getExtra(extra));
|
||||
if (this.host.plugin.config.get().getSection("Servers").getKeys().contains(getName())) {
|
||||
YAMLSection config = this.host.plugin.config.get().getSection("Servers").getSection(getName());
|
||||
this.host.plugin.config.get().getSection("Servers").remove(getName());
|
||||
@ -207,12 +201,12 @@ public class ExternalSubServer extends SubServerContainer {
|
||||
f.set(this, value.asString());
|
||||
}
|
||||
f.setAccessible(false);
|
||||
logger.name = value.asString();
|
||||
logger.name = getDisplayName();
|
||||
if (this.host.plugin.config.get().getSection("Servers").getKeys().contains(getName())) {
|
||||
if (getName().equals(getDisplayName())) {
|
||||
this.host.plugin.config.get().getSection("Servers").getSection(getName()).remove("Display-Name");
|
||||
this.host.plugin.config.get().getSection("Servers").getSection(getName()).remove("Display");
|
||||
} else {
|
||||
this.host.plugin.config.get().getSection("Servers").getSection(getName()).set("Display-Name", getDisplayName());
|
||||
this.host.plugin.config.get().getSection("Servers").getSection(getName()).set("Display", getDisplayName());
|
||||
}
|
||||
this.host.plugin.config.save();
|
||||
}
|
||||
@ -232,8 +226,10 @@ public class ExternalSubServer extends SubServerContainer {
|
||||
break;
|
||||
case "group":
|
||||
if (value.isList()) {
|
||||
for (String group : getGroups()) removeGroup(group);
|
||||
for (String group : value.asStringList()) addGroup(group);
|
||||
Field f = ServerContainer.class.getDeclaredField("groups");
|
||||
f.setAccessible(true);
|
||||
f.set(this, value.asStringList());
|
||||
f.setAccessible(false);
|
||||
if (this.host.plugin.config.get().getSection("Servers").getKeys().contains(getName())) {
|
||||
this.host.plugin.config.get().getSection("Servers").getSection(getName()).set("Group", value.asStringList());
|
||||
this.host.plugin.config.save();
|
||||
@ -245,12 +241,6 @@ public class ExternalSubServer extends SubServerContainer {
|
||||
if (value.isString() && host.removeSubServer(player, getName())) {
|
||||
SubServer server = this.host.plugin.api.getHost(value.asRawString()).addSubServer(player, getName(), isEnabled(), getAddress().getPort(), getMotd(), isLogging(), getPath(), getExecutable(), getStopCommand(), false, willAutoRestart(), isHidden(), isRestricted(), isTemporary());
|
||||
if (server != null) {
|
||||
if (!getName().equals(getDisplayName())) server.setDisplayName(getDisplayName());
|
||||
for (String group : getGroups()) {
|
||||
removeGroup(group);
|
||||
server.addGroup(group);
|
||||
}
|
||||
for (String extra : getExtra().getKeys()) server.addExtra(extra, getExtra(extra));
|
||||
if (this.host.plugin.config.get().getSection("Servers").getKeys().contains(getName())) {
|
||||
this.host.plugin.config.get().getSection("Servers").getSection(getName()).set("Host", server.getHost().getName());
|
||||
this.host.plugin.config.save();
|
||||
@ -264,12 +254,6 @@ public class ExternalSubServer extends SubServerContainer {
|
||||
if (value.isInt() && host.removeSubServer(player, getName())) {
|
||||
SubServer server = host.addSubServer(player, getName(), isEnabled(), value.asInt(), getMotd(), isLogging(), getPath(), getExecutable(), getStopCommand(), false, willAutoRestart(), isHidden(), isRestricted(), isTemporary());
|
||||
if (server != null) {
|
||||
if (!getName().equals(getDisplayName())) server.setDisplayName(getDisplayName());
|
||||
for (String group : getGroups()) {
|
||||
removeGroup(group);
|
||||
server.addGroup(group);
|
||||
}
|
||||
for (String extra : getExtra().getKeys()) server.addExtra(extra, getExtra(extra));
|
||||
if (this.host.plugin.config.get().getSection("Servers").getKeys().contains(getName())) {
|
||||
this.host.plugin.config.get().getSection("Servers").getSection(getName()).set("Port", server.getAddress().getPort());
|
||||
this.host.plugin.config.save();
|
||||
@ -307,12 +291,6 @@ public class ExternalSubServer extends SubServerContainer {
|
||||
if (value.isString()) {
|
||||
SubServer server = host.addSubServer(player, getName(), isEnabled(), getAddress().getPort(), getMotd(), isLogging(), value.asRawString(), getExecutable(), getStopCommand(), false, willAutoRestart(), isHidden(), isRestricted(), isTemporary());
|
||||
if (server != null) {
|
||||
if (!getName().equals(getDisplayName())) server.setDisplayName(getDisplayName());
|
||||
for (String group : getGroups()) {
|
||||
removeGroup(group);
|
||||
server.addGroup(group);
|
||||
}
|
||||
for (String extra : getExtra().getKeys()) server.addExtra(extra, getExtra(extra));
|
||||
if (this.host.plugin.config.get().getSection("Servers").getKeys().contains(getName())) {
|
||||
this.host.plugin.config.get().getSection("Servers").getSection(getName()).set("Directory", server.getPath());
|
||||
this.host.plugin.config.save();
|
||||
@ -326,12 +304,6 @@ public class ExternalSubServer extends SubServerContainer {
|
||||
if (value.isString()) {
|
||||
SubServer server = host.addSubServer(player, getName(), isEnabled(), getAddress().getPort(), getMotd(), isLogging(), getPath(), new Executable(value.asRawString()), getStopCommand(), false, willAutoRestart(), isHidden(), isRestricted(), isTemporary());
|
||||
if (server != null) {
|
||||
if (!getName().equals(getDisplayName())) server.setDisplayName(getDisplayName());
|
||||
for (String group : getGroups()) {
|
||||
removeGroup(group);
|
||||
server.addGroup(group);
|
||||
}
|
||||
for (String extra : getExtra().getKeys()) server.addExtra(extra, getExtra(extra));
|
||||
if (this.host.plugin.config.get().getSection("Servers").getKeys().contains(getName())) {
|
||||
this.host.plugin.config.get().getSection("Servers").getSection(getName()).set("Executable", value.asRawString());
|
||||
this.host.plugin.config.save();
|
||||
@ -376,6 +348,19 @@ public class ExternalSubServer extends SubServerContainer {
|
||||
c++;
|
||||
}
|
||||
break;
|
||||
case "incompatible":
|
||||
if (value.isList()) {
|
||||
for (String oname : value.asStringList()) {
|
||||
SubServer oserver = host.plugin.api.getSubServer(oname);
|
||||
if (oserver != null && isCompatible(oserver)) toggleCompatibility(oserver);
|
||||
}
|
||||
if (this.host.plugin.config.get().getSection("Servers").getKeys().contains(getName())) {
|
||||
this.host.plugin.config.get().getSection("Servers").getSection(getName()).set("Incompatible", value.asStringList());
|
||||
this.host.plugin.config.save();
|
||||
}
|
||||
c++;
|
||||
}
|
||||
break;
|
||||
case "restricted":
|
||||
if (value.isBoolean()) {
|
||||
Field f = ServerContainer.class.getDeclaredField("restricted");
|
||||
@ -404,6 +389,20 @@ public class ExternalSubServer extends SubServerContainer {
|
||||
break;
|
||||
}
|
||||
if (forward != null) {
|
||||
if (!getName().equals(getDisplayName())) forward.setDisplayName(getDisplayName());
|
||||
List<String> groups = new ArrayList<String>();
|
||||
groups.addAll(getGroups());
|
||||
for (String group : groups) {
|
||||
removeGroup(group);
|
||||
forward.addGroup(group);
|
||||
}
|
||||
for (SubServer server : getIncompatibilities()) {
|
||||
toggleCompatibility(server);
|
||||
forward.toggleCompatibility(server);
|
||||
}
|
||||
for (String extra : getExtra().getKeys()) forward.addExtra(extra, getExtra(extra));
|
||||
|
||||
forward.setEditable(true);
|
||||
if (state) pending.set("state", true);
|
||||
c += forward.edit(player, pending);
|
||||
break;
|
||||
|
@ -236,12 +236,6 @@ public class InternalSubServer extends SubServerContainer {
|
||||
if (value.isString() && host.removeSubServer(player, getName())) {
|
||||
SubServer server = host.addSubServer(player, value.asRawString(), isEnabled(), getAddress().getPort(), getMotd(), isLogging(), getPath(), getExecutable(), getStopCommand(), false, willAutoRestart(), isHidden(), isRestricted(), isTemporary());
|
||||
if (server != null) {
|
||||
if (!getName().equals(getDisplayName())) server.setDisplayName(getDisplayName());
|
||||
for (String group : getGroups()) {
|
||||
removeGroup(group);
|
||||
server.addGroup(group);
|
||||
}
|
||||
for (String extra : getExtra().getKeys()) server.addExtra(extra, getExtra(extra));
|
||||
if (this.host.plugin.config.get().getSection("Servers").getKeys().contains(getName())) {
|
||||
YAMLSection config = this.host.plugin.config.get().getSection("Servers").getSection(getName());
|
||||
this.host.plugin.config.get().getSection("Servers").remove(getName());
|
||||
@ -263,12 +257,12 @@ public class InternalSubServer extends SubServerContainer {
|
||||
f.set(this, value.asString());
|
||||
}
|
||||
f.setAccessible(false);
|
||||
logger.name = value.asString();
|
||||
logger.name = getDisplayName();
|
||||
if (this.host.plugin.config.get().getSection("Servers").getKeys().contains(getName())) {
|
||||
if (getName().equals(getDisplayName())) {
|
||||
this.host.plugin.config.get().getSection("Servers").getSection(getName()).remove("Display-Name");
|
||||
this.host.plugin.config.get().getSection("Servers").getSection(getName()).remove("Display");
|
||||
} else {
|
||||
this.host.plugin.config.get().getSection("Servers").getSection(getName()).set("Display-Name", getDisplayName());
|
||||
this.host.plugin.config.get().getSection("Servers").getSection(getName()).set("Display", getDisplayName());
|
||||
}
|
||||
this.host.plugin.config.save();
|
||||
}
|
||||
@ -287,8 +281,10 @@ public class InternalSubServer extends SubServerContainer {
|
||||
break;
|
||||
case "group":
|
||||
if (value.isList()) {
|
||||
for (String group : getGroups()) removeGroup(group);
|
||||
for (String group : value.asStringList()) addGroup(group);
|
||||
Field f = ServerContainer.class.getDeclaredField("groups");
|
||||
f.setAccessible(true);
|
||||
f.set(this, value.asStringList());
|
||||
f.setAccessible(false);
|
||||
if (this.host.plugin.config.get().getSection("Servers").getKeys().contains(getName())) {
|
||||
this.host.plugin.config.get().getSection("Servers").getSection(getName()).set("Group", value.asStringList());
|
||||
this.host.plugin.config.save();
|
||||
@ -300,12 +296,6 @@ public class InternalSubServer extends SubServerContainer {
|
||||
if (value.isString() && host.removeSubServer(player, getName())) {
|
||||
SubServer server = this.host.plugin.api.getHost(value.asRawString()).addSubServer(player, getName(), isEnabled(), getAddress().getPort(), getMotd(), isLogging(), getPath(), getExecutable(), getStopCommand(), false, willAutoRestart(), isHidden(), isRestricted(), isTemporary());
|
||||
if (server != null) {
|
||||
if (!getName().equals(getDisplayName())) server.setDisplayName(getDisplayName());
|
||||
for (String group : getGroups()) {
|
||||
removeGroup(group);
|
||||
server.addGroup(group);
|
||||
}
|
||||
for (String extra : getExtra().getKeys()) server.addExtra(extra, getExtra(extra));
|
||||
if (this.host.plugin.config.get().getSection("Servers").getKeys().contains(getName())) {
|
||||
this.host.plugin.config.get().getSection("Servers").getSection(getName()).set("Host", server.getHost().getName());
|
||||
this.host.plugin.config.save();
|
||||
@ -319,12 +309,6 @@ public class InternalSubServer extends SubServerContainer {
|
||||
if (value.isInt() && host.removeSubServer(player, getName())) {
|
||||
SubServer server = host.addSubServer(player, getName(), isEnabled(), value.asInt(), getMotd(), isLogging(), getPath(), getExecutable(), getStopCommand(), false, willAutoRestart(), isHidden(), isRestricted(), isTemporary());
|
||||
if (server != null) {
|
||||
if (!getName().equals(getDisplayName())) server.setDisplayName(getDisplayName());
|
||||
for (String group : getGroups()) {
|
||||
removeGroup(group);
|
||||
server.addGroup(group);
|
||||
}
|
||||
for (String extra : getExtra().getKeys()) server.addExtra(extra, getExtra(extra));
|
||||
if (this.host.plugin.config.get().getSection("Servers").getKeys().contains(getName())) {
|
||||
this.host.plugin.config.get().getSection("Servers").getSection(getName()).set("Port", server.getAddress().getPort());
|
||||
this.host.plugin.config.save();
|
||||
@ -420,6 +404,19 @@ public class InternalSubServer extends SubServerContainer {
|
||||
c++;
|
||||
}
|
||||
break;
|
||||
case "incompatible":
|
||||
if (value.isList()) {
|
||||
for (String oname : value.asStringList()) {
|
||||
SubServer oserver = host.plugin.api.getSubServer(oname);
|
||||
if (oserver != null && isCompatible(oserver)) toggleCompatibility(oserver);
|
||||
}
|
||||
if (this.host.plugin.config.get().getSection("Servers").getKeys().contains(getName())) {
|
||||
this.host.plugin.config.get().getSection("Servers").getSection(getName()).set("Incompatible", value.asStringList());
|
||||
this.host.plugin.config.save();
|
||||
}
|
||||
c++;
|
||||
}
|
||||
break;
|
||||
case "restricted":
|
||||
if (value.isBoolean()) {
|
||||
Field f = ServerContainer.class.getDeclaredField("restricted");
|
||||
@ -448,6 +445,20 @@ public class InternalSubServer extends SubServerContainer {
|
||||
break;
|
||||
}
|
||||
if (forward != null) {
|
||||
if (!getName().equals(getDisplayName())) forward.setDisplayName(getDisplayName());
|
||||
List<String> groups = new ArrayList<String>();
|
||||
groups.addAll(getGroups());
|
||||
for (String group : groups) {
|
||||
removeGroup(group);
|
||||
forward.addGroup(group);
|
||||
}
|
||||
for (SubServer server : getIncompatibilities()) {
|
||||
toggleCompatibility(server);
|
||||
forward.toggleCompatibility(server);
|
||||
}
|
||||
for (String extra : getExtra().getKeys()) forward.addExtra(extra, getExtra(extra));
|
||||
|
||||
forward.setEditable(true);
|
||||
if (state) pending.set("state", true);
|
||||
c += forward.edit(player, pending);
|
||||
break;
|
||||
|
@ -53,6 +53,24 @@ public final class Util {
|
||||
return values;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get an item from a map ignoring case
|
||||
*
|
||||
* @param map Map to search
|
||||
* @param key Key to search with
|
||||
* @param <V> Value
|
||||
* @return Search Result
|
||||
*/
|
||||
public static <V> V getCaseInsensitively(Map<String, V> map, String key) {
|
||||
HashMap<String, String> insensitivity = new HashMap<String, String>();
|
||||
for (String item : map.keySet()) insensitivity.put(item.toLowerCase(), item);
|
||||
if (insensitivity.keySet().contains(key.toLowerCase())) {
|
||||
return map.get(insensitivity.get(key.toLowerCase()));
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets a new Variable that doesn't match the existing Variables
|
||||
*
|
||||
|
@ -65,13 +65,6 @@ public final class SubDataServer {
|
||||
|
||||
private void loadDefaults() {
|
||||
defaults = true;
|
||||
for (String s : plugin.config.get().getSection("Settings").getSection("SubData").getStringList("Allowed-Connections", new ArrayList<String>())) {
|
||||
try {
|
||||
allowedAddresses.add(s);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
plugin.getPluginManager().registerListener(null, new PacketOutRunEvent(plugin));
|
||||
|
||||
|
@ -186,8 +186,22 @@ public final class SubAPI {
|
||||
SubRemoveHostEvent event = new SubRemoveHostEvent(player, getHost(name));
|
||||
plugin.getPluginManager().callEvent(event);
|
||||
if (event.isCancelled()) {
|
||||
plugin.hosts.remove(name.toLowerCase());
|
||||
return true;
|
||||
try {
|
||||
List<String> subservers = new ArrayList<String>();
|
||||
subservers.addAll(getHost(name).getSubServers().keySet());
|
||||
|
||||
for (String server : subservers) {
|
||||
getHost(name).removeSubServer(server);
|
||||
}
|
||||
subservers.clear();
|
||||
getHost(name).getCreator().terminate();
|
||||
getHost(name).getCreator().waitFor();
|
||||
plugin.hosts.remove(name.toLowerCase());
|
||||
return true;
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
return false;
|
||||
}
|
||||
} else return false;
|
||||
}
|
||||
|
||||
@ -212,8 +226,22 @@ public final class SubAPI {
|
||||
if (Util.isNull(name, getHost(name))) throw new NullPointerException();
|
||||
SubRemoveHostEvent event = new SubRemoveHostEvent(player, getHost(name));
|
||||
plugin.getPluginManager().callEvent(event);
|
||||
plugin.hosts.remove(name.toLowerCase());
|
||||
return true;
|
||||
try {
|
||||
List<String> subservers = new ArrayList<String>();
|
||||
subservers.addAll(getHost(name).getSubServers().keySet());
|
||||
|
||||
for (String server : subservers) {
|
||||
getHost(name).removeSubServer(server);
|
||||
}
|
||||
subservers.clear();
|
||||
getHost(name).getCreator().terminate();
|
||||
getHost(name).getCreator().waitFor();
|
||||
plugin.hosts.remove(name.toLowerCase());
|
||||
return true;
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@ -261,14 +289,8 @@ public final class SubAPI {
|
||||
* @return a Server Group
|
||||
*/
|
||||
public List<Server> getGroup(String name) {
|
||||
Map<String, List<Server>> groups = getGroups();
|
||||
HashMap<String, String> insensitivity = new HashMap<String, String>();
|
||||
for (String group : groups.keySet()) insensitivity.put(group.toLowerCase(), group);
|
||||
if (insensitivity.keySet().contains(name.toLowerCase())) {
|
||||
return groups.get(insensitivity.get(name.toLowerCase()));
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
if (Util.isNull(name)) throw new NullPointerException();
|
||||
return Util.getCaseInsensitively(getGroups(), name);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -23,9 +23,9 @@ import org.xml.sax.InputSource;
|
||||
|
||||
import javax.xml.parsers.DocumentBuilderFactory;
|
||||
import java.io.BufferedReader;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.StringReader;
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.net.URL;
|
||||
import java.nio.charset.Charset;
|
||||
import java.util.*;
|
||||
@ -87,11 +87,25 @@ public final class SubCommand extends Command implements TabExecutor {
|
||||
if (args.length > 1) {
|
||||
switch (args[1].toLowerCase()) {
|
||||
case "all":
|
||||
case "system":
|
||||
case "bungee":
|
||||
case "network":
|
||||
plugin.getPluginManager().dispatchCommand(ConsoleCommandSender.getInstance(), "greload");
|
||||
break;
|
||||
case "host":
|
||||
case "hosts":
|
||||
case "server":
|
||||
case "servers":
|
||||
plugin.getPluginManager().dispatchCommand(ConsoleCommandSender.getInstance(), "greload");
|
||||
case "subserver":
|
||||
case "subservers":
|
||||
case "subdata":
|
||||
case "config":
|
||||
case "configs":
|
||||
try {
|
||||
plugin.reload();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
break;
|
||||
case "creator":
|
||||
case "creators":
|
||||
@ -106,7 +120,11 @@ public final class SubCommand extends Command implements TabExecutor {
|
||||
sender.sendMessage("SubServers > Unknown reload type: " + args[1]);
|
||||
}
|
||||
} else {
|
||||
plugin.getPluginManager().dispatchCommand(ConsoleCommandSender.getInstance(), "greload");
|
||||
try {
|
||||
plugin.reload();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
} else if (args[0].equalsIgnoreCase("list")) {
|
||||
String div = ChatColor.RESET + ", ";
|
||||
@ -477,7 +495,7 @@ public final class SubCommand extends Command implements TabExecutor {
|
||||
" Help: /sub help",
|
||||
" List: /sub list",
|
||||
" Version: /sub version",
|
||||
" Reload: /sub reload [servers|creator]",
|
||||
" Reload: /sub reload [all|configs|templates]",
|
||||
" Server Info: /sub info <SubServer>",
|
||||
" Start Server: /sub start <SubServer>",
|
||||
" Stop Server: /sub stop <SubServer>",
|
||||
|
@ -4,6 +4,7 @@ import net.ME1312.SubServers.Bungee.Event.SubStoppedEvent;
|
||||
import net.ME1312.SubServers.Bungee.Host.*;
|
||||
import net.ME1312.SubServers.Bungee.Library.*;
|
||||
import net.ME1312.SubServers.Bungee.Library.Config.YAMLConfig;
|
||||
import net.ME1312.SubServers.Bungee.Library.Config.YAMLSection;
|
||||
import net.ME1312.SubServers.Bungee.Library.Exception.InvalidHostException;
|
||||
import net.ME1312.SubServers.Bungee.Library.Exception.InvalidServerException;
|
||||
import net.ME1312.SubServers.Bungee.Library.Version.Version;
|
||||
@ -44,18 +45,19 @@ public final class SubPlugin extends BungeeCord implements Listener {
|
||||
|
||||
public final PrintStream out;
|
||||
public final UniversalFile dir = new UniversalFile(new File(System.getProperty("user.dir")));
|
||||
private YAMLConfig bungeeconfig;
|
||||
public YAMLConfig config;
|
||||
public YAMLConfig lang;
|
||||
public HashMap<String, String> exLang = new HashMap<String, String>();
|
||||
public boolean redis = false;
|
||||
public final SubAPI api = new SubAPI(this);
|
||||
public SubDataServer subdata = null;
|
||||
public SubServer sudo = null;
|
||||
public final Version version = new Version(SubPlugin.class.getPackage().getImplementationVersion());
|
||||
public final Version bversion = (SubPlugin.class.getPackage().getSpecificationVersion().equals("0"))?null:new Version(SubPlugin.class.getPackage().getSpecificationVersion());
|
||||
|
||||
public boolean redis = false;
|
||||
private boolean running = false;
|
||||
private boolean posted = false;
|
||||
public final SubAPI api = new SubAPI(this);
|
||||
|
||||
protected SubPlugin(PrintStream out) throws IOException {
|
||||
System.out.println("SubServers > Loading SubServers.Bungee v" + version.toString() + " Libraries... ");
|
||||
@ -68,6 +70,8 @@ public final class SubPlugin extends BungeeCord implements Listener {
|
||||
tmp.save();
|
||||
System.out.println("SubServers > Created ~/config.yml");
|
||||
}
|
||||
bungeeconfig = new YAMLConfig(new UniversalFile(dir, "config.yml"));
|
||||
|
||||
UniversalFile dir = new UniversalFile(this.dir, "SubServers");
|
||||
dir.mkdir();
|
||||
if (!(new UniversalFile(dir, "config.yml").exists())) {
|
||||
@ -178,15 +182,44 @@ public final class SubPlugin extends BungeeCord implements Listener {
|
||||
}
|
||||
|
||||
/**
|
||||
* Load Hosts, Servers, SubServers, and SubData Direct
|
||||
* Load SubServers before BungeeCord finishes
|
||||
*/
|
||||
@Override
|
||||
public void startListeners() {
|
||||
try {
|
||||
long begin = Calendar.getInstance().getTime().getTime();
|
||||
reload();
|
||||
|
||||
super.startListeners();
|
||||
if (!posted) {
|
||||
post();
|
||||
posted = true;
|
||||
}
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Load data from the config (will attempt to merge with current configuration)
|
||||
*
|
||||
* @throws IOException
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
public void reload() throws IOException {
|
||||
List<String> ukeys = new ArrayList<String>();
|
||||
long begin = Calendar.getInstance().getTime().getTime();
|
||||
boolean status = running;
|
||||
|
||||
YAMLSection prevconfig = config.get();
|
||||
config.reload();
|
||||
lang.reload();
|
||||
|
||||
if (subdata == null ||
|
||||
!config.get().getSection("Settings").getSection("SubData").getRawString("Address", "127.0.0.1:4391").equals(prevconfig.getSection("Settings").getSection("SubData").getRawString("Address", "127.0.0.1:4391")) ||
|
||||
!config.get().getSection("Settings").getSection("SubData").getRawString("Encryption", "NONE").equals(prevconfig.getSection("Settings").getSection("SubData").getRawString("Encryption", "NONE"))
|
||||
) {
|
||||
if (subdata != null) subdata.destroy();
|
||||
|
||||
config.reload();
|
||||
lang.reload();
|
||||
SubDataServer.Encryption encryption = SubDataServer.Encryption.NONE;
|
||||
if (config.get().getSection("Settings").getSection("SubData").getString("Password", "").length() == 0) {
|
||||
System.out.println("SubData > Cannot encrypt connection without a password");
|
||||
@ -200,106 +233,208 @@ public final class SubPlugin extends BungeeCord implements Listener {
|
||||
encryption);
|
||||
System.out.println("SubServers > SubData Direct Listening on " + subdata.getServer().getLocalSocketAddress().toString());
|
||||
loop();
|
||||
|
||||
int hosts = 0;
|
||||
System.out.println("SubServers > Loading Hosts...");
|
||||
for (String name : config.get().getSection("Hosts").getKeys()) {
|
||||
try {
|
||||
if (!hostDrivers.keySet().contains(config.get().getSection("Hosts").getSection(name).getRawString("Driver").toLowerCase())) throw new InvalidHostException("Invalid Driver for host: " + name);
|
||||
Host host = api.addHost(config.get().getSection("Hosts").getSection(name).getRawString("Driver").toLowerCase(), name, config.get().getSection("Hosts").getSection(name).getBoolean("Enabled"), InetAddress.getByName(config.get().getSection("Hosts").getSection(name).getRawString("Address")),
|
||||
config.get().getSection("Hosts").getSection(name).getRawString("Directory"), config.get().getSection("Hosts").getSection(name).getRawString("Git-Bash"));
|
||||
if (config.get().getSection("Hosts").getSection(name).getKeys().contains("Display") && config.get().getSection("Hosts").getSection(name).getString("Display").length() > 0) host.setDisplayName(config.get().getSection("Hosts").getSection(name).getString("Display"));
|
||||
if (config.get().getSection("Hosts").getSection(name).getKeys().contains("Extra")) for (String extra : config.get().getSection("Hosts").getSection(name).getSection("Extra").getKeys()) host.addExtra(extra, config.get().getSection("Hosts").getSection(name).getSection("Extra").getObject(extra));
|
||||
hosts++;
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
} else System.out.println("SubServers > Reloading SubData Whitelist...");
|
||||
for (String s : config.get().getSection("Settings").getSection("SubData").getStringList("Allowed-Connections", new ArrayList<String>())) {
|
||||
try {
|
||||
SubDataServer.allowConnection(s);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
int servers = 0;
|
||||
System.out.println("SubServers > Loading Servers...");
|
||||
YAMLConfig bungee = new YAMLConfig(new UniversalFile(dir, "config.yml"));
|
||||
for (String name : bungee.get().getSection("servers").getKeys()) {
|
||||
try {
|
||||
Server server = api.addServer(name, InetAddress.getByName(bungee.get().getSection("servers").getSection(name).getRawString("address").split(":")[0]),
|
||||
Integer.parseInt(bungee.get().getSection("servers").getSection(name).getRawString("address").split(":")[1]), bungee.get().getSection("servers").getSection(name).getColoredString("motd", '&'),
|
||||
bungee.get().getSection("servers").getSection(name).getBoolean("hidden", false), bungee.get().getSection("servers").getSection(name).getBoolean("restricted"));
|
||||
if (bungee.get().getSection("servers").getSection(name).getKeys().contains("display") && bungee.get().getSection("servers").getSection(name).getString("display").length() > 0) server.setDisplayName(bungee.get().getSection("servers").getSection(name).getString("display"));
|
||||
if (bungee.get().getSection("servers").getSection(name).getKeys().contains("group")) for (String group : bungee.get().getSection("servers").getSection(name).getStringList("group")) server.addGroup(group);
|
||||
if (bungee.get().getSection("servers").getSection(name).getKeys().contains("extra")) for (String extra : config.get().getSection("servers").getSection(name).getSection("extra").getKeys()) server.addExtra(extra, config.get().getSection("servers").getSection(name).getSection("extra").getObject(extra));
|
||||
servers++;
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
int subservers = 0;
|
||||
System.out.println("SubServers > Loading SubServers...");
|
||||
if (!posted) Runtime.getRuntime().addShutdownHook(new Thread(() -> {
|
||||
if (!running) {
|
||||
System.out.println("SubServers > Received request from system to shutdown");
|
||||
try {
|
||||
resetHosts();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}));
|
||||
running = true;
|
||||
for (String name : config.get().getSection("Servers").getKeys()) {
|
||||
try {
|
||||
if (!this.hosts.keySet().contains(config.get().getSection("Servers").getSection(name).getString("Host").toLowerCase())) throw new InvalidServerException("There is no host with this name: " + config.get().getSection("Servers").getSection(name).getString("Host"));
|
||||
if (exServers.keySet().contains(name.toLowerCase())) {
|
||||
exServers.remove(name.toLowerCase());
|
||||
servers--;
|
||||
}
|
||||
SubServer server = this.hosts.get(config.get().getSection("Servers").getSection(name).getString("Host").toLowerCase()).addSubServer(name, config.get().getSection("Servers").getSection(name).getBoolean("Enabled"),
|
||||
config.get().getSection("Servers").getSection(name).getInt("Port"), config.get().getSection("Servers").getSection(name).getColoredString("Motd", '&'), config.get().getSection("Servers").getSection(name).getBoolean("Log"),
|
||||
config.get().getSection("Servers").getSection(name).getRawString("Directory"), new Executable(config.get().getSection("Servers").getSection(name).getRawString("Executable")), config.get().getSection("Servers").getSection(name).getRawString("Stop-Command"),
|
||||
config.get().getSection("Servers").getSection(name).getBoolean("Run-On-Launch"), config.get().getSection("Servers").getSection(name).getBoolean("Auto-Restart"), config.get().getSection("Servers").getSection(name).getBoolean("Hidden"), config.get().getSection("Servers").getSection(name).getBoolean("Restricted"), false);
|
||||
//if (config.get().getSection("Servers").getSection(name).getKeys().contains("Editable")) server.setEditable(config.get().getSection("Servers").getSection(name).getBoolean("Editable"));
|
||||
if (config.get().getSection("Servers").getSection(name).getKeys().contains("Display") && config.get().getSection("Servers").getSection(name).getString("Display").length() > 0) server.setDisplayName(config.get().getSection("Servers").getSection(name).getString("Display"));
|
||||
if (config.get().getSection("Servers").getSection(name).getKeys().contains("Group")) for (String group : config.get().getSection("Servers").getSection(name).getStringList("Group")) server.addGroup(group);
|
||||
if (config.get().getSection("Servers").getSection(name).getKeys().contains("Extra")) for (String extra : config.get().getSection("Servers").getSection(name).getSection("Extra").getKeys()) server.addExtra(extra, config.get().getSection("Servers").getSection(name).getSection("Extra").getObject(extra));
|
||||
subservers++;
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
for (SubServer server : api.getSubServers().values()) {
|
||||
for (String name : config.get().getSection("Servers").getSection(server.getName()).getRawStringList("Incompatible", new ArrayList<>())) {
|
||||
SubServer other = api.getSubServer(name);
|
||||
if (other != null && server.isCompatible(other)) server.toggleCompatibility(other);
|
||||
}
|
||||
}
|
||||
api.ready = true;
|
||||
legServers.clear();
|
||||
|
||||
int plugins = 0;
|
||||
if (api.listeners.size() > 0) {
|
||||
System.out.println("SubServers > Loading SubAPI Plugins...");
|
||||
for (NamedContainer<Runnable, Runnable> listener : api.listeners) {
|
||||
try {
|
||||
if (listener.name() != null) {
|
||||
listener.name().run();
|
||||
plugins++;
|
||||
}
|
||||
} catch (Throwable e) {
|
||||
new InvocationTargetException(e, "Problem enabling plugin").printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
System.out.println("SubServers > " + ((plugins > 0)?plugins+" Plugin"+((plugins == 1)?"":"s")+", ":"") + hosts + " Host"+((hosts == 1)?"":"s")+", " + servers + " Server"+((servers == 1)?"":"s")+", and " + subservers + " SubServer"+((subservers == 1)?"":"s")+" loaded in " + new DecimalFormat("0.000").format((Calendar.getInstance().getTime().getTime() - begin) / 1000D) + "s");
|
||||
|
||||
super.startListeners();
|
||||
if (!posted) {
|
||||
post();
|
||||
posted = true;
|
||||
}
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
int hosts = 0;
|
||||
System.out.println("SubServers > "+((status)?"Rel":"L")+"oading Hosts...");
|
||||
for (String name : config.get().getSection("Hosts").getKeys()) {
|
||||
if (!ukeys.contains(name.toLowerCase())) try {
|
||||
if (!hostDrivers.keySet().contains(config.get().getSection("Hosts").getSection(name).getRawString("Driver").toLowerCase())) throw new InvalidHostException("Invalid Driver for host: " + name);
|
||||
Host host = this.hosts.get(name.toLowerCase());
|
||||
if (host == null ||
|
||||
config.get().getSection("Hosts").getSection(name).getBoolean("Enabled") !=host.isEnabled() ||
|
||||
!hostDrivers.get(config.get().getSection("Hosts").getSection(name).getRawString("Driver").toLowerCase()).equals(host.getClass()) ||
|
||||
!config.get().getSection("Hosts").getSection(name).getRawString("Address").equals(host.getAddress().getHostAddress()) ||
|
||||
!config.get().getSection("Hosts").getSection(name).getRawString("Directory").equals(host.getPath()) ||
|
||||
!config.get().getSection("Hosts").getSection(name).getRawString("Git-Bash").equals(host.getCreator().getBashDirectory())
|
||||
) {
|
||||
if (host != null) api.forceRemoveHost(name);
|
||||
host = api.addHost(config.get().getSection("Hosts").getSection(name).getRawString("Driver").toLowerCase(), name, config.get().getSection("Hosts").getSection(name).getBoolean("Enabled"), InetAddress.getByName(config.get().getSection("Hosts").getSection(name).getRawString("Address")),
|
||||
config.get().getSection("Hosts").getSection(name).getRawString("Directory"), config.get().getSection("Hosts").getSection(name).getRawString("Git-Bash"));
|
||||
}
|
||||
if (config.get().getSection("Hosts").getSection(name).getKeys().contains("Display") && ((config.get().getSection("Hosts").getSection(name).getString("Display").length() == 0 && !host.getDisplayName().equals(host.getName())) || !config.get().getSection("Hosts").getSection(name).getString("Display").equals(host.getDisplayName())))
|
||||
host.setDisplayName(config.get().getSection("Hosts").getSection(name).getString("Display"));
|
||||
if (config.get().getSection("Hosts").getSection(name).getKeys().contains("Extra"))
|
||||
for (String extra : config.get().getSection("Hosts").getSection(name).getSection("Extra").getKeys()) host.addExtra(extra, config.get().getSection("Hosts").getSection(name).getSection("Extra").getObject(extra));
|
||||
ukeys.add(name.toLowerCase());
|
||||
hosts++;
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
ukeys.clear();
|
||||
|
||||
int servers = 0;
|
||||
System.out.println("SubServers > "+((status)?"Rel":"L")+"oading Servers...");
|
||||
bungeeconfig.reload();
|
||||
for (String name : bungeeconfig.get().getSection("servers").getKeys()) {
|
||||
if (!ukeys.contains(name.toLowerCase())) try {
|
||||
Server server = api.getServer(name);
|
||||
if (server == null || !(server instanceof SubServer)) {
|
||||
if (server == null ||
|
||||
bungeeconfig.get().getSection("servers").getSection(name).getRawString("address").equals(server.getAddress().getAddress().getHostAddress() + ':' + server.getAddress().getPort())
|
||||
) {
|
||||
if (server != null) api.forceRemoveServer(name);
|
||||
server = api.addServer(name, InetAddress.getByName(bungeeconfig.get().getSection("servers").getSection(name).getRawString("address").split(":")[0]),
|
||||
Integer.parseInt(bungeeconfig.get().getSection("servers").getSection(name).getRawString("address").split(":")[1]), bungeeconfig.get().getSection("servers").getSection(name).getColoredString("motd", '&'),
|
||||
bungeeconfig.get().getSection("servers").getSection(name).getBoolean("hidden", false), bungeeconfig.get().getSection("servers").getSection(name).getBoolean("restricted"));
|
||||
} else {
|
||||
if (!bungeeconfig.get().getSection("servers").getSection(name).getColoredString("motd", '&').equals(server.getMotd()))
|
||||
server.setMotd(bungeeconfig.get().getSection("servers").getSection(name).getColoredString("motd", '&'));
|
||||
if (bungeeconfig.get().getSection("servers").getSection(name).getBoolean("hidden", false) != server.isHidden())
|
||||
server.setHidden(bungeeconfig.get().getSection("servers").getSection(name).getBoolean("hidden", false));
|
||||
if (bungeeconfig.get().getSection("servers").getSection(name).getBoolean("restricted") != server.isRestricted())
|
||||
server.setRestricted(bungeeconfig.get().getSection("servers").getSection(name).getBoolean("restricted"));
|
||||
}
|
||||
if (bungeeconfig.get().getSection("servers").getSection(name).getKeys().contains("display") && ((bungeeconfig.get().getSection("servers").getSection(name).getRawString("display").length() == 0 && !server.getDisplayName().equals(server.getName())) || !bungeeconfig.get().getSection("servers").getSection(name).getRawString("display").equals(server.getDisplayName())))
|
||||
server.setDisplayName(bungeeconfig.get().getSection("servers").getSection(name).getString("display"));
|
||||
if (bungeeconfig.get().getSection("servers").getSection(name).getKeys().contains("group")) {
|
||||
for (String group : server.getGroups()) server.removeGroup(group);
|
||||
for (String group : bungeeconfig.get().getSection("servers").getSection(name).getStringList("group")) server.addGroup(group);
|
||||
}
|
||||
if (bungeeconfig.get().getSection("servers").getSection(name).getKeys().contains("extra"))
|
||||
for (String extra : config.get().getSection("servers").getSection(name).getSection("extra").getKeys()) server.addExtra(extra, config.get().getSection("servers").getSection(name).getSection("extra").getObject(extra));
|
||||
ukeys.add(name.toLowerCase());
|
||||
servers++;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
ukeys.clear();
|
||||
|
||||
int subservers = 0;
|
||||
System.out.println("SubServers > "+((status)?"Rel":"L")+"oading SubServers...");
|
||||
if (!posted) Runtime.getRuntime().addShutdownHook(new Thread(() -> {
|
||||
if (!running) {
|
||||
System.out.println("SubServers > Received request from system to shutdown");
|
||||
try {
|
||||
shutdown();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}));
|
||||
running = true;
|
||||
for (String name : config.get().getSection("Servers").getKeys()) {
|
||||
if (!ukeys.contains(name.toLowerCase())) try {
|
||||
if (!this.hosts.keySet().contains(config.get().getSection("Servers").getSection(name).getString("Host").toLowerCase())) throw new InvalidServerException("There is no host with this name: " + config.get().getSection("Servers").getSection(name).getString("Host"));
|
||||
if (exServers.keySet().contains(name.toLowerCase())) {
|
||||
exServers.remove(name.toLowerCase());
|
||||
servers--;
|
||||
}
|
||||
SubServer server = api.getSubServer(name);
|
||||
if (server != null && server.isEditable()) { // Server can edit() (May be reset depending on change severity)
|
||||
YAMLSection edits = new YAMLSection();
|
||||
if (config.get().getSection("Servers").getSection(name).getBoolean("Enabled") != server.isEnabled())
|
||||
edits.set("enabled", config.get().getSection("Servers").getSection(name).getBoolean("Enabled"));
|
||||
if (config.get().getSection("Servers").getSection(name).getKeys().contains("Display") && ((config.get().getSection("Servers").getSection(name).getString("Display").length() == 0 && !server.getDisplayName().equals(server.getName())) || !config.get().getSection("Servers").getSection(name).getString("Display").equals(server.getDisplayName())))
|
||||
edits.set("display", config.get().getSection("Servers").getSection(name).getRawString("Display"));
|
||||
if (!config.get().getSection("Servers").getSection(name).getString("Host").equalsIgnoreCase(server.getHost().getName()))
|
||||
edits.set("host", config.get().getSection("Servers").getSection(name).getRawString("Host"));
|
||||
if (!config.get().getSection("Servers").getSection(name).getStringList("Group").equals(server.getGroups()))
|
||||
edits.set("group", config.get().getSection("Servers").getSection(name).getRawStringList("Group"));
|
||||
if (config.get().getSection("Servers").getSection(name).getInt("Port") != server.getAddress().getPort())
|
||||
edits.set("port", config.get().getSection("Servers").getSection(name).getInt("Port"));
|
||||
if (!config.get().getSection("Servers").getSection(name).getColoredString("Motd", '&').equals(server.getMotd()))
|
||||
edits.set("motd", config.get().getSection("Servers").getSection(name).getRawString("Motd"));
|
||||
if (config.get().getSection("Servers").getSection(name).getBoolean("Log") != server.isLogging())
|
||||
edits.set("log", config.get().getSection("Servers").getSection(name).getBoolean("Log"));
|
||||
if (!config.get().getSection("Servers").getSection(name).getRawString("Directory").equals(server.getPath()))
|
||||
edits.set("dir", config.get().getSection("Servers").getSection(name).getRawString("Directory"));
|
||||
if (!new Executable(config.get().getSection("Servers").getSection(name).getRawString("Executable")).toString().equals(server.getExecutable().toString()))
|
||||
edits.set("exec", config.get().getSection("Servers").getSection(name).getRawString("Executable"));
|
||||
if (!config.get().getSection("Servers").getSection(name).getRawString("Stop-Command").equals(server.getStopCommand()))
|
||||
edits.set("stop-cmd", config.get().getSection("Servers").getSection(name).getRawString("Stop-Command"));
|
||||
if (config.get().getSection("Servers").getSection(name).getBoolean("Auto-Restart") != server.willAutoRestart())
|
||||
edits.set("auto-restart", config.get().getSection("Servers").getSection(name).getBoolean("Auto-Restart"));
|
||||
if (config.get().getSection("Servers").getSection(name).getBoolean("Restricted") != server.isRestricted())
|
||||
edits.set("restricted", config.get().getSection("Servers").getSection(name).getBoolean("Restricted"));
|
||||
if (config.get().getSection("Servers").getSection(name).getBoolean("Hidden") != server.isHidden())
|
||||
edits.set("hidden", config.get().getSection("Servers").getSection(name).getBoolean("Hidden"));
|
||||
|
||||
|
||||
if (edits.getKeys().size() > 0) {
|
||||
server.edit(edits);
|
||||
server = api.getSubServer(name);
|
||||
}
|
||||
} else { // Server cannot edit()
|
||||
if (server == null || // Server must be reset
|
||||
!config.get().getSection("Servers").getSection(name).getString("Host").equalsIgnoreCase(server.getHost().getName()) ||
|
||||
config.get().getSection("Servers").getSection(name).getInt("Port") != server.getAddress().getPort() ||
|
||||
!config.get().getSection("Servers").getSection(name).getRawString("Directory").equals(server.getPath()) ||
|
||||
!new Executable(config.get().getSection("Servers").getSection(name).getRawString("Executable")).toString().equals(server.getExecutable().toString())
|
||||
) {
|
||||
if (server != null) server.getHost().forceRemoveSubServer(name);
|
||||
server = this.hosts.get(config.get().getSection("Servers").getSection(name).getString("Host").toLowerCase()).addSubServer(name, config.get().getSection("Servers").getSection(name).getBoolean("Enabled"),
|
||||
config.get().getSection("Servers").getSection(name).getInt("Port"), config.get().getSection("Servers").getSection(name).getColoredString("Motd", '&'), config.get().getSection("Servers").getSection(name).getBoolean("Log"),
|
||||
config.get().getSection("Servers").getSection(name).getRawString("Directory"), new Executable(config.get().getSection("Servers").getSection(name).getRawString("Executable")), config.get().getSection("Servers").getSection(name).getRawString("Stop-Command"),
|
||||
config.get().getSection("Servers").getSection(name).getBoolean("Run-On-Launch"), config.get().getSection("Servers").getSection(name).getBoolean("Auto-Restart"), config.get().getSection("Servers").getSection(name).getBoolean("Hidden"), config.get().getSection("Servers").getSection(name).getBoolean("Restricted"), false);
|
||||
} else { // Server doesn't need to reset
|
||||
if (config.get().getSection("Servers").getSection(name).getBoolean("Enabled") != server.isEnabled())
|
||||
server.setEnabled(config.get().getSection("Servers").getSection(name).getBoolean("Enabled"));
|
||||
if (!config.get().getSection("Servers").getSection(name).getColoredString("Motd", '&').equals(server.getMotd()))
|
||||
server.setMotd(config.get().getSection("Servers").getSection(name).getColoredString("Motd", '&'));
|
||||
if (config.get().getSection("Servers").getSection(name).getBoolean("Log") != server.isLogging())
|
||||
server.setLogging(config.get().getSection("Servers").getSection(name).getBoolean("Log"));
|
||||
if (!config.get().getSection("Servers").getSection(name).getRawString("Stop-Command").equals(server.getStopCommand()))
|
||||
server.setStopCommand(config.get().getSection("Servers").getSection(name).getRawString("Stop-Command"));
|
||||
if (config.get().getSection("Servers").getSection(name).getBoolean("Auto-Restart") != server.willAutoRestart())
|
||||
server.setAutoRestart(config.get().getSection("Servers").getSection(name).getBoolean("Auto-Restart"));
|
||||
if (config.get().getSection("Servers").getSection(name).getBoolean("Restricted") != server.isRestricted())
|
||||
server.setRestricted(config.get().getSection("Servers").getSection(name).getBoolean("Restricted"));
|
||||
if (config.get().getSection("Servers").getSection(name).getBoolean("Hidden") != server.isHidden())
|
||||
server.setHidden(config.get().getSection("Servers").getSection(name).getBoolean("Hidden"));
|
||||
} // Apply these changes regardless of reset
|
||||
if (config.get().getSection("Servers").getSection(name).getKeys().contains("Display") && ((config.get().getSection("Servers").getSection(name).getString("Display").length() == 0 && !server.getDisplayName().equals(server.getName())) || !config.get().getSection("Servers").getSection(name).getString("Display").equals(server.getDisplayName())))
|
||||
server.setDisplayName(config.get().getSection("Servers").getSection(name).getString("Display"));
|
||||
if (config.get().getSection("Servers").getSection(name).getKeys().contains("Group")) {
|
||||
for (String group : server.getGroups()) server.removeGroup(group);
|
||||
for (String group : config.get().getSection("Servers").getSection(name).getStringList("Group")) server.addGroup(group);
|
||||
}
|
||||
} // Apply these changes regardless of edit/reset
|
||||
if (config.get().getSection("Servers").getSection(name).getBoolean("Editable", true) != server.isEditable()) server.setEditable(config.get().getSection("Servers").getSection(name).getBoolean("Editable", true));
|
||||
if (config.get().getSection("Servers").getSection(name).getKeys().contains("Extra")) for (String extra : config.get().getSection("Servers").getSection(name).getSection("Extra").getKeys()) server.addExtra(extra, config.get().getSection("Servers").getSection(name).getSection("Extra").getObject(extra));
|
||||
ukeys.add(name.toLowerCase());
|
||||
subservers++;
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
for (String name : ukeys) {
|
||||
SubServer server = api.getSubServer(name);
|
||||
for (String oname : config.get().getSection("Servers").getSection(server.getName()).getRawStringList("Incompatible", new ArrayList<>())) {
|
||||
SubServer oserver = api.getSubServer(oname);
|
||||
if (oserver != null && server.isCompatible(oserver)) server.toggleCompatibility(oserver);
|
||||
}
|
||||
}
|
||||
ukeys.clear();
|
||||
api.ready = true;
|
||||
legServers.clear();
|
||||
|
||||
int plugins = 0;
|
||||
if (api.listeners.size() > 0) {
|
||||
System.out.println("SubServers > "+((posted)?"Rel":"L")+"oading SubAPI Plugins...");
|
||||
for (NamedContainer<Runnable, Runnable> listener : api.listeners) {
|
||||
try {
|
||||
if (listener.name() != null) {
|
||||
listener.name().run();
|
||||
plugins++;
|
||||
}
|
||||
} catch (Throwable e) {
|
||||
new InvocationTargetException(e, "Problem enabling plugin").printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
System.out.println("SubServers > " + ((plugins > 0)?plugins+" Plugin"+((plugins == 1)?"":"s")+", ":"") + hosts + " Host"+((hosts == 1)?"":"s")+", " + servers + " Server"+((servers == 1)?"":"s")+", and " + subservers + " SubServer"+((subservers == 1)?"":"s")+" "+((posted)?"re":"")+"loaded in " + new DecimalFormat("0.000").format((Calendar.getInstance().getTime().getTime() - begin) / 1000D) + "s");
|
||||
}
|
||||
|
||||
private void post() {
|
||||
@ -448,7 +583,7 @@ public final class SubPlugin extends BungeeCord implements Listener {
|
||||
}
|
||||
}
|
||||
|
||||
resetHosts();
|
||||
shutdown();
|
||||
|
||||
subdata.destroy();
|
||||
} catch (Exception e) {
|
||||
@ -456,23 +591,14 @@ public final class SubPlugin extends BungeeCord implements Listener {
|
||||
}
|
||||
|
||||
super.stopListeners();
|
||||
} private void resetHosts() throws Exception {
|
||||
} private void shutdown() throws Exception {
|
||||
api.ready = false;
|
||||
System.out.println("SubServers > Resetting Hosts and Server Data");
|
||||
List<String> hosts = new ArrayList<String>();
|
||||
hosts.addAll(this.hosts.keySet());
|
||||
|
||||
for (String host : hosts) {
|
||||
List<String> subservers = new ArrayList<String>();
|
||||
subservers.addAll(this.hosts.get(host).getSubServers().keySet());
|
||||
|
||||
for (String server : subservers) {
|
||||
this.hosts.get(host).removeSubServer(server);
|
||||
}
|
||||
subservers.clear();
|
||||
this.hosts.get(host).getCreator().terminate();
|
||||
this.hosts.get(host).getCreator().waitFor();
|
||||
this.hosts.remove(host);
|
||||
api.forceRemoveHost(host);
|
||||
}
|
||||
running = false;
|
||||
this.hosts.clear();
|
||||
|
Binary file not shown.
@ -50,6 +50,24 @@ public final class Util {
|
||||
return values;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get an item from a map ignoring case
|
||||
*
|
||||
* @param map Map to search
|
||||
* @param key Key to search with
|
||||
* @param <V> Value
|
||||
* @return Search Result
|
||||
*/
|
||||
public static <V> V getCaseInsensitively(Map<String, V> map, String key) {
|
||||
HashMap<String, String> insensitivity = new HashMap<String, String>();
|
||||
for (String item : map.keySet()) insensitivity.put(item.toLowerCase(), item);
|
||||
if (insensitivity.keySet().contains(key.toLowerCase())) {
|
||||
return map.get(insensitivity.get(key.toLowerCase()));
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets a new Variable that doesn't match the existing Variables
|
||||
*
|
||||
|
Binary file not shown.
@ -53,6 +53,24 @@ public final class Util {
|
||||
return values;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get an item from a map ignoring case
|
||||
*
|
||||
* @param map Map to search
|
||||
* @param key Key to search with
|
||||
* @param <V> Value
|
||||
* @return Search Result
|
||||
*/
|
||||
public static <V> V getCaseInsensitively(Map<String, V> map, String key) {
|
||||
HashMap<String, String> insensitivity = new HashMap<String, String>();
|
||||
for (String item : map.keySet()) insensitivity.put(item.toLowerCase(), item);
|
||||
if (insensitivity.keySet().contains(key.toLowerCase())) {
|
||||
return map.get(insensitivity.get(key.toLowerCase()));
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets a new Variable that doesn't match the existing Variables
|
||||
*
|
||||
|
Binary file not shown.
@ -50,6 +50,24 @@ public final class Util {
|
||||
return values;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get an item from a map ignoring case
|
||||
*
|
||||
* @param map Map to search
|
||||
* @param key Key to search with
|
||||
* @param <V> Value
|
||||
* @return Search Result
|
||||
*/
|
||||
public static <V> V getCaseInsensitively(Map<String, V> map, String key) {
|
||||
HashMap<String, String> insensitivity = new HashMap<String, String>();
|
||||
for (String item : map.keySet()) insensitivity.put(item.toLowerCase(), item);
|
||||
if (insensitivity.keySet().contains(key.toLowerCase())) {
|
||||
return map.get(insensitivity.get(key.toLowerCase()));
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets a new Variable that doesn't match the existing Variables
|
||||
*
|
||||
|
Loading…
Reference in New Issue
Block a user