mirror of
https://github.com/aikar/commands.git
synced 2026-05-31 06:11:55 +00:00
(DEPLOYED ACF) Updated JavaDocs
This commit is contained in:
@@ -113,7 +113,7 @@ var activeTableTab = "activeTableTab";
|
||||
<li class="blockList">
|
||||
<hr>
|
||||
<br>
|
||||
<pre>public class <a href="../../../src-html/co/aikar/commands/BukkitCommandManager.html#line.65">BukkitCommandManager</a>
|
||||
<pre>public class <a href="../../../src-html/co/aikar/commands/BukkitCommandManager.html#line.66">BukkitCommandManager</a>
|
||||
extends co.aikar.commands.CommandManager<org.bukkit.command.CommandSender,<a href="../../../co/aikar/commands/BukkitCommandIssuer.html" title="class in co.aikar.commands">BukkitCommandIssuer</a>,org.bukkit.ChatColor,<a href="../../../co/aikar/commands/BukkitMessageFormatter.html" title="class in co.aikar.commands">BukkitMessageFormatter</a>,<a href="../../../co/aikar/commands/BukkitCommandExecutionContext.html" title="class in co.aikar.commands">BukkitCommandExecutionContext</a>,<a href="../../../co/aikar/commands/BukkitConditionContext.html" title="class in co.aikar.commands">BukkitConditionContext</a>></pre>
|
||||
</li>
|
||||
</ul>
|
||||
@@ -365,7 +365,7 @@ extends co.aikar.commands.CommandManager<org.bukkit.command.CommandSender,<a
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>plugin</h4>
|
||||
<pre>protected final org.bukkit.plugin.Plugin <a href="../../../src-html/co/aikar/commands/BukkitCommandManager.html#line.75">plugin</a></pre>
|
||||
<pre>protected final org.bukkit.plugin.Plugin <a href="../../../src-html/co/aikar/commands/BukkitCommandManager.html#line.76">plugin</a></pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="mcMinorVersion">
|
||||
@@ -374,7 +374,7 @@ extends co.aikar.commands.CommandManager<org.bukkit.command.CommandSender,<a
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>mcMinorVersion</h4>
|
||||
<pre>public final <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a> <a href="../../../src-html/co/aikar/commands/BukkitCommandManager.html#line.80">mcMinorVersion</a></pre>
|
||||
<pre>public final <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a> <a href="../../../src-html/co/aikar/commands/BukkitCommandManager.html#line.81">mcMinorVersion</a></pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="mcPatchVersion">
|
||||
@@ -383,7 +383,7 @@ extends co.aikar.commands.CommandManager<org.bukkit.command.CommandSender,<a
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>mcPatchVersion</h4>
|
||||
<pre>public final <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a> <a href="../../../src-html/co/aikar/commands/BukkitCommandManager.html#line.81">mcPatchVersion</a></pre>
|
||||
<pre>public final <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a> <a href="../../../src-html/co/aikar/commands/BukkitCommandManager.html#line.82">mcPatchVersion</a></pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="knownCommands">
|
||||
@@ -392,7 +392,7 @@ extends co.aikar.commands.CommandManager<org.bukkit.command.CommandSender,<a
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>knownCommands</h4>
|
||||
<pre>protected <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a><<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,org.bukkit.command.Command> <a href="../../../src-html/co/aikar/commands/BukkitCommandManager.html#line.82">knownCommands</a></pre>
|
||||
<pre>protected <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a><<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,org.bukkit.command.Command> <a href="../../../src-html/co/aikar/commands/BukkitCommandManager.html#line.83">knownCommands</a></pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="registeredCommands">
|
||||
@@ -401,7 +401,7 @@ extends co.aikar.commands.CommandManager<org.bukkit.command.CommandSender,<a
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>registeredCommands</h4>
|
||||
<pre>protected <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a><<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="../../../co/aikar/commands/BukkitRootCommand.html" title="class in co.aikar.commands">BukkitRootCommand</a>> <a href="../../../src-html/co/aikar/commands/BukkitCommandManager.html#line.83">registeredCommands</a></pre>
|
||||
<pre>protected <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a><<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="../../../co/aikar/commands/BukkitRootCommand.html" title="class in co.aikar.commands">BukkitRootCommand</a>> <a href="../../../src-html/co/aikar/commands/BukkitCommandManager.html#line.84">registeredCommands</a></pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="contexts">
|
||||
@@ -410,7 +410,7 @@ extends co.aikar.commands.CommandManager<org.bukkit.command.CommandSender,<a
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>contexts</h4>
|
||||
<pre>protected <a href="../../../co/aikar/commands/BukkitCommandContexts.html" title="class in co.aikar.commands">BukkitCommandContexts</a> <a href="../../../src-html/co/aikar/commands/BukkitCommandManager.html#line.84">contexts</a></pre>
|
||||
<pre>protected <a href="../../../co/aikar/commands/BukkitCommandContexts.html" title="class in co.aikar.commands">BukkitCommandContexts</a> <a href="../../../src-html/co/aikar/commands/BukkitCommandManager.html#line.85">contexts</a></pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="completions">
|
||||
@@ -419,7 +419,7 @@ extends co.aikar.commands.CommandManager<org.bukkit.command.CommandSender,<a
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>completions</h4>
|
||||
<pre>protected <a href="../../../co/aikar/commands/BukkitCommandCompletions.html" title="class in co.aikar.commands">BukkitCommandCompletions</a> <a href="../../../src-html/co/aikar/commands/BukkitCommandManager.html#line.85">completions</a></pre>
|
||||
<pre>protected <a href="../../../co/aikar/commands/BukkitCommandCompletions.html" title="class in co.aikar.commands">BukkitCommandCompletions</a> <a href="../../../src-html/co/aikar/commands/BukkitCommandManager.html#line.86">completions</a></pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="locales">
|
||||
@@ -428,7 +428,7 @@ extends co.aikar.commands.CommandManager<org.bukkit.command.CommandSender,<a
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>locales</h4>
|
||||
<pre>protected <a href="../../../co/aikar/commands/BukkitLocales.html" title="class in co.aikar.commands">BukkitLocales</a> <a href="../../../src-html/co/aikar/commands/BukkitCommandManager.html#line.87">locales</a></pre>
|
||||
<pre>protected <a href="../../../co/aikar/commands/BukkitLocales.html" title="class in co.aikar.commands">BukkitLocales</a> <a href="../../../src-html/co/aikar/commands/BukkitCommandManager.html#line.88">locales</a></pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="autoDetectFromClient">
|
||||
@@ -437,7 +437,7 @@ extends co.aikar.commands.CommandManager<org.bukkit.command.CommandSender,<a
|
||||
<ul class="blockListLast">
|
||||
<li class="blockList">
|
||||
<h4>autoDetectFromClient</h4>
|
||||
<pre>protected boolean <a href="../../../src-html/co/aikar/commands/BukkitCommandManager.html#line.89">autoDetectFromClient</a></pre>
|
||||
<pre>protected boolean <a href="../../../src-html/co/aikar/commands/BukkitCommandManager.html#line.90">autoDetectFromClient</a></pre>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
@@ -454,7 +454,7 @@ extends co.aikar.commands.CommandManager<org.bukkit.command.CommandSender,<a
|
||||
<ul class="blockListLast">
|
||||
<li class="blockList">
|
||||
<h4>BukkitCommandManager</h4>
|
||||
<pre>public <a href="../../../src-html/co/aikar/commands/BukkitCommandManager.html#line.92">BukkitCommandManager</a>(org.bukkit.plugin.Plugin plugin)</pre>
|
||||
<pre>public <a href="../../../src-html/co/aikar/commands/BukkitCommandManager.html#line.93">BukkitCommandManager</a>(org.bukkit.plugin.Plugin plugin)</pre>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
@@ -471,7 +471,7 @@ extends co.aikar.commands.CommandManager<org.bukkit.command.CommandSender,<a
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>getPlugin</h4>
|
||||
<pre>public org.bukkit.plugin.Plugin <a href="../../../src-html/co/aikar/commands/BukkitCommandManager.html#line.170">getPlugin</a>()</pre>
|
||||
<pre>public org.bukkit.plugin.Plugin <a href="../../../src-html/co/aikar/commands/BukkitCommandManager.html#line.171">getPlugin</a>()</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="isCommandIssuer-java.lang.Class-">
|
||||
@@ -480,7 +480,7 @@ extends co.aikar.commands.CommandManager<org.bukkit.command.CommandSender,<a
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>isCommandIssuer</h4>
|
||||
<pre>public boolean <a href="../../../src-html/co/aikar/commands/BukkitCommandManager.html#line.175">isCommandIssuer</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a><?> type)</pre>
|
||||
<pre>public boolean <a href="../../../src-html/co/aikar/commands/BukkitCommandManager.html#line.176">isCommandIssuer</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a><?> type)</pre>
|
||||
<dl>
|
||||
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
|
||||
<dd><code>isCommandIssuer</code> in class <code>co.aikar.commands.CommandManager<org.bukkit.command.CommandSender,<a href="../../../co/aikar/commands/BukkitCommandIssuer.html" title="class in co.aikar.commands">BukkitCommandIssuer</a>,org.bukkit.ChatColor,<a href="../../../co/aikar/commands/BukkitMessageFormatter.html" title="class in co.aikar.commands">BukkitMessageFormatter</a>,<a href="../../../co/aikar/commands/BukkitCommandExecutionContext.html" title="class in co.aikar.commands">BukkitCommandExecutionContext</a>,<a href="../../../co/aikar/commands/BukkitConditionContext.html" title="class in co.aikar.commands">BukkitConditionContext</a>></code></dd>
|
||||
@@ -493,7 +493,7 @@ extends co.aikar.commands.CommandManager<org.bukkit.command.CommandSender,<a
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>getCommandContexts</h4>
|
||||
<pre>public co.aikar.commands.CommandContexts<<a href="../../../co/aikar/commands/BukkitCommandExecutionContext.html" title="class in co.aikar.commands">BukkitCommandExecutionContext</a>> <a href="../../../src-html/co/aikar/commands/BukkitCommandManager.html#line.180">getCommandContexts</a>()</pre>
|
||||
<pre>public co.aikar.commands.CommandContexts<<a href="../../../co/aikar/commands/BukkitCommandExecutionContext.html" title="class in co.aikar.commands">BukkitCommandExecutionContext</a>> <a href="../../../src-html/co/aikar/commands/BukkitCommandManager.html#line.181">getCommandContexts</a>()</pre>
|
||||
<dl>
|
||||
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
|
||||
<dd><code>getCommandContexts</code> in class <code>co.aikar.commands.CommandManager<org.bukkit.command.CommandSender,<a href="../../../co/aikar/commands/BukkitCommandIssuer.html" title="class in co.aikar.commands">BukkitCommandIssuer</a>,org.bukkit.ChatColor,<a href="../../../co/aikar/commands/BukkitMessageFormatter.html" title="class in co.aikar.commands">BukkitMessageFormatter</a>,<a href="../../../co/aikar/commands/BukkitCommandExecutionContext.html" title="class in co.aikar.commands">BukkitCommandExecutionContext</a>,<a href="../../../co/aikar/commands/BukkitConditionContext.html" title="class in co.aikar.commands">BukkitConditionContext</a>></code></dd>
|
||||
@@ -506,7 +506,7 @@ extends co.aikar.commands.CommandManager<org.bukkit.command.CommandSender,<a
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>getCommandCompletions</h4>
|
||||
<pre>public co.aikar.commands.CommandCompletions<<a href="../../../co/aikar/commands/BukkitCommandCompletionContext.html" title="class in co.aikar.commands">BukkitCommandCompletionContext</a>> <a href="../../../src-html/co/aikar/commands/BukkitCommandManager.html#line.188">getCommandCompletions</a>()</pre>
|
||||
<pre>public co.aikar.commands.CommandCompletions<<a href="../../../co/aikar/commands/BukkitCommandCompletionContext.html" title="class in co.aikar.commands">BukkitCommandCompletionContext</a>> <a href="../../../src-html/co/aikar/commands/BukkitCommandManager.html#line.189">getCommandCompletions</a>()</pre>
|
||||
<dl>
|
||||
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
|
||||
<dd><code>getCommandCompletions</code> in class <code>co.aikar.commands.CommandManager<org.bukkit.command.CommandSender,<a href="../../../co/aikar/commands/BukkitCommandIssuer.html" title="class in co.aikar.commands">BukkitCommandIssuer</a>,org.bukkit.ChatColor,<a href="../../../co/aikar/commands/BukkitMessageFormatter.html" title="class in co.aikar.commands">BukkitMessageFormatter</a>,<a href="../../../co/aikar/commands/BukkitCommandExecutionContext.html" title="class in co.aikar.commands">BukkitCommandExecutionContext</a>,<a href="../../../co/aikar/commands/BukkitConditionContext.html" title="class in co.aikar.commands">BukkitConditionContext</a>></code></dd>
|
||||
@@ -519,7 +519,7 @@ extends co.aikar.commands.CommandManager<org.bukkit.command.CommandSender,<a
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>getLocales</h4>
|
||||
<pre>public <a href="../../../co/aikar/commands/BukkitLocales.html" title="class in co.aikar.commands">BukkitLocales</a> <a href="../../../src-html/co/aikar/commands/BukkitCommandManager.html#line.197">getLocales</a>()</pre>
|
||||
<pre>public <a href="../../../co/aikar/commands/BukkitLocales.html" title="class in co.aikar.commands">BukkitLocales</a> <a href="../../../src-html/co/aikar/commands/BukkitCommandManager.html#line.198">getLocales</a>()</pre>
|
||||
<dl>
|
||||
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
|
||||
<dd><code>getLocales</code> in class <code>co.aikar.commands.CommandManager<org.bukkit.command.CommandSender,<a href="../../../co/aikar/commands/BukkitCommandIssuer.html" title="class in co.aikar.commands">BukkitCommandIssuer</a>,org.bukkit.ChatColor,<a href="../../../co/aikar/commands/BukkitMessageFormatter.html" title="class in co.aikar.commands">BukkitMessageFormatter</a>,<a href="../../../co/aikar/commands/BukkitCommandExecutionContext.html" title="class in co.aikar.commands">BukkitCommandExecutionContext</a>,<a href="../../../co/aikar/commands/BukkitConditionContext.html" title="class in co.aikar.commands">BukkitConditionContext</a>></code></dd>
|
||||
@@ -532,7 +532,7 @@ extends co.aikar.commands.CommandManager<org.bukkit.command.CommandSender,<a
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>hasRegisteredCommands</h4>
|
||||
<pre>public boolean <a href="../../../src-html/co/aikar/commands/BukkitCommandManager.html#line.207">hasRegisteredCommands</a>()</pre>
|
||||
<pre>public boolean <a href="../../../src-html/co/aikar/commands/BukkitCommandManager.html#line.208">hasRegisteredCommands</a>()</pre>
|
||||
<dl>
|
||||
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
|
||||
<dd><code>hasRegisteredCommands</code> in class <code>co.aikar.commands.CommandManager<org.bukkit.command.CommandSender,<a href="../../../co/aikar/commands/BukkitCommandIssuer.html" title="class in co.aikar.commands">BukkitCommandIssuer</a>,org.bukkit.ChatColor,<a href="../../../co/aikar/commands/BukkitMessageFormatter.html" title="class in co.aikar.commands">BukkitMessageFormatter</a>,<a href="../../../co/aikar/commands/BukkitCommandExecutionContext.html" title="class in co.aikar.commands">BukkitCommandExecutionContext</a>,<a href="../../../co/aikar/commands/BukkitConditionContext.html" title="class in co.aikar.commands">BukkitConditionContext</a>></code></dd>
|
||||
@@ -545,7 +545,7 @@ extends co.aikar.commands.CommandManager<org.bukkit.command.CommandSender,<a
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>registerCommand</h4>
|
||||
<pre>public void <a href="../../../src-html/co/aikar/commands/BukkitCommandManager.html#line.211">registerCommand</a>(co.aikar.commands.BaseCommand command,
|
||||
<pre>public void <a href="../../../src-html/co/aikar/commands/BukkitCommandManager.html#line.212">registerCommand</a>(co.aikar.commands.BaseCommand command,
|
||||
boolean force)</pre>
|
||||
</li>
|
||||
</ul>
|
||||
@@ -555,7 +555,7 @@ extends co.aikar.commands.CommandManager<org.bukkit.command.CommandSender,<a
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>registerCommand</h4>
|
||||
<pre>public void <a href="../../../src-html/co/aikar/commands/BukkitCommandManager.html#line.245">registerCommand</a>(co.aikar.commands.BaseCommand command)</pre>
|
||||
<pre>public void <a href="../../../src-html/co/aikar/commands/BukkitCommandManager.html#line.246">registerCommand</a>(co.aikar.commands.BaseCommand command)</pre>
|
||||
<dl>
|
||||
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
|
||||
<dd><code>registerCommand</code> in class <code>co.aikar.commands.CommandManager<org.bukkit.command.CommandSender,<a href="../../../co/aikar/commands/BukkitCommandIssuer.html" title="class in co.aikar.commands">BukkitCommandIssuer</a>,org.bukkit.ChatColor,<a href="../../../co/aikar/commands/BukkitMessageFormatter.html" title="class in co.aikar.commands">BukkitMessageFormatter</a>,<a href="../../../co/aikar/commands/BukkitCommandExecutionContext.html" title="class in co.aikar.commands">BukkitCommandExecutionContext</a>,<a href="../../../co/aikar/commands/BukkitConditionContext.html" title="class in co.aikar.commands">BukkitConditionContext</a>></code></dd>
|
||||
@@ -568,7 +568,7 @@ extends co.aikar.commands.CommandManager<org.bukkit.command.CommandSender,<a
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>unregisterCommand</h4>
|
||||
<pre>public void <a href="../../../src-html/co/aikar/commands/BukkitCommandManager.html#line.249">unregisterCommand</a>(co.aikar.commands.BaseCommand command)</pre>
|
||||
<pre>public void <a href="../../../src-html/co/aikar/commands/BukkitCommandManager.html#line.250">unregisterCommand</a>(co.aikar.commands.BaseCommand command)</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="unregisterCommand-co.aikar.commands.BukkitRootCommand-">
|
||||
@@ -578,7 +578,7 @@ extends co.aikar.commands.CommandManager<org.bukkit.command.CommandSender,<a
|
||||
<li class="blockList">
|
||||
<h4>unregisterCommand</h4>
|
||||
<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
|
||||
public void <a href="../../../src-html/co/aikar/commands/BukkitCommandManager.html#line.265">unregisterCommand</a>(<a href="../../../co/aikar/commands/BukkitRootCommand.html" title="class in co.aikar.commands">BukkitRootCommand</a> command)</pre>
|
||||
public void <a href="../../../src-html/co/aikar/commands/BukkitCommandManager.html#line.266">unregisterCommand</a>(<a href="../../../co/aikar/commands/BukkitRootCommand.html" title="class in co.aikar.commands">BukkitRootCommand</a> command)</pre>
|
||||
<div class="block"><span class="deprecatedLabel">Deprecated.</span> <span class="deprecationComment">Use unregisterCommand(BaseCommand) - this will be visibility reduced later.</span></div>
|
||||
<dl>
|
||||
<dt><span class="paramLabel">Parameters:</span></dt>
|
||||
@@ -592,7 +592,7 @@ public void <a href="../../../src-html/co/aikar/commands/BukkitCommand
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>unregisterCommands</h4>
|
||||
<pre>public void <a href="../../../src-html/co/aikar/commands/BukkitCommandManager.html#line.276">unregisterCommands</a>()</pre>
|
||||
<pre>public void <a href="../../../src-html/co/aikar/commands/BukkitCommandManager.html#line.278">unregisterCommands</a>()</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="setPlayerLocale-org.bukkit.entity.Player-java.util.Locale-">
|
||||
@@ -601,7 +601,7 @@ public void <a href="../../../src-html/co/aikar/commands/BukkitCommand
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>setPlayerLocale</h4>
|
||||
<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Locale.html?is-external=true" title="class or interface in java.util">Locale</a> <a href="../../../src-html/co/aikar/commands/BukkitCommandManager.html#line.297">setPlayerLocale</a>(org.bukkit.entity.Player player,
|
||||
<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Locale.html?is-external=true" title="class or interface in java.util">Locale</a> <a href="../../../src-html/co/aikar/commands/BukkitCommandManager.html#line.298">setPlayerLocale</a>(org.bukkit.entity.Player player,
|
||||
<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Locale.html?is-external=true" title="class or interface in java.util">Locale</a> locale)</pre>
|
||||
</li>
|
||||
</ul>
|
||||
@@ -611,7 +611,7 @@ public void <a href="../../../src-html/co/aikar/commands/BukkitCommand
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>getTimings</h4>
|
||||
<pre>public co.aikar.timings.lib.TimingManager <a href="../../../src-html/co/aikar/commands/BukkitCommandManager.html#line.330">getTimings</a>()</pre>
|
||||
<pre>public co.aikar.timings.lib.TimingManager <a href="../../../src-html/co/aikar/commands/BukkitCommandManager.html#line.332">getTimings</a>()</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="createRootCommand-java.lang.String-">
|
||||
@@ -620,7 +620,7 @@ public void <a href="../../../src-html/co/aikar/commands/BukkitCommand
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>createRootCommand</h4>
|
||||
<pre>public co.aikar.commands.RootCommand <a href="../../../src-html/co/aikar/commands/BukkitCommandManager.html#line.335">createRootCommand</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> cmd)</pre>
|
||||
<pre>public co.aikar.commands.RootCommand <a href="../../../src-html/co/aikar/commands/BukkitCommandManager.html#line.337">createRootCommand</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> cmd)</pre>
|
||||
<dl>
|
||||
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
|
||||
<dd><code>createRootCommand</code> in class <code>co.aikar.commands.CommandManager<org.bukkit.command.CommandSender,<a href="../../../co/aikar/commands/BukkitCommandIssuer.html" title="class in co.aikar.commands">BukkitCommandIssuer</a>,org.bukkit.ChatColor,<a href="../../../co/aikar/commands/BukkitMessageFormatter.html" title="class in co.aikar.commands">BukkitMessageFormatter</a>,<a href="../../../co/aikar/commands/BukkitCommandExecutionContext.html" title="class in co.aikar.commands">BukkitCommandExecutionContext</a>,<a href="../../../co/aikar/commands/BukkitConditionContext.html" title="class in co.aikar.commands">BukkitConditionContext</a>></code></dd>
|
||||
@@ -633,7 +633,7 @@ public void <a href="../../../src-html/co/aikar/commands/BukkitCommand
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>getRegisteredRootCommands</h4>
|
||||
<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a><co.aikar.commands.RootCommand> <a href="../../../src-html/co/aikar/commands/BukkitCommandManager.html#line.340">getRegisteredRootCommands</a>()</pre>
|
||||
<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a><co.aikar.commands.RootCommand> <a href="../../../src-html/co/aikar/commands/BukkitCommandManager.html#line.342">getRegisteredRootCommands</a>()</pre>
|
||||
<dl>
|
||||
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
|
||||
<dd><code>getRegisteredRootCommands</code> in class <code>co.aikar.commands.CommandManager<org.bukkit.command.CommandSender,<a href="../../../co/aikar/commands/BukkitCommandIssuer.html" title="class in co.aikar.commands">BukkitCommandIssuer</a>,org.bukkit.ChatColor,<a href="../../../co/aikar/commands/BukkitMessageFormatter.html" title="class in co.aikar.commands">BukkitMessageFormatter</a>,<a href="../../../co/aikar/commands/BukkitCommandExecutionContext.html" title="class in co.aikar.commands">BukkitCommandExecutionContext</a>,<a href="../../../co/aikar/commands/BukkitConditionContext.html" title="class in co.aikar.commands">BukkitConditionContext</a>></code></dd>
|
||||
@@ -646,7 +646,7 @@ public void <a href="../../../src-html/co/aikar/commands/BukkitCommand
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>getCommandIssuer</h4>
|
||||
<pre>public <a href="../../../co/aikar/commands/BukkitCommandIssuer.html" title="class in co.aikar.commands">BukkitCommandIssuer</a> <a href="../../../src-html/co/aikar/commands/BukkitCommandManager.html#line.345">getCommandIssuer</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a> issuer)</pre>
|
||||
<pre>public <a href="../../../co/aikar/commands/BukkitCommandIssuer.html" title="class in co.aikar.commands">BukkitCommandIssuer</a> <a href="../../../src-html/co/aikar/commands/BukkitCommandManager.html#line.347">getCommandIssuer</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a> issuer)</pre>
|
||||
<dl>
|
||||
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
|
||||
<dd><code>getCommandIssuer</code> in class <code>co.aikar.commands.CommandManager<org.bukkit.command.CommandSender,<a href="../../../co/aikar/commands/BukkitCommandIssuer.html" title="class in co.aikar.commands">BukkitCommandIssuer</a>,org.bukkit.ChatColor,<a href="../../../co/aikar/commands/BukkitMessageFormatter.html" title="class in co.aikar.commands">BukkitMessageFormatter</a>,<a href="../../../co/aikar/commands/BukkitCommandExecutionContext.html" title="class in co.aikar.commands">BukkitCommandExecutionContext</a>,<a href="../../../co/aikar/commands/BukkitConditionContext.html" title="class in co.aikar.commands">BukkitConditionContext</a>></code></dd>
|
||||
@@ -659,7 +659,7 @@ public void <a href="../../../src-html/co/aikar/commands/BukkitCommand
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>createCommandContext</h4>
|
||||
<pre>public <a href="../../../co/aikar/commands/BukkitCommandExecutionContext.html" title="class in co.aikar.commands">BukkitCommandExecutionContext</a> <a href="../../../src-html/co/aikar/commands/BukkitCommandManager.html#line.353">createCommandContext</a>(co.aikar.commands.RegisteredCommand command,
|
||||
<pre>public <a href="../../../co/aikar/commands/BukkitCommandExecutionContext.html" title="class in co.aikar.commands">BukkitCommandExecutionContext</a> <a href="../../../src-html/co/aikar/commands/BukkitCommandManager.html#line.355">createCommandContext</a>(co.aikar.commands.RegisteredCommand command,
|
||||
co.aikar.commands.CommandParameter parameter,
|
||||
co.aikar.commands.CommandIssuer sender,
|
||||
<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a><<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>> args,
|
||||
@@ -677,7 +677,7 @@ public void <a href="../../../src-html/co/aikar/commands/BukkitCommand
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>createCompletionContext</h4>
|
||||
<pre>public <a href="../../../co/aikar/commands/BukkitCommandCompletionContext.html" title="class in co.aikar.commands">BukkitCommandCompletionContext</a> <a href="../../../src-html/co/aikar/commands/BukkitCommandManager.html#line.358">createCompletionContext</a>(co.aikar.commands.RegisteredCommand command,
|
||||
<pre>public <a href="../../../co/aikar/commands/BukkitCommandCompletionContext.html" title="class in co.aikar.commands">BukkitCommandCompletionContext</a> <a href="../../../src-html/co/aikar/commands/BukkitCommandManager.html#line.360">createCompletionContext</a>(co.aikar.commands.RegisteredCommand command,
|
||||
co.aikar.commands.CommandIssuer sender,
|
||||
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> input,
|
||||
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> config,
|
||||
@@ -694,7 +694,7 @@ public void <a href="../../../src-html/co/aikar/commands/BukkitCommand
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>createRegisteredCommand</h4>
|
||||
<pre>public co.aikar.commands.RegisteredCommand <a href="../../../src-html/co/aikar/commands/BukkitCommandManager.html#line.363">createRegisteredCommand</a>(co.aikar.commands.BaseCommand command,
|
||||
<pre>public co.aikar.commands.RegisteredCommand <a href="../../../src-html/co/aikar/commands/BukkitCommandManager.html#line.365">createRegisteredCommand</a>(co.aikar.commands.BaseCommand command,
|
||||
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> cmdName,
|
||||
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Method.html?is-external=true" title="class or interface in java.lang.reflect">Method</a> method,
|
||||
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> prefSubCommand)</pre>
|
||||
@@ -710,7 +710,7 @@ public void <a href="../../../src-html/co/aikar/commands/BukkitCommand
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>createConditionContext</h4>
|
||||
<pre>public <a href="../../../co/aikar/commands/BukkitConditionContext.html" title="class in co.aikar.commands">BukkitConditionContext</a> <a href="../../../src-html/co/aikar/commands/BukkitCommandManager.html#line.368">createConditionContext</a>(co.aikar.commands.CommandIssuer issuer,
|
||||
<pre>public <a href="../../../co/aikar/commands/BukkitConditionContext.html" title="class in co.aikar.commands">BukkitConditionContext</a> <a href="../../../src-html/co/aikar/commands/BukkitCommandManager.html#line.370">createConditionContext</a>(co.aikar.commands.CommandIssuer issuer,
|
||||
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> config)</pre>
|
||||
<dl>
|
||||
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
|
||||
@@ -724,7 +724,7 @@ public void <a href="../../../src-html/co/aikar/commands/BukkitCommand
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>log</h4>
|
||||
<pre>public void <a href="../../../src-html/co/aikar/commands/BukkitCommandManager.html#line.374">log</a>(co.aikar.commands.LogLevel level,
|
||||
<pre>public void <a href="../../../src-html/co/aikar/commands/BukkitCommandManager.html#line.376">log</a>(co.aikar.commands.LogLevel level,
|
||||
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> message,
|
||||
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a> throwable)</pre>
|
||||
<dl>
|
||||
@@ -739,7 +739,7 @@ public void <a href="../../../src-html/co/aikar/commands/BukkitCommand
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>usePerIssuerLocale</h4>
|
||||
<pre>public boolean <a href="../../../src-html/co/aikar/commands/BukkitCommandManager.html#line.384">usePerIssuerLocale</a>(boolean usePerIssuerLocale,
|
||||
<pre>public boolean <a href="../../../src-html/co/aikar/commands/BukkitCommandManager.html#line.386">usePerIssuerLocale</a>(boolean usePerIssuerLocale,
|
||||
boolean autoDetectFromClient)</pre>
|
||||
</li>
|
||||
</ul>
|
||||
@@ -749,7 +749,7 @@ public void <a href="../../../src-html/co/aikar/commands/BukkitCommand
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>getCommandPrefix</h4>
|
||||
<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../src-html/co/aikar/commands/BukkitCommandManager.html#line.392">getCommandPrefix</a>(co.aikar.commands.CommandIssuer issuer)</pre>
|
||||
<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../src-html/co/aikar/commands/BukkitCommandManager.html#line.394">getCommandPrefix</a>(co.aikar.commands.CommandIssuer issuer)</pre>
|
||||
<dl>
|
||||
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
|
||||
<dd><code>getCommandPrefix</code> in class <code>co.aikar.commands.CommandManager<org.bukkit.command.CommandSender,<a href="../../../co/aikar/commands/BukkitCommandIssuer.html" title="class in co.aikar.commands">BukkitCommandIssuer</a>,org.bukkit.ChatColor,<a href="../../../co/aikar/commands/BukkitMessageFormatter.html" title="class in co.aikar.commands">BukkitMessageFormatter</a>,<a href="../../../co/aikar/commands/BukkitCommandExecutionContext.html" title="class in co.aikar.commands">BukkitCommandExecutionContext</a>,<a href="../../../co/aikar/commands/BukkitConditionContext.html" title="class in co.aikar.commands">BukkitConditionContext</a>></code></dd>
|
||||
@@ -762,7 +762,7 @@ public void <a href="../../../src-html/co/aikar/commands/BukkitCommand
|
||||
<ul class="blockListLast">
|
||||
<li class="blockList">
|
||||
<h4>handleUncaughtException</h4>
|
||||
<pre>protected boolean <a href="../../../src-html/co/aikar/commands/BukkitCommandManager.html#line.397">handleUncaughtException</a>(co.aikar.commands.BaseCommand scope,
|
||||
<pre>protected boolean <a href="../../../src-html/co/aikar/commands/BukkitCommandManager.html#line.399">handleUncaughtException</a>(co.aikar.commands.BaseCommand scope,
|
||||
co.aikar.commands.RegisteredCommand registeredCommand,
|
||||
co.aikar.commands.CommandIssuer sender,
|
||||
<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a><<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>> args,
|
||||
|
||||
@@ -132,7 +132,7 @@ extends co.aikar.commands.Locales</pre>
|
||||
<!-- -->
|
||||
</a>
|
||||
<h3>Fields inherited from class co.aikar.commands.Locales</h3>
|
||||
<code>AFRIKAANS, ARABIC, BULGARIAN, CHINESE, CZECH, DANISH, DUTCH, ENGLISH, FINNISH, FRENCH, GERMAN, GREEK, HEBREW, HINDI, ITALIAN, JAPANESE, KOREAN, LATIN, NORWEGIAN_BOKMAAL, NORWEGIAN_NYNORSK, POLISH, PORTUGUESE, ROMANIAN, RUSSIAN, SIMPLIFIED_CHINESE, SPANISH, SWEDISH, THAI, TRADITIONAL_CHINESE, TURKISH, UKRANIAN, VIETNAMESE, WELSH</code></li>
|
||||
<code>AFRIKAANS, ARABIC, BULGARIAN, CHINESE, CZECH, DANISH, DUTCH, ENGLISH, FINNISH, FRENCH, GERMAN, GREEK, HEBREW, HINDI, HUNGARIAN, ITALIAN, JAPANESE, KOREAN, LATIN, NORWEGIAN_BOKMAAL, NORWEGIAN_NYNORSK, POLISH, PORTUGUESE, ROMANIAN, RUSSIAN, SIMPLIFIED_CHINESE, SPANISH, SWEDISH, THAI, TRADITIONAL_CHINESE, TURKISH, UKRANIAN, VIETNAMESE, WELSH</code></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
@@ -60,355 +60,357 @@
|
||||
<span class="sourceLineNo">052</span>import java.util.Collection;<a name="line.52"></a>
|
||||
<span class="sourceLineNo">053</span>import java.util.Collections;<a name="line.53"></a>
|
||||
<span class="sourceLineNo">054</span>import java.util.HashMap;<a name="line.54"></a>
|
||||
<span class="sourceLineNo">055</span>import java.util.List;<a name="line.55"></a>
|
||||
<span class="sourceLineNo">056</span>import java.util.Locale;<a name="line.56"></a>
|
||||
<span class="sourceLineNo">057</span>import java.util.Map;<a name="line.57"></a>
|
||||
<span class="sourceLineNo">058</span>import java.util.Objects;<a name="line.58"></a>
|
||||
<span class="sourceLineNo">059</span>import java.util.logging.Level;<a name="line.59"></a>
|
||||
<span class="sourceLineNo">060</span>import java.util.logging.Logger;<a name="line.60"></a>
|
||||
<span class="sourceLineNo">061</span>import java.util.regex.Matcher;<a name="line.61"></a>
|
||||
<span class="sourceLineNo">062</span>import java.util.regex.Pattern;<a name="line.62"></a>
|
||||
<span class="sourceLineNo">063</span><a name="line.63"></a>
|
||||
<span class="sourceLineNo">064</span>@SuppressWarnings("WeakerAccess")<a name="line.64"></a>
|
||||
<span class="sourceLineNo">065</span>public class BukkitCommandManager extends CommandManager<<a name="line.65"></a>
|
||||
<span class="sourceLineNo">066</span> CommandSender,<a name="line.66"></a>
|
||||
<span class="sourceLineNo">067</span> BukkitCommandIssuer,<a name="line.67"></a>
|
||||
<span class="sourceLineNo">068</span> ChatColor,<a name="line.68"></a>
|
||||
<span class="sourceLineNo">069</span> BukkitMessageFormatter,<a name="line.69"></a>
|
||||
<span class="sourceLineNo">070</span> BukkitCommandExecutionContext,<a name="line.70"></a>
|
||||
<span class="sourceLineNo">071</span> BukkitConditionContext<a name="line.71"></a>
|
||||
<span class="sourceLineNo">072</span> > {<a name="line.72"></a>
|
||||
<span class="sourceLineNo">073</span><a name="line.73"></a>
|
||||
<span class="sourceLineNo">074</span> @SuppressWarnings("WeakerAccess")<a name="line.74"></a>
|
||||
<span class="sourceLineNo">075</span> protected final Plugin plugin;<a name="line.75"></a>
|
||||
<span class="sourceLineNo">076</span> private final CommandMap commandMap;<a name="line.76"></a>
|
||||
<span class="sourceLineNo">077</span> private final TimingManager timingManager;<a name="line.77"></a>
|
||||
<span class="sourceLineNo">078</span> private final BukkitTask localeTask;<a name="line.78"></a>
|
||||
<span class="sourceLineNo">079</span> private final Logger logger;<a name="line.79"></a>
|
||||
<span class="sourceLineNo">080</span> public final Integer mcMinorVersion;<a name="line.80"></a>
|
||||
<span class="sourceLineNo">081</span> public final Integer mcPatchVersion;<a name="line.81"></a>
|
||||
<span class="sourceLineNo">082</span> protected Map<String, Command> knownCommands = new HashMap<>();<a name="line.82"></a>
|
||||
<span class="sourceLineNo">083</span> protected Map<String, BukkitRootCommand> registeredCommands = new HashMap<>();<a name="line.83"></a>
|
||||
<span class="sourceLineNo">084</span> protected BukkitCommandContexts contexts;<a name="line.84"></a>
|
||||
<span class="sourceLineNo">085</span> protected BukkitCommandCompletions completions;<a name="line.85"></a>
|
||||
<span class="sourceLineNo">086</span> MCTiming commandTiming;<a name="line.86"></a>
|
||||
<span class="sourceLineNo">087</span> protected BukkitLocales locales;<a name="line.87"></a>
|
||||
<span class="sourceLineNo">088</span> private boolean cantReadLocale = false;<a name="line.88"></a>
|
||||
<span class="sourceLineNo">089</span> protected boolean autoDetectFromClient = true;<a name="line.89"></a>
|
||||
<span class="sourceLineNo">090</span><a name="line.90"></a>
|
||||
<span class="sourceLineNo">091</span> @SuppressWarnings("JavaReflectionMemberAccess")<a name="line.91"></a>
|
||||
<span class="sourceLineNo">092</span> public BukkitCommandManager(Plugin plugin) {<a name="line.92"></a>
|
||||
<span class="sourceLineNo">093</span> this.plugin = plugin;<a name="line.93"></a>
|
||||
<span class="sourceLineNo">094</span> this.logger = Logger.getLogger(this.plugin.getName());<a name="line.94"></a>
|
||||
<span class="sourceLineNo">095</span> this.timingManager = TimingManager.of(plugin);<a name="line.95"></a>
|
||||
<span class="sourceLineNo">096</span> this.commandTiming = this.timingManager.of("Commands");<a name="line.96"></a>
|
||||
<span class="sourceLineNo">097</span> this.commandMap = hookCommandMap();<a name="line.97"></a>
|
||||
<span class="sourceLineNo">098</span> this.formatters.put(MessageType.ERROR, defaultFormatter = new BukkitMessageFormatter(ChatColor.RED, ChatColor.YELLOW, ChatColor.RED));<a name="line.98"></a>
|
||||
<span class="sourceLineNo">099</span> this.formatters.put(MessageType.SYNTAX, new BukkitMessageFormatter(ChatColor.YELLOW, ChatColor.GREEN, ChatColor.WHITE));<a name="line.99"></a>
|
||||
<span class="sourceLineNo">100</span> this.formatters.put(MessageType.INFO, new BukkitMessageFormatter(ChatColor.BLUE, ChatColor.DARK_GREEN, ChatColor.GREEN));<a name="line.100"></a>
|
||||
<span class="sourceLineNo">101</span> this.formatters.put(MessageType.HELP, new BukkitMessageFormatter(ChatColor.AQUA, ChatColor.GREEN, ChatColor.YELLOW));<a name="line.101"></a>
|
||||
<span class="sourceLineNo">102</span> Pattern versionPattern = Pattern.compile("\\(MC: (\\d)\\.(\\d+)\\.?(\\d+?)?\\)");<a name="line.102"></a>
|
||||
<span class="sourceLineNo">103</span> Matcher matcher = versionPattern.matcher(Bukkit.getVersion());<a name="line.103"></a>
|
||||
<span class="sourceLineNo">104</span> if (matcher.find()) {<a name="line.104"></a>
|
||||
<span class="sourceLineNo">105</span> this.mcMinorVersion = ACFUtil.parseInt(matcher.toMatchResult().group(2), 0);<a name="line.105"></a>
|
||||
<span class="sourceLineNo">106</span> this.mcPatchVersion = ACFUtil.parseInt(matcher.toMatchResult().group(3), 0);<a name="line.106"></a>
|
||||
<span class="sourceLineNo">107</span> } else {<a name="line.107"></a>
|
||||
<span class="sourceLineNo">108</span> this.mcMinorVersion = -1;<a name="line.108"></a>
|
||||
<span class="sourceLineNo">109</span> this.mcPatchVersion = -1;<a name="line.109"></a>
|
||||
<span class="sourceLineNo">110</span> }<a name="line.110"></a>
|
||||
<span class="sourceLineNo">111</span> Bukkit.getHelpMap().registerHelpTopicFactory(BukkitRootCommand.class, command -> {<a name="line.111"></a>
|
||||
<span class="sourceLineNo">112</span> if (hasUnstableAPI("help")) {<a name="line.112"></a>
|
||||
<span class="sourceLineNo">113</span> return new ACFBukkitHelpTopic(this, (BukkitRootCommand) command);<a name="line.113"></a>
|
||||
<span class="sourceLineNo">114</span> } else {<a name="line.114"></a>
|
||||
<span class="sourceLineNo">115</span> return new GenericCommandHelpTopic(command);<a name="line.115"></a>
|
||||
<span class="sourceLineNo">116</span> }<a name="line.116"></a>
|
||||
<span class="sourceLineNo">117</span> });<a name="line.117"></a>
|
||||
<span class="sourceLineNo">118</span><a name="line.118"></a>
|
||||
<span class="sourceLineNo">119</span> Bukkit.getPluginManager().registerEvents(new ACFBukkitListener(this, plugin), plugin);<a name="line.119"></a>
|
||||
<span class="sourceLineNo">120</span><a name="line.120"></a>
|
||||
<span class="sourceLineNo">121</span> getLocales(); // auto load locales<a name="line.121"></a>
|
||||
<span class="sourceLineNo">122</span> this.localeTask = Bukkit.getScheduler().runTaskTimer(plugin, () -> {<a name="line.122"></a>
|
||||
<span class="sourceLineNo">123</span> if (this.cantReadLocale || !this.autoDetectFromClient) {<a name="line.123"></a>
|
||||
<span class="sourceLineNo">124</span> return;<a name="line.124"></a>
|
||||
<span class="sourceLineNo">125</span> }<a name="line.125"></a>
|
||||
<span class="sourceLineNo">126</span> Bukkit.getOnlinePlayers().forEach(this::readPlayerLocale);<a name="line.126"></a>
|
||||
<span class="sourceLineNo">127</span> }, 5, 5);<a name="line.127"></a>
|
||||
<span class="sourceLineNo">128</span><a name="line.128"></a>
|
||||
<span class="sourceLineNo">129</span> registerDependency(plugin.getClass(), plugin);<a name="line.129"></a>
|
||||
<span class="sourceLineNo">130</span> registerDependency(Logger.class, plugin.getLogger());<a name="line.130"></a>
|
||||
<span class="sourceLineNo">131</span> registerDependency(FileConfiguration.class, plugin.getConfig());<a name="line.131"></a>
|
||||
<span class="sourceLineNo">132</span> registerDependency(FileConfiguration.class, "config", plugin.getConfig());<a name="line.132"></a>
|
||||
<span class="sourceLineNo">133</span> registerDependency(Plugin.class, plugin);<a name="line.133"></a>
|
||||
<span class="sourceLineNo">134</span> registerDependency(JavaPlugin.class, plugin);<a name="line.134"></a>
|
||||
<span class="sourceLineNo">135</span> registerDependency(PluginManager.class, Bukkit.getPluginManager());<a name="line.135"></a>
|
||||
<span class="sourceLineNo">136</span> registerDependency(Server.class, Bukkit.getServer());<a name="line.136"></a>
|
||||
<span class="sourceLineNo">137</span> registerDependency(BukkitScheduler.class, Bukkit.getScheduler());<a name="line.137"></a>
|
||||
<span class="sourceLineNo">138</span> registerDependency(ScoreboardManager.class, Bukkit.getScoreboardManager());<a name="line.138"></a>
|
||||
<span class="sourceLineNo">139</span> registerDependency(ItemFactory.class, Bukkit.getItemFactory());<a name="line.139"></a>
|
||||
<span class="sourceLineNo">140</span> }<a name="line.140"></a>
|
||||
<span class="sourceLineNo">141</span><a name="line.141"></a>
|
||||
<span class="sourceLineNo">142</span> @NotNull<a name="line.142"></a>
|
||||
<span class="sourceLineNo">143</span> private CommandMap hookCommandMap() {<a name="line.143"></a>
|
||||
<span class="sourceLineNo">144</span> CommandMap commandMap = null;<a name="line.144"></a>
|
||||
<span class="sourceLineNo">145</span> try {<a name="line.145"></a>
|
||||
<span class="sourceLineNo">146</span> Server server = Bukkit.getServer();<a name="line.146"></a>
|
||||
<span class="sourceLineNo">147</span> Method getCommandMap = server.getClass().getDeclaredMethod("getCommandMap");<a name="line.147"></a>
|
||||
<span class="sourceLineNo">148</span> getCommandMap.setAccessible(true);<a name="line.148"></a>
|
||||
<span class="sourceLineNo">149</span> commandMap = (CommandMap) getCommandMap.invoke(server);<a name="line.149"></a>
|
||||
<span class="sourceLineNo">150</span> if (!SimpleCommandMap.class.isAssignableFrom(commandMap.getClass())) {<a name="line.150"></a>
|
||||
<span class="sourceLineNo">151</span> this.log(LogLevel.ERROR, "ERROR: CommandMap has been hijacked! Offending command map is located at: " + commandMap.getClass().getName());<a name="line.151"></a>
|
||||
<span class="sourceLineNo">152</span> this.log(LogLevel.ERROR, "We are going to try to hijack it back and resolve this, but you are now in dangerous territory.");<a name="line.152"></a>
|
||||
<span class="sourceLineNo">153</span> this.log(LogLevel.ERROR, "We can not guarantee things are going to work.");<a name="line.153"></a>
|
||||
<span class="sourceLineNo">154</span> Field cmField = server.getClass().getDeclaredField("commandMap");<a name="line.154"></a>
|
||||
<span class="sourceLineNo">155</span> commandMap = new ProxyCommandMap(this, commandMap);<a name="line.155"></a>
|
||||
<span class="sourceLineNo">156</span> cmField.set(server, commandMap);<a name="line.156"></a>
|
||||
<span class="sourceLineNo">157</span> this.log(LogLevel.INFO, "Injected Proxy Command Map... good luck...");<a name="line.157"></a>
|
||||
<span class="sourceLineNo">158</span> }<a name="line.158"></a>
|
||||
<span class="sourceLineNo">159</span> Field knownCommands = SimpleCommandMap.class.getDeclaredField("knownCommands");<a name="line.159"></a>
|
||||
<span class="sourceLineNo">160</span> knownCommands.setAccessible(true);<a name="line.160"></a>
|
||||
<span class="sourceLineNo">161</span> //noinspection unchecked<a name="line.161"></a>
|
||||
<span class="sourceLineNo">162</span> this.knownCommands = (Map<String, Command>) knownCommands.get(commandMap);<a name="line.162"></a>
|
||||
<span class="sourceLineNo">163</span> } catch (Exception e) {<a name="line.163"></a>
|
||||
<span class="sourceLineNo">164</span> this.log(LogLevel.ERROR, "Failed to get Command Map. ACF will not function.");<a name="line.164"></a>
|
||||
<span class="sourceLineNo">165</span> ACFUtil.sneaky(e);<a name="line.165"></a>
|
||||
<span class="sourceLineNo">166</span> }<a name="line.166"></a>
|
||||
<span class="sourceLineNo">167</span> return commandMap;<a name="line.167"></a>
|
||||
<span class="sourceLineNo">168</span> }<a name="line.168"></a>
|
||||
<span class="sourceLineNo">169</span><a name="line.169"></a>
|
||||
<span class="sourceLineNo">170</span> public Plugin getPlugin() {<a name="line.170"></a>
|
||||
<span class="sourceLineNo">171</span> return this.plugin;<a name="line.171"></a>
|
||||
<span class="sourceLineNo">172</span> }<a name="line.172"></a>
|
||||
<span class="sourceLineNo">173</span><a name="line.173"></a>
|
||||
<span class="sourceLineNo">174</span> @Override<a name="line.174"></a>
|
||||
<span class="sourceLineNo">175</span> public boolean isCommandIssuer(Class<?> type) {<a name="line.175"></a>
|
||||
<span class="sourceLineNo">176</span> return CommandSender.class.isAssignableFrom(type);<a name="line.176"></a>
|
||||
<span class="sourceLineNo">177</span> }<a name="line.177"></a>
|
||||
<span class="sourceLineNo">178</span><a name="line.178"></a>
|
||||
<span class="sourceLineNo">179</span> @Override<a name="line.179"></a>
|
||||
<span class="sourceLineNo">180</span> public synchronized CommandContexts<BukkitCommandExecutionContext> getCommandContexts() {<a name="line.180"></a>
|
||||
<span class="sourceLineNo">181</span> if (this.contexts == null) {<a name="line.181"></a>
|
||||
<span class="sourceLineNo">182</span> this.contexts = new BukkitCommandContexts(this);<a name="line.182"></a>
|
||||
<span class="sourceLineNo">183</span> }<a name="line.183"></a>
|
||||
<span class="sourceLineNo">184</span> return contexts;<a name="line.184"></a>
|
||||
<span class="sourceLineNo">185</span> }<a name="line.185"></a>
|
||||
<span class="sourceLineNo">186</span><a name="line.186"></a>
|
||||
<span class="sourceLineNo">187</span> @Override<a name="line.187"></a>
|
||||
<span class="sourceLineNo">188</span> public synchronized CommandCompletions<BukkitCommandCompletionContext> getCommandCompletions() {<a name="line.188"></a>
|
||||
<span class="sourceLineNo">189</span> if (this.completions == null) {<a name="line.189"></a>
|
||||
<span class="sourceLineNo">190</span> this.completions = new BukkitCommandCompletions(this);<a name="line.190"></a>
|
||||
<span class="sourceLineNo">191</span> }<a name="line.191"></a>
|
||||
<span class="sourceLineNo">192</span> return completions;<a name="line.192"></a>
|
||||
<span class="sourceLineNo">193</span> }<a name="line.193"></a>
|
||||
<span class="sourceLineNo">194</span><a name="line.194"></a>
|
||||
<span class="sourceLineNo">055</span>import java.util.HashSet;<a name="line.55"></a>
|
||||
<span class="sourceLineNo">056</span>import java.util.List;<a name="line.56"></a>
|
||||
<span class="sourceLineNo">057</span>import java.util.Locale;<a name="line.57"></a>
|
||||
<span class="sourceLineNo">058</span>import java.util.Map;<a name="line.58"></a>
|
||||
<span class="sourceLineNo">059</span>import java.util.Objects;<a name="line.59"></a>
|
||||
<span class="sourceLineNo">060</span>import java.util.logging.Level;<a name="line.60"></a>
|
||||
<span class="sourceLineNo">061</span>import java.util.logging.Logger;<a name="line.61"></a>
|
||||
<span class="sourceLineNo">062</span>import java.util.regex.Matcher;<a name="line.62"></a>
|
||||
<span class="sourceLineNo">063</span>import java.util.regex.Pattern;<a name="line.63"></a>
|
||||
<span class="sourceLineNo">064</span><a name="line.64"></a>
|
||||
<span class="sourceLineNo">065</span>@SuppressWarnings("WeakerAccess")<a name="line.65"></a>
|
||||
<span class="sourceLineNo">066</span>public class BukkitCommandManager extends CommandManager<<a name="line.66"></a>
|
||||
<span class="sourceLineNo">067</span> CommandSender,<a name="line.67"></a>
|
||||
<span class="sourceLineNo">068</span> BukkitCommandIssuer,<a name="line.68"></a>
|
||||
<span class="sourceLineNo">069</span> ChatColor,<a name="line.69"></a>
|
||||
<span class="sourceLineNo">070</span> BukkitMessageFormatter,<a name="line.70"></a>
|
||||
<span class="sourceLineNo">071</span> BukkitCommandExecutionContext,<a name="line.71"></a>
|
||||
<span class="sourceLineNo">072</span> BukkitConditionContext<a name="line.72"></a>
|
||||
<span class="sourceLineNo">073</span> > {<a name="line.73"></a>
|
||||
<span class="sourceLineNo">074</span><a name="line.74"></a>
|
||||
<span class="sourceLineNo">075</span> @SuppressWarnings("WeakerAccess")<a name="line.75"></a>
|
||||
<span class="sourceLineNo">076</span> protected final Plugin plugin;<a name="line.76"></a>
|
||||
<span class="sourceLineNo">077</span> private final CommandMap commandMap;<a name="line.77"></a>
|
||||
<span class="sourceLineNo">078</span> private final TimingManager timingManager;<a name="line.78"></a>
|
||||
<span class="sourceLineNo">079</span> private final BukkitTask localeTask;<a name="line.79"></a>
|
||||
<span class="sourceLineNo">080</span> private final Logger logger;<a name="line.80"></a>
|
||||
<span class="sourceLineNo">081</span> public final Integer mcMinorVersion;<a name="line.81"></a>
|
||||
<span class="sourceLineNo">082</span> public final Integer mcPatchVersion;<a name="line.82"></a>
|
||||
<span class="sourceLineNo">083</span> protected Map<String, Command> knownCommands = new HashMap<>();<a name="line.83"></a>
|
||||
<span class="sourceLineNo">084</span> protected Map<String, BukkitRootCommand> registeredCommands = new HashMap<>();<a name="line.84"></a>
|
||||
<span class="sourceLineNo">085</span> protected BukkitCommandContexts contexts;<a name="line.85"></a>
|
||||
<span class="sourceLineNo">086</span> protected BukkitCommandCompletions completions;<a name="line.86"></a>
|
||||
<span class="sourceLineNo">087</span> MCTiming commandTiming;<a name="line.87"></a>
|
||||
<span class="sourceLineNo">088</span> protected BukkitLocales locales;<a name="line.88"></a>
|
||||
<span class="sourceLineNo">089</span> private boolean cantReadLocale = false;<a name="line.89"></a>
|
||||
<span class="sourceLineNo">090</span> protected boolean autoDetectFromClient = true;<a name="line.90"></a>
|
||||
<span class="sourceLineNo">091</span><a name="line.91"></a>
|
||||
<span class="sourceLineNo">092</span> @SuppressWarnings("JavaReflectionMemberAccess")<a name="line.92"></a>
|
||||
<span class="sourceLineNo">093</span> public BukkitCommandManager(Plugin plugin) {<a name="line.93"></a>
|
||||
<span class="sourceLineNo">094</span> this.plugin = plugin;<a name="line.94"></a>
|
||||
<span class="sourceLineNo">095</span> this.logger = Logger.getLogger(this.plugin.getName());<a name="line.95"></a>
|
||||
<span class="sourceLineNo">096</span> this.timingManager = TimingManager.of(plugin);<a name="line.96"></a>
|
||||
<span class="sourceLineNo">097</span> this.commandTiming = this.timingManager.of("Commands");<a name="line.97"></a>
|
||||
<span class="sourceLineNo">098</span> this.commandMap = hookCommandMap();<a name="line.98"></a>
|
||||
<span class="sourceLineNo">099</span> this.formatters.put(MessageType.ERROR, defaultFormatter = new BukkitMessageFormatter(ChatColor.RED, ChatColor.YELLOW, ChatColor.RED));<a name="line.99"></a>
|
||||
<span class="sourceLineNo">100</span> this.formatters.put(MessageType.SYNTAX, new BukkitMessageFormatter(ChatColor.YELLOW, ChatColor.GREEN, ChatColor.WHITE));<a name="line.100"></a>
|
||||
<span class="sourceLineNo">101</span> this.formatters.put(MessageType.INFO, new BukkitMessageFormatter(ChatColor.BLUE, ChatColor.DARK_GREEN, ChatColor.GREEN));<a name="line.101"></a>
|
||||
<span class="sourceLineNo">102</span> this.formatters.put(MessageType.HELP, new BukkitMessageFormatter(ChatColor.AQUA, ChatColor.GREEN, ChatColor.YELLOW));<a name="line.102"></a>
|
||||
<span class="sourceLineNo">103</span> Pattern versionPattern = Pattern.compile("\\(MC: (\\d)\\.(\\d+)\\.?(\\d+?)?\\)");<a name="line.103"></a>
|
||||
<span class="sourceLineNo">104</span> Matcher matcher = versionPattern.matcher(Bukkit.getVersion());<a name="line.104"></a>
|
||||
<span class="sourceLineNo">105</span> if (matcher.find()) {<a name="line.105"></a>
|
||||
<span class="sourceLineNo">106</span> this.mcMinorVersion = ACFUtil.parseInt(matcher.toMatchResult().group(2), 0);<a name="line.106"></a>
|
||||
<span class="sourceLineNo">107</span> this.mcPatchVersion = ACFUtil.parseInt(matcher.toMatchResult().group(3), 0);<a name="line.107"></a>
|
||||
<span class="sourceLineNo">108</span> } else {<a name="line.108"></a>
|
||||
<span class="sourceLineNo">109</span> this.mcMinorVersion = -1;<a name="line.109"></a>
|
||||
<span class="sourceLineNo">110</span> this.mcPatchVersion = -1;<a name="line.110"></a>
|
||||
<span class="sourceLineNo">111</span> }<a name="line.111"></a>
|
||||
<span class="sourceLineNo">112</span> Bukkit.getHelpMap().registerHelpTopicFactory(BukkitRootCommand.class, command -> {<a name="line.112"></a>
|
||||
<span class="sourceLineNo">113</span> if (hasUnstableAPI("help")) {<a name="line.113"></a>
|
||||
<span class="sourceLineNo">114</span> return new ACFBukkitHelpTopic(this, (BukkitRootCommand) command);<a name="line.114"></a>
|
||||
<span class="sourceLineNo">115</span> } else {<a name="line.115"></a>
|
||||
<span class="sourceLineNo">116</span> return new GenericCommandHelpTopic(command);<a name="line.116"></a>
|
||||
<span class="sourceLineNo">117</span> }<a name="line.117"></a>
|
||||
<span class="sourceLineNo">118</span> });<a name="line.118"></a>
|
||||
<span class="sourceLineNo">119</span><a name="line.119"></a>
|
||||
<span class="sourceLineNo">120</span> Bukkit.getPluginManager().registerEvents(new ACFBukkitListener(this, plugin), plugin);<a name="line.120"></a>
|
||||
<span class="sourceLineNo">121</span><a name="line.121"></a>
|
||||
<span class="sourceLineNo">122</span> getLocales(); // auto load locales<a name="line.122"></a>
|
||||
<span class="sourceLineNo">123</span> this.localeTask = Bukkit.getScheduler().runTaskTimer(plugin, () -> {<a name="line.123"></a>
|
||||
<span class="sourceLineNo">124</span> if (this.cantReadLocale || !this.autoDetectFromClient) {<a name="line.124"></a>
|
||||
<span class="sourceLineNo">125</span> return;<a name="line.125"></a>
|
||||
<span class="sourceLineNo">126</span> }<a name="line.126"></a>
|
||||
<span class="sourceLineNo">127</span> Bukkit.getOnlinePlayers().forEach(this::readPlayerLocale);<a name="line.127"></a>
|
||||
<span class="sourceLineNo">128</span> }, 5, 5);<a name="line.128"></a>
|
||||
<span class="sourceLineNo">129</span><a name="line.129"></a>
|
||||
<span class="sourceLineNo">130</span> registerDependency(plugin.getClass(), plugin);<a name="line.130"></a>
|
||||
<span class="sourceLineNo">131</span> registerDependency(Logger.class, plugin.getLogger());<a name="line.131"></a>
|
||||
<span class="sourceLineNo">132</span> registerDependency(FileConfiguration.class, plugin.getConfig());<a name="line.132"></a>
|
||||
<span class="sourceLineNo">133</span> registerDependency(FileConfiguration.class, "config", plugin.getConfig());<a name="line.133"></a>
|
||||
<span class="sourceLineNo">134</span> registerDependency(Plugin.class, plugin);<a name="line.134"></a>
|
||||
<span class="sourceLineNo">135</span> registerDependency(JavaPlugin.class, plugin);<a name="line.135"></a>
|
||||
<span class="sourceLineNo">136</span> registerDependency(PluginManager.class, Bukkit.getPluginManager());<a name="line.136"></a>
|
||||
<span class="sourceLineNo">137</span> registerDependency(Server.class, Bukkit.getServer());<a name="line.137"></a>
|
||||
<span class="sourceLineNo">138</span> registerDependency(BukkitScheduler.class, Bukkit.getScheduler());<a name="line.138"></a>
|
||||
<span class="sourceLineNo">139</span> registerDependency(ScoreboardManager.class, Bukkit.getScoreboardManager());<a name="line.139"></a>
|
||||
<span class="sourceLineNo">140</span> registerDependency(ItemFactory.class, Bukkit.getItemFactory());<a name="line.140"></a>
|
||||
<span class="sourceLineNo">141</span> }<a name="line.141"></a>
|
||||
<span class="sourceLineNo">142</span><a name="line.142"></a>
|
||||
<span class="sourceLineNo">143</span> @NotNull<a name="line.143"></a>
|
||||
<span class="sourceLineNo">144</span> private CommandMap hookCommandMap() {<a name="line.144"></a>
|
||||
<span class="sourceLineNo">145</span> CommandMap commandMap = null;<a name="line.145"></a>
|
||||
<span class="sourceLineNo">146</span> try {<a name="line.146"></a>
|
||||
<span class="sourceLineNo">147</span> Server server = Bukkit.getServer();<a name="line.147"></a>
|
||||
<span class="sourceLineNo">148</span> Method getCommandMap = server.getClass().getDeclaredMethod("getCommandMap");<a name="line.148"></a>
|
||||
<span class="sourceLineNo">149</span> getCommandMap.setAccessible(true);<a name="line.149"></a>
|
||||
<span class="sourceLineNo">150</span> commandMap = (CommandMap) getCommandMap.invoke(server);<a name="line.150"></a>
|
||||
<span class="sourceLineNo">151</span> if (!SimpleCommandMap.class.isAssignableFrom(commandMap.getClass())) {<a name="line.151"></a>
|
||||
<span class="sourceLineNo">152</span> this.log(LogLevel.ERROR, "ERROR: CommandMap has been hijacked! Offending command map is located at: " + commandMap.getClass().getName());<a name="line.152"></a>
|
||||
<span class="sourceLineNo">153</span> this.log(LogLevel.ERROR, "We are going to try to hijack it back and resolve this, but you are now in dangerous territory.");<a name="line.153"></a>
|
||||
<span class="sourceLineNo">154</span> this.log(LogLevel.ERROR, "We can not guarantee things are going to work.");<a name="line.154"></a>
|
||||
<span class="sourceLineNo">155</span> Field cmField = server.getClass().getDeclaredField("commandMap");<a name="line.155"></a>
|
||||
<span class="sourceLineNo">156</span> commandMap = new ProxyCommandMap(this, commandMap);<a name="line.156"></a>
|
||||
<span class="sourceLineNo">157</span> cmField.set(server, commandMap);<a name="line.157"></a>
|
||||
<span class="sourceLineNo">158</span> this.log(LogLevel.INFO, "Injected Proxy Command Map... good luck...");<a name="line.158"></a>
|
||||
<span class="sourceLineNo">159</span> }<a name="line.159"></a>
|
||||
<span class="sourceLineNo">160</span> Field knownCommands = SimpleCommandMap.class.getDeclaredField("knownCommands");<a name="line.160"></a>
|
||||
<span class="sourceLineNo">161</span> knownCommands.setAccessible(true);<a name="line.161"></a>
|
||||
<span class="sourceLineNo">162</span> //noinspection unchecked<a name="line.162"></a>
|
||||
<span class="sourceLineNo">163</span> this.knownCommands = (Map<String, Command>) knownCommands.get(commandMap);<a name="line.163"></a>
|
||||
<span class="sourceLineNo">164</span> } catch (Exception e) {<a name="line.164"></a>
|
||||
<span class="sourceLineNo">165</span> this.log(LogLevel.ERROR, "Failed to get Command Map. ACF will not function.");<a name="line.165"></a>
|
||||
<span class="sourceLineNo">166</span> ACFUtil.sneaky(e);<a name="line.166"></a>
|
||||
<span class="sourceLineNo">167</span> }<a name="line.167"></a>
|
||||
<span class="sourceLineNo">168</span> return commandMap;<a name="line.168"></a>
|
||||
<span class="sourceLineNo">169</span> }<a name="line.169"></a>
|
||||
<span class="sourceLineNo">170</span><a name="line.170"></a>
|
||||
<span class="sourceLineNo">171</span> public Plugin getPlugin() {<a name="line.171"></a>
|
||||
<span class="sourceLineNo">172</span> return this.plugin;<a name="line.172"></a>
|
||||
<span class="sourceLineNo">173</span> }<a name="line.173"></a>
|
||||
<span class="sourceLineNo">174</span><a name="line.174"></a>
|
||||
<span class="sourceLineNo">175</span> @Override<a name="line.175"></a>
|
||||
<span class="sourceLineNo">176</span> public boolean isCommandIssuer(Class<?> type) {<a name="line.176"></a>
|
||||
<span class="sourceLineNo">177</span> return CommandSender.class.isAssignableFrom(type);<a name="line.177"></a>
|
||||
<span class="sourceLineNo">178</span> }<a name="line.178"></a>
|
||||
<span class="sourceLineNo">179</span><a name="line.179"></a>
|
||||
<span class="sourceLineNo">180</span> @Override<a name="line.180"></a>
|
||||
<span class="sourceLineNo">181</span> public synchronized CommandContexts<BukkitCommandExecutionContext> getCommandContexts() {<a name="line.181"></a>
|
||||
<span class="sourceLineNo">182</span> if (this.contexts == null) {<a name="line.182"></a>
|
||||
<span class="sourceLineNo">183</span> this.contexts = new BukkitCommandContexts(this);<a name="line.183"></a>
|
||||
<span class="sourceLineNo">184</span> }<a name="line.184"></a>
|
||||
<span class="sourceLineNo">185</span> return contexts;<a name="line.185"></a>
|
||||
<span class="sourceLineNo">186</span> }<a name="line.186"></a>
|
||||
<span class="sourceLineNo">187</span><a name="line.187"></a>
|
||||
<span class="sourceLineNo">188</span> @Override<a name="line.188"></a>
|
||||
<span class="sourceLineNo">189</span> public synchronized CommandCompletions<BukkitCommandCompletionContext> getCommandCompletions() {<a name="line.189"></a>
|
||||
<span class="sourceLineNo">190</span> if (this.completions == null) {<a name="line.190"></a>
|
||||
<span class="sourceLineNo">191</span> this.completions = new BukkitCommandCompletions(this);<a name="line.191"></a>
|
||||
<span class="sourceLineNo">192</span> }<a name="line.192"></a>
|
||||
<span class="sourceLineNo">193</span> return completions;<a name="line.193"></a>
|
||||
<span class="sourceLineNo">194</span> }<a name="line.194"></a>
|
||||
<span class="sourceLineNo">195</span><a name="line.195"></a>
|
||||
<span class="sourceLineNo">196</span> @Override<a name="line.196"></a>
|
||||
<span class="sourceLineNo">197</span> public BukkitLocales getLocales() {<a name="line.197"></a>
|
||||
<span class="sourceLineNo">198</span> if (this.locales == null) {<a name="line.198"></a>
|
||||
<span class="sourceLineNo">199</span> this.locales = new BukkitLocales(this);<a name="line.199"></a>
|
||||
<span class="sourceLineNo">200</span> this.locales.loadLanguages();<a name="line.200"></a>
|
||||
<span class="sourceLineNo">201</span> }<a name="line.201"></a>
|
||||
<span class="sourceLineNo">202</span> return locales;<a name="line.202"></a>
|
||||
<span class="sourceLineNo">203</span> }<a name="line.203"></a>
|
||||
<span class="sourceLineNo">204</span><a name="line.204"></a>
|
||||
<span class="sourceLineNo">196</span><a name="line.196"></a>
|
||||
<span class="sourceLineNo">197</span> @Override<a name="line.197"></a>
|
||||
<span class="sourceLineNo">198</span> public BukkitLocales getLocales() {<a name="line.198"></a>
|
||||
<span class="sourceLineNo">199</span> if (this.locales == null) {<a name="line.199"></a>
|
||||
<span class="sourceLineNo">200</span> this.locales = new BukkitLocales(this);<a name="line.200"></a>
|
||||
<span class="sourceLineNo">201</span> this.locales.loadLanguages();<a name="line.201"></a>
|
||||
<span class="sourceLineNo">202</span> }<a name="line.202"></a>
|
||||
<span class="sourceLineNo">203</span> return locales;<a name="line.203"></a>
|
||||
<span class="sourceLineNo">204</span> }<a name="line.204"></a>
|
||||
<span class="sourceLineNo">205</span><a name="line.205"></a>
|
||||
<span class="sourceLineNo">206</span> @Override<a name="line.206"></a>
|
||||
<span class="sourceLineNo">207</span> public boolean hasRegisteredCommands() {<a name="line.207"></a>
|
||||
<span class="sourceLineNo">208</span> return !registeredCommands.isEmpty();<a name="line.208"></a>
|
||||
<span class="sourceLineNo">209</span> }<a name="line.209"></a>
|
||||
<span class="sourceLineNo">210</span><a name="line.210"></a>
|
||||
<span class="sourceLineNo">211</span> public void registerCommand(BaseCommand command, boolean force) {<a name="line.211"></a>
|
||||
<span class="sourceLineNo">212</span> final String plugin = this.plugin.getName().toLowerCase();<a name="line.212"></a>
|
||||
<span class="sourceLineNo">213</span> command.onRegister(this);<a name="line.213"></a>
|
||||
<span class="sourceLineNo">214</span> for (Map.Entry<String, RootCommand> entry : command.registeredCommands.entrySet()) {<a name="line.214"></a>
|
||||
<span class="sourceLineNo">215</span> String commandName = entry.getKey().toLowerCase();<a name="line.215"></a>
|
||||
<span class="sourceLineNo">216</span> BukkitRootCommand bukkitCommand = (BukkitRootCommand) entry.getValue();<a name="line.216"></a>
|
||||
<span class="sourceLineNo">217</span> if (!bukkitCommand.isRegistered) {<a name="line.217"></a>
|
||||
<span class="sourceLineNo">218</span> Command oldCommand = commandMap.getCommand(commandName);<a name="line.218"></a>
|
||||
<span class="sourceLineNo">219</span> if (oldCommand instanceof PluginIdentifiableCommand && ((PluginIdentifiableCommand) oldCommand).getPlugin() == this.plugin) {<a name="line.219"></a>
|
||||
<span class="sourceLineNo">220</span> knownCommands.remove(commandName);<a name="line.220"></a>
|
||||
<span class="sourceLineNo">221</span> oldCommand.unregister(commandMap);<a name="line.221"></a>
|
||||
<span class="sourceLineNo">222</span> } else if (oldCommand != null && force) {<a name="line.222"></a>
|
||||
<span class="sourceLineNo">223</span> knownCommands.remove(commandName);<a name="line.223"></a>
|
||||
<span class="sourceLineNo">224</span> for (Map.Entry<String, Command> ce : knownCommands.entrySet()) {<a name="line.224"></a>
|
||||
<span class="sourceLineNo">225</span> String key = ce.getKey();<a name="line.225"></a>
|
||||
<span class="sourceLineNo">226</span> Command value = ce.getValue();<a name="line.226"></a>
|
||||
<span class="sourceLineNo">227</span> if (key.contains(":") && oldCommand.equals(value)) {<a name="line.227"></a>
|
||||
<span class="sourceLineNo">228</span> String[] split = ACFPatterns.COLON.split(key, 2);<a name="line.228"></a>
|
||||
<span class="sourceLineNo">229</span> if (split.length > 1) {<a name="line.229"></a>
|
||||
<span class="sourceLineNo">230</span> oldCommand.unregister(commandMap);<a name="line.230"></a>
|
||||
<span class="sourceLineNo">231</span> oldCommand.setLabel(split[0] + ":" + command.getName());<a name="line.231"></a>
|
||||
<span class="sourceLineNo">232</span> oldCommand.register(commandMap);<a name="line.232"></a>
|
||||
<span class="sourceLineNo">233</span> }<a name="line.233"></a>
|
||||
<span class="sourceLineNo">234</span> }<a name="line.234"></a>
|
||||
<span class="sourceLineNo">235</span> }<a name="line.235"></a>
|
||||
<span class="sourceLineNo">236</span> }<a name="line.236"></a>
|
||||
<span class="sourceLineNo">237</span> commandMap.register(commandName, plugin, bukkitCommand);<a name="line.237"></a>
|
||||
<span class="sourceLineNo">238</span> }<a name="line.238"></a>
|
||||
<span class="sourceLineNo">239</span> bukkitCommand.isRegistered = true;<a name="line.239"></a>
|
||||
<span class="sourceLineNo">240</span> registeredCommands.put(commandName, bukkitCommand);<a name="line.240"></a>
|
||||
<span class="sourceLineNo">241</span> }<a name="line.241"></a>
|
||||
<span class="sourceLineNo">242</span> }<a name="line.242"></a>
|
||||
<span class="sourceLineNo">243</span><a name="line.243"></a>
|
||||
<span class="sourceLineNo">244</span> @Override<a name="line.244"></a>
|
||||
<span class="sourceLineNo">245</span> public void registerCommand(BaseCommand command) {<a name="line.245"></a>
|
||||
<span class="sourceLineNo">246</span> registerCommand(command, false);<a name="line.246"></a>
|
||||
<span class="sourceLineNo">247</span> }<a name="line.247"></a>
|
||||
<span class="sourceLineNo">248</span><a name="line.248"></a>
|
||||
<span class="sourceLineNo">249</span> public void unregisterCommand(BaseCommand command) {<a name="line.249"></a>
|
||||
<span class="sourceLineNo">250</span> for (RootCommand rootcommand : command.registeredCommands.values()) {<a name="line.250"></a>
|
||||
<span class="sourceLineNo">251</span> BukkitRootCommand bukkitCommand = (BukkitRootCommand) rootcommand;<a name="line.251"></a>
|
||||
<span class="sourceLineNo">252</span> bukkitCommand.getSubCommands().values().removeAll(command.subCommands.values());<a name="line.252"></a>
|
||||
<span class="sourceLineNo">253</span> if (bukkitCommand.isRegistered && bukkitCommand.getSubCommands().isEmpty()) {<a name="line.253"></a>
|
||||
<span class="sourceLineNo">254</span> unregisterCommand(bukkitCommand);<a name="line.254"></a>
|
||||
<span class="sourceLineNo">255</span> bukkitCommand.isRegistered = false;<a name="line.255"></a>
|
||||
<span class="sourceLineNo">256</span> }<a name="line.256"></a>
|
||||
<span class="sourceLineNo">257</span> }<a name="line.257"></a>
|
||||
<span class="sourceLineNo">258</span> }<a name="line.258"></a>
|
||||
<span class="sourceLineNo">259</span><a name="line.259"></a>
|
||||
<span class="sourceLineNo">260</span> /**<a name="line.260"></a>
|
||||
<span class="sourceLineNo">261</span> * @param command<a name="line.261"></a>
|
||||
<span class="sourceLineNo">262</span> * @deprecated Use unregisterCommand(BaseCommand) - this will be visibility reduced later.<a name="line.262"></a>
|
||||
<span class="sourceLineNo">263</span> */<a name="line.263"></a>
|
||||
<span class="sourceLineNo">264</span> @Deprecated<a name="line.264"></a>
|
||||
<span class="sourceLineNo">265</span> public void unregisterCommand(BukkitRootCommand command) {<a name="line.265"></a>
|
||||
<span class="sourceLineNo">266</span> final String plugin = this.plugin.getName().toLowerCase();<a name="line.266"></a>
|
||||
<span class="sourceLineNo">267</span> command.unregister(commandMap);<a name="line.267"></a>
|
||||
<span class="sourceLineNo">268</span> String key = command.getName();<a name="line.268"></a>
|
||||
<span class="sourceLineNo">269</span> Command registered = knownCommands.get(key);<a name="line.269"></a>
|
||||
<span class="sourceLineNo">270</span> if (command.equals(registered)) {<a name="line.270"></a>
|
||||
<span class="sourceLineNo">271</span> knownCommands.remove(key);<a name="line.271"></a>
|
||||
<span class="sourceLineNo">272</span> }<a name="line.272"></a>
|
||||
<span class="sourceLineNo">273</span> knownCommands.remove(plugin + ":" + key);<a name="line.273"></a>
|
||||
<span class="sourceLineNo">274</span> }<a name="line.274"></a>
|
||||
<span class="sourceLineNo">275</span><a name="line.275"></a>
|
||||
<span class="sourceLineNo">276</span> public void unregisterCommands() {<a name="line.276"></a>
|
||||
<span class="sourceLineNo">277</span> for (Map.Entry<String, BukkitRootCommand> entry : registeredCommands.entrySet()) {<a name="line.277"></a>
|
||||
<span class="sourceLineNo">278</span> unregisterCommand(entry.getValue());<a name="line.278"></a>
|
||||
<span class="sourceLineNo">279</span> }<a name="line.279"></a>
|
||||
<span class="sourceLineNo">280</span> this.registeredCommands.clear();<a name="line.280"></a>
|
||||
<span class="sourceLineNo">281</span> }<a name="line.281"></a>
|
||||
<span class="sourceLineNo">282</span><a name="line.282"></a>
|
||||
<span class="sourceLineNo">206</span><a name="line.206"></a>
|
||||
<span class="sourceLineNo">207</span> @Override<a name="line.207"></a>
|
||||
<span class="sourceLineNo">208</span> public boolean hasRegisteredCommands() {<a name="line.208"></a>
|
||||
<span class="sourceLineNo">209</span> return !registeredCommands.isEmpty();<a name="line.209"></a>
|
||||
<span class="sourceLineNo">210</span> }<a name="line.210"></a>
|
||||
<span class="sourceLineNo">211</span><a name="line.211"></a>
|
||||
<span class="sourceLineNo">212</span> public void registerCommand(BaseCommand command, boolean force) {<a name="line.212"></a>
|
||||
<span class="sourceLineNo">213</span> final String plugin = this.plugin.getName().toLowerCase();<a name="line.213"></a>
|
||||
<span class="sourceLineNo">214</span> command.onRegister(this);<a name="line.214"></a>
|
||||
<span class="sourceLineNo">215</span> for (Map.Entry<String, RootCommand> entry : command.registeredCommands.entrySet()) {<a name="line.215"></a>
|
||||
<span class="sourceLineNo">216</span> String commandName = entry.getKey().toLowerCase();<a name="line.216"></a>
|
||||
<span class="sourceLineNo">217</span> BukkitRootCommand bukkitCommand = (BukkitRootCommand) entry.getValue();<a name="line.217"></a>
|
||||
<span class="sourceLineNo">218</span> if (!bukkitCommand.isRegistered) {<a name="line.218"></a>
|
||||
<span class="sourceLineNo">219</span> Command oldCommand = commandMap.getCommand(commandName);<a name="line.219"></a>
|
||||
<span class="sourceLineNo">220</span> if (oldCommand instanceof PluginIdentifiableCommand && ((PluginIdentifiableCommand) oldCommand).getPlugin() == this.plugin) {<a name="line.220"></a>
|
||||
<span class="sourceLineNo">221</span> knownCommands.remove(commandName);<a name="line.221"></a>
|
||||
<span class="sourceLineNo">222</span> oldCommand.unregister(commandMap);<a name="line.222"></a>
|
||||
<span class="sourceLineNo">223</span> } else if (oldCommand != null && force) {<a name="line.223"></a>
|
||||
<span class="sourceLineNo">224</span> knownCommands.remove(commandName);<a name="line.224"></a>
|
||||
<span class="sourceLineNo">225</span> for (Map.Entry<String, Command> ce : knownCommands.entrySet()) {<a name="line.225"></a>
|
||||
<span class="sourceLineNo">226</span> String key = ce.getKey();<a name="line.226"></a>
|
||||
<span class="sourceLineNo">227</span> Command value = ce.getValue();<a name="line.227"></a>
|
||||
<span class="sourceLineNo">228</span> if (key.contains(":") && oldCommand.equals(value)) {<a name="line.228"></a>
|
||||
<span class="sourceLineNo">229</span> String[] split = ACFPatterns.COLON.split(key, 2);<a name="line.229"></a>
|
||||
<span class="sourceLineNo">230</span> if (split.length > 1) {<a name="line.230"></a>
|
||||
<span class="sourceLineNo">231</span> oldCommand.unregister(commandMap);<a name="line.231"></a>
|
||||
<span class="sourceLineNo">232</span> oldCommand.setLabel(split[0] + ":" + command.getName());<a name="line.232"></a>
|
||||
<span class="sourceLineNo">233</span> oldCommand.register(commandMap);<a name="line.233"></a>
|
||||
<span class="sourceLineNo">234</span> }<a name="line.234"></a>
|
||||
<span class="sourceLineNo">235</span> }<a name="line.235"></a>
|
||||
<span class="sourceLineNo">236</span> }<a name="line.236"></a>
|
||||
<span class="sourceLineNo">237</span> }<a name="line.237"></a>
|
||||
<span class="sourceLineNo">238</span> commandMap.register(commandName, plugin, bukkitCommand);<a name="line.238"></a>
|
||||
<span class="sourceLineNo">239</span> }<a name="line.239"></a>
|
||||
<span class="sourceLineNo">240</span> bukkitCommand.isRegistered = true;<a name="line.240"></a>
|
||||
<span class="sourceLineNo">241</span> registeredCommands.put(commandName, bukkitCommand);<a name="line.241"></a>
|
||||
<span class="sourceLineNo">242</span> }<a name="line.242"></a>
|
||||
<span class="sourceLineNo">243</span> }<a name="line.243"></a>
|
||||
<span class="sourceLineNo">244</span><a name="line.244"></a>
|
||||
<span class="sourceLineNo">245</span> @Override<a name="line.245"></a>
|
||||
<span class="sourceLineNo">246</span> public void registerCommand(BaseCommand command) {<a name="line.246"></a>
|
||||
<span class="sourceLineNo">247</span> registerCommand(command, false);<a name="line.247"></a>
|
||||
<span class="sourceLineNo">248</span> }<a name="line.248"></a>
|
||||
<span class="sourceLineNo">249</span><a name="line.249"></a>
|
||||
<span class="sourceLineNo">250</span> public void unregisterCommand(BaseCommand command) {<a name="line.250"></a>
|
||||
<span class="sourceLineNo">251</span> for (RootCommand rootcommand : command.registeredCommands.values()) {<a name="line.251"></a>
|
||||
<span class="sourceLineNo">252</span> BukkitRootCommand bukkitCommand = (BukkitRootCommand) rootcommand;<a name="line.252"></a>
|
||||
<span class="sourceLineNo">253</span> bukkitCommand.getSubCommands().values().removeAll(command.subCommands.values());<a name="line.253"></a>
|
||||
<span class="sourceLineNo">254</span> if (bukkitCommand.isRegistered && bukkitCommand.getSubCommands().isEmpty()) {<a name="line.254"></a>
|
||||
<span class="sourceLineNo">255</span> unregisterCommand(bukkitCommand);<a name="line.255"></a>
|
||||
<span class="sourceLineNo">256</span> bukkitCommand.isRegistered = false;<a name="line.256"></a>
|
||||
<span class="sourceLineNo">257</span> }<a name="line.257"></a>
|
||||
<span class="sourceLineNo">258</span> }<a name="line.258"></a>
|
||||
<span class="sourceLineNo">259</span> }<a name="line.259"></a>
|
||||
<span class="sourceLineNo">260</span><a name="line.260"></a>
|
||||
<span class="sourceLineNo">261</span> /**<a name="line.261"></a>
|
||||
<span class="sourceLineNo">262</span> * @param command<a name="line.262"></a>
|
||||
<span class="sourceLineNo">263</span> * @deprecated Use unregisterCommand(BaseCommand) - this will be visibility reduced later.<a name="line.263"></a>
|
||||
<span class="sourceLineNo">264</span> */<a name="line.264"></a>
|
||||
<span class="sourceLineNo">265</span> @Deprecated<a name="line.265"></a>
|
||||
<span class="sourceLineNo">266</span> public void unregisterCommand(BukkitRootCommand command) {<a name="line.266"></a>
|
||||
<span class="sourceLineNo">267</span> final String plugin = this.plugin.getName().toLowerCase();<a name="line.267"></a>
|
||||
<span class="sourceLineNo">268</span> command.unregister(commandMap);<a name="line.268"></a>
|
||||
<span class="sourceLineNo">269</span> String key = command.getName();<a name="line.269"></a>
|
||||
<span class="sourceLineNo">270</span> Command registered = knownCommands.get(key);<a name="line.270"></a>
|
||||
<span class="sourceLineNo">271</span> if (command.equals(registered)) {<a name="line.271"></a>
|
||||
<span class="sourceLineNo">272</span> knownCommands.remove(key);<a name="line.272"></a>
|
||||
<span class="sourceLineNo">273</span> }<a name="line.273"></a>
|
||||
<span class="sourceLineNo">274</span> knownCommands.remove(plugin + ":" + key);<a name="line.274"></a>
|
||||
<span class="sourceLineNo">275</span> registeredCommands.remove(key);<a name="line.275"></a>
|
||||
<span class="sourceLineNo">276</span> }<a name="line.276"></a>
|
||||
<span class="sourceLineNo">277</span><a name="line.277"></a>
|
||||
<span class="sourceLineNo">278</span> public void unregisterCommands() {<a name="line.278"></a>
|
||||
<span class="sourceLineNo">279</span> for (String key : new HashSet<>(registeredCommands.keySet())) {<a name="line.279"></a>
|
||||
<span class="sourceLineNo">280</span> unregisterCommand(registeredCommands.get(key));<a name="line.280"></a>
|
||||
<span class="sourceLineNo">281</span> }<a name="line.281"></a>
|
||||
<span class="sourceLineNo">282</span> }<a name="line.282"></a>
|
||||
<span class="sourceLineNo">283</span><a name="line.283"></a>
|
||||
<span class="sourceLineNo">284</span> private Field getEntityField(Player player) throws NoSuchFieldException {<a name="line.284"></a>
|
||||
<span class="sourceLineNo">285</span> Class cls = player.getClass();<a name="line.285"></a>
|
||||
<span class="sourceLineNo">286</span> while (cls != Object.class) {<a name="line.286"></a>
|
||||
<span class="sourceLineNo">287</span> if (cls.getName().endsWith("CraftEntity")) {<a name="line.287"></a>
|
||||
<span class="sourceLineNo">288</span> Field field = cls.getDeclaredField("entity");<a name="line.288"></a>
|
||||
<span class="sourceLineNo">289</span> field.setAccessible(true);<a name="line.289"></a>
|
||||
<span class="sourceLineNo">290</span> return field;<a name="line.290"></a>
|
||||
<span class="sourceLineNo">291</span> }<a name="line.291"></a>
|
||||
<span class="sourceLineNo">292</span> cls = cls.getSuperclass();<a name="line.292"></a>
|
||||
<span class="sourceLineNo">293</span> }<a name="line.293"></a>
|
||||
<span class="sourceLineNo">294</span> return null;<a name="line.294"></a>
|
||||
<span class="sourceLineNo">295</span> }<a name="line.295"></a>
|
||||
<span class="sourceLineNo">296</span><a name="line.296"></a>
|
||||
<span class="sourceLineNo">297</span> public Locale setPlayerLocale(Player player, Locale locale) {<a name="line.297"></a>
|
||||
<span class="sourceLineNo">298</span> return this.setIssuerLocale(player, locale);<a name="line.298"></a>
|
||||
<span class="sourceLineNo">299</span> }<a name="line.299"></a>
|
||||
<span class="sourceLineNo">300</span><a name="line.300"></a>
|
||||
<span class="sourceLineNo">301</span> void readPlayerLocale(Player player) {<a name="line.301"></a>
|
||||
<span class="sourceLineNo">302</span> if (!player.isOnline() || cantReadLocale) {<a name="line.302"></a>
|
||||
<span class="sourceLineNo">303</span> return;<a name="line.303"></a>
|
||||
<span class="sourceLineNo">304</span> }<a name="line.304"></a>
|
||||
<span class="sourceLineNo">305</span> try {<a name="line.305"></a>
|
||||
<span class="sourceLineNo">306</span> Field entityField = getEntityField(player);<a name="line.306"></a>
|
||||
<span class="sourceLineNo">307</span> if (entityField == null) {<a name="line.307"></a>
|
||||
<span class="sourceLineNo">308</span> return;<a name="line.308"></a>
|
||||
<span class="sourceLineNo">309</span> }<a name="line.309"></a>
|
||||
<span class="sourceLineNo">310</span> Object nmsPlayer = entityField.get(player);<a name="line.310"></a>
|
||||
<span class="sourceLineNo">311</span> if (nmsPlayer != null) {<a name="line.311"></a>
|
||||
<span class="sourceLineNo">312</span> Field localeField = nmsPlayer.getClass().getDeclaredField("locale");<a name="line.312"></a>
|
||||
<span class="sourceLineNo">313</span> Object localeString = localeField.get(nmsPlayer);<a name="line.313"></a>
|
||||
<span class="sourceLineNo">314</span> if (localeString instanceof String) {<a name="line.314"></a>
|
||||
<span class="sourceLineNo">315</span> String[] split = ACFPatterns.UNDERSCORE.split((String) localeString);<a name="line.315"></a>
|
||||
<span class="sourceLineNo">316</span> Locale locale = split.length > 1 ? new Locale(split[0], split[1]) : new Locale(split[0]);<a name="line.316"></a>
|
||||
<span class="sourceLineNo">317</span> Locale prev = issuersLocale.put(player.getUniqueId(), locale);<a name="line.317"></a>
|
||||
<span class="sourceLineNo">318</span> if (!Objects.equals(locale, prev)) {<a name="line.318"></a>
|
||||
<span class="sourceLineNo">319</span> this.notifyLocaleChange(getCommandIssuer(player), prev, locale);<a name="line.319"></a>
|
||||
<span class="sourceLineNo">320</span> }<a name="line.320"></a>
|
||||
<span class="sourceLineNo">321</span> }<a name="line.321"></a>
|
||||
<span class="sourceLineNo">322</span> }<a name="line.322"></a>
|
||||
<span class="sourceLineNo">323</span> } catch (Exception e) {<a name="line.323"></a>
|
||||
<span class="sourceLineNo">324</span> cantReadLocale = true;<a name="line.324"></a>
|
||||
<span class="sourceLineNo">325</span> this.localeTask.cancel();<a name="line.325"></a>
|
||||
<span class="sourceLineNo">326</span> this.log(LogLevel.INFO, "Can't read players locale, you will be unable to automatically detect players language. Only Bukkit 1.7+ is supported for this.", e);<a name="line.326"></a>
|
||||
<span class="sourceLineNo">327</span> }<a name="line.327"></a>
|
||||
<span class="sourceLineNo">328</span> }<a name="line.328"></a>
|
||||
<span class="sourceLineNo">329</span><a name="line.329"></a>
|
||||
<span class="sourceLineNo">330</span> public TimingManager getTimings() {<a name="line.330"></a>
|
||||
<span class="sourceLineNo">331</span> return timingManager;<a name="line.331"></a>
|
||||
<span class="sourceLineNo">332</span> }<a name="line.332"></a>
|
||||
<span class="sourceLineNo">333</span><a name="line.333"></a>
|
||||
<span class="sourceLineNo">334</span> @Override<a name="line.334"></a>
|
||||
<span class="sourceLineNo">335</span> public RootCommand createRootCommand(String cmd) {<a name="line.335"></a>
|
||||
<span class="sourceLineNo">336</span> return new BukkitRootCommand(this, cmd);<a name="line.336"></a>
|
||||
<span class="sourceLineNo">337</span> }<a name="line.337"></a>
|
||||
<span class="sourceLineNo">338</span><a name="line.338"></a>
|
||||
<span class="sourceLineNo">339</span> @Override<a name="line.339"></a>
|
||||
<span class="sourceLineNo">340</span> public Collection<RootCommand> getRegisteredRootCommands() {<a name="line.340"></a>
|
||||
<span class="sourceLineNo">341</span> return Collections.unmodifiableCollection(registeredCommands.values());<a name="line.341"></a>
|
||||
<span class="sourceLineNo">342</span> }<a name="line.342"></a>
|
||||
<span class="sourceLineNo">343</span><a name="line.343"></a>
|
||||
<span class="sourceLineNo">344</span> @Override<a name="line.344"></a>
|
||||
<span class="sourceLineNo">345</span> public BukkitCommandIssuer getCommandIssuer(Object issuer) {<a name="line.345"></a>
|
||||
<span class="sourceLineNo">346</span> if (!(issuer instanceof CommandSender)) {<a name="line.346"></a>
|
||||
<span class="sourceLineNo">347</span> throw new IllegalArgumentException(issuer.getClass().getName() + " is not a Command Issuer.");<a name="line.347"></a>
|
||||
<span class="sourceLineNo">348</span> }<a name="line.348"></a>
|
||||
<span class="sourceLineNo">349</span> return new BukkitCommandIssuer(this, (CommandSender) issuer);<a name="line.349"></a>
|
||||
<span class="sourceLineNo">350</span> }<a name="line.350"></a>
|
||||
<span class="sourceLineNo">351</span><a name="line.351"></a>
|
||||
<span class="sourceLineNo">352</span> @Override<a name="line.352"></a>
|
||||
<span class="sourceLineNo">353</span> public BukkitCommandExecutionContext createCommandContext(RegisteredCommand command, CommandParameter parameter, CommandIssuer sender, List<String> args, int i, Map<String, Object> passedArgs) {<a name="line.353"></a>
|
||||
<span class="sourceLineNo">354</span> return new BukkitCommandExecutionContext(command, parameter, (BukkitCommandIssuer) sender, args, i, passedArgs);<a name="line.354"></a>
|
||||
<span class="sourceLineNo">355</span> }<a name="line.355"></a>
|
||||
<span class="sourceLineNo">356</span><a name="line.356"></a>
|
||||
<span class="sourceLineNo">357</span> @Override<a name="line.357"></a>
|
||||
<span class="sourceLineNo">358</span> public BukkitCommandCompletionContext createCompletionContext(RegisteredCommand command, CommandIssuer sender, String input, String config, String[] args) {<a name="line.358"></a>
|
||||
<span class="sourceLineNo">359</span> return new BukkitCommandCompletionContext(command, (BukkitCommandIssuer) sender, input, config, args);<a name="line.359"></a>
|
||||
<span class="sourceLineNo">360</span> }<a name="line.360"></a>
|
||||
<span class="sourceLineNo">361</span><a name="line.361"></a>
|
||||
<span class="sourceLineNo">362</span> @Override<a name="line.362"></a>
|
||||
<span class="sourceLineNo">363</span> public RegisteredCommand createRegisteredCommand(BaseCommand command, String cmdName, Method method, String prefSubCommand) {<a name="line.363"></a>
|
||||
<span class="sourceLineNo">364</span> return new BukkitRegisteredCommand(command, cmdName, method, prefSubCommand);<a name="line.364"></a>
|
||||
<span class="sourceLineNo">365</span> }<a name="line.365"></a>
|
||||
<span class="sourceLineNo">366</span><a name="line.366"></a>
|
||||
<span class="sourceLineNo">367</span> @Override<a name="line.367"></a>
|
||||
<span class="sourceLineNo">368</span> public BukkitConditionContext createConditionContext(CommandIssuer issuer, String config) {<a name="line.368"></a>
|
||||
<span class="sourceLineNo">369</span> return new BukkitConditionContext((BukkitCommandIssuer) issuer, config);<a name="line.369"></a>
|
||||
<span class="sourceLineNo">370</span> }<a name="line.370"></a>
|
||||
<span class="sourceLineNo">371</span><a name="line.371"></a>
|
||||
<span class="sourceLineNo">372</span><a name="line.372"></a>
|
||||
<span class="sourceLineNo">373</span> @Override<a name="line.373"></a>
|
||||
<span class="sourceLineNo">374</span> public void log(LogLevel level, String message, Throwable throwable) {<a name="line.374"></a>
|
||||
<span class="sourceLineNo">375</span> Level logLevel = level == LogLevel.INFO ? Level.INFO : Level.SEVERE;<a name="line.375"></a>
|
||||
<span class="sourceLineNo">376</span> logger.log(logLevel, LogLevel.LOG_PREFIX + message);<a name="line.376"></a>
|
||||
<span class="sourceLineNo">377</span> if (throwable != null) {<a name="line.377"></a>
|
||||
<span class="sourceLineNo">378</span> for (String line : ACFPatterns.NEWLINE.split(ApacheCommonsExceptionUtil.getFullStackTrace(throwable))) {<a name="line.378"></a>
|
||||
<span class="sourceLineNo">379</span> logger.log(logLevel, LogLevel.LOG_PREFIX + line);<a name="line.379"></a>
|
||||
<span class="sourceLineNo">380</span> }<a name="line.380"></a>
|
||||
<span class="sourceLineNo">381</span> }<a name="line.381"></a>
|
||||
<span class="sourceLineNo">382</span> }<a name="line.382"></a>
|
||||
<span class="sourceLineNo">383</span><a name="line.383"></a>
|
||||
<span class="sourceLineNo">384</span> public boolean usePerIssuerLocale(boolean usePerIssuerLocale, boolean autoDetectFromClient) {<a name="line.384"></a>
|
||||
<span class="sourceLineNo">385</span> boolean old = this.usePerIssuerLocale;<a name="line.385"></a>
|
||||
<span class="sourceLineNo">386</span> this.usePerIssuerLocale = usePerIssuerLocale;<a name="line.386"></a>
|
||||
<span class="sourceLineNo">387</span> this.autoDetectFromClient = autoDetectFromClient;<a name="line.387"></a>
|
||||
<span class="sourceLineNo">388</span> return old;<a name="line.388"></a>
|
||||
<span class="sourceLineNo">389</span> }<a name="line.389"></a>
|
||||
<span class="sourceLineNo">390</span><a name="line.390"></a>
|
||||
<span class="sourceLineNo">391</span> @Override<a name="line.391"></a>
|
||||
<span class="sourceLineNo">392</span> public String getCommandPrefix(CommandIssuer issuer) {<a name="line.392"></a>
|
||||
<span class="sourceLineNo">393</span> return issuer.isPlayer() ? "/" : "";<a name="line.393"></a>
|
||||
<span class="sourceLineNo">394</span> }<a name="line.394"></a>
|
||||
<span class="sourceLineNo">395</span><a name="line.395"></a>
|
||||
<span class="sourceLineNo">396</span> @Override<a name="line.396"></a>
|
||||
<span class="sourceLineNo">397</span> protected boolean handleUncaughtException(BaseCommand scope, RegisteredCommand registeredCommand, CommandIssuer sender, List<String> args, Throwable t) {<a name="line.397"></a>
|
||||
<span class="sourceLineNo">398</span> if (t instanceof CommandException && t.getCause() != null && t.getMessage().startsWith("Unhandled exception")) {<a name="line.398"></a>
|
||||
<span class="sourceLineNo">399</span> t = t.getCause();<a name="line.399"></a>
|
||||
<span class="sourceLineNo">400</span> }<a name="line.400"></a>
|
||||
<span class="sourceLineNo">401</span> return super.handleUncaughtException(scope, registeredCommand, sender, args, t);<a name="line.401"></a>
|
||||
<span class="sourceLineNo">402</span> }<a name="line.402"></a>
|
||||
<span class="sourceLineNo">403</span>}<a name="line.403"></a>
|
||||
<span class="sourceLineNo">284</span><a name="line.284"></a>
|
||||
<span class="sourceLineNo">285</span> private Field getEntityField(Player player) throws NoSuchFieldException {<a name="line.285"></a>
|
||||
<span class="sourceLineNo">286</span> Class cls = player.getClass();<a name="line.286"></a>
|
||||
<span class="sourceLineNo">287</span> while (cls != Object.class) {<a name="line.287"></a>
|
||||
<span class="sourceLineNo">288</span> if (cls.getName().endsWith("CraftEntity")) {<a name="line.288"></a>
|
||||
<span class="sourceLineNo">289</span> Field field = cls.getDeclaredField("entity");<a name="line.289"></a>
|
||||
<span class="sourceLineNo">290</span> field.setAccessible(true);<a name="line.290"></a>
|
||||
<span class="sourceLineNo">291</span> return field;<a name="line.291"></a>
|
||||
<span class="sourceLineNo">292</span> }<a name="line.292"></a>
|
||||
<span class="sourceLineNo">293</span> cls = cls.getSuperclass();<a name="line.293"></a>
|
||||
<span class="sourceLineNo">294</span> }<a name="line.294"></a>
|
||||
<span class="sourceLineNo">295</span> return null;<a name="line.295"></a>
|
||||
<span class="sourceLineNo">296</span> }<a name="line.296"></a>
|
||||
<span class="sourceLineNo">297</span><a name="line.297"></a>
|
||||
<span class="sourceLineNo">298</span> public Locale setPlayerLocale(Player player, Locale locale) {<a name="line.298"></a>
|
||||
<span class="sourceLineNo">299</span> return this.setIssuerLocale(player, locale);<a name="line.299"></a>
|
||||
<span class="sourceLineNo">300</span> }<a name="line.300"></a>
|
||||
<span class="sourceLineNo">301</span><a name="line.301"></a>
|
||||
<span class="sourceLineNo">302</span> void readPlayerLocale(Player player) {<a name="line.302"></a>
|
||||
<span class="sourceLineNo">303</span> if (!player.isOnline() || cantReadLocale) {<a name="line.303"></a>
|
||||
<span class="sourceLineNo">304</span> return;<a name="line.304"></a>
|
||||
<span class="sourceLineNo">305</span> }<a name="line.305"></a>
|
||||
<span class="sourceLineNo">306</span> try {<a name="line.306"></a>
|
||||
<span class="sourceLineNo">307</span> Field entityField = getEntityField(player);<a name="line.307"></a>
|
||||
<span class="sourceLineNo">308</span> if (entityField == null) {<a name="line.308"></a>
|
||||
<span class="sourceLineNo">309</span> return;<a name="line.309"></a>
|
||||
<span class="sourceLineNo">310</span> }<a name="line.310"></a>
|
||||
<span class="sourceLineNo">311</span> Object nmsPlayer = entityField.get(player);<a name="line.311"></a>
|
||||
<span class="sourceLineNo">312</span> if (nmsPlayer != null) {<a name="line.312"></a>
|
||||
<span class="sourceLineNo">313</span> Field localeField = nmsPlayer.getClass().getDeclaredField("locale");<a name="line.313"></a>
|
||||
<span class="sourceLineNo">314</span> localeField.setAccessible(true);<a name="line.314"></a>
|
||||
<span class="sourceLineNo">315</span> Object localeString = localeField.get(nmsPlayer);<a name="line.315"></a>
|
||||
<span class="sourceLineNo">316</span> if (localeString instanceof String) {<a name="line.316"></a>
|
||||
<span class="sourceLineNo">317</span> String[] split = ACFPatterns.UNDERSCORE.split((String) localeString);<a name="line.317"></a>
|
||||
<span class="sourceLineNo">318</span> Locale locale = split.length > 1 ? new Locale(split[0], split[1]) : new Locale(split[0]);<a name="line.318"></a>
|
||||
<span class="sourceLineNo">319</span> Locale prev = issuersLocale.put(player.getUniqueId(), locale);<a name="line.319"></a>
|
||||
<span class="sourceLineNo">320</span> if (!Objects.equals(locale, prev)) {<a name="line.320"></a>
|
||||
<span class="sourceLineNo">321</span> this.notifyLocaleChange(getCommandIssuer(player), prev, locale);<a name="line.321"></a>
|
||||
<span class="sourceLineNo">322</span> }<a name="line.322"></a>
|
||||
<span class="sourceLineNo">323</span> }<a name="line.323"></a>
|
||||
<span class="sourceLineNo">324</span> }<a name="line.324"></a>
|
||||
<span class="sourceLineNo">325</span> } catch (Exception e) {<a name="line.325"></a>
|
||||
<span class="sourceLineNo">326</span> cantReadLocale = true;<a name="line.326"></a>
|
||||
<span class="sourceLineNo">327</span> this.localeTask.cancel();<a name="line.327"></a>
|
||||
<span class="sourceLineNo">328</span> this.log(LogLevel.INFO, "Can't read players locale, you will be unable to automatically detect players language. Only Bukkit 1.7+ is supported for this.", e);<a name="line.328"></a>
|
||||
<span class="sourceLineNo">329</span> }<a name="line.329"></a>
|
||||
<span class="sourceLineNo">330</span> }<a name="line.330"></a>
|
||||
<span class="sourceLineNo">331</span><a name="line.331"></a>
|
||||
<span class="sourceLineNo">332</span> public TimingManager getTimings() {<a name="line.332"></a>
|
||||
<span class="sourceLineNo">333</span> return timingManager;<a name="line.333"></a>
|
||||
<span class="sourceLineNo">334</span> }<a name="line.334"></a>
|
||||
<span class="sourceLineNo">335</span><a name="line.335"></a>
|
||||
<span class="sourceLineNo">336</span> @Override<a name="line.336"></a>
|
||||
<span class="sourceLineNo">337</span> public RootCommand createRootCommand(String cmd) {<a name="line.337"></a>
|
||||
<span class="sourceLineNo">338</span> return new BukkitRootCommand(this, cmd);<a name="line.338"></a>
|
||||
<span class="sourceLineNo">339</span> }<a name="line.339"></a>
|
||||
<span class="sourceLineNo">340</span><a name="line.340"></a>
|
||||
<span class="sourceLineNo">341</span> @Override<a name="line.341"></a>
|
||||
<span class="sourceLineNo">342</span> public Collection<RootCommand> getRegisteredRootCommands() {<a name="line.342"></a>
|
||||
<span class="sourceLineNo">343</span> return Collections.unmodifiableCollection(registeredCommands.values());<a name="line.343"></a>
|
||||
<span class="sourceLineNo">344</span> }<a name="line.344"></a>
|
||||
<span class="sourceLineNo">345</span><a name="line.345"></a>
|
||||
<span class="sourceLineNo">346</span> @Override<a name="line.346"></a>
|
||||
<span class="sourceLineNo">347</span> public BukkitCommandIssuer getCommandIssuer(Object issuer) {<a name="line.347"></a>
|
||||
<span class="sourceLineNo">348</span> if (!(issuer instanceof CommandSender)) {<a name="line.348"></a>
|
||||
<span class="sourceLineNo">349</span> throw new IllegalArgumentException(issuer.getClass().getName() + " is not a Command Issuer.");<a name="line.349"></a>
|
||||
<span class="sourceLineNo">350</span> }<a name="line.350"></a>
|
||||
<span class="sourceLineNo">351</span> return new BukkitCommandIssuer(this, (CommandSender) issuer);<a name="line.351"></a>
|
||||
<span class="sourceLineNo">352</span> }<a name="line.352"></a>
|
||||
<span class="sourceLineNo">353</span><a name="line.353"></a>
|
||||
<span class="sourceLineNo">354</span> @Override<a name="line.354"></a>
|
||||
<span class="sourceLineNo">355</span> public BukkitCommandExecutionContext createCommandContext(RegisteredCommand command, CommandParameter parameter, CommandIssuer sender, List<String> args, int i, Map<String, Object> passedArgs) {<a name="line.355"></a>
|
||||
<span class="sourceLineNo">356</span> return new BukkitCommandExecutionContext(command, parameter, (BukkitCommandIssuer) sender, args, i, passedArgs);<a name="line.356"></a>
|
||||
<span class="sourceLineNo">357</span> }<a name="line.357"></a>
|
||||
<span class="sourceLineNo">358</span><a name="line.358"></a>
|
||||
<span class="sourceLineNo">359</span> @Override<a name="line.359"></a>
|
||||
<span class="sourceLineNo">360</span> public BukkitCommandCompletionContext createCompletionContext(RegisteredCommand command, CommandIssuer sender, String input, String config, String[] args) {<a name="line.360"></a>
|
||||
<span class="sourceLineNo">361</span> return new BukkitCommandCompletionContext(command, (BukkitCommandIssuer) sender, input, config, args);<a name="line.361"></a>
|
||||
<span class="sourceLineNo">362</span> }<a name="line.362"></a>
|
||||
<span class="sourceLineNo">363</span><a name="line.363"></a>
|
||||
<span class="sourceLineNo">364</span> @Override<a name="line.364"></a>
|
||||
<span class="sourceLineNo">365</span> public RegisteredCommand createRegisteredCommand(BaseCommand command, String cmdName, Method method, String prefSubCommand) {<a name="line.365"></a>
|
||||
<span class="sourceLineNo">366</span> return new BukkitRegisteredCommand(command, cmdName, method, prefSubCommand);<a name="line.366"></a>
|
||||
<span class="sourceLineNo">367</span> }<a name="line.367"></a>
|
||||
<span class="sourceLineNo">368</span><a name="line.368"></a>
|
||||
<span class="sourceLineNo">369</span> @Override<a name="line.369"></a>
|
||||
<span class="sourceLineNo">370</span> public BukkitConditionContext createConditionContext(CommandIssuer issuer, String config) {<a name="line.370"></a>
|
||||
<span class="sourceLineNo">371</span> return new BukkitConditionContext((BukkitCommandIssuer) issuer, config);<a name="line.371"></a>
|
||||
<span class="sourceLineNo">372</span> }<a name="line.372"></a>
|
||||
<span class="sourceLineNo">373</span><a name="line.373"></a>
|
||||
<span class="sourceLineNo">374</span><a name="line.374"></a>
|
||||
<span class="sourceLineNo">375</span> @Override<a name="line.375"></a>
|
||||
<span class="sourceLineNo">376</span> public void log(LogLevel level, String message, Throwable throwable) {<a name="line.376"></a>
|
||||
<span class="sourceLineNo">377</span> Level logLevel = level == LogLevel.INFO ? Level.INFO : Level.SEVERE;<a name="line.377"></a>
|
||||
<span class="sourceLineNo">378</span> logger.log(logLevel, LogLevel.LOG_PREFIX + message);<a name="line.378"></a>
|
||||
<span class="sourceLineNo">379</span> if (throwable != null) {<a name="line.379"></a>
|
||||
<span class="sourceLineNo">380</span> for (String line : ACFPatterns.NEWLINE.split(ApacheCommonsExceptionUtil.getFullStackTrace(throwable))) {<a name="line.380"></a>
|
||||
<span class="sourceLineNo">381</span> logger.log(logLevel, LogLevel.LOG_PREFIX + line);<a name="line.381"></a>
|
||||
<span class="sourceLineNo">382</span> }<a name="line.382"></a>
|
||||
<span class="sourceLineNo">383</span> }<a name="line.383"></a>
|
||||
<span class="sourceLineNo">384</span> }<a name="line.384"></a>
|
||||
<span class="sourceLineNo">385</span><a name="line.385"></a>
|
||||
<span class="sourceLineNo">386</span> public boolean usePerIssuerLocale(boolean usePerIssuerLocale, boolean autoDetectFromClient) {<a name="line.386"></a>
|
||||
<span class="sourceLineNo">387</span> boolean old = this.usePerIssuerLocale;<a name="line.387"></a>
|
||||
<span class="sourceLineNo">388</span> this.usePerIssuerLocale = usePerIssuerLocale;<a name="line.388"></a>
|
||||
<span class="sourceLineNo">389</span> this.autoDetectFromClient = autoDetectFromClient;<a name="line.389"></a>
|
||||
<span class="sourceLineNo">390</span> return old;<a name="line.390"></a>
|
||||
<span class="sourceLineNo">391</span> }<a name="line.391"></a>
|
||||
<span class="sourceLineNo">392</span><a name="line.392"></a>
|
||||
<span class="sourceLineNo">393</span> @Override<a name="line.393"></a>
|
||||
<span class="sourceLineNo">394</span> public String getCommandPrefix(CommandIssuer issuer) {<a name="line.394"></a>
|
||||
<span class="sourceLineNo">395</span> return issuer.isPlayer() ? "/" : "";<a name="line.395"></a>
|
||||
<span class="sourceLineNo">396</span> }<a name="line.396"></a>
|
||||
<span class="sourceLineNo">397</span><a name="line.397"></a>
|
||||
<span class="sourceLineNo">398</span> @Override<a name="line.398"></a>
|
||||
<span class="sourceLineNo">399</span> protected boolean handleUncaughtException(BaseCommand scope, RegisteredCommand registeredCommand, CommandIssuer sender, List<String> args, Throwable t) {<a name="line.399"></a>
|
||||
<span class="sourceLineNo">400</span> if (t instanceof CommandException && t.getCause() != null && t.getMessage().startsWith("Unhandled exception")) {<a name="line.400"></a>
|
||||
<span class="sourceLineNo">401</span> t = t.getCause();<a name="line.401"></a>
|
||||
<span class="sourceLineNo">402</span> }<a name="line.402"></a>
|
||||
<span class="sourceLineNo">403</span> return super.handleUncaughtException(scope, registeredCommand, sender, args, t);<a name="line.403"></a>
|
||||
<span class="sourceLineNo">404</span> }<a name="line.404"></a>
|
||||
<span class="sourceLineNo">405</span>}<a name="line.405"></a>
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -249,7 +249,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<ul class="blockListLast">
|
||||
<li class="blockList">
|
||||
<h4>COLOR_CHAR</h4>
|
||||
<pre>public static final char <a href="../../../src-html/co/aikar/commands/ACFBungeeUtil.html#line.79">COLOR_CHAR</a></pre>
|
||||
<pre>public static final char <a href="../../../src-html/co/aikar/commands/ACFBungeeUtil.html#line.80">COLOR_CHAR</a></pre>
|
||||
<dl>
|
||||
<dt><span class="seeLabel">See Also:</span></dt>
|
||||
<dd><a href="../../../constant-values.html#co.aikar.commands.ACFBungeeUtil.COLOR_CHAR">Constant Field Values</a></dd>
|
||||
@@ -297,7 +297,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<li class="blockList">
|
||||
<h4>sendMsg</h4>
|
||||
<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
|
||||
public static void <a href="../../../src-html/co/aikar/commands/ACFBungeeUtil.html#line.47">sendMsg</a>(net.md_5.bungee.api.CommandSender player,
|
||||
public static void <a href="../../../src-html/co/aikar/commands/ACFBungeeUtil.html#line.48">sendMsg</a>(net.md_5.bungee.api.CommandSender player,
|
||||
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> message)</pre>
|
||||
<div class="block"><span class="deprecatedLabel">Deprecated.</span> </div>
|
||||
<div class="block">Move to Message Keys on the CommandIssuer</div>
|
||||
@@ -309,7 +309,7 @@ public static void <a href="../../../src-html/co/aikar/commands/ACFBun
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>removeColors</h4>
|
||||
<pre>public static <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../src-html/co/aikar/commands/ACFBungeeUtil.html#line.54">removeColors</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> msg)</pre>
|
||||
<pre>public static <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../src-html/co/aikar/commands/ACFBungeeUtil.html#line.55">removeColors</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> msg)</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="replaceChatString-java.lang.String-java.lang.String-java.lang.String-">
|
||||
@@ -318,7 +318,7 @@ public static void <a href="../../../src-html/co/aikar/commands/ACFBun
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>replaceChatString</h4>
|
||||
<pre>public static <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../src-html/co/aikar/commands/ACFBungeeUtil.html#line.58">replaceChatString</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> message,
|
||||
<pre>public static <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../src-html/co/aikar/commands/ACFBungeeUtil.html#line.59">replaceChatString</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> message,
|
||||
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> replace,
|
||||
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> with)</pre>
|
||||
</li>
|
||||
@@ -329,7 +329,7 @@ public static void <a href="../../../src-html/co/aikar/commands/ACFBun
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>replaceChatString</h4>
|
||||
<pre>public static <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../src-html/co/aikar/commands/ACFBungeeUtil.html#line.62">replaceChatString</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> message,
|
||||
<pre>public static <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../src-html/co/aikar/commands/ACFBungeeUtil.html#line.63">replaceChatString</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> message,
|
||||
<a href="https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html?is-external=true" title="class or interface in java.util.regex">Pattern</a> replace,
|
||||
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> with)</pre>
|
||||
</li>
|
||||
@@ -340,7 +340,7 @@ public static void <a href="../../../src-html/co/aikar/commands/ACFBun
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>getLastColors</h4>
|
||||
<pre>public static <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../src-html/co/aikar/commands/ACFBungeeUtil.html#line.81">getLastColors</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> input)</pre>
|
||||
<pre>public static <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../src-html/co/aikar/commands/ACFBungeeUtil.html#line.82">getLastColors</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> input)</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="isChatColorAColor-net.md_5.bungee.api.ChatColor-">
|
||||
@@ -349,7 +349,7 @@ public static void <a href="../../../src-html/co/aikar/commands/ACFBun
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>isChatColorAColor</h4>
|
||||
<pre>public static boolean <a href="../../../src-html/co/aikar/commands/ACFBungeeUtil.html#line.105">isChatColorAColor</a>(net.md_5.bungee.api.ChatColor chatColor)</pre>
|
||||
<pre>public static boolean <a href="../../../src-html/co/aikar/commands/ACFBungeeUtil.html#line.106">isChatColorAColor</a>(net.md_5.bungee.api.ChatColor chatColor)</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="findPlayerSmart-co.aikar.commands.CommandIssuer-java.lang.String-">
|
||||
@@ -358,7 +358,7 @@ public static void <a href="../../../src-html/co/aikar/commands/ACFBun
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>findPlayerSmart</h4>
|
||||
<pre>public static net.md_5.bungee.api.connection.ProxiedPlayer <a href="../../../src-html/co/aikar/commands/ACFBungeeUtil.html#line.112">findPlayerSmart</a>(co.aikar.commands.CommandIssuer issuer,
|
||||
<pre>public static net.md_5.bungee.api.connection.ProxiedPlayer <a href="../../../src-html/co/aikar/commands/ACFBungeeUtil.html#line.113">findPlayerSmart</a>(co.aikar.commands.CommandIssuer issuer,
|
||||
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> search)</pre>
|
||||
</li>
|
||||
</ul>
|
||||
@@ -368,7 +368,7 @@ public static void <a href="../../../src-html/co/aikar/commands/ACFBun
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>findPlayerSmart</h4>
|
||||
<pre>public static net.md_5.bungee.api.connection.ProxiedPlayer <a href="../../../src-html/co/aikar/commands/ACFBungeeUtil.html#line.146">findPlayerSmart</a>(net.md_5.bungee.api.CommandSender requester,
|
||||
<pre>public static net.md_5.bungee.api.connection.ProxiedPlayer <a href="../../../src-html/co/aikar/commands/ACFBungeeUtil.html#line.144">findPlayerSmart</a>(net.md_5.bungee.api.CommandSender requester,
|
||||
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> search)</pre>
|
||||
<div class="block"><span class="deprecatedLabel">Deprecated.</span> </div>
|
||||
<div class="block">Please move to the CommandIssuer version</div>
|
||||
@@ -380,7 +380,7 @@ public static void <a href="../../../src-html/co/aikar/commands/ACFBun
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>isValidName</h4>
|
||||
<pre>public static boolean <a href="../../../src-html/co/aikar/commands/ACFBungeeUtil.html#line.154">isValidName</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> name)</pre>
|
||||
<pre>public static boolean <a href="../../../src-html/co/aikar/commands/ACFBungeeUtil.html#line.152">isValidName</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> name)</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="validate-java.lang.Object-java.lang.String-java.lang.Object:A-">
|
||||
@@ -391,7 +391,7 @@ public static void <a href="../../../src-html/co/aikar/commands/ACFBun
|
||||
<ul class="blockListLast">
|
||||
<li class="blockList">
|
||||
<h4>validate</h4>
|
||||
<pre>public static <T> T <a href="../../../src-html/co/aikar/commands/ACFBungeeUtil.html#line.158">validate</a>(T object,
|
||||
<pre>public static <T> T <a href="../../../src-html/co/aikar/commands/ACFBungeeUtil.html#line.156">validate</a>(T object,
|
||||
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> message,
|
||||
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>... values)</pre>
|
||||
</li>
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
catch(err) {
|
||||
}
|
||||
//-->
|
||||
var methods = {"i0":10};
|
||||
var methods = {"i0":10,"i1":10,"i2":10,"i3":10};
|
||||
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
|
||||
var altColor = "altColor";
|
||||
var rowColor = "rowColor";
|
||||
@@ -113,7 +113,7 @@ var activeTableTab = "activeTableTab";
|
||||
<li class="blockList">
|
||||
<hr>
|
||||
<br>
|
||||
<pre>public class <a href="../../../src-html/co/aikar/commands/BungeeLocales.html#line.3">BungeeLocales</a>
|
||||
<pre>public class <a href="../../../src-html/co/aikar/commands/BungeeLocales.html#line.12">BungeeLocales</a>
|
||||
extends co.aikar.commands.Locales</pre>
|
||||
</li>
|
||||
</ul>
|
||||
@@ -132,7 +132,7 @@ extends co.aikar.commands.Locales</pre>
|
||||
<!-- -->
|
||||
</a>
|
||||
<h3>Fields inherited from class co.aikar.commands.Locales</h3>
|
||||
<code>AFRIKAANS, ARABIC, BULGARIAN, CHINESE, CZECH, DANISH, DUTCH, ENGLISH, FINNISH, FRENCH, GERMAN, GREEK, HEBREW, HINDI, ITALIAN, JAPANESE, KOREAN, LATIN, NORWEGIAN_BOKMAAL, NORWEGIAN_NYNORSK, POLISH, PORTUGUESE, ROMANIAN, RUSSIAN, SIMPLIFIED_CHINESE, SPANISH, SWEDISH, THAI, TRADITIONAL_CHINESE, TURKISH, UKRANIAN, VIETNAMESE, WELSH</code></li>
|
||||
<code>AFRIKAANS, ARABIC, BULGARIAN, CHINESE, CZECH, DANISH, DUTCH, ENGLISH, FINNISH, FRENCH, GERMAN, GREEK, HEBREW, HINDI, HUNGARIAN, ITALIAN, JAPANESE, KOREAN, LATIN, NORWEGIAN_BOKMAAL, NORWEGIAN_NYNORSK, POLISH, PORTUGUESE, ROMANIAN, RUSSIAN, SIMPLIFIED_CHINESE, SPANISH, SWEDISH, THAI, TRADITIONAL_CHINESE, TURKISH, UKRANIAN, VIETNAMESE, WELSH</code></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
@@ -166,9 +166,30 @@ extends co.aikar.commands.Locales</pre>
|
||||
<th class="colLast" scope="col">Method and Description</th>
|
||||
</tr>
|
||||
<tr id="i0" class="altColor">
|
||||
<td class="colFirst"><code>boolean</code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/BungeeLocales.html#loadLanguage-net.md_5.bungee.config.Configuration-java.util.Locale-">loadLanguage</a></span>(net.md_5.bungee.config.Configuration config,
|
||||
<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Locale.html?is-external=true" title="class or interface in java.util">Locale</a> locale)</code>
|
||||
<div class="block">Loads every message from the Configuration object.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i1" class="rowColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/BungeeLocales.html#loadLanguages--">loadLanguages</a></span>()</code> </td>
|
||||
</tr>
|
||||
<tr id="i2" class="altColor">
|
||||
<td class="colFirst"><code>boolean</code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/BungeeLocales.html#loadYamlLanguageFile-java.io.File-java.util.Locale-">loadYamlLanguageFile</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true" title="class or interface in java.io">File</a> file,
|
||||
<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Locale.html?is-external=true" title="class or interface in java.util">Locale</a> locale)</code>
|
||||
<div class="block">Loads the given file</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i3" class="rowColor">
|
||||
<td class="colFirst"><code>boolean</code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/BungeeLocales.html#loadYamlLanguageFile-java.lang.String-java.util.Locale-">loadYamlLanguageFile</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> file,
|
||||
<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Locale.html?is-external=true" title="class or interface in java.util">Locale</a> locale)</code>
|
||||
<div class="block">Loads a file out of the plugins data folder by the given name</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<ul class="blockList">
|
||||
<li class="blockList"><a name="methods.inherited.from.class.co.aikar.commands.Locales">
|
||||
@@ -204,7 +225,7 @@ extends co.aikar.commands.Locales</pre>
|
||||
<ul class="blockListLast">
|
||||
<li class="blockList">
|
||||
<h4>BungeeLocales</h4>
|
||||
<pre>public <a href="../../../src-html/co/aikar/commands/BungeeLocales.html#line.6">BungeeLocales</a>(<a href="../../../co/aikar/commands/BungeeCommandManager.html" title="class in co.aikar.commands">BungeeCommandManager</a> manager)</pre>
|
||||
<pre>public <a href="../../../src-html/co/aikar/commands/BungeeLocales.html#line.15">BungeeLocales</a>(<a href="../../../co/aikar/commands/BungeeCommandManager.html" title="class in co.aikar.commands">BungeeCommandManager</a> manager)</pre>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
@@ -218,16 +239,77 @@ extends co.aikar.commands.Locales</pre>
|
||||
<a name="loadLanguages--">
|
||||
<!-- -->
|
||||
</a>
|
||||
<ul class="blockListLast">
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>loadLanguages</h4>
|
||||
<pre>public void <a href="../../../src-html/co/aikar/commands/BungeeLocales.html#line.14">loadLanguages</a>()</pre>
|
||||
<pre>public void <a href="../../../src-html/co/aikar/commands/BungeeLocales.html#line.23">loadLanguages</a>()</pre>
|
||||
<dl>
|
||||
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
|
||||
<dd><code>loadLanguages</code> in class <code>co.aikar.commands.Locales</code></dd>
|
||||
</dl>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="loadYamlLanguageFile-java.io.File-java.util.Locale-">
|
||||
<!-- -->
|
||||
</a>
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>loadYamlLanguageFile</h4>
|
||||
<pre>public boolean <a href="../../../src-html/co/aikar/commands/BungeeLocales.html#line.37">loadYamlLanguageFile</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true" title="class or interface in java.io">File</a> file,
|
||||
<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Locale.html?is-external=true" title="class or interface in java.util">Locale</a> locale)
|
||||
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
|
||||
<div class="block">Loads the given file</div>
|
||||
<dl>
|
||||
<dt><span class="paramLabel">Parameters:</span></dt>
|
||||
<dd><code>file</code> - </dd>
|
||||
<dd><code>locale</code> - </dd>
|
||||
<dt><span class="returnLabel">Returns:</span></dt>
|
||||
<dd>If any language keys were added</dd>
|
||||
<dt><span class="throwsLabel">Throws:</span></dt>
|
||||
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
|
||||
</dl>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="loadYamlLanguageFile-java.lang.String-java.util.Locale-">
|
||||
<!-- -->
|
||||
</a>
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>loadYamlLanguageFile</h4>
|
||||
<pre>public boolean <a href="../../../src-html/co/aikar/commands/BungeeLocales.html#line.50">loadYamlLanguageFile</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> file,
|
||||
<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Locale.html?is-external=true" title="class or interface in java.util">Locale</a> locale)
|
||||
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
|
||||
<div class="block">Loads a file out of the plugins data folder by the given name</div>
|
||||
<dl>
|
||||
<dt><span class="paramLabel">Parameters:</span></dt>
|
||||
<dd><code>file</code> - </dd>
|
||||
<dd><code>locale</code> - </dd>
|
||||
<dt><span class="returnLabel">Returns:</span></dt>
|
||||
<dd>If any language keys were added</dd>
|
||||
<dt><span class="throwsLabel">Throws:</span></dt>
|
||||
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
|
||||
</dl>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="loadLanguage-net.md_5.bungee.config.Configuration-java.util.Locale-">
|
||||
<!-- -->
|
||||
</a>
|
||||
<ul class="blockListLast">
|
||||
<li class="blockList">
|
||||
<h4>loadLanguage</h4>
|
||||
<pre>public boolean <a href="../../../src-html/co/aikar/commands/BungeeLocales.html#line.64">loadLanguage</a>(net.md_5.bungee.config.Configuration config,
|
||||
<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Locale.html?is-external=true" title="class or interface in java.util">Locale</a> locale)</pre>
|
||||
<div class="block">Loads every message from the Configuration object. Any nested values will be treated as namespace
|
||||
so acf-core:\n\tfoo: bar will be acf-core.foo = bar</div>
|
||||
<dl>
|
||||
<dt><span class="paramLabel">Parameters:</span></dt>
|
||||
<dd><code>config</code> - </dd>
|
||||
<dd><code>locale</code> - </dd>
|
||||
<dt><span class="returnLabel">Returns:</span></dt>
|
||||
<dd>If any language keys were added</dd>
|
||||
</dl>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
@@ -265,8 +265,20 @@
|
||||
</a>
|
||||
<h2 class="title">L</h2>
|
||||
<dl>
|
||||
<dt><span class="memberNameLink"><a href="co/aikar/commands/BungeeLocales.html#loadLanguage-net.md_5.bungee.config.Configuration-java.util.Locale-">loadLanguage(Configuration, Locale)</a></span> - Method in class co.aikar.commands.<a href="co/aikar/commands/BungeeLocales.html" title="class in co.aikar.commands">BungeeLocales</a></dt>
|
||||
<dd>
|
||||
<div class="block">Loads every message from the Configuration object.</div>
|
||||
</dd>
|
||||
<dt><span class="memberNameLink"><a href="co/aikar/commands/BungeeLocales.html#loadLanguages--">loadLanguages()</a></span> - Method in class co.aikar.commands.<a href="co/aikar/commands/BungeeLocales.html" title="class in co.aikar.commands">BungeeLocales</a></dt>
|
||||
<dd> </dd>
|
||||
<dt><span class="memberNameLink"><a href="co/aikar/commands/BungeeLocales.html#loadYamlLanguageFile-java.io.File-java.util.Locale-">loadYamlLanguageFile(File, Locale)</a></span> - Method in class co.aikar.commands.<a href="co/aikar/commands/BungeeLocales.html" title="class in co.aikar.commands">BungeeLocales</a></dt>
|
||||
<dd>
|
||||
<div class="block">Loads the given file</div>
|
||||
</dd>
|
||||
<dt><span class="memberNameLink"><a href="co/aikar/commands/BungeeLocales.html#loadYamlLanguageFile-java.lang.String-java.util.Locale-">loadYamlLanguageFile(String, Locale)</a></span> - Method in class co.aikar.commands.<a href="co/aikar/commands/BungeeLocales.html" title="class in co.aikar.commands">BungeeLocales</a></dt>
|
||||
<dd>
|
||||
<div class="block">Loads a file out of the plugins data folder by the given name</div>
|
||||
</dd>
|
||||
<dt><span class="memberNameLink"><a href="co/aikar/commands/BungeeCommandManager.html#locales">locales</a></span> - Variable in class co.aikar.commands.<a href="co/aikar/commands/BungeeCommandManager.html" title="class in co.aikar.commands">BungeeCommandManager</a></dt>
|
||||
<dd> </dd>
|
||||
<dt><span class="memberNameLink"><a href="co/aikar/commands/BungeeCommandManager.html#log-co.aikar.commands.LogLevel-java.lang.String-java.lang.Throwable-">log(LogLevel, String, Throwable)</a></span> - Method in class co.aikar.commands.<a href="co/aikar/commands/BungeeCommandManager.html" title="class in co.aikar.commands">BungeeCommandManager</a></dt>
|
||||
|
||||
@@ -49,129 +49,127 @@
|
||||
<span class="sourceLineNo">041</span><a name="line.41"></a>
|
||||
<span class="sourceLineNo">042</span> /**<a name="line.42"></a>
|
||||
<span class="sourceLineNo">043</span> * Move to Message Keys on the CommandIssuer<a name="line.43"></a>
|
||||
<span class="sourceLineNo">044</span> * @deprecated<a name="line.44"></a>
|
||||
<span class="sourceLineNo">045</span> */<a name="line.45"></a>
|
||||
<span class="sourceLineNo">046</span> @Deprecated<a name="line.46"></a>
|
||||
<span class="sourceLineNo">047</span> public static void sendMsg(CommandSender player, String message) {<a name="line.47"></a>
|
||||
<span class="sourceLineNo">048</span> message = color(message);<a name="line.48"></a>
|
||||
<span class="sourceLineNo">049</span> for (String msg : ACFPatterns.NEWLINE.split(message)) {<a name="line.49"></a>
|
||||
<span class="sourceLineNo">050</span> player.sendMessage(msg);<a name="line.50"></a>
|
||||
<span class="sourceLineNo">051</span> }<a name="line.51"></a>
|
||||
<span class="sourceLineNo">052</span> }<a name="line.52"></a>
|
||||
<span class="sourceLineNo">053</span><a name="line.53"></a>
|
||||
<span class="sourceLineNo">054</span> public static String removeColors(String msg) {<a name="line.54"></a>
|
||||
<span class="sourceLineNo">055</span> return ChatColor.stripColor(color(msg));<a name="line.55"></a>
|
||||
<span class="sourceLineNo">056</span> }<a name="line.56"></a>
|
||||
<span class="sourceLineNo">057</span><a name="line.57"></a>
|
||||
<span class="sourceLineNo">058</span> public static String replaceChatString(String message, String replace, String with) {<a name="line.58"></a>
|
||||
<span class="sourceLineNo">059</span> return replaceChatString(message, Pattern.compile(Pattern.quote(replace), Pattern.CASE_INSENSITIVE), with);<a name="line.59"></a>
|
||||
<span class="sourceLineNo">060</span> }<a name="line.60"></a>
|
||||
<span class="sourceLineNo">061</span><a name="line.61"></a>
|
||||
<span class="sourceLineNo">062</span> public static String replaceChatString(String message, Pattern replace, String with) {<a name="line.62"></a>
|
||||
<span class="sourceLineNo">063</span> final String[] split = replace.split(message + "1");<a name="line.63"></a>
|
||||
<span class="sourceLineNo">064</span><a name="line.64"></a>
|
||||
<span class="sourceLineNo">065</span> if (split.length < 2) {<a name="line.65"></a>
|
||||
<span class="sourceLineNo">066</span> return replace.matcher(message).replaceAll(with);<a name="line.66"></a>
|
||||
<span class="sourceLineNo">067</span> }<a name="line.67"></a>
|
||||
<span class="sourceLineNo">068</span> message = split[0];<a name="line.68"></a>
|
||||
<span class="sourceLineNo">069</span><a name="line.69"></a>
|
||||
<span class="sourceLineNo">070</span> for (int i = 1; i < split.length; i++) {<a name="line.70"></a>
|
||||
<span class="sourceLineNo">071</span> final String prev = getLastColors(message);<a name="line.71"></a>
|
||||
<span class="sourceLineNo">072</span> message += with + prev + split[i];<a name="line.72"></a>
|
||||
<span class="sourceLineNo">073</span> }<a name="line.73"></a>
|
||||
<span class="sourceLineNo">074</span> return message.substring(0, message.length() - 1);<a name="line.74"></a>
|
||||
<span class="sourceLineNo">075</span> }<a name="line.75"></a>
|
||||
<span class="sourceLineNo">076</span><a name="line.76"></a>
|
||||
<span class="sourceLineNo">077</span> //Imported from org.bukkit.ChatColor<a name="line.77"></a>
|
||||
<span class="sourceLineNo">078</span><a name="line.78"></a>
|
||||
<span class="sourceLineNo">079</span> public static final char COLOR_CHAR = '\u00A7';<a name="line.79"></a>
|
||||
<span class="sourceLineNo">080</span><a name="line.80"></a>
|
||||
<span class="sourceLineNo">081</span> public static String getLastColors(String input) {<a name="line.81"></a>
|
||||
<span class="sourceLineNo">082</span> StringBuilder result = new StringBuilder();<a name="line.82"></a>
|
||||
<span class="sourceLineNo">083</span> int length = input.length();<a name="line.83"></a>
|
||||
<span class="sourceLineNo">084</span><a name="line.84"></a>
|
||||
<span class="sourceLineNo">085</span> // Search backwards from the end as it is faster<a name="line.85"></a>
|
||||
<span class="sourceLineNo">086</span> for (int index = length - 1; index > -1; index--) {<a name="line.86"></a>
|
||||
<span class="sourceLineNo">087</span> char section = input.charAt(index);<a name="line.87"></a>
|
||||
<span class="sourceLineNo">088</span> if (section == COLOR_CHAR && index < length - 1) {<a name="line.88"></a>
|
||||
<span class="sourceLineNo">089</span> char c = input.charAt(index + 1);<a name="line.89"></a>
|
||||
<span class="sourceLineNo">090</span> ChatColor color = ChatColor.getByChar(c);<a name="line.90"></a>
|
||||
<span class="sourceLineNo">091</span><a name="line.91"></a>
|
||||
<span class="sourceLineNo">092</span> if (color != null) {<a name="line.92"></a>
|
||||
<span class="sourceLineNo">093</span> result.insert(0, color.toString());<a name="line.93"></a>
|
||||
<span class="sourceLineNo">094</span><a name="line.94"></a>
|
||||
<span class="sourceLineNo">095</span> // Once we find a color or reset we can stop searching<a name="line.95"></a>
|
||||
<span class="sourceLineNo">096</span> if (isChatColorAColor(color) || color.equals(ChatColor.RESET)) {<a name="line.96"></a>
|
||||
<span class="sourceLineNo">097</span> break;<a name="line.97"></a>
|
||||
<span class="sourceLineNo">098</span> }<a name="line.98"></a>
|
||||
<span class="sourceLineNo">099</span> }<a name="line.99"></a>
|
||||
<span class="sourceLineNo">100</span> }<a name="line.100"></a>
|
||||
<span class="sourceLineNo">101</span> }<a name="line.101"></a>
|
||||
<span class="sourceLineNo">102</span> return result.toString();<a name="line.102"></a>
|
||||
<span class="sourceLineNo">103</span> }<a name="line.103"></a>
|
||||
<span class="sourceLineNo">104</span><a name="line.104"></a>
|
||||
<span class="sourceLineNo">105</span> public static boolean isChatColorAColor(ChatColor chatColor) {<a name="line.105"></a>
|
||||
<span class="sourceLineNo">106</span> return chatColor != ChatColor.MAGIC && chatColor != ChatColor.BOLD<a name="line.106"></a>
|
||||
<span class="sourceLineNo">107</span> && chatColor != ChatColor.STRIKETHROUGH && chatColor != ChatColor.UNDERLINE<a name="line.107"></a>
|
||||
<span class="sourceLineNo">108</span> && chatColor != ChatColor.ITALIC;<a name="line.108"></a>
|
||||
<span class="sourceLineNo">109</span> }<a name="line.109"></a>
|
||||
<span class="sourceLineNo">110</span><a name="line.110"></a>
|
||||
<span class="sourceLineNo">044</span> *<a name="line.44"></a>
|
||||
<span class="sourceLineNo">045</span> * @deprecated<a name="line.45"></a>
|
||||
<span class="sourceLineNo">046</span> */<a name="line.46"></a>
|
||||
<span class="sourceLineNo">047</span> @Deprecated<a name="line.47"></a>
|
||||
<span class="sourceLineNo">048</span> public static void sendMsg(CommandSender player, String message) {<a name="line.48"></a>
|
||||
<span class="sourceLineNo">049</span> message = color(message);<a name="line.49"></a>
|
||||
<span class="sourceLineNo">050</span> for (String msg : ACFPatterns.NEWLINE.split(message)) {<a name="line.50"></a>
|
||||
<span class="sourceLineNo">051</span> player.sendMessage(msg);<a name="line.51"></a>
|
||||
<span class="sourceLineNo">052</span> }<a name="line.52"></a>
|
||||
<span class="sourceLineNo">053</span> }<a name="line.53"></a>
|
||||
<span class="sourceLineNo">054</span><a name="line.54"></a>
|
||||
<span class="sourceLineNo">055</span> public static String removeColors(String msg) {<a name="line.55"></a>
|
||||
<span class="sourceLineNo">056</span> return ChatColor.stripColor(color(msg));<a name="line.56"></a>
|
||||
<span class="sourceLineNo">057</span> }<a name="line.57"></a>
|
||||
<span class="sourceLineNo">058</span><a name="line.58"></a>
|
||||
<span class="sourceLineNo">059</span> public static String replaceChatString(String message, String replace, String with) {<a name="line.59"></a>
|
||||
<span class="sourceLineNo">060</span> return replaceChatString(message, Pattern.compile(Pattern.quote(replace), Pattern.CASE_INSENSITIVE), with);<a name="line.60"></a>
|
||||
<span class="sourceLineNo">061</span> }<a name="line.61"></a>
|
||||
<span class="sourceLineNo">062</span><a name="line.62"></a>
|
||||
<span class="sourceLineNo">063</span> public static String replaceChatString(String message, Pattern replace, String with) {<a name="line.63"></a>
|
||||
<span class="sourceLineNo">064</span> final String[] split = replace.split(message + "1");<a name="line.64"></a>
|
||||
<span class="sourceLineNo">065</span><a name="line.65"></a>
|
||||
<span class="sourceLineNo">066</span> if (split.length < 2) {<a name="line.66"></a>
|
||||
<span class="sourceLineNo">067</span> return replace.matcher(message).replaceAll(with);<a name="line.67"></a>
|
||||
<span class="sourceLineNo">068</span> }<a name="line.68"></a>
|
||||
<span class="sourceLineNo">069</span> message = split[0];<a name="line.69"></a>
|
||||
<span class="sourceLineNo">070</span><a name="line.70"></a>
|
||||
<span class="sourceLineNo">071</span> for (int i = 1; i < split.length; i++) {<a name="line.71"></a>
|
||||
<span class="sourceLineNo">072</span> final String prev = getLastColors(message);<a name="line.72"></a>
|
||||
<span class="sourceLineNo">073</span> message += with + prev + split[i];<a name="line.73"></a>
|
||||
<span class="sourceLineNo">074</span> }<a name="line.74"></a>
|
||||
<span class="sourceLineNo">075</span> return message.substring(0, message.length() - 1);<a name="line.75"></a>
|
||||
<span class="sourceLineNo">076</span> }<a name="line.76"></a>
|
||||
<span class="sourceLineNo">077</span><a name="line.77"></a>
|
||||
<span class="sourceLineNo">078</span> //Imported from org.bukkit.ChatColor<a name="line.78"></a>
|
||||
<span class="sourceLineNo">079</span><a name="line.79"></a>
|
||||
<span class="sourceLineNo">080</span> public static final char COLOR_CHAR = '\u00A7';<a name="line.80"></a>
|
||||
<span class="sourceLineNo">081</span><a name="line.81"></a>
|
||||
<span class="sourceLineNo">082</span> public static String getLastColors(String input) {<a name="line.82"></a>
|
||||
<span class="sourceLineNo">083</span> StringBuilder result = new StringBuilder();<a name="line.83"></a>
|
||||
<span class="sourceLineNo">084</span> int length = input.length();<a name="line.84"></a>
|
||||
<span class="sourceLineNo">085</span><a name="line.85"></a>
|
||||
<span class="sourceLineNo">086</span> // Search backwards from the end as it is faster<a name="line.86"></a>
|
||||
<span class="sourceLineNo">087</span> for (int index = length - 1; index > -1; index--) {<a name="line.87"></a>
|
||||
<span class="sourceLineNo">088</span> char section = input.charAt(index);<a name="line.88"></a>
|
||||
<span class="sourceLineNo">089</span> if (section == COLOR_CHAR && index < length - 1) {<a name="line.89"></a>
|
||||
<span class="sourceLineNo">090</span> char c = input.charAt(index + 1);<a name="line.90"></a>
|
||||
<span class="sourceLineNo">091</span> ChatColor color = ChatColor.getByChar(c);<a name="line.91"></a>
|
||||
<span class="sourceLineNo">092</span><a name="line.92"></a>
|
||||
<span class="sourceLineNo">093</span> if (color != null) {<a name="line.93"></a>
|
||||
<span class="sourceLineNo">094</span> result.insert(0, color.toString());<a name="line.94"></a>
|
||||
<span class="sourceLineNo">095</span><a name="line.95"></a>
|
||||
<span class="sourceLineNo">096</span> // Once we find a color or reset we can stop searching<a name="line.96"></a>
|
||||
<span class="sourceLineNo">097</span> if (isChatColorAColor(color) || color.equals(ChatColor.RESET)) {<a name="line.97"></a>
|
||||
<span class="sourceLineNo">098</span> break;<a name="line.98"></a>
|
||||
<span class="sourceLineNo">099</span> }<a name="line.99"></a>
|
||||
<span class="sourceLineNo">100</span> }<a name="line.100"></a>
|
||||
<span class="sourceLineNo">101</span> }<a name="line.101"></a>
|
||||
<span class="sourceLineNo">102</span> }<a name="line.102"></a>
|
||||
<span class="sourceLineNo">103</span> return result.toString();<a name="line.103"></a>
|
||||
<span class="sourceLineNo">104</span> }<a name="line.104"></a>
|
||||
<span class="sourceLineNo">105</span><a name="line.105"></a>
|
||||
<span class="sourceLineNo">106</span> public static boolean isChatColorAColor(ChatColor chatColor) {<a name="line.106"></a>
|
||||
<span class="sourceLineNo">107</span> return chatColor != ChatColor.MAGIC && chatColor != ChatColor.BOLD<a name="line.107"></a>
|
||||
<span class="sourceLineNo">108</span> && chatColor != ChatColor.STRIKETHROUGH && chatColor != ChatColor.UNDERLINE<a name="line.108"></a>
|
||||
<span class="sourceLineNo">109</span> && chatColor != ChatColor.ITALIC;<a name="line.109"></a>
|
||||
<span class="sourceLineNo">110</span> }<a name="line.110"></a>
|
||||
<span class="sourceLineNo">111</span><a name="line.111"></a>
|
||||
<span class="sourceLineNo">112</span> public static ProxiedPlayer findPlayerSmart(CommandIssuer issuer, String search) {<a name="line.112"></a>
|
||||
<span class="sourceLineNo">113</span> CommandSender requester = issuer.getIssuer();<a name="line.113"></a>
|
||||
<span class="sourceLineNo">114</span> String name = ACFUtil.replace(search, ":confirm", "");<a name="line.114"></a>
|
||||
<span class="sourceLineNo">115</span> if (name.length() < 3) {<a name="line.115"></a>
|
||||
<span class="sourceLineNo">116</span> issuer.sendError(MinecraftMessageKeys.USERNAME_TOO_SHORT);<a name="line.116"></a>
|
||||
<span class="sourceLineNo">117</span> return null;<a name="line.117"></a>
|
||||
<span class="sourceLineNo">118</span> }<a name="line.118"></a>
|
||||
<span class="sourceLineNo">119</span> if (!isValidName(name)) {<a name="line.119"></a>
|
||||
<span class="sourceLineNo">120</span> issuer.sendError(MinecraftMessageKeys.IS_NOT_A_VALID_NAME, "{name}", name);<a name="line.120"></a>
|
||||
<span class="sourceLineNo">121</span> return null;<a name="line.121"></a>
|
||||
<span class="sourceLineNo">122</span> }<a name="line.122"></a>
|
||||
<span class="sourceLineNo">123</span><a name="line.123"></a>
|
||||
<span class="sourceLineNo">124</span> List<ProxiedPlayer> matches = new ArrayList<>(ProxyServer.getInstance().matchPlayer(name));<a name="line.124"></a>
|
||||
<span class="sourceLineNo">125</span><a name="line.125"></a>
|
||||
<span class="sourceLineNo">126</span> if (matches.size() > 1) {<a name="line.126"></a>
|
||||
<span class="sourceLineNo">127</span> String allMatches = matches.stream().map(ProxiedPlayer::getName).collect(Collectors.joining(", "));<a name="line.127"></a>
|
||||
<span class="sourceLineNo">128</span> issuer.sendError(MinecraftMessageKeys.MULTIPLE_PLAYERS_MATCH,<a name="line.128"></a>
|
||||
<span class="sourceLineNo">129</span> "{search}", name, "{all}", allMatches);<a name="line.129"></a>
|
||||
<span class="sourceLineNo">130</span> return null;<a name="line.130"></a>
|
||||
<span class="sourceLineNo">131</span> }<a name="line.131"></a>
|
||||
<span class="sourceLineNo">132</span><a name="line.132"></a>
|
||||
<span class="sourceLineNo">133</span> if (matches.isEmpty()) {<a name="line.133"></a>
|
||||
<span class="sourceLineNo">134</span> issuer.sendError(MinecraftMessageKeys.NO_PLAYER_FOUND_SERVER,<a name="line.134"></a>
|
||||
<span class="sourceLineNo">135</span> "{search}", name);<a name="line.135"></a>
|
||||
<span class="sourceLineNo">136</span> return null;<a name="line.136"></a>
|
||||
<span class="sourceLineNo">137</span> }<a name="line.137"></a>
|
||||
<span class="sourceLineNo">112</span><a name="line.112"></a>
|
||||
<span class="sourceLineNo">113</span> public static ProxiedPlayer findPlayerSmart(CommandIssuer issuer, String search) {<a name="line.113"></a>
|
||||
<span class="sourceLineNo">114</span> CommandSender requester = issuer.getIssuer();<a name="line.114"></a>
|
||||
<span class="sourceLineNo">115</span> String name = ACFUtil.replace(search, ":confirm", "");<a name="line.115"></a>
|
||||
<span class="sourceLineNo">116</span> if (!isValidName(name)) {<a name="line.116"></a>
|
||||
<span class="sourceLineNo">117</span> issuer.sendError(MinecraftMessageKeys.IS_NOT_A_VALID_NAME, "{name}", name);<a name="line.117"></a>
|
||||
<span class="sourceLineNo">118</span> return null;<a name="line.118"></a>
|
||||
<span class="sourceLineNo">119</span> }<a name="line.119"></a>
|
||||
<span class="sourceLineNo">120</span><a name="line.120"></a>
|
||||
<span class="sourceLineNo">121</span> List<ProxiedPlayer> matches = new ArrayList<>(ProxyServer.getInstance().matchPlayer(name));<a name="line.121"></a>
|
||||
<span class="sourceLineNo">122</span><a name="line.122"></a>
|
||||
<span class="sourceLineNo">123</span> if (matches.size() > 1) {<a name="line.123"></a>
|
||||
<span class="sourceLineNo">124</span> String allMatches = matches.stream().map(ProxiedPlayer::getName).collect(Collectors.joining(", "));<a name="line.124"></a>
|
||||
<span class="sourceLineNo">125</span> issuer.sendError(MinecraftMessageKeys.MULTIPLE_PLAYERS_MATCH,<a name="line.125"></a>
|
||||
<span class="sourceLineNo">126</span> "{search}", name, "{all}", allMatches);<a name="line.126"></a>
|
||||
<span class="sourceLineNo">127</span> return null;<a name="line.127"></a>
|
||||
<span class="sourceLineNo">128</span> }<a name="line.128"></a>
|
||||
<span class="sourceLineNo">129</span><a name="line.129"></a>
|
||||
<span class="sourceLineNo">130</span> if (matches.isEmpty()) {<a name="line.130"></a>
|
||||
<span class="sourceLineNo">131</span> issuer.sendError(MinecraftMessageKeys.NO_PLAYER_FOUND_SERVER,<a name="line.131"></a>
|
||||
<span class="sourceLineNo">132</span> "{search}", name);<a name="line.132"></a>
|
||||
<span class="sourceLineNo">133</span> return null;<a name="line.133"></a>
|
||||
<span class="sourceLineNo">134</span> }<a name="line.134"></a>
|
||||
<span class="sourceLineNo">135</span><a name="line.135"></a>
|
||||
<span class="sourceLineNo">136</span> return matches.get(0);<a name="line.136"></a>
|
||||
<span class="sourceLineNo">137</span> }<a name="line.137"></a>
|
||||
<span class="sourceLineNo">138</span><a name="line.138"></a>
|
||||
<span class="sourceLineNo">139</span> return matches.get(0);<a name="line.139"></a>
|
||||
<span class="sourceLineNo">140</span> }<a name="line.140"></a>
|
||||
<span class="sourceLineNo">141</span><a name="line.141"></a>
|
||||
<span class="sourceLineNo">142</span> /**<a name="line.142"></a>
|
||||
<span class="sourceLineNo">143</span> * Please move to the CommandIssuer version<a name="line.143"></a>
|
||||
<span class="sourceLineNo">144</span> * @deprecated<a name="line.144"></a>
|
||||
<span class="sourceLineNo">145</span> */<a name="line.145"></a>
|
||||
<span class="sourceLineNo">146</span> public static ProxiedPlayer findPlayerSmart(CommandSender requester, String search) {<a name="line.146"></a>
|
||||
<span class="sourceLineNo">147</span> CommandManager manager = CommandManager.getCurrentCommandManager();<a name="line.147"></a>
|
||||
<span class="sourceLineNo">148</span> if (manager != null) {<a name="line.148"></a>
|
||||
<span class="sourceLineNo">149</span> return findPlayerSmart(manager.getCommandIssuer(requester), search);<a name="line.149"></a>
|
||||
<span class="sourceLineNo">150</span> }<a name="line.150"></a>
|
||||
<span class="sourceLineNo">151</span> throw new IllegalStateException("You may not use the ACFBungeeUtil#findPlayerSmart(CommandSender) async to the command execution.");<a name="line.151"></a>
|
||||
<span class="sourceLineNo">152</span> }<a name="line.152"></a>
|
||||
<span class="sourceLineNo">153</span><a name="line.153"></a>
|
||||
<span class="sourceLineNo">154</span> public static boolean isValidName(String name) {<a name="line.154"></a>
|
||||
<span class="sourceLineNo">155</span> return name != null && !name.isEmpty() && ACFPatterns.VALID_NAME_PATTERN.matcher(name).matches();<a name="line.155"></a>
|
||||
<span class="sourceLineNo">156</span> }<a name="line.156"></a>
|
||||
<span class="sourceLineNo">157</span><a name="line.157"></a>
|
||||
<span class="sourceLineNo">158</span> public static <T> T validate(T object, String message, Object... values) {<a name="line.158"></a>
|
||||
<span class="sourceLineNo">159</span> if (object == null) {<a name="line.159"></a>
|
||||
<span class="sourceLineNo">160</span> throw new NullPointerException(String.format(message, values));<a name="line.160"></a>
|
||||
<span class="sourceLineNo">161</span> }<a name="line.161"></a>
|
||||
<span class="sourceLineNo">162</span> return object;<a name="line.162"></a>
|
||||
<span class="sourceLineNo">163</span> }<a name="line.163"></a>
|
||||
<span class="sourceLineNo">164</span><a name="line.164"></a>
|
||||
<span class="sourceLineNo">165</span><a name="line.165"></a>
|
||||
<span class="sourceLineNo">166</span>}<a name="line.166"></a>
|
||||
<span class="sourceLineNo">139</span> /**<a name="line.139"></a>
|
||||
<span class="sourceLineNo">140</span> * Please move to the CommandIssuer version<a name="line.140"></a>
|
||||
<span class="sourceLineNo">141</span> *<a name="line.141"></a>
|
||||
<span class="sourceLineNo">142</span> * @deprecated<a name="line.142"></a>
|
||||
<span class="sourceLineNo">143</span> */<a name="line.143"></a>
|
||||
<span class="sourceLineNo">144</span> public static ProxiedPlayer findPlayerSmart(CommandSender requester, String search) {<a name="line.144"></a>
|
||||
<span class="sourceLineNo">145</span> CommandManager manager = CommandManager.getCurrentCommandManager();<a name="line.145"></a>
|
||||
<span class="sourceLineNo">146</span> if (manager != null) {<a name="line.146"></a>
|
||||
<span class="sourceLineNo">147</span> return findPlayerSmart(manager.getCommandIssuer(requester), search);<a name="line.147"></a>
|
||||
<span class="sourceLineNo">148</span> }<a name="line.148"></a>
|
||||
<span class="sourceLineNo">149</span> throw new IllegalStateException("You may not use the ACFBungeeUtil#findPlayerSmart(CommandSender) async to the command execution.");<a name="line.149"></a>
|
||||
<span class="sourceLineNo">150</span> }<a name="line.150"></a>
|
||||
<span class="sourceLineNo">151</span><a name="line.151"></a>
|
||||
<span class="sourceLineNo">152</span> public static boolean isValidName(String name) {<a name="line.152"></a>
|
||||
<span class="sourceLineNo">153</span> return name != null && !name.isEmpty() && ACFPatterns.VALID_NAME_PATTERN.matcher(name).matches();<a name="line.153"></a>
|
||||
<span class="sourceLineNo">154</span> }<a name="line.154"></a>
|
||||
<span class="sourceLineNo">155</span><a name="line.155"></a>
|
||||
<span class="sourceLineNo">156</span> public static <T> T validate(T object, String message, Object... values) {<a name="line.156"></a>
|
||||
<span class="sourceLineNo">157</span> if (object == null) {<a name="line.157"></a>
|
||||
<span class="sourceLineNo">158</span> throw new NullPointerException(String.format(message, values));<a name="line.158"></a>
|
||||
<span class="sourceLineNo">159</span> }<a name="line.159"></a>
|
||||
<span class="sourceLineNo">160</span> return object;<a name="line.160"></a>
|
||||
<span class="sourceLineNo">161</span> }<a name="line.161"></a>
|
||||
<span class="sourceLineNo">162</span><a name="line.162"></a>
|
||||
<span class="sourceLineNo">163</span><a name="line.163"></a>
|
||||
<span class="sourceLineNo">164</span>}<a name="line.164"></a>
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -8,23 +8,85 @@
|
||||
<div class="sourceContainer">
|
||||
<pre><span class="sourceLineNo">001</span>package co.aikar.commands;<a name="line.1"></a>
|
||||
<span class="sourceLineNo">002</span><a name="line.2"></a>
|
||||
<span class="sourceLineNo">003</span>public class BungeeLocales extends Locales {<a name="line.3"></a>
|
||||
<span class="sourceLineNo">004</span> private final BungeeCommandManager manager;<a name="line.4"></a>
|
||||
<span class="sourceLineNo">005</span><a name="line.5"></a>
|
||||
<span class="sourceLineNo">006</span> public BungeeLocales(BungeeCommandManager manager) {<a name="line.6"></a>
|
||||
<span class="sourceLineNo">007</span> super(manager);<a name="line.7"></a>
|
||||
<span class="sourceLineNo">008</span><a name="line.8"></a>
|
||||
<span class="sourceLineNo">009</span> this.manager = manager;<a name="line.9"></a>
|
||||
<span class="sourceLineNo">010</span> this.addBundleClassLoader(this.manager.getPlugin().getClass().getClassLoader());<a name="line.10"></a>
|
||||
<span class="sourceLineNo">011</span> }<a name="line.11"></a>
|
||||
<span class="sourceLineNo">012</span><a name="line.12"></a>
|
||||
<span class="sourceLineNo">013</span> @Override<a name="line.13"></a>
|
||||
<span class="sourceLineNo">014</span> public void loadLanguages() {<a name="line.14"></a>
|
||||
<span class="sourceLineNo">015</span> super.loadLanguages();<a name="line.15"></a>
|
||||
<span class="sourceLineNo">016</span> String pluginName = "acf-" + manager.plugin.getDescription().getName();<a name="line.16"></a>
|
||||
<span class="sourceLineNo">017</span> addMessageBundles("acf-minecraft", pluginName, pluginName.toLowerCase());<a name="line.17"></a>
|
||||
<span class="sourceLineNo">018</span> }<a name="line.18"></a>
|
||||
<span class="sourceLineNo">019</span>}<a name="line.19"></a>
|
||||
<span class="sourceLineNo">003</span>import co.aikar.locales.MessageKey;<a name="line.3"></a>
|
||||
<span class="sourceLineNo">004</span>import net.md_5.bungee.config.Configuration;<a name="line.4"></a>
|
||||
<span class="sourceLineNo">005</span>import net.md_5.bungee.config.ConfigurationProvider;<a name="line.5"></a>
|
||||
<span class="sourceLineNo">006</span>import net.md_5.bungee.config.YamlConfiguration;<a name="line.6"></a>
|
||||
<span class="sourceLineNo">007</span><a name="line.7"></a>
|
||||
<span class="sourceLineNo">008</span>import java.io.File;<a name="line.8"></a>
|
||||
<span class="sourceLineNo">009</span>import java.io.IOException;<a name="line.9"></a>
|
||||
<span class="sourceLineNo">010</span>import java.util.Locale;<a name="line.10"></a>
|
||||
<span class="sourceLineNo">011</span><a name="line.11"></a>
|
||||
<span class="sourceLineNo">012</span>public class BungeeLocales extends Locales {<a name="line.12"></a>
|
||||
<span class="sourceLineNo">013</span> private final BungeeCommandManager manager;<a name="line.13"></a>
|
||||
<span class="sourceLineNo">014</span><a name="line.14"></a>
|
||||
<span class="sourceLineNo">015</span> public BungeeLocales(BungeeCommandManager manager) {<a name="line.15"></a>
|
||||
<span class="sourceLineNo">016</span> super(manager);<a name="line.16"></a>
|
||||
<span class="sourceLineNo">017</span><a name="line.17"></a>
|
||||
<span class="sourceLineNo">018</span> this.manager = manager;<a name="line.18"></a>
|
||||
<span class="sourceLineNo">019</span> this.addBundleClassLoader(this.manager.getPlugin().getClass().getClassLoader());<a name="line.19"></a>
|
||||
<span class="sourceLineNo">020</span> }<a name="line.20"></a>
|
||||
<span class="sourceLineNo">021</span><a name="line.21"></a>
|
||||
<span class="sourceLineNo">022</span> @Override<a name="line.22"></a>
|
||||
<span class="sourceLineNo">023</span> public void loadLanguages() {<a name="line.23"></a>
|
||||
<span class="sourceLineNo">024</span> super.loadLanguages();<a name="line.24"></a>
|
||||
<span class="sourceLineNo">025</span> String pluginName = "acf-" + manager.plugin.getDescription().getName();<a name="line.25"></a>
|
||||
<span class="sourceLineNo">026</span> addMessageBundles("acf-minecraft", pluginName, pluginName.toLowerCase());<a name="line.26"></a>
|
||||
<span class="sourceLineNo">027</span> }<a name="line.27"></a>
|
||||
<span class="sourceLineNo">028</span><a name="line.28"></a>
|
||||
<span class="sourceLineNo">029</span> /**<a name="line.29"></a>
|
||||
<span class="sourceLineNo">030</span> * Loads the given file<a name="line.30"></a>
|
||||
<span class="sourceLineNo">031</span> *<a name="line.31"></a>
|
||||
<span class="sourceLineNo">032</span> * @param file<a name="line.32"></a>
|
||||
<span class="sourceLineNo">033</span> * @param locale<a name="line.33"></a>
|
||||
<span class="sourceLineNo">034</span> * @return If any language keys were added<a name="line.34"></a>
|
||||
<span class="sourceLineNo">035</span> * @throws IOException<a name="line.35"></a>
|
||||
<span class="sourceLineNo">036</span> */<a name="line.36"></a>
|
||||
<span class="sourceLineNo">037</span> public boolean loadYamlLanguageFile(File file, Locale locale) throws IOException {<a name="line.37"></a>
|
||||
<span class="sourceLineNo">038</span> Configuration yamlConfiguration = ConfigurationProvider.getProvider(YamlConfiguration.class).load(file);<a name="line.38"></a>
|
||||
<span class="sourceLineNo">039</span> return loadLanguage(yamlConfiguration, locale);<a name="line.39"></a>
|
||||
<span class="sourceLineNo">040</span> }<a name="line.40"></a>
|
||||
<span class="sourceLineNo">041</span><a name="line.41"></a>
|
||||
<span class="sourceLineNo">042</span> /**<a name="line.42"></a>
|
||||
<span class="sourceLineNo">043</span> * Loads a file out of the plugins data folder by the given name<a name="line.43"></a>
|
||||
<span class="sourceLineNo">044</span> *<a name="line.44"></a>
|
||||
<span class="sourceLineNo">045</span> * @param file<a name="line.45"></a>
|
||||
<span class="sourceLineNo">046</span> * @param locale<a name="line.46"></a>
|
||||
<span class="sourceLineNo">047</span> * @return If any language keys were added<a name="line.47"></a>
|
||||
<span class="sourceLineNo">048</span> * @throws IOException<a name="line.48"></a>
|
||||
<span class="sourceLineNo">049</span> */<a name="line.49"></a>
|
||||
<span class="sourceLineNo">050</span> public boolean loadYamlLanguageFile(String file, Locale locale) throws IOException {<a name="line.50"></a>
|
||||
<span class="sourceLineNo">051</span> Configuration yamlConfiguration = ConfigurationProvider.getProvider(YamlConfiguration.class).load(new File(this.manager.plugin.getDataFolder(), file));<a name="line.51"></a>
|
||||
<span class="sourceLineNo">052</span> return loadLanguage(yamlConfiguration, locale);<a name="line.52"></a>
|
||||
<span class="sourceLineNo">053</span> }<a name="line.53"></a>
|
||||
<span class="sourceLineNo">054</span><a name="line.54"></a>
|
||||
<span class="sourceLineNo">055</span><a name="line.55"></a>
|
||||
<span class="sourceLineNo">056</span> /**<a name="line.56"></a>
|
||||
<span class="sourceLineNo">057</span> * Loads every message from the Configuration object. Any nested values will be treated as namespace<a name="line.57"></a>
|
||||
<span class="sourceLineNo">058</span> * so acf-core:\n\tfoo: bar will be acf-core.foo = bar<a name="line.58"></a>
|
||||
<span class="sourceLineNo">059</span> *<a name="line.59"></a>
|
||||
<span class="sourceLineNo">060</span> * @param config<a name="line.60"></a>
|
||||
<span class="sourceLineNo">061</span> * @param locale<a name="line.61"></a>
|
||||
<span class="sourceLineNo">062</span> * @return If any language keys were added<a name="line.62"></a>
|
||||
<span class="sourceLineNo">063</span> */<a name="line.63"></a>
|
||||
<span class="sourceLineNo">064</span> public boolean loadLanguage(Configuration config, Locale locale) {<a name="line.64"></a>
|
||||
<span class="sourceLineNo">065</span> boolean loaded = false;<a name="line.65"></a>
|
||||
<span class="sourceLineNo">066</span> for (String parentKey : config.getKeys()) {<a name="line.66"></a>
|
||||
<span class="sourceLineNo">067</span> Configuration inner = config.getSection(parentKey);<a name="line.67"></a>
|
||||
<span class="sourceLineNo">068</span> if (inner == null) {<a name="line.68"></a>
|
||||
<span class="sourceLineNo">069</span> continue;<a name="line.69"></a>
|
||||
<span class="sourceLineNo">070</span> }<a name="line.70"></a>
|
||||
<span class="sourceLineNo">071</span> for (String key : inner.getKeys()) {<a name="line.71"></a>
|
||||
<span class="sourceLineNo">072</span> String value = inner.getString(key);<a name="line.72"></a>
|
||||
<span class="sourceLineNo">073</span> if (value != null && !value.isEmpty()) {<a name="line.73"></a>
|
||||
<span class="sourceLineNo">074</span> addMessage(locale, MessageKey.of(parentKey + "." + key), value);<a name="line.74"></a>
|
||||
<span class="sourceLineNo">075</span> loaded = true;<a name="line.75"></a>
|
||||
<span class="sourceLineNo">076</span> }<a name="line.76"></a>
|
||||
<span class="sourceLineNo">077</span> }<a name="line.77"></a>
|
||||
<span class="sourceLineNo">078</span> }<a name="line.78"></a>
|
||||
<span class="sourceLineNo">079</span> return loaded;<a name="line.79"></a>
|
||||
<span class="sourceLineNo">080</span> }<a name="line.80"></a>
|
||||
<span class="sourceLineNo">081</span>}<a name="line.81"></a>
|
||||
|
||||
|
||||
|
||||
|
||||
+1
-1
@@ -102,7 +102,7 @@
|
||||
</dl>
|
||||
<hr>
|
||||
<br>
|
||||
<pre>public static interface <a href="../../../src-html/co/aikar/commands/CommandCompletions.html#line.302">CommandCompletions.AsyncCommandCompletionHandler</a><C extends <a href="../../../co/aikar/commands/CommandCompletionContext.html" title="class in co.aikar.commands">CommandCompletionContext</a>>
|
||||
<pre>public static interface <a href="../../../src-html/co/aikar/commands/CommandCompletions.html#line.303">CommandCompletions.AsyncCommandCompletionHandler</a><C extends <a href="../../../co/aikar/commands/CommandCompletionContext.html" title="class in co.aikar.commands">CommandCompletionContext</a>>
|
||||
extends <a href="../../../co/aikar/commands/CommandCompletions.CommandCompletionHandler.html" title="interface in co.aikar.commands">CommandCompletions.CommandCompletionHandler</a><C></pre>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
@@ -108,7 +108,7 @@ var activeTableTab = "activeTableTab";
|
||||
</dl>
|
||||
<hr>
|
||||
<br>
|
||||
<pre>public static interface <a href="../../../src-html/co/aikar/commands/CommandCompletions.html#line.298">CommandCompletions.CommandCompletionHandler</a><C extends <a href="../../../co/aikar/commands/CommandCompletionContext.html" title="class in co.aikar.commands">CommandCompletionContext</a>></pre>
|
||||
<pre>public static interface <a href="../../../src-html/co/aikar/commands/CommandCompletions.html#line.299">CommandCompletions.CommandCompletionHandler</a><C extends <a href="../../../co/aikar/commands/CommandCompletionContext.html" title="class in co.aikar.commands">CommandCompletionContext</a>></pre>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
@@ -154,7 +154,7 @@ var activeTableTab = "activeTableTab";
|
||||
<ul class="blockListLast">
|
||||
<li class="blockList">
|
||||
<h4>getCompletions</h4>
|
||||
<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a><<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>> <a href="../../../src-html/co/aikar/commands/CommandCompletions.CommandCompletionHandler.html#line.299">getCompletions</a>(<a href="../../../co/aikar/commands/CommandCompletions.CommandCompletionHandler.html" title="type parameter in CommandCompletions.CommandCompletionHandler">C</a> context)
|
||||
<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a><<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>> <a href="../../../src-html/co/aikar/commands/CommandCompletions.CommandCompletionHandler.html#line.300">getCompletions</a>(<a href="../../../co/aikar/commands/CommandCompletions.CommandCompletionHandler.html" title="type parameter in CommandCompletions.CommandCompletionHandler">C</a> context)
|
||||
throws <a href="../../../co/aikar/commands/InvalidCommandArgument.html" title="class in co.aikar.commands">InvalidCommandArgument</a></pre>
|
||||
<dl>
|
||||
<dt><span class="throwsLabel">Throws:</span></dt>
|
||||
|
||||
@@ -125,7 +125,7 @@
|
||||
</dl>
|
||||
<hr>
|
||||
<br>
|
||||
<pre>public static class <a href="../../../src-html/co/aikar/commands/CommandCompletions.html#line.305">CommandCompletions.SyncCompletionRequired</a>
|
||||
<pre>public static class <a href="../../../src-html/co/aikar/commands/CommandCompletions.html#line.306">CommandCompletions.SyncCompletionRequired</a>
|
||||
extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/RuntimeException.html?is-external=true" title="class or interface in java.lang">RuntimeException</a></pre>
|
||||
<dl>
|
||||
<dt><span class="seeLabel">See Also:</span></dt>
|
||||
@@ -194,7 +194,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/RuntimeExce
|
||||
<ul class="blockListLast">
|
||||
<li class="blockList">
|
||||
<h4>SyncCompletionRequired</h4>
|
||||
<pre>public <a href="../../../src-html/co/aikar/commands/CommandCompletions.SyncCompletionRequired.html#line.305">SyncCompletionRequired</a>()</pre>
|
||||
<pre>public <a href="../../../src-html/co/aikar/commands/CommandCompletions.SyncCompletionRequired.html#line.306">SyncCompletionRequired</a>()</pre>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
@@ -249,7 +249,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<li class="blockList">
|
||||
<h4>registerSenderAwareContext</h4>
|
||||
<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
|
||||
public <T> void <a href="../../../src-html/co/aikar/commands/CommandContexts.html#line.281">registerSenderAwareContext</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a><T> context,
|
||||
public <T> void <a href="../../../src-html/co/aikar/commands/CommandContexts.html#line.294">registerSenderAwareContext</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a><T> context,
|
||||
<a href="../../../co/aikar/commands/contexts/IssuerAwareContextResolver.html" title="interface in co.aikar.commands.contexts">IssuerAwareContextResolver</a><T,<a href="../../../co/aikar/commands/CommandContexts.html" title="type parameter in CommandContexts">R</a>> supplier)</pre>
|
||||
<div class="block"><span class="deprecatedLabel">Deprecated.</span> <span class="deprecationComment">Please switch to <a href="../../../co/aikar/commands/CommandContexts.html#registerIssuerAwareContext-java.lang.Class-co.aikar.commands.contexts.IssuerAwareContextResolver-"><code>registerIssuerAwareContext(Class, IssuerAwareContextResolver)</code></a>
|
||||
as the core wants to use the platform agnostic term of "Issuer" instead of Sender</span></div>
|
||||
@@ -265,7 +265,7 @@ public <T> void <a href="../../../src-html/co/aikar/command
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>registerIssuerAwareContext</h4>
|
||||
<pre>public <T> void <a href="../../../src-html/co/aikar/commands/CommandContexts.html#line.291">registerIssuerAwareContext</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a><T> context,
|
||||
<pre>public <T> void <a href="../../../src-html/co/aikar/commands/CommandContexts.html#line.304">registerIssuerAwareContext</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a><T> context,
|
||||
<a href="../../../co/aikar/commands/contexts/IssuerAwareContextResolver.html" title="interface in co.aikar.commands.contexts">IssuerAwareContextResolver</a><T,<a href="../../../co/aikar/commands/CommandContexts.html" title="type parameter in CommandContexts">R</a>> supplier)</pre>
|
||||
<div class="block">Registers a context resolver that may conditionally consume input, falling back to using the context of the
|
||||
issuer to potentially fulfill this context.
|
||||
@@ -279,7 +279,7 @@ public <T> void <a href="../../../src-html/co/aikar/command
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>registerIssuerOnlyContext</h4>
|
||||
<pre>public <T> void <a href="../../../src-html/co/aikar/commands/CommandContexts.html#line.299">registerIssuerOnlyContext</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a><T> context,
|
||||
<pre>public <T> void <a href="../../../src-html/co/aikar/commands/CommandContexts.html#line.312">registerIssuerOnlyContext</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a><T> context,
|
||||
<a href="../../../co/aikar/commands/contexts/IssuerOnlyContextResolver.html" title="interface in co.aikar.commands.contexts">IssuerOnlyContextResolver</a><T,<a href="../../../co/aikar/commands/CommandContexts.html" title="type parameter in CommandContexts">R</a>> supplier)</pre>
|
||||
<div class="block">Registers a context resolver that will never consume input. It will always satisfy its context based on the
|
||||
issuer of the command, so it will not appear in syntax strings.</div>
|
||||
@@ -291,7 +291,7 @@ public <T> void <a href="../../../src-html/co/aikar/command
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>registerOptionalContext</h4>
|
||||
<pre>public <T> void <a href="../../../src-html/co/aikar/commands/CommandContexts.html#line.307">registerOptionalContext</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a><T> context,
|
||||
<pre>public <T> void <a href="../../../src-html/co/aikar/commands/CommandContexts.html#line.320">registerOptionalContext</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a><T> context,
|
||||
<a href="../../../co/aikar/commands/contexts/OptionalContextResolver.html" title="interface in co.aikar.commands.contexts">OptionalContextResolver</a><T,<a href="../../../co/aikar/commands/CommandContexts.html" title="type parameter in CommandContexts">R</a>> supplier)</pre>
|
||||
<div class="block">Registers a context that can safely accept a null input from the command issuer to resolve. This resolver should always
|
||||
call <a href="../../../co/aikar/commands/CommandExecutionContext.html#popFirstArg--"><code>CommandExecutionContext.popFirstArg()</code></a></div>
|
||||
@@ -303,7 +303,7 @@ public <T> void <a href="../../../src-html/co/aikar/command
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>registerContext</h4>
|
||||
<pre>public <T> void <a href="../../../src-html/co/aikar/commands/CommandContexts.html#line.315">registerContext</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a><T> context,
|
||||
<pre>public <T> void <a href="../../../src-html/co/aikar/commands/CommandContexts.html#line.328">registerContext</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a><T> context,
|
||||
<a href="../../../co/aikar/commands/contexts/ContextResolver.html" title="interface in co.aikar.commands.contexts">ContextResolver</a><T,<a href="../../../co/aikar/commands/CommandContexts.html" title="type parameter in CommandContexts">R</a>> supplier)</pre>
|
||||
<div class="block">Registers a context that requires input from the command issuer to resolve. This resolver should always
|
||||
call <a href="../../../co/aikar/commands/CommandExecutionContext.html#popFirstArg--"><code>CommandExecutionContext.popFirstArg()</code></a></div>
|
||||
@@ -315,7 +315,7 @@ public <T> void <a href="../../../src-html/co/aikar/command
|
||||
<ul class="blockListLast">
|
||||
<li class="blockList">
|
||||
<h4>getResolver</h4>
|
||||
<pre>public <a href="../../../co/aikar/commands/contexts/ContextResolver.html" title="interface in co.aikar.commands.contexts">ContextResolver</a><?,<a href="../../../co/aikar/commands/CommandContexts.html" title="type parameter in CommandContexts">R</a>> <a href="../../../src-html/co/aikar/commands/CommandContexts.html#line.319">getResolver</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a><?> type)</pre>
|
||||
<pre>public <a href="../../../co/aikar/commands/contexts/ContextResolver.html" title="interface in co.aikar.commands.contexts">ContextResolver</a><?,<a href="../../../co/aikar/commands/CommandContexts.html" title="type parameter in CommandContexts">R</a>> <a href="../../../src-html/co/aikar/commands/CommandContexts.html#line.332">getResolver</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a><?> type)</pre>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
@@ -186,77 +186,81 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
</tr>
|
||||
<tr class="altColor">
|
||||
<td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Locale.html?is-external=true" title="class or interface in java.util">Locale</a></code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/Locales.html#ITALIAN">ITALIAN</a></span></code> </td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/Locales.html#HUNGARIAN">HUNGARIAN</a></span></code> </td>
|
||||
</tr>
|
||||
<tr class="rowColor">
|
||||
<td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Locale.html?is-external=true" title="class or interface in java.util">Locale</a></code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/Locales.html#ITALIAN">ITALIAN</a></span></code> </td>
|
||||
</tr>
|
||||
<tr class="altColor">
|
||||
<td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Locale.html?is-external=true" title="class or interface in java.util">Locale</a></code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/Locales.html#JAPANESE">JAPANESE</a></span></code> </td>
|
||||
</tr>
|
||||
<tr class="altColor">
|
||||
<tr class="rowColor">
|
||||
<td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Locale.html?is-external=true" title="class or interface in java.util">Locale</a></code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/Locales.html#KOREAN">KOREAN</a></span></code> </td>
|
||||
</tr>
|
||||
<tr class="rowColor">
|
||||
<tr class="altColor">
|
||||
<td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Locale.html?is-external=true" title="class or interface in java.util">Locale</a></code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/Locales.html#LATIN">LATIN</a></span></code> </td>
|
||||
</tr>
|
||||
<tr class="altColor">
|
||||
<tr class="rowColor">
|
||||
<td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Locale.html?is-external=true" title="class or interface in java.util">Locale</a></code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/Locales.html#NORWEGIAN_BOKMAAL">NORWEGIAN_BOKMAAL</a></span></code> </td>
|
||||
</tr>
|
||||
<tr class="rowColor">
|
||||
<tr class="altColor">
|
||||
<td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Locale.html?is-external=true" title="class or interface in java.util">Locale</a></code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/Locales.html#NORWEGIAN_NYNORSK">NORWEGIAN_NYNORSK</a></span></code> </td>
|
||||
</tr>
|
||||
<tr class="altColor">
|
||||
<tr class="rowColor">
|
||||
<td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Locale.html?is-external=true" title="class or interface in java.util">Locale</a></code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/Locales.html#POLISH">POLISH</a></span></code> </td>
|
||||
</tr>
|
||||
<tr class="rowColor">
|
||||
<tr class="altColor">
|
||||
<td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Locale.html?is-external=true" title="class or interface in java.util">Locale</a></code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/Locales.html#PORTUGUESE">PORTUGUESE</a></span></code> </td>
|
||||
</tr>
|
||||
<tr class="altColor">
|
||||
<tr class="rowColor">
|
||||
<td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Locale.html?is-external=true" title="class or interface in java.util">Locale</a></code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/Locales.html#ROMANIAN">ROMANIAN</a></span></code> </td>
|
||||
</tr>
|
||||
<tr class="rowColor">
|
||||
<tr class="altColor">
|
||||
<td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Locale.html?is-external=true" title="class or interface in java.util">Locale</a></code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/Locales.html#RUSSIAN">RUSSIAN</a></span></code> </td>
|
||||
</tr>
|
||||
<tr class="altColor">
|
||||
<tr class="rowColor">
|
||||
<td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Locale.html?is-external=true" title="class or interface in java.util">Locale</a></code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/Locales.html#SIMPLIFIED_CHINESE">SIMPLIFIED_CHINESE</a></span></code> </td>
|
||||
</tr>
|
||||
<tr class="rowColor">
|
||||
<tr class="altColor">
|
||||
<td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Locale.html?is-external=true" title="class or interface in java.util">Locale</a></code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/Locales.html#SPANISH">SPANISH</a></span></code> </td>
|
||||
</tr>
|
||||
<tr class="altColor">
|
||||
<tr class="rowColor">
|
||||
<td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Locale.html?is-external=true" title="class or interface in java.util">Locale</a></code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/Locales.html#SWEDISH">SWEDISH</a></span></code> </td>
|
||||
</tr>
|
||||
<tr class="rowColor">
|
||||
<tr class="altColor">
|
||||
<td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Locale.html?is-external=true" title="class or interface in java.util">Locale</a></code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/Locales.html#THAI">THAI</a></span></code> </td>
|
||||
</tr>
|
||||
<tr class="altColor">
|
||||
<tr class="rowColor">
|
||||
<td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Locale.html?is-external=true" title="class or interface in java.util">Locale</a></code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/Locales.html#TRADITIONAL_CHINESE">TRADITIONAL_CHINESE</a></span></code> </td>
|
||||
</tr>
|
||||
<tr class="rowColor">
|
||||
<tr class="altColor">
|
||||
<td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Locale.html?is-external=true" title="class or interface in java.util">Locale</a></code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/Locales.html#TURKISH">TURKISH</a></span></code> </td>
|
||||
</tr>
|
||||
<tr class="altColor">
|
||||
<tr class="rowColor">
|
||||
<td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Locale.html?is-external=true" title="class or interface in java.util">Locale</a></code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/Locales.html#UKRANIAN">UKRANIAN</a></span></code> </td>
|
||||
</tr>
|
||||
<tr class="rowColor">
|
||||
<tr class="altColor">
|
||||
<td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Locale.html?is-external=true" title="class or interface in java.util">Locale</a></code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/Locales.html#VIETNAMESE">VIETNAMESE</a></span></code> </td>
|
||||
</tr>
|
||||
<tr class="altColor">
|
||||
<tr class="rowColor">
|
||||
<td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Locale.html?is-external=true" title="class or interface in java.util">Locale</a></code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/Locales.html#WELSH">WELSH</a></span></code> </td>
|
||||
</tr>
|
||||
@@ -667,12 +671,21 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<a name="NORWEGIAN_NYNORSK">
|
||||
<!-- -->
|
||||
</a>
|
||||
<ul class="blockListLast">
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>NORWEGIAN_NYNORSK</h4>
|
||||
<pre>public static final <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Locale.html?is-external=true" title="class or interface in java.util">Locale</a> <a href="../../../src-html/co/aikar/commands/Locales.html#line.78">NORWEGIAN_NYNORSK</a></pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="HUNGARIAN">
|
||||
<!-- -->
|
||||
</a>
|
||||
<ul class="blockListLast">
|
||||
<li class="blockList">
|
||||
<h4>HUNGARIAN</h4>
|
||||
<pre>public static final <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Locale.html?is-external=true" title="class or interface in java.util">Locale</a> <a href="../../../src-html/co/aikar/commands/Locales.html#line.79">HUNGARIAN</a></pre>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<!-- ========= CONSTRUCTOR DETAIL ======== -->
|
||||
@@ -687,7 +700,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<ul class="blockListLast">
|
||||
<li class="blockList">
|
||||
<h4>Locales</h4>
|
||||
<pre>public <a href="../../../src-html/co/aikar/commands/Locales.html#line.85">Locales</a>(<a href="../../../co/aikar/commands/CommandManager.html" title="class in co.aikar.commands">CommandManager</a> manager)</pre>
|
||||
<pre>public <a href="../../../src-html/co/aikar/commands/Locales.html#line.86">Locales</a>(<a href="../../../co/aikar/commands/CommandManager.html" title="class in co.aikar.commands">CommandManager</a> manager)</pre>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
@@ -704,7 +717,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>loadLanguages</h4>
|
||||
<pre>public void <a href="../../../src-html/co/aikar/commands/Locales.html#line.91">loadLanguages</a>()</pre>
|
||||
<pre>public void <a href="../../../src-html/co/aikar/commands/Locales.html#line.92">loadLanguages</a>()</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="getDefaultLocale--">
|
||||
@@ -713,7 +726,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>getDefaultLocale</h4>
|
||||
<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Locale.html?is-external=true" title="class or interface in java.util">Locale</a> <a href="../../../src-html/co/aikar/commands/Locales.html#line.95">getDefaultLocale</a>()</pre>
|
||||
<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Locale.html?is-external=true" title="class or interface in java.util">Locale</a> <a href="../../../src-html/co/aikar/commands/Locales.html#line.96">getDefaultLocale</a>()</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="setDefaultLocale-java.util.Locale-">
|
||||
@@ -722,7 +735,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>setDefaultLocale</h4>
|
||||
<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Locale.html?is-external=true" title="class or interface in java.util">Locale</a> <a href="../../../src-html/co/aikar/commands/Locales.html#line.99">setDefaultLocale</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Locale.html?is-external=true" title="class or interface in java.util">Locale</a> locale)</pre>
|
||||
<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Locale.html?is-external=true" title="class or interface in java.util">Locale</a> <a href="../../../src-html/co/aikar/commands/Locales.html#line.100">setDefaultLocale</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Locale.html?is-external=true" title="class or interface in java.util">Locale</a> locale)</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="loadMissingBundles--">
|
||||
@@ -731,7 +744,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>loadMissingBundles</h4>
|
||||
<pre>public void <a href="../../../src-html/co/aikar/commands/Locales.html#line.106">loadMissingBundles</a>()</pre>
|
||||
<pre>public void <a href="../../../src-html/co/aikar/commands/Locales.html#line.107">loadMissingBundles</a>()</pre>
|
||||
<div class="block">Looks for all previously loaded bundles, and if any new Supported Languages have been added, load them.</div>
|
||||
</li>
|
||||
</ul>
|
||||
@@ -741,7 +754,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>addMessageBundles</h4>
|
||||
<pre>public void <a href="../../../src-html/co/aikar/commands/Locales.html#line.119">addMessageBundles</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>... bundleNames)</pre>
|
||||
<pre>public void <a href="../../../src-html/co/aikar/commands/Locales.html#line.120">addMessageBundles</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>... bundleNames)</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="addMessageBundle-java.lang.String-java.util.Locale-">
|
||||
@@ -750,7 +763,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>addMessageBundle</h4>
|
||||
<pre>public boolean <a href="../../../src-html/co/aikar/commands/Locales.html#line.129">addMessageBundle</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> bundleName,
|
||||
<pre>public boolean <a href="../../../src-html/co/aikar/commands/Locales.html#line.130">addMessageBundle</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> bundleName,
|
||||
<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Locale.html?is-external=true" title="class or interface in java.util">Locale</a> locale)</pre>
|
||||
</li>
|
||||
</ul>
|
||||
@@ -760,7 +773,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>addMessageBundle</h4>
|
||||
<pre>public boolean <a href="../../../src-html/co/aikar/commands/Locales.html#line.140">addMessageBundle</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html?is-external=true" title="class or interface in java.lang">ClassLoader</a> classLoader,
|
||||
<pre>public boolean <a href="../../../src-html/co/aikar/commands/Locales.html#line.141">addMessageBundle</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html?is-external=true" title="class or interface in java.lang">ClassLoader</a> classLoader,
|
||||
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> bundleName,
|
||||
<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Locale.html?is-external=true" title="class or interface in java.util">Locale</a> locale)</pre>
|
||||
</li>
|
||||
@@ -771,7 +784,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>addMessageStrings</h4>
|
||||
<pre>public void <a href="../../../src-html/co/aikar/commands/Locales.html#line.153">addMessageStrings</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Locale.html?is-external=true" title="class or interface in java.util">Locale</a> locale,
|
||||
<pre>public void <a href="../../../src-html/co/aikar/commands/Locales.html#line.154">addMessageStrings</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Locale.html?is-external=true" title="class or interface in java.util">Locale</a> locale,
|
||||
@NotNull
|
||||
@NotNull <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a><<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>> messages)</pre>
|
||||
</li>
|
||||
@@ -782,7 +795,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>addMessages</h4>
|
||||
<pre>public void <a href="../../../src-html/co/aikar/commands/Locales.html#line.159">addMessages</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Locale.html?is-external=true" title="class or interface in java.util">Locale</a> locale,
|
||||
<pre>public void <a href="../../../src-html/co/aikar/commands/Locales.html#line.160">addMessages</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Locale.html?is-external=true" title="class or interface in java.util">Locale</a> locale,
|
||||
@NotNull
|
||||
@NotNull <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a><? extends co.aikar.locales.MessageKeyProvider,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>> messages)</pre>
|
||||
</li>
|
||||
@@ -793,7 +806,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>addMessage</h4>
|
||||
<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../src-html/co/aikar/commands/Locales.html#line.168">addMessage</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Locale.html?is-external=true" title="class or interface in java.util">Locale</a> locale,
|
||||
<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../src-html/co/aikar/commands/Locales.html#line.169">addMessage</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Locale.html?is-external=true" title="class or interface in java.util">Locale</a> locale,
|
||||
co.aikar.locales.MessageKeyProvider key,
|
||||
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> message)</pre>
|
||||
</li>
|
||||
@@ -804,7 +817,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>getMessage</h4>
|
||||
<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../src-html/co/aikar/commands/Locales.html#line.172">getMessage</a>(<a href="../../../co/aikar/commands/CommandIssuer.html" title="interface in co.aikar.commands">CommandIssuer</a> issuer,
|
||||
<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../src-html/co/aikar/commands/Locales.html#line.173">getMessage</a>(<a href="../../../co/aikar/commands/CommandIssuer.html" title="interface in co.aikar.commands">CommandIssuer</a> issuer,
|
||||
co.aikar.locales.MessageKeyProvider key)</pre>
|
||||
</li>
|
||||
</ul>
|
||||
@@ -814,7 +827,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>replaceI18NStrings</h4>
|
||||
<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../src-html/co/aikar/commands/Locales.html#line.182">replaceI18NStrings</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> message)</pre>
|
||||
<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../src-html/co/aikar/commands/Locales.html#line.183">replaceI18NStrings</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> message)</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="addBundleClassLoader-java.lang.ClassLoader-">
|
||||
@@ -823,7 +836,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<ul class="blockListLast">
|
||||
<li class="blockList">
|
||||
<h4>addBundleClassLoader</h4>
|
||||
<pre>public boolean <a href="../../../src-html/co/aikar/commands/Locales.html#line.203">addBundleClassLoader</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html?is-external=true" title="class or interface in java.lang">ClassLoader</a> classLoader)</pre>
|
||||
<pre>public boolean <a href="../../../src-html/co/aikar/commands/Locales.html#line.204">addBundleClassLoader</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html?is-external=true" title="class or interface in java.lang">ClassLoader</a> classLoader)</pre>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
@@ -990,6 +990,8 @@
|
||||
<dd> </dd>
|
||||
<dt><span class="memberNameLink"><a href="co/aikar/commands/Locales.html#HINDI">HINDI</a></span> - Static variable in class co.aikar.commands.<a href="co/aikar/commands/Locales.html" title="class in co.aikar.commands">Locales</a></dt>
|
||||
<dd> </dd>
|
||||
<dt><span class="memberNameLink"><a href="co/aikar/commands/Locales.html#HUNGARIAN">HUNGARIAN</a></span> - Static variable in class co.aikar.commands.<a href="co/aikar/commands/Locales.html" title="class in co.aikar.commands">Locales</a></dt>
|
||||
<dd> </dd>
|
||||
</dl>
|
||||
<a name="I:I">
|
||||
<!-- -->
|
||||
|
||||
@@ -693,7 +693,7 @@
|
||||
<span class="sourceLineNo">685</span> * @return All results to complete the command.<a name="line.685"></a>
|
||||
<span class="sourceLineNo">686</span> */<a name="line.686"></a>
|
||||
<span class="sourceLineNo">687</span> private List<String> completeCommand(CommandIssuer issuer, RegisteredCommand cmd, String[] args, String commandLabel, boolean isAsync) {<a name="line.687"></a>
|
||||
<span class="sourceLineNo">688</span> if (!cmd.hasPermission(issuer) || args.length == 0) {<a name="line.688"></a>
|
||||
<span class="sourceLineNo">688</span> if (!cmd.hasPermission(issuer) || args.length == 0 || cmd.parameters.length == 0) {<a name="line.688"></a>
|
||||
<span class="sourceLineNo">689</span> return Collections.emptyList();<a name="line.689"></a>
|
||||
<span class="sourceLineNo">690</span> }<a name="line.690"></a>
|
||||
<span class="sourceLineNo">691</span><a name="line.691"></a>
|
||||
|
||||
+44
-43
@@ -271,49 +271,50 @@
|
||||
<span class="sourceLineNo">263</span> && args.length > ACFPatterns.SPACE.split(command.complete).length) {<a name="line.263"></a>
|
||||
<span class="sourceLineNo">264</span> String start = String.join(" ", args);<a name="line.264"></a>
|
||||
<span class="sourceLineNo">265</span> completions = completions.stream()<a name="line.265"></a>
|
||||
<span class="sourceLineNo">266</span> .filter(s -> s != null && s.split(" ").length >= args.length)<a name="line.266"></a>
|
||||
<span class="sourceLineNo">267</span> .filter(s -> ApacheCommonsLangUtil.startsWithIgnoreCase(s, start))<a name="line.267"></a>
|
||||
<span class="sourceLineNo">268</span> .map(s -> {<a name="line.268"></a>
|
||||
<span class="sourceLineNo">269</span> String[] completionArgs = s.split(" ");<a name="line.269"></a>
|
||||
<span class="sourceLineNo">270</span> return String.join(" ",<a name="line.270"></a>
|
||||
<span class="sourceLineNo">271</span> Arrays.copyOfRange(completionArgs, args.length - 1, completionArgs.length));<a name="line.271"></a>
|
||||
<span class="sourceLineNo">272</span> }).collect(Collectors.toList());<a name="line.272"></a>
|
||||
<span class="sourceLineNo">273</span> }<a name="line.273"></a>
|
||||
<span class="sourceLineNo">274</span><a name="line.274"></a>
|
||||
<span class="sourceLineNo">275</span> if (completions != null) {<a name="line.275"></a>
|
||||
<span class="sourceLineNo">276</span> allCompletions.addAll(completions);<a name="line.276"></a>
|
||||
<span class="sourceLineNo">277</span> continue;<a name="line.277"></a>
|
||||
<span class="sourceLineNo">278</span> }<a name="line.278"></a>
|
||||
<span class="sourceLineNo">279</span> //noinspection ConstantIfStatement,ConstantConditions<a name="line.279"></a>
|
||||
<span class="sourceLineNo">280</span> if (false) { // Hack to fool compiler. since its sneakily thrown.<a name="line.280"></a>
|
||||
<span class="sourceLineNo">281</span> throw new CommandCompletionTextLookupException();<a name="line.281"></a>
|
||||
<span class="sourceLineNo">282</span> }<a name="line.282"></a>
|
||||
<span class="sourceLineNo">283</span> } catch (CommandCompletionTextLookupException ignored) {<a name="line.283"></a>
|
||||
<span class="sourceLineNo">284</span> // This should only happen if some other feedback error occured.<a name="line.284"></a>
|
||||
<span class="sourceLineNo">285</span> } catch (Exception e) {<a name="line.285"></a>
|
||||
<span class="sourceLineNo">286</span> command.handleException(sender, Arrays.asList(args), e);<a name="line.286"></a>
|
||||
<span class="sourceLineNo">287</span> }<a name="line.287"></a>
|
||||
<span class="sourceLineNo">288</span> // Something went wrong in lookup, fall back to input<a name="line.288"></a>
|
||||
<span class="sourceLineNo">289</span> return Collections.singletonList(input);<a name="line.289"></a>
|
||||
<span class="sourceLineNo">290</span> } else {<a name="line.290"></a>
|
||||
<span class="sourceLineNo">291</span> // Plaintext value<a name="line.291"></a>
|
||||
<span class="sourceLineNo">292</span> allCompletions.add(value);<a name="line.292"></a>
|
||||
<span class="sourceLineNo">293</span> }<a name="line.293"></a>
|
||||
<span class="sourceLineNo">294</span> }<a name="line.294"></a>
|
||||
<span class="sourceLineNo">295</span> return allCompletions;<a name="line.295"></a>
|
||||
<span class="sourceLineNo">296</span> }<a name="line.296"></a>
|
||||
<span class="sourceLineNo">297</span><a name="line.297"></a>
|
||||
<span class="sourceLineNo">298</span> public interface CommandCompletionHandler<C extends CommandCompletionContext> {<a name="line.298"></a>
|
||||
<span class="sourceLineNo">299</span> Collection<String> getCompletions(C context) throws InvalidCommandArgument;<a name="line.299"></a>
|
||||
<span class="sourceLineNo">300</span> }<a name="line.300"></a>
|
||||
<span class="sourceLineNo">301</span><a name="line.301"></a>
|
||||
<span class="sourceLineNo">302</span> public interface AsyncCommandCompletionHandler<C extends CommandCompletionContext> extends CommandCompletionHandler<C> {<a name="line.302"></a>
|
||||
<span class="sourceLineNo">303</span> }<a name="line.303"></a>
|
||||
<span class="sourceLineNo">304</span><a name="line.304"></a>
|
||||
<span class="sourceLineNo">305</span> public static class SyncCompletionRequired extends RuntimeException {<a name="line.305"></a>
|
||||
<span class="sourceLineNo">306</span> }<a name="line.306"></a>
|
||||
<span class="sourceLineNo">307</span><a name="line.307"></a>
|
||||
<span class="sourceLineNo">308</span>}<a name="line.308"></a>
|
||||
<span class="sourceLineNo">266</span> .map(s -> {<a name="line.266"></a>
|
||||
<span class="sourceLineNo">267</span> if (s != null && s.split(" ").length >= args.length && ApacheCommonsLangUtil.startsWithIgnoreCase(s, start)) {<a name="line.267"></a>
|
||||
<span class="sourceLineNo">268</span> String[] completionArgs = s.split(" ");<a name="line.268"></a>
|
||||
<span class="sourceLineNo">269</span> return String.join(" ", Arrays.copyOfRange(completionArgs, args.length - 1, completionArgs.length));<a name="line.269"></a>
|
||||
<span class="sourceLineNo">270</span> } else {<a name="line.270"></a>
|
||||
<span class="sourceLineNo">271</span> return s;<a name="line.271"></a>
|
||||
<span class="sourceLineNo">272</span> }<a name="line.272"></a>
|
||||
<span class="sourceLineNo">273</span> }).collect(Collectors.toList());<a name="line.273"></a>
|
||||
<span class="sourceLineNo">274</span> }<a name="line.274"></a>
|
||||
<span class="sourceLineNo">275</span><a name="line.275"></a>
|
||||
<span class="sourceLineNo">276</span> if (completions != null) {<a name="line.276"></a>
|
||||
<span class="sourceLineNo">277</span> allCompletions.addAll(completions);<a name="line.277"></a>
|
||||
<span class="sourceLineNo">278</span> continue;<a name="line.278"></a>
|
||||
<span class="sourceLineNo">279</span> }<a name="line.279"></a>
|
||||
<span class="sourceLineNo">280</span> //noinspection ConstantIfStatement,ConstantConditions<a name="line.280"></a>
|
||||
<span class="sourceLineNo">281</span> if (false) { // Hack to fool compiler. since its sneakily thrown.<a name="line.281"></a>
|
||||
<span class="sourceLineNo">282</span> throw new CommandCompletionTextLookupException();<a name="line.282"></a>
|
||||
<span class="sourceLineNo">283</span> }<a name="line.283"></a>
|
||||
<span class="sourceLineNo">284</span> } catch (CommandCompletionTextLookupException ignored) {<a name="line.284"></a>
|
||||
<span class="sourceLineNo">285</span> // This should only happen if some other feedback error occured.<a name="line.285"></a>
|
||||
<span class="sourceLineNo">286</span> } catch (Exception e) {<a name="line.286"></a>
|
||||
<span class="sourceLineNo">287</span> command.handleException(sender, Arrays.asList(args), e);<a name="line.287"></a>
|
||||
<span class="sourceLineNo">288</span> }<a name="line.288"></a>
|
||||
<span class="sourceLineNo">289</span> // Something went wrong in lookup, fall back to input<a name="line.289"></a>
|
||||
<span class="sourceLineNo">290</span> return Collections.singletonList(input);<a name="line.290"></a>
|
||||
<span class="sourceLineNo">291</span> } else {<a name="line.291"></a>
|
||||
<span class="sourceLineNo">292</span> // Plaintext value<a name="line.292"></a>
|
||||
<span class="sourceLineNo">293</span> allCompletions.add(value);<a name="line.293"></a>
|
||||
<span class="sourceLineNo">294</span> }<a name="line.294"></a>
|
||||
<span class="sourceLineNo">295</span> }<a name="line.295"></a>
|
||||
<span class="sourceLineNo">296</span> return allCompletions;<a name="line.296"></a>
|
||||
<span class="sourceLineNo">297</span> }<a name="line.297"></a>
|
||||
<span class="sourceLineNo">298</span><a name="line.298"></a>
|
||||
<span class="sourceLineNo">299</span> public interface CommandCompletionHandler<C extends CommandCompletionContext> {<a name="line.299"></a>
|
||||
<span class="sourceLineNo">300</span> Collection<String> getCompletions(C context) throws InvalidCommandArgument;<a name="line.300"></a>
|
||||
<span class="sourceLineNo">301</span> }<a name="line.301"></a>
|
||||
<span class="sourceLineNo">302</span><a name="line.302"></a>
|
||||
<span class="sourceLineNo">303</span> public interface AsyncCommandCompletionHandler<C extends CommandCompletionContext> extends CommandCompletionHandler<C> {<a name="line.303"></a>
|
||||
<span class="sourceLineNo">304</span> }<a name="line.304"></a>
|
||||
<span class="sourceLineNo">305</span><a name="line.305"></a>
|
||||
<span class="sourceLineNo">306</span> public static class SyncCompletionRequired extends RuntimeException {<a name="line.306"></a>
|
||||
<span class="sourceLineNo">307</span> }<a name="line.307"></a>
|
||||
<span class="sourceLineNo">308</span><a name="line.308"></a>
|
||||
<span class="sourceLineNo">309</span>}<a name="line.309"></a>
|
||||
|
||||
|
||||
|
||||
|
||||
+44
-43
@@ -271,49 +271,50 @@
|
||||
<span class="sourceLineNo">263</span> && args.length > ACFPatterns.SPACE.split(command.complete).length) {<a name="line.263"></a>
|
||||
<span class="sourceLineNo">264</span> String start = String.join(" ", args);<a name="line.264"></a>
|
||||
<span class="sourceLineNo">265</span> completions = completions.stream()<a name="line.265"></a>
|
||||
<span class="sourceLineNo">266</span> .filter(s -> s != null && s.split(" ").length >= args.length)<a name="line.266"></a>
|
||||
<span class="sourceLineNo">267</span> .filter(s -> ApacheCommonsLangUtil.startsWithIgnoreCase(s, start))<a name="line.267"></a>
|
||||
<span class="sourceLineNo">268</span> .map(s -> {<a name="line.268"></a>
|
||||
<span class="sourceLineNo">269</span> String[] completionArgs = s.split(" ");<a name="line.269"></a>
|
||||
<span class="sourceLineNo">270</span> return String.join(" ",<a name="line.270"></a>
|
||||
<span class="sourceLineNo">271</span> Arrays.copyOfRange(completionArgs, args.length - 1, completionArgs.length));<a name="line.271"></a>
|
||||
<span class="sourceLineNo">272</span> }).collect(Collectors.toList());<a name="line.272"></a>
|
||||
<span class="sourceLineNo">273</span> }<a name="line.273"></a>
|
||||
<span class="sourceLineNo">274</span><a name="line.274"></a>
|
||||
<span class="sourceLineNo">275</span> if (completions != null) {<a name="line.275"></a>
|
||||
<span class="sourceLineNo">276</span> allCompletions.addAll(completions);<a name="line.276"></a>
|
||||
<span class="sourceLineNo">277</span> continue;<a name="line.277"></a>
|
||||
<span class="sourceLineNo">278</span> }<a name="line.278"></a>
|
||||
<span class="sourceLineNo">279</span> //noinspection ConstantIfStatement,ConstantConditions<a name="line.279"></a>
|
||||
<span class="sourceLineNo">280</span> if (false) { // Hack to fool compiler. since its sneakily thrown.<a name="line.280"></a>
|
||||
<span class="sourceLineNo">281</span> throw new CommandCompletionTextLookupException();<a name="line.281"></a>
|
||||
<span class="sourceLineNo">282</span> }<a name="line.282"></a>
|
||||
<span class="sourceLineNo">283</span> } catch (CommandCompletionTextLookupException ignored) {<a name="line.283"></a>
|
||||
<span class="sourceLineNo">284</span> // This should only happen if some other feedback error occured.<a name="line.284"></a>
|
||||
<span class="sourceLineNo">285</span> } catch (Exception e) {<a name="line.285"></a>
|
||||
<span class="sourceLineNo">286</span> command.handleException(sender, Arrays.asList(args), e);<a name="line.286"></a>
|
||||
<span class="sourceLineNo">287</span> }<a name="line.287"></a>
|
||||
<span class="sourceLineNo">288</span> // Something went wrong in lookup, fall back to input<a name="line.288"></a>
|
||||
<span class="sourceLineNo">289</span> return Collections.singletonList(input);<a name="line.289"></a>
|
||||
<span class="sourceLineNo">290</span> } else {<a name="line.290"></a>
|
||||
<span class="sourceLineNo">291</span> // Plaintext value<a name="line.291"></a>
|
||||
<span class="sourceLineNo">292</span> allCompletions.add(value);<a name="line.292"></a>
|
||||
<span class="sourceLineNo">293</span> }<a name="line.293"></a>
|
||||
<span class="sourceLineNo">294</span> }<a name="line.294"></a>
|
||||
<span class="sourceLineNo">295</span> return allCompletions;<a name="line.295"></a>
|
||||
<span class="sourceLineNo">296</span> }<a name="line.296"></a>
|
||||
<span class="sourceLineNo">297</span><a name="line.297"></a>
|
||||
<span class="sourceLineNo">298</span> public interface CommandCompletionHandler<C extends CommandCompletionContext> {<a name="line.298"></a>
|
||||
<span class="sourceLineNo">299</span> Collection<String> getCompletions(C context) throws InvalidCommandArgument;<a name="line.299"></a>
|
||||
<span class="sourceLineNo">300</span> }<a name="line.300"></a>
|
||||
<span class="sourceLineNo">301</span><a name="line.301"></a>
|
||||
<span class="sourceLineNo">302</span> public interface AsyncCommandCompletionHandler<C extends CommandCompletionContext> extends CommandCompletionHandler<C> {<a name="line.302"></a>
|
||||
<span class="sourceLineNo">303</span> }<a name="line.303"></a>
|
||||
<span class="sourceLineNo">304</span><a name="line.304"></a>
|
||||
<span class="sourceLineNo">305</span> public static class SyncCompletionRequired extends RuntimeException {<a name="line.305"></a>
|
||||
<span class="sourceLineNo">306</span> }<a name="line.306"></a>
|
||||
<span class="sourceLineNo">307</span><a name="line.307"></a>
|
||||
<span class="sourceLineNo">308</span>}<a name="line.308"></a>
|
||||
<span class="sourceLineNo">266</span> .map(s -> {<a name="line.266"></a>
|
||||
<span class="sourceLineNo">267</span> if (s != null && s.split(" ").length >= args.length && ApacheCommonsLangUtil.startsWithIgnoreCase(s, start)) {<a name="line.267"></a>
|
||||
<span class="sourceLineNo">268</span> String[] completionArgs = s.split(" ");<a name="line.268"></a>
|
||||
<span class="sourceLineNo">269</span> return String.join(" ", Arrays.copyOfRange(completionArgs, args.length - 1, completionArgs.length));<a name="line.269"></a>
|
||||
<span class="sourceLineNo">270</span> } else {<a name="line.270"></a>
|
||||
<span class="sourceLineNo">271</span> return s;<a name="line.271"></a>
|
||||
<span class="sourceLineNo">272</span> }<a name="line.272"></a>
|
||||
<span class="sourceLineNo">273</span> }).collect(Collectors.toList());<a name="line.273"></a>
|
||||
<span class="sourceLineNo">274</span> }<a name="line.274"></a>
|
||||
<span class="sourceLineNo">275</span><a name="line.275"></a>
|
||||
<span class="sourceLineNo">276</span> if (completions != null) {<a name="line.276"></a>
|
||||
<span class="sourceLineNo">277</span> allCompletions.addAll(completions);<a name="line.277"></a>
|
||||
<span class="sourceLineNo">278</span> continue;<a name="line.278"></a>
|
||||
<span class="sourceLineNo">279</span> }<a name="line.279"></a>
|
||||
<span class="sourceLineNo">280</span> //noinspection ConstantIfStatement,ConstantConditions<a name="line.280"></a>
|
||||
<span class="sourceLineNo">281</span> if (false) { // Hack to fool compiler. since its sneakily thrown.<a name="line.281"></a>
|
||||
<span class="sourceLineNo">282</span> throw new CommandCompletionTextLookupException();<a name="line.282"></a>
|
||||
<span class="sourceLineNo">283</span> }<a name="line.283"></a>
|
||||
<span class="sourceLineNo">284</span> } catch (CommandCompletionTextLookupException ignored) {<a name="line.284"></a>
|
||||
<span class="sourceLineNo">285</span> // This should only happen if some other feedback error occured.<a name="line.285"></a>
|
||||
<span class="sourceLineNo">286</span> } catch (Exception e) {<a name="line.286"></a>
|
||||
<span class="sourceLineNo">287</span> command.handleException(sender, Arrays.asList(args), e);<a name="line.287"></a>
|
||||
<span class="sourceLineNo">288</span> }<a name="line.288"></a>
|
||||
<span class="sourceLineNo">289</span> // Something went wrong in lookup, fall back to input<a name="line.289"></a>
|
||||
<span class="sourceLineNo">290</span> return Collections.singletonList(input);<a name="line.290"></a>
|
||||
<span class="sourceLineNo">291</span> } else {<a name="line.291"></a>
|
||||
<span class="sourceLineNo">292</span> // Plaintext value<a name="line.292"></a>
|
||||
<span class="sourceLineNo">293</span> allCompletions.add(value);<a name="line.293"></a>
|
||||
<span class="sourceLineNo">294</span> }<a name="line.294"></a>
|
||||
<span class="sourceLineNo">295</span> }<a name="line.295"></a>
|
||||
<span class="sourceLineNo">296</span> return allCompletions;<a name="line.296"></a>
|
||||
<span class="sourceLineNo">297</span> }<a name="line.297"></a>
|
||||
<span class="sourceLineNo">298</span><a name="line.298"></a>
|
||||
<span class="sourceLineNo">299</span> public interface CommandCompletionHandler<C extends CommandCompletionContext> {<a name="line.299"></a>
|
||||
<span class="sourceLineNo">300</span> Collection<String> getCompletions(C context) throws InvalidCommandArgument;<a name="line.300"></a>
|
||||
<span class="sourceLineNo">301</span> }<a name="line.301"></a>
|
||||
<span class="sourceLineNo">302</span><a name="line.302"></a>
|
||||
<span class="sourceLineNo">303</span> public interface AsyncCommandCompletionHandler<C extends CommandCompletionContext> extends CommandCompletionHandler<C> {<a name="line.303"></a>
|
||||
<span class="sourceLineNo">304</span> }<a name="line.304"></a>
|
||||
<span class="sourceLineNo">305</span><a name="line.305"></a>
|
||||
<span class="sourceLineNo">306</span> public static class SyncCompletionRequired extends RuntimeException {<a name="line.306"></a>
|
||||
<span class="sourceLineNo">307</span> }<a name="line.307"></a>
|
||||
<span class="sourceLineNo">308</span><a name="line.308"></a>
|
||||
<span class="sourceLineNo">309</span>}<a name="line.309"></a>
|
||||
|
||||
|
||||
|
||||
|
||||
+44
-43
@@ -271,49 +271,50 @@
|
||||
<span class="sourceLineNo">263</span> && args.length > ACFPatterns.SPACE.split(command.complete).length) {<a name="line.263"></a>
|
||||
<span class="sourceLineNo">264</span> String start = String.join(" ", args);<a name="line.264"></a>
|
||||
<span class="sourceLineNo">265</span> completions = completions.stream()<a name="line.265"></a>
|
||||
<span class="sourceLineNo">266</span> .filter(s -> s != null && s.split(" ").length >= args.length)<a name="line.266"></a>
|
||||
<span class="sourceLineNo">267</span> .filter(s -> ApacheCommonsLangUtil.startsWithIgnoreCase(s, start))<a name="line.267"></a>
|
||||
<span class="sourceLineNo">268</span> .map(s -> {<a name="line.268"></a>
|
||||
<span class="sourceLineNo">269</span> String[] completionArgs = s.split(" ");<a name="line.269"></a>
|
||||
<span class="sourceLineNo">270</span> return String.join(" ",<a name="line.270"></a>
|
||||
<span class="sourceLineNo">271</span> Arrays.copyOfRange(completionArgs, args.length - 1, completionArgs.length));<a name="line.271"></a>
|
||||
<span class="sourceLineNo">272</span> }).collect(Collectors.toList());<a name="line.272"></a>
|
||||
<span class="sourceLineNo">273</span> }<a name="line.273"></a>
|
||||
<span class="sourceLineNo">274</span><a name="line.274"></a>
|
||||
<span class="sourceLineNo">275</span> if (completions != null) {<a name="line.275"></a>
|
||||
<span class="sourceLineNo">276</span> allCompletions.addAll(completions);<a name="line.276"></a>
|
||||
<span class="sourceLineNo">277</span> continue;<a name="line.277"></a>
|
||||
<span class="sourceLineNo">278</span> }<a name="line.278"></a>
|
||||
<span class="sourceLineNo">279</span> //noinspection ConstantIfStatement,ConstantConditions<a name="line.279"></a>
|
||||
<span class="sourceLineNo">280</span> if (false) { // Hack to fool compiler. since its sneakily thrown.<a name="line.280"></a>
|
||||
<span class="sourceLineNo">281</span> throw new CommandCompletionTextLookupException();<a name="line.281"></a>
|
||||
<span class="sourceLineNo">282</span> }<a name="line.282"></a>
|
||||
<span class="sourceLineNo">283</span> } catch (CommandCompletionTextLookupException ignored) {<a name="line.283"></a>
|
||||
<span class="sourceLineNo">284</span> // This should only happen if some other feedback error occured.<a name="line.284"></a>
|
||||
<span class="sourceLineNo">285</span> } catch (Exception e) {<a name="line.285"></a>
|
||||
<span class="sourceLineNo">286</span> command.handleException(sender, Arrays.asList(args), e);<a name="line.286"></a>
|
||||
<span class="sourceLineNo">287</span> }<a name="line.287"></a>
|
||||
<span class="sourceLineNo">288</span> // Something went wrong in lookup, fall back to input<a name="line.288"></a>
|
||||
<span class="sourceLineNo">289</span> return Collections.singletonList(input);<a name="line.289"></a>
|
||||
<span class="sourceLineNo">290</span> } else {<a name="line.290"></a>
|
||||
<span class="sourceLineNo">291</span> // Plaintext value<a name="line.291"></a>
|
||||
<span class="sourceLineNo">292</span> allCompletions.add(value);<a name="line.292"></a>
|
||||
<span class="sourceLineNo">293</span> }<a name="line.293"></a>
|
||||
<span class="sourceLineNo">294</span> }<a name="line.294"></a>
|
||||
<span class="sourceLineNo">295</span> return allCompletions;<a name="line.295"></a>
|
||||
<span class="sourceLineNo">296</span> }<a name="line.296"></a>
|
||||
<span class="sourceLineNo">297</span><a name="line.297"></a>
|
||||
<span class="sourceLineNo">298</span> public interface CommandCompletionHandler<C extends CommandCompletionContext> {<a name="line.298"></a>
|
||||
<span class="sourceLineNo">299</span> Collection<String> getCompletions(C context) throws InvalidCommandArgument;<a name="line.299"></a>
|
||||
<span class="sourceLineNo">300</span> }<a name="line.300"></a>
|
||||
<span class="sourceLineNo">301</span><a name="line.301"></a>
|
||||
<span class="sourceLineNo">302</span> public interface AsyncCommandCompletionHandler<C extends CommandCompletionContext> extends CommandCompletionHandler<C> {<a name="line.302"></a>
|
||||
<span class="sourceLineNo">303</span> }<a name="line.303"></a>
|
||||
<span class="sourceLineNo">304</span><a name="line.304"></a>
|
||||
<span class="sourceLineNo">305</span> public static class SyncCompletionRequired extends RuntimeException {<a name="line.305"></a>
|
||||
<span class="sourceLineNo">306</span> }<a name="line.306"></a>
|
||||
<span class="sourceLineNo">307</span><a name="line.307"></a>
|
||||
<span class="sourceLineNo">308</span>}<a name="line.308"></a>
|
||||
<span class="sourceLineNo">266</span> .map(s -> {<a name="line.266"></a>
|
||||
<span class="sourceLineNo">267</span> if (s != null && s.split(" ").length >= args.length && ApacheCommonsLangUtil.startsWithIgnoreCase(s, start)) {<a name="line.267"></a>
|
||||
<span class="sourceLineNo">268</span> String[] completionArgs = s.split(" ");<a name="line.268"></a>
|
||||
<span class="sourceLineNo">269</span> return String.join(" ", Arrays.copyOfRange(completionArgs, args.length - 1, completionArgs.length));<a name="line.269"></a>
|
||||
<span class="sourceLineNo">270</span> } else {<a name="line.270"></a>
|
||||
<span class="sourceLineNo">271</span> return s;<a name="line.271"></a>
|
||||
<span class="sourceLineNo">272</span> }<a name="line.272"></a>
|
||||
<span class="sourceLineNo">273</span> }).collect(Collectors.toList());<a name="line.273"></a>
|
||||
<span class="sourceLineNo">274</span> }<a name="line.274"></a>
|
||||
<span class="sourceLineNo">275</span><a name="line.275"></a>
|
||||
<span class="sourceLineNo">276</span> if (completions != null) {<a name="line.276"></a>
|
||||
<span class="sourceLineNo">277</span> allCompletions.addAll(completions);<a name="line.277"></a>
|
||||
<span class="sourceLineNo">278</span> continue;<a name="line.278"></a>
|
||||
<span class="sourceLineNo">279</span> }<a name="line.279"></a>
|
||||
<span class="sourceLineNo">280</span> //noinspection ConstantIfStatement,ConstantConditions<a name="line.280"></a>
|
||||
<span class="sourceLineNo">281</span> if (false) { // Hack to fool compiler. since its sneakily thrown.<a name="line.281"></a>
|
||||
<span class="sourceLineNo">282</span> throw new CommandCompletionTextLookupException();<a name="line.282"></a>
|
||||
<span class="sourceLineNo">283</span> }<a name="line.283"></a>
|
||||
<span class="sourceLineNo">284</span> } catch (CommandCompletionTextLookupException ignored) {<a name="line.284"></a>
|
||||
<span class="sourceLineNo">285</span> // This should only happen if some other feedback error occured.<a name="line.285"></a>
|
||||
<span class="sourceLineNo">286</span> } catch (Exception e) {<a name="line.286"></a>
|
||||
<span class="sourceLineNo">287</span> command.handleException(sender, Arrays.asList(args), e);<a name="line.287"></a>
|
||||
<span class="sourceLineNo">288</span> }<a name="line.288"></a>
|
||||
<span class="sourceLineNo">289</span> // Something went wrong in lookup, fall back to input<a name="line.289"></a>
|
||||
<span class="sourceLineNo">290</span> return Collections.singletonList(input);<a name="line.290"></a>
|
||||
<span class="sourceLineNo">291</span> } else {<a name="line.291"></a>
|
||||
<span class="sourceLineNo">292</span> // Plaintext value<a name="line.292"></a>
|
||||
<span class="sourceLineNo">293</span> allCompletions.add(value);<a name="line.293"></a>
|
||||
<span class="sourceLineNo">294</span> }<a name="line.294"></a>
|
||||
<span class="sourceLineNo">295</span> }<a name="line.295"></a>
|
||||
<span class="sourceLineNo">296</span> return allCompletions;<a name="line.296"></a>
|
||||
<span class="sourceLineNo">297</span> }<a name="line.297"></a>
|
||||
<span class="sourceLineNo">298</span><a name="line.298"></a>
|
||||
<span class="sourceLineNo">299</span> public interface CommandCompletionHandler<C extends CommandCompletionContext> {<a name="line.299"></a>
|
||||
<span class="sourceLineNo">300</span> Collection<String> getCompletions(C context) throws InvalidCommandArgument;<a name="line.300"></a>
|
||||
<span class="sourceLineNo">301</span> }<a name="line.301"></a>
|
||||
<span class="sourceLineNo">302</span><a name="line.302"></a>
|
||||
<span class="sourceLineNo">303</span> public interface AsyncCommandCompletionHandler<C extends CommandCompletionContext> extends CommandCompletionHandler<C> {<a name="line.303"></a>
|
||||
<span class="sourceLineNo">304</span> }<a name="line.304"></a>
|
||||
<span class="sourceLineNo">305</span><a name="line.305"></a>
|
||||
<span class="sourceLineNo">306</span> public static class SyncCompletionRequired extends RuntimeException {<a name="line.306"></a>
|
||||
<span class="sourceLineNo">307</span> }<a name="line.307"></a>
|
||||
<span class="sourceLineNo">308</span><a name="line.308"></a>
|
||||
<span class="sourceLineNo">309</span>}<a name="line.309"></a>
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -271,49 +271,50 @@
|
||||
<span class="sourceLineNo">263</span> && args.length > ACFPatterns.SPACE.split(command.complete).length) {<a name="line.263"></a>
|
||||
<span class="sourceLineNo">264</span> String start = String.join(" ", args);<a name="line.264"></a>
|
||||
<span class="sourceLineNo">265</span> completions = completions.stream()<a name="line.265"></a>
|
||||
<span class="sourceLineNo">266</span> .filter(s -> s != null && s.split(" ").length >= args.length)<a name="line.266"></a>
|
||||
<span class="sourceLineNo">267</span> .filter(s -> ApacheCommonsLangUtil.startsWithIgnoreCase(s, start))<a name="line.267"></a>
|
||||
<span class="sourceLineNo">268</span> .map(s -> {<a name="line.268"></a>
|
||||
<span class="sourceLineNo">269</span> String[] completionArgs = s.split(" ");<a name="line.269"></a>
|
||||
<span class="sourceLineNo">270</span> return String.join(" ",<a name="line.270"></a>
|
||||
<span class="sourceLineNo">271</span> Arrays.copyOfRange(completionArgs, args.length - 1, completionArgs.length));<a name="line.271"></a>
|
||||
<span class="sourceLineNo">272</span> }).collect(Collectors.toList());<a name="line.272"></a>
|
||||
<span class="sourceLineNo">273</span> }<a name="line.273"></a>
|
||||
<span class="sourceLineNo">274</span><a name="line.274"></a>
|
||||
<span class="sourceLineNo">275</span> if (completions != null) {<a name="line.275"></a>
|
||||
<span class="sourceLineNo">276</span> allCompletions.addAll(completions);<a name="line.276"></a>
|
||||
<span class="sourceLineNo">277</span> continue;<a name="line.277"></a>
|
||||
<span class="sourceLineNo">278</span> }<a name="line.278"></a>
|
||||
<span class="sourceLineNo">279</span> //noinspection ConstantIfStatement,ConstantConditions<a name="line.279"></a>
|
||||
<span class="sourceLineNo">280</span> if (false) { // Hack to fool compiler. since its sneakily thrown.<a name="line.280"></a>
|
||||
<span class="sourceLineNo">281</span> throw new CommandCompletionTextLookupException();<a name="line.281"></a>
|
||||
<span class="sourceLineNo">282</span> }<a name="line.282"></a>
|
||||
<span class="sourceLineNo">283</span> } catch (CommandCompletionTextLookupException ignored) {<a name="line.283"></a>
|
||||
<span class="sourceLineNo">284</span> // This should only happen if some other feedback error occured.<a name="line.284"></a>
|
||||
<span class="sourceLineNo">285</span> } catch (Exception e) {<a name="line.285"></a>
|
||||
<span class="sourceLineNo">286</span> command.handleException(sender, Arrays.asList(args), e);<a name="line.286"></a>
|
||||
<span class="sourceLineNo">287</span> }<a name="line.287"></a>
|
||||
<span class="sourceLineNo">288</span> // Something went wrong in lookup, fall back to input<a name="line.288"></a>
|
||||
<span class="sourceLineNo">289</span> return Collections.singletonList(input);<a name="line.289"></a>
|
||||
<span class="sourceLineNo">290</span> } else {<a name="line.290"></a>
|
||||
<span class="sourceLineNo">291</span> // Plaintext value<a name="line.291"></a>
|
||||
<span class="sourceLineNo">292</span> allCompletions.add(value);<a name="line.292"></a>
|
||||
<span class="sourceLineNo">293</span> }<a name="line.293"></a>
|
||||
<span class="sourceLineNo">294</span> }<a name="line.294"></a>
|
||||
<span class="sourceLineNo">295</span> return allCompletions;<a name="line.295"></a>
|
||||
<span class="sourceLineNo">296</span> }<a name="line.296"></a>
|
||||
<span class="sourceLineNo">297</span><a name="line.297"></a>
|
||||
<span class="sourceLineNo">298</span> public interface CommandCompletionHandler<C extends CommandCompletionContext> {<a name="line.298"></a>
|
||||
<span class="sourceLineNo">299</span> Collection<String> getCompletions(C context) throws InvalidCommandArgument;<a name="line.299"></a>
|
||||
<span class="sourceLineNo">300</span> }<a name="line.300"></a>
|
||||
<span class="sourceLineNo">301</span><a name="line.301"></a>
|
||||
<span class="sourceLineNo">302</span> public interface AsyncCommandCompletionHandler<C extends CommandCompletionContext> extends CommandCompletionHandler<C> {<a name="line.302"></a>
|
||||
<span class="sourceLineNo">303</span> }<a name="line.303"></a>
|
||||
<span class="sourceLineNo">304</span><a name="line.304"></a>
|
||||
<span class="sourceLineNo">305</span> public static class SyncCompletionRequired extends RuntimeException {<a name="line.305"></a>
|
||||
<span class="sourceLineNo">306</span> }<a name="line.306"></a>
|
||||
<span class="sourceLineNo">307</span><a name="line.307"></a>
|
||||
<span class="sourceLineNo">308</span>}<a name="line.308"></a>
|
||||
<span class="sourceLineNo">266</span> .map(s -> {<a name="line.266"></a>
|
||||
<span class="sourceLineNo">267</span> if (s != null && s.split(" ").length >= args.length && ApacheCommonsLangUtil.startsWithIgnoreCase(s, start)) {<a name="line.267"></a>
|
||||
<span class="sourceLineNo">268</span> String[] completionArgs = s.split(" ");<a name="line.268"></a>
|
||||
<span class="sourceLineNo">269</span> return String.join(" ", Arrays.copyOfRange(completionArgs, args.length - 1, completionArgs.length));<a name="line.269"></a>
|
||||
<span class="sourceLineNo">270</span> } else {<a name="line.270"></a>
|
||||
<span class="sourceLineNo">271</span> return s;<a name="line.271"></a>
|
||||
<span class="sourceLineNo">272</span> }<a name="line.272"></a>
|
||||
<span class="sourceLineNo">273</span> }).collect(Collectors.toList());<a name="line.273"></a>
|
||||
<span class="sourceLineNo">274</span> }<a name="line.274"></a>
|
||||
<span class="sourceLineNo">275</span><a name="line.275"></a>
|
||||
<span class="sourceLineNo">276</span> if (completions != null) {<a name="line.276"></a>
|
||||
<span class="sourceLineNo">277</span> allCompletions.addAll(completions);<a name="line.277"></a>
|
||||
<span class="sourceLineNo">278</span> continue;<a name="line.278"></a>
|
||||
<span class="sourceLineNo">279</span> }<a name="line.279"></a>
|
||||
<span class="sourceLineNo">280</span> //noinspection ConstantIfStatement,ConstantConditions<a name="line.280"></a>
|
||||
<span class="sourceLineNo">281</span> if (false) { // Hack to fool compiler. since its sneakily thrown.<a name="line.281"></a>
|
||||
<span class="sourceLineNo">282</span> throw new CommandCompletionTextLookupException();<a name="line.282"></a>
|
||||
<span class="sourceLineNo">283</span> }<a name="line.283"></a>
|
||||
<span class="sourceLineNo">284</span> } catch (CommandCompletionTextLookupException ignored) {<a name="line.284"></a>
|
||||
<span class="sourceLineNo">285</span> // This should only happen if some other feedback error occured.<a name="line.285"></a>
|
||||
<span class="sourceLineNo">286</span> } catch (Exception e) {<a name="line.286"></a>
|
||||
<span class="sourceLineNo">287</span> command.handleException(sender, Arrays.asList(args), e);<a name="line.287"></a>
|
||||
<span class="sourceLineNo">288</span> }<a name="line.288"></a>
|
||||
<span class="sourceLineNo">289</span> // Something went wrong in lookup, fall back to input<a name="line.289"></a>
|
||||
<span class="sourceLineNo">290</span> return Collections.singletonList(input);<a name="line.290"></a>
|
||||
<span class="sourceLineNo">291</span> } else {<a name="line.291"></a>
|
||||
<span class="sourceLineNo">292</span> // Plaintext value<a name="line.292"></a>
|
||||
<span class="sourceLineNo">293</span> allCompletions.add(value);<a name="line.293"></a>
|
||||
<span class="sourceLineNo">294</span> }<a name="line.294"></a>
|
||||
<span class="sourceLineNo">295</span> }<a name="line.295"></a>
|
||||
<span class="sourceLineNo">296</span> return allCompletions;<a name="line.296"></a>
|
||||
<span class="sourceLineNo">297</span> }<a name="line.297"></a>
|
||||
<span class="sourceLineNo">298</span><a name="line.298"></a>
|
||||
<span class="sourceLineNo">299</span> public interface CommandCompletionHandler<C extends CommandCompletionContext> {<a name="line.299"></a>
|
||||
<span class="sourceLineNo">300</span> Collection<String> getCompletions(C context) throws InvalidCommandArgument;<a name="line.300"></a>
|
||||
<span class="sourceLineNo">301</span> }<a name="line.301"></a>
|
||||
<span class="sourceLineNo">302</span><a name="line.302"></a>
|
||||
<span class="sourceLineNo">303</span> public interface AsyncCommandCompletionHandler<C extends CommandCompletionContext> extends CommandCompletionHandler<C> {<a name="line.303"></a>
|
||||
<span class="sourceLineNo">304</span> }<a name="line.304"></a>
|
||||
<span class="sourceLineNo">305</span><a name="line.305"></a>
|
||||
<span class="sourceLineNo">306</span> public static class SyncCompletionRequired extends RuntimeException {<a name="line.306"></a>
|
||||
<span class="sourceLineNo">307</span> }<a name="line.307"></a>
|
||||
<span class="sourceLineNo">308</span><a name="line.308"></a>
|
||||
<span class="sourceLineNo">309</span>}<a name="line.309"></a>
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -55,292 +55,305 @@
|
||||
<span class="sourceLineNo">047</span> this.manager = manager;<a name="line.47"></a>
|
||||
<span class="sourceLineNo">048</span> registerIssuerOnlyContext(CommandIssuer.class, c -> c.getIssuer());<a name="line.48"></a>
|
||||
<span class="sourceLineNo">049</span> registerContext(Short.class, (c) -> {<a name="line.49"></a>
|
||||
<span class="sourceLineNo">050</span> try {<a name="line.50"></a>
|
||||
<span class="sourceLineNo">051</span> return parseAndValidateNumber(c, Short.MIN_VALUE, Short.MAX_VALUE).shortValue();<a name="line.51"></a>
|
||||
<span class="sourceLineNo">052</span> } catch (NumberFormatException e) {<a name="line.52"></a>
|
||||
<span class="sourceLineNo">053</span> throw new InvalidCommandArgument(MessageKeys.MUST_BE_A_NUMBER, "{num}", c.getFirstArg());<a name="line.53"></a>
|
||||
<span class="sourceLineNo">054</span> }<a name="line.54"></a>
|
||||
<span class="sourceLineNo">055</span> });<a name="line.55"></a>
|
||||
<span class="sourceLineNo">056</span> registerContext(short.class, (c) -> {<a name="line.56"></a>
|
||||
<span class="sourceLineNo">057</span> try {<a name="line.57"></a>
|
||||
<span class="sourceLineNo">058</span> return parseAndValidateNumber(c, Short.MIN_VALUE, Short.MAX_VALUE).shortValue();<a name="line.58"></a>
|
||||
<span class="sourceLineNo">059</span> } catch (NumberFormatException e) {<a name="line.59"></a>
|
||||
<span class="sourceLineNo">060</span> throw new InvalidCommandArgument(MessageKeys.MUST_BE_A_NUMBER, "{num}", c.getFirstArg());<a name="line.60"></a>
|
||||
<span class="sourceLineNo">061</span> }<a name="line.61"></a>
|
||||
<span class="sourceLineNo">062</span> });<a name="line.62"></a>
|
||||
<span class="sourceLineNo">063</span> registerContext(Integer.class, (c) -> {<a name="line.63"></a>
|
||||
<span class="sourceLineNo">064</span> try {<a name="line.64"></a>
|
||||
<span class="sourceLineNo">065</span> return parseAndValidateNumber(c, Integer.MIN_VALUE, Integer.MAX_VALUE).intValue();<a name="line.65"></a>
|
||||
<span class="sourceLineNo">066</span> } catch (NumberFormatException e) {<a name="line.66"></a>
|
||||
<span class="sourceLineNo">067</span> throw new InvalidCommandArgument(MessageKeys.MUST_BE_A_NUMBER, "{num}", c.getFirstArg());<a name="line.67"></a>
|
||||
<span class="sourceLineNo">068</span> }<a name="line.68"></a>
|
||||
<span class="sourceLineNo">069</span> });<a name="line.69"></a>
|
||||
<span class="sourceLineNo">070</span> registerContext(int.class, (c) -> {<a name="line.70"></a>
|
||||
<span class="sourceLineNo">071</span> try {<a name="line.71"></a>
|
||||
<span class="sourceLineNo">072</span> return parseAndValidateNumber(c, Integer.MIN_VALUE, Integer.MAX_VALUE).intValue();<a name="line.72"></a>
|
||||
<span class="sourceLineNo">073</span> } catch (NumberFormatException e) {<a name="line.73"></a>
|
||||
<span class="sourceLineNo">074</span> throw new InvalidCommandArgument(MessageKeys.MUST_BE_A_NUMBER, "{num}", c.getFirstArg());<a name="line.74"></a>
|
||||
<span class="sourceLineNo">075</span> }<a name="line.75"></a>
|
||||
<span class="sourceLineNo">076</span> });<a name="line.76"></a>
|
||||
<span class="sourceLineNo">077</span> registerContext(Long.class, (c) -> {<a name="line.77"></a>
|
||||
<span class="sourceLineNo">078</span> try {<a name="line.78"></a>
|
||||
<span class="sourceLineNo">079</span> return parseAndValidateNumber(c, Long.MIN_VALUE, Long.MAX_VALUE).longValue();<a name="line.79"></a>
|
||||
<span class="sourceLineNo">080</span> } catch (NumberFormatException e) {<a name="line.80"></a>
|
||||
<span class="sourceLineNo">081</span> throw new InvalidCommandArgument(MessageKeys.MUST_BE_A_NUMBER, "{num}", c.getFirstArg());<a name="line.81"></a>
|
||||
<span class="sourceLineNo">082</span> }<a name="line.82"></a>
|
||||
<span class="sourceLineNo">083</span> });<a name="line.83"></a>
|
||||
<span class="sourceLineNo">084</span> registerContext(long.class, (c) -> {<a name="line.84"></a>
|
||||
<span class="sourceLineNo">085</span> try {<a name="line.85"></a>
|
||||
<span class="sourceLineNo">086</span> return parseAndValidateNumber(c, Long.MIN_VALUE, Long.MAX_VALUE).longValue();<a name="line.86"></a>
|
||||
<span class="sourceLineNo">087</span> } catch (NumberFormatException e) {<a name="line.87"></a>
|
||||
<span class="sourceLineNo">088</span> throw new InvalidCommandArgument(MessageKeys.MUST_BE_A_NUMBER, "{num}", c.getFirstArg());<a name="line.88"></a>
|
||||
<span class="sourceLineNo">089</span> }<a name="line.89"></a>
|
||||
<span class="sourceLineNo">090</span> });<a name="line.90"></a>
|
||||
<span class="sourceLineNo">091</span> registerContext(Float.class, (c) -> {<a name="line.91"></a>
|
||||
<span class="sourceLineNo">092</span> try {<a name="line.92"></a>
|
||||
<span class="sourceLineNo">093</span> return parseAndValidateNumber(c, -Float.MAX_VALUE, Float.MAX_VALUE).floatValue();<a name="line.93"></a>
|
||||
<span class="sourceLineNo">094</span> } catch (NumberFormatException e) {<a name="line.94"></a>
|
||||
<span class="sourceLineNo">095</span> throw new InvalidCommandArgument(MessageKeys.MUST_BE_A_NUMBER, "{num}", c.getFirstArg());<a name="line.95"></a>
|
||||
<span class="sourceLineNo">096</span> }<a name="line.96"></a>
|
||||
<span class="sourceLineNo">097</span> });<a name="line.97"></a>
|
||||
<span class="sourceLineNo">098</span> registerContext(float.class, (c) -> {<a name="line.98"></a>
|
||||
<span class="sourceLineNo">050</span> String number = c.popFirstArg();<a name="line.50"></a>
|
||||
<span class="sourceLineNo">051</span> try {<a name="line.51"></a>
|
||||
<span class="sourceLineNo">052</span> return parseAndValidateNumber(number, c, Short.MIN_VALUE, Short.MAX_VALUE).shortValue();<a name="line.52"></a>
|
||||
<span class="sourceLineNo">053</span> } catch (NumberFormatException e) {<a name="line.53"></a>
|
||||
<span class="sourceLineNo">054</span> throw new InvalidCommandArgument(MessageKeys.MUST_BE_A_NUMBER, "{num}", number);<a name="line.54"></a>
|
||||
<span class="sourceLineNo">055</span> }<a name="line.55"></a>
|
||||
<span class="sourceLineNo">056</span> });<a name="line.56"></a>
|
||||
<span class="sourceLineNo">057</span> registerContext(short.class, (c) -> {<a name="line.57"></a>
|
||||
<span class="sourceLineNo">058</span> String number = c.popFirstArg();<a name="line.58"></a>
|
||||
<span class="sourceLineNo">059</span> try {<a name="line.59"></a>
|
||||
<span class="sourceLineNo">060</span> return parseAndValidateNumber(number, c, Short.MIN_VALUE, Short.MAX_VALUE).shortValue();<a name="line.60"></a>
|
||||
<span class="sourceLineNo">061</span> } catch (NumberFormatException e) {<a name="line.61"></a>
|
||||
<span class="sourceLineNo">062</span> throw new InvalidCommandArgument(MessageKeys.MUST_BE_A_NUMBER, "{num}", number);<a name="line.62"></a>
|
||||
<span class="sourceLineNo">063</span> }<a name="line.63"></a>
|
||||
<span class="sourceLineNo">064</span> });<a name="line.64"></a>
|
||||
<span class="sourceLineNo">065</span> registerContext(Integer.class, (c) -> {<a name="line.65"></a>
|
||||
<span class="sourceLineNo">066</span> String number = c.popFirstArg();<a name="line.66"></a>
|
||||
<span class="sourceLineNo">067</span> try {<a name="line.67"></a>
|
||||
<span class="sourceLineNo">068</span> return parseAndValidateNumber(number, c, Integer.MIN_VALUE, Integer.MAX_VALUE).intValue();<a name="line.68"></a>
|
||||
<span class="sourceLineNo">069</span> } catch (NumberFormatException e) {<a name="line.69"></a>
|
||||
<span class="sourceLineNo">070</span> throw new InvalidCommandArgument(MessageKeys.MUST_BE_A_NUMBER, "{num}", number);<a name="line.70"></a>
|
||||
<span class="sourceLineNo">071</span> }<a name="line.71"></a>
|
||||
<span class="sourceLineNo">072</span> });<a name="line.72"></a>
|
||||
<span class="sourceLineNo">073</span> registerContext(int.class, (c) -> {<a name="line.73"></a>
|
||||
<span class="sourceLineNo">074</span> String number = c.popFirstArg();<a name="line.74"></a>
|
||||
<span class="sourceLineNo">075</span> try {<a name="line.75"></a>
|
||||
<span class="sourceLineNo">076</span> return parseAndValidateNumber(number, c, Integer.MIN_VALUE, Integer.MAX_VALUE).intValue();<a name="line.76"></a>
|
||||
<span class="sourceLineNo">077</span> } catch (NumberFormatException e) {<a name="line.77"></a>
|
||||
<span class="sourceLineNo">078</span> throw new InvalidCommandArgument(MessageKeys.MUST_BE_A_NUMBER, "{num}", number);<a name="line.78"></a>
|
||||
<span class="sourceLineNo">079</span> }<a name="line.79"></a>
|
||||
<span class="sourceLineNo">080</span> });<a name="line.80"></a>
|
||||
<span class="sourceLineNo">081</span> registerContext(Long.class, (c) -> {<a name="line.81"></a>
|
||||
<span class="sourceLineNo">082</span> String number = c.popFirstArg();<a name="line.82"></a>
|
||||
<span class="sourceLineNo">083</span> try {<a name="line.83"></a>
|
||||
<span class="sourceLineNo">084</span> return parseAndValidateNumber(number, c, Long.MIN_VALUE, Long.MAX_VALUE).longValue();<a name="line.84"></a>
|
||||
<span class="sourceLineNo">085</span> } catch (NumberFormatException e) {<a name="line.85"></a>
|
||||
<span class="sourceLineNo">086</span> throw new InvalidCommandArgument(MessageKeys.MUST_BE_A_NUMBER, "{num}", number);<a name="line.86"></a>
|
||||
<span class="sourceLineNo">087</span> }<a name="line.87"></a>
|
||||
<span class="sourceLineNo">088</span> });<a name="line.88"></a>
|
||||
<span class="sourceLineNo">089</span> registerContext(long.class, (c) -> {<a name="line.89"></a>
|
||||
<span class="sourceLineNo">090</span> String number = c.popFirstArg();<a name="line.90"></a>
|
||||
<span class="sourceLineNo">091</span> try {<a name="line.91"></a>
|
||||
<span class="sourceLineNo">092</span> return parseAndValidateNumber(number, c, Long.MIN_VALUE, Long.MAX_VALUE).longValue();<a name="line.92"></a>
|
||||
<span class="sourceLineNo">093</span> } catch (NumberFormatException e) {<a name="line.93"></a>
|
||||
<span class="sourceLineNo">094</span> throw new InvalidCommandArgument(MessageKeys.MUST_BE_A_NUMBER, "{num}", number);<a name="line.94"></a>
|
||||
<span class="sourceLineNo">095</span> }<a name="line.95"></a>
|
||||
<span class="sourceLineNo">096</span> });<a name="line.96"></a>
|
||||
<span class="sourceLineNo">097</span> registerContext(Float.class, (c) -> {<a name="line.97"></a>
|
||||
<span class="sourceLineNo">098</span> String number = c.popFirstArg();<a name="line.98"></a>
|
||||
<span class="sourceLineNo">099</span> try {<a name="line.99"></a>
|
||||
<span class="sourceLineNo">100</span> return parseAndValidateNumber(c, -Float.MAX_VALUE, Float.MAX_VALUE).floatValue();<a name="line.100"></a>
|
||||
<span class="sourceLineNo">100</span> return parseAndValidateNumber(number, c, -Float.MAX_VALUE, Float.MAX_VALUE).floatValue();<a name="line.100"></a>
|
||||
<span class="sourceLineNo">101</span> } catch (NumberFormatException e) {<a name="line.101"></a>
|
||||
<span class="sourceLineNo">102</span> throw new InvalidCommandArgument(MessageKeys.MUST_BE_A_NUMBER, "{num}", c.getFirstArg());<a name="line.102"></a>
|
||||
<span class="sourceLineNo">102</span> throw new InvalidCommandArgument(MessageKeys.MUST_BE_A_NUMBER, "{num}", number);<a name="line.102"></a>
|
||||
<span class="sourceLineNo">103</span> }<a name="line.103"></a>
|
||||
<span class="sourceLineNo">104</span> });<a name="line.104"></a>
|
||||
<span class="sourceLineNo">105</span> registerContext(Double.class, (c) -> {<a name="line.105"></a>
|
||||
<span class="sourceLineNo">106</span> try {<a name="line.106"></a>
|
||||
<span class="sourceLineNo">107</span> return parseAndValidateNumber(c, -Double.MAX_VALUE, Double.MAX_VALUE).doubleValue();<a name="line.107"></a>
|
||||
<span class="sourceLineNo">108</span> } catch (NumberFormatException e) {<a name="line.108"></a>
|
||||
<span class="sourceLineNo">109</span> throw new InvalidCommandArgument(MessageKeys.MUST_BE_A_NUMBER, "{num}", c.getFirstArg());<a name="line.109"></a>
|
||||
<span class="sourceLineNo">110</span> }<a name="line.110"></a>
|
||||
<span class="sourceLineNo">111</span> });<a name="line.111"></a>
|
||||
<span class="sourceLineNo">112</span> registerContext(double.class, (c) -> {<a name="line.112"></a>
|
||||
<span class="sourceLineNo">113</span> try {<a name="line.113"></a>
|
||||
<span class="sourceLineNo">114</span> return parseAndValidateNumber(c, -Double.MAX_VALUE, Double.MAX_VALUE).doubleValue();<a name="line.114"></a>
|
||||
<span class="sourceLineNo">115</span> } catch (NumberFormatException e) {<a name="line.115"></a>
|
||||
<span class="sourceLineNo">116</span> throw new InvalidCommandArgument(MessageKeys.MUST_BE_A_NUMBER, "{num}", c.getFirstArg());<a name="line.116"></a>
|
||||
<span class="sourceLineNo">117</span> }<a name="line.117"></a>
|
||||
<span class="sourceLineNo">118</span> });<a name="line.118"></a>
|
||||
<span class="sourceLineNo">119</span> registerContext(Number.class, (c) -> {<a name="line.119"></a>
|
||||
<span class="sourceLineNo">120</span> try {<a name="line.120"></a>
|
||||
<span class="sourceLineNo">121</span> return parseAndValidateNumber(c, -Double.MAX_VALUE, Double.MAX_VALUE);<a name="line.121"></a>
|
||||
<span class="sourceLineNo">122</span> } catch (NumberFormatException e) {<a name="line.122"></a>
|
||||
<span class="sourceLineNo">123</span> throw new InvalidCommandArgument(MessageKeys.MUST_BE_A_NUMBER, "{num}", c.getFirstArg());<a name="line.123"></a>
|
||||
<span class="sourceLineNo">124</span> }<a name="line.124"></a>
|
||||
<span class="sourceLineNo">125</span> });<a name="line.125"></a>
|
||||
<span class="sourceLineNo">126</span> registerContext(BigDecimal.class, (c) -> {<a name="line.126"></a>
|
||||
<span class="sourceLineNo">127</span> try {<a name="line.127"></a>
|
||||
<span class="sourceLineNo">128</span> BigDecimal number = ACFUtil.parseBigNumber(c.popFirstArg(), c.hasFlag("suffixes"));<a name="line.128"></a>
|
||||
<span class="sourceLineNo">129</span> validateMinMax(c, number);<a name="line.129"></a>
|
||||
<span class="sourceLineNo">130</span> return number;<a name="line.130"></a>
|
||||
<span class="sourceLineNo">131</span> } catch (NumberFormatException e) {<a name="line.131"></a>
|
||||
<span class="sourceLineNo">132</span> throw new InvalidCommandArgument(MessageKeys.MUST_BE_A_NUMBER, "{num}", c.getFirstArg());<a name="line.132"></a>
|
||||
<span class="sourceLineNo">133</span> }<a name="line.133"></a>
|
||||
<span class="sourceLineNo">134</span> });<a name="line.134"></a>
|
||||
<span class="sourceLineNo">135</span> registerContext(BigInteger.class, (c) -> {<a name="line.135"></a>
|
||||
<span class="sourceLineNo">136</span> try {<a name="line.136"></a>
|
||||
<span class="sourceLineNo">137</span> BigDecimal number = ACFUtil.parseBigNumber(c.popFirstArg(), c.hasFlag("suffixes"));<a name="line.137"></a>
|
||||
<span class="sourceLineNo">138</span> validateMinMax(c, number);<a name="line.138"></a>
|
||||
<span class="sourceLineNo">139</span> return number.toBigIntegerExact();<a name="line.139"></a>
|
||||
<span class="sourceLineNo">140</span> } catch (NumberFormatException e) {<a name="line.140"></a>
|
||||
<span class="sourceLineNo">141</span> throw new InvalidCommandArgument(MessageKeys.MUST_BE_A_NUMBER, "{num}", c.getFirstArg());<a name="line.141"></a>
|
||||
<span class="sourceLineNo">142</span> }<a name="line.142"></a>
|
||||
<span class="sourceLineNo">143</span> });<a name="line.143"></a>
|
||||
<span class="sourceLineNo">144</span> registerContext(Boolean.class, (c) -> ACFUtil.isTruthy(c.popFirstArg()));<a name="line.144"></a>
|
||||
<span class="sourceLineNo">145</span> registerContext(boolean.class, (c) -> ACFUtil.isTruthy(c.popFirstArg()));<a name="line.145"></a>
|
||||
<span class="sourceLineNo">146</span> registerContext(char.class, c -> {<a name="line.146"></a>
|
||||
<span class="sourceLineNo">147</span> String s = c.popFirstArg();<a name="line.147"></a>
|
||||
<span class="sourceLineNo">148</span> if (s.length() > 1) {<a name="line.148"></a>
|
||||
<span class="sourceLineNo">149</span> throw new InvalidCommandArgument(MessageKeys.MUST_BE_MAX_LENGTH, "{max}", String.valueOf(1));<a name="line.149"></a>
|
||||
<span class="sourceLineNo">150</span> }<a name="line.150"></a>
|
||||
<span class="sourceLineNo">151</span> return s.charAt(0);<a name="line.151"></a>
|
||||
<span class="sourceLineNo">152</span> });<a name="line.152"></a>
|
||||
<span class="sourceLineNo">153</span> registerContext(String.class, (c) -> {<a name="line.153"></a>
|
||||
<span class="sourceLineNo">154</span> // This will fail fast, its either in the values or its not<a name="line.154"></a>
|
||||
<span class="sourceLineNo">155</span> if (c.hasAnnotation(Values.class)) {<a name="line.155"></a>
|
||||
<span class="sourceLineNo">156</span> return c.popFirstArg();<a name="line.156"></a>
|
||||
<span class="sourceLineNo">157</span> }<a name="line.157"></a>
|
||||
<span class="sourceLineNo">158</span> String ret = (c.isLastArg() && !c.hasAnnotation(Single.class)) ?<a name="line.158"></a>
|
||||
<span class="sourceLineNo">159</span> ACFUtil.join(c.getArgs())<a name="line.159"></a>
|
||||
<span class="sourceLineNo">160</span> :<a name="line.160"></a>
|
||||
<span class="sourceLineNo">161</span> c.popFirstArg();<a name="line.161"></a>
|
||||
<span class="sourceLineNo">162</span><a name="line.162"></a>
|
||||
<span class="sourceLineNo">163</span> Integer minLen = c.getFlagValue("minlen", (Integer) null);<a name="line.163"></a>
|
||||
<span class="sourceLineNo">164</span> Integer maxLen = c.getFlagValue("maxlen", (Integer) null);<a name="line.164"></a>
|
||||
<span class="sourceLineNo">165</span> if (minLen != null) {<a name="line.165"></a>
|
||||
<span class="sourceLineNo">166</span> if (ret.length() < minLen) {<a name="line.166"></a>
|
||||
<span class="sourceLineNo">167</span> throw new InvalidCommandArgument(MessageKeys.MUST_BE_MIN_LENGTH, "{min}", String.valueOf(minLen));<a name="line.167"></a>
|
||||
<span class="sourceLineNo">168</span> }<a name="line.168"></a>
|
||||
<span class="sourceLineNo">169</span> }<a name="line.169"></a>
|
||||
<span class="sourceLineNo">170</span> if (maxLen != null) {<a name="line.170"></a>
|
||||
<span class="sourceLineNo">171</span> if (ret.length() > maxLen) {<a name="line.171"></a>
|
||||
<span class="sourceLineNo">172</span> throw new InvalidCommandArgument(MessageKeys.MUST_BE_MAX_LENGTH, "{max}", String.valueOf(maxLen));<a name="line.172"></a>
|
||||
<span class="sourceLineNo">173</span> }<a name="line.173"></a>
|
||||
<span class="sourceLineNo">174</span> }<a name="line.174"></a>
|
||||
<span class="sourceLineNo">105</span> registerContext(float.class, (c) -> {<a name="line.105"></a>
|
||||
<span class="sourceLineNo">106</span> String number = c.popFirstArg();<a name="line.106"></a>
|
||||
<span class="sourceLineNo">107</span> try {<a name="line.107"></a>
|
||||
<span class="sourceLineNo">108</span> return parseAndValidateNumber(number, c, -Float.MAX_VALUE, Float.MAX_VALUE).floatValue();<a name="line.108"></a>
|
||||
<span class="sourceLineNo">109</span> } catch (NumberFormatException e) {<a name="line.109"></a>
|
||||
<span class="sourceLineNo">110</span> throw new InvalidCommandArgument(MessageKeys.MUST_BE_A_NUMBER, "{num}", number);<a name="line.110"></a>
|
||||
<span class="sourceLineNo">111</span> }<a name="line.111"></a>
|
||||
<span class="sourceLineNo">112</span> });<a name="line.112"></a>
|
||||
<span class="sourceLineNo">113</span> registerContext(Double.class, (c) -> {<a name="line.113"></a>
|
||||
<span class="sourceLineNo">114</span> String number = c.popFirstArg();<a name="line.114"></a>
|
||||
<span class="sourceLineNo">115</span> try {<a name="line.115"></a>
|
||||
<span class="sourceLineNo">116</span> return parseAndValidateNumber(number, c, -Double.MAX_VALUE, Double.MAX_VALUE).doubleValue();<a name="line.116"></a>
|
||||
<span class="sourceLineNo">117</span> } catch (NumberFormatException e) {<a name="line.117"></a>
|
||||
<span class="sourceLineNo">118</span> throw new InvalidCommandArgument(MessageKeys.MUST_BE_A_NUMBER, "{num}", number);<a name="line.118"></a>
|
||||
<span class="sourceLineNo">119</span> }<a name="line.119"></a>
|
||||
<span class="sourceLineNo">120</span> });<a name="line.120"></a>
|
||||
<span class="sourceLineNo">121</span> registerContext(double.class, (c) -> {<a name="line.121"></a>
|
||||
<span class="sourceLineNo">122</span> String number = c.popFirstArg();<a name="line.122"></a>
|
||||
<span class="sourceLineNo">123</span> try {<a name="line.123"></a>
|
||||
<span class="sourceLineNo">124</span> return parseAndValidateNumber(number, c, -Double.MAX_VALUE, Double.MAX_VALUE).doubleValue();<a name="line.124"></a>
|
||||
<span class="sourceLineNo">125</span> } catch (NumberFormatException e) {<a name="line.125"></a>
|
||||
<span class="sourceLineNo">126</span> throw new InvalidCommandArgument(MessageKeys.MUST_BE_A_NUMBER, "{num}", number);<a name="line.126"></a>
|
||||
<span class="sourceLineNo">127</span> }<a name="line.127"></a>
|
||||
<span class="sourceLineNo">128</span> });<a name="line.128"></a>
|
||||
<span class="sourceLineNo">129</span> registerContext(Number.class, (c) -> {<a name="line.129"></a>
|
||||
<span class="sourceLineNo">130</span> String number = c.popFirstArg();<a name="line.130"></a>
|
||||
<span class="sourceLineNo">131</span> try {<a name="line.131"></a>
|
||||
<span class="sourceLineNo">132</span> return parseAndValidateNumber(number, c, -Double.MAX_VALUE, Double.MAX_VALUE);<a name="line.132"></a>
|
||||
<span class="sourceLineNo">133</span> } catch (NumberFormatException e) {<a name="line.133"></a>
|
||||
<span class="sourceLineNo">134</span> throw new InvalidCommandArgument(MessageKeys.MUST_BE_A_NUMBER, "{num}", number);<a name="line.134"></a>
|
||||
<span class="sourceLineNo">135</span> }<a name="line.135"></a>
|
||||
<span class="sourceLineNo">136</span> });<a name="line.136"></a>
|
||||
<span class="sourceLineNo">137</span> registerContext(BigDecimal.class, (c) -> {<a name="line.137"></a>
|
||||
<span class="sourceLineNo">138</span> String numberStr = c.popFirstArg();<a name="line.138"></a>
|
||||
<span class="sourceLineNo">139</span> try {<a name="line.139"></a>
|
||||
<span class="sourceLineNo">140</span> BigDecimal number = ACFUtil.parseBigNumber(numberStr, c.hasFlag("suffixes"));<a name="line.140"></a>
|
||||
<span class="sourceLineNo">141</span> validateMinMax(c, number);<a name="line.141"></a>
|
||||
<span class="sourceLineNo">142</span> return number;<a name="line.142"></a>
|
||||
<span class="sourceLineNo">143</span> } catch (NumberFormatException e) {<a name="line.143"></a>
|
||||
<span class="sourceLineNo">144</span> throw new InvalidCommandArgument(MessageKeys.MUST_BE_A_NUMBER, "{num}", numberStr);<a name="line.144"></a>
|
||||
<span class="sourceLineNo">145</span> }<a name="line.145"></a>
|
||||
<span class="sourceLineNo">146</span> });<a name="line.146"></a>
|
||||
<span class="sourceLineNo">147</span> registerContext(BigInteger.class, (c) -> {<a name="line.147"></a>
|
||||
<span class="sourceLineNo">148</span> String numberStr = c.popFirstArg();<a name="line.148"></a>
|
||||
<span class="sourceLineNo">149</span> try {<a name="line.149"></a>
|
||||
<span class="sourceLineNo">150</span> BigDecimal number = ACFUtil.parseBigNumber(numberStr, c.hasFlag("suffixes"));<a name="line.150"></a>
|
||||
<span class="sourceLineNo">151</span> validateMinMax(c, number);<a name="line.151"></a>
|
||||
<span class="sourceLineNo">152</span> return number.toBigIntegerExact();<a name="line.152"></a>
|
||||
<span class="sourceLineNo">153</span> } catch (NumberFormatException e) {<a name="line.153"></a>
|
||||
<span class="sourceLineNo">154</span> throw new InvalidCommandArgument(MessageKeys.MUST_BE_A_NUMBER, "{num}", numberStr);<a name="line.154"></a>
|
||||
<span class="sourceLineNo">155</span> }<a name="line.155"></a>
|
||||
<span class="sourceLineNo">156</span> });<a name="line.156"></a>
|
||||
<span class="sourceLineNo">157</span> registerContext(Boolean.class, (c) -> ACFUtil.isTruthy(c.popFirstArg()));<a name="line.157"></a>
|
||||
<span class="sourceLineNo">158</span> registerContext(boolean.class, (c) -> ACFUtil.isTruthy(c.popFirstArg()));<a name="line.158"></a>
|
||||
<span class="sourceLineNo">159</span> registerContext(char.class, c -> {<a name="line.159"></a>
|
||||
<span class="sourceLineNo">160</span> String s = c.popFirstArg();<a name="line.160"></a>
|
||||
<span class="sourceLineNo">161</span> if (s.length() > 1) {<a name="line.161"></a>
|
||||
<span class="sourceLineNo">162</span> throw new InvalidCommandArgument(MessageKeys.MUST_BE_MAX_LENGTH, "{max}", String.valueOf(1));<a name="line.162"></a>
|
||||
<span class="sourceLineNo">163</span> }<a name="line.163"></a>
|
||||
<span class="sourceLineNo">164</span> return s.charAt(0);<a name="line.164"></a>
|
||||
<span class="sourceLineNo">165</span> });<a name="line.165"></a>
|
||||
<span class="sourceLineNo">166</span> registerContext(String.class, (c) -> {<a name="line.166"></a>
|
||||
<span class="sourceLineNo">167</span> // This will fail fast, its either in the values or its not<a name="line.167"></a>
|
||||
<span class="sourceLineNo">168</span> if (c.hasAnnotation(Values.class)) {<a name="line.168"></a>
|
||||
<span class="sourceLineNo">169</span> return c.popFirstArg();<a name="line.169"></a>
|
||||
<span class="sourceLineNo">170</span> }<a name="line.170"></a>
|
||||
<span class="sourceLineNo">171</span> String ret = (c.isLastArg() && !c.hasAnnotation(Single.class)) ?<a name="line.171"></a>
|
||||
<span class="sourceLineNo">172</span> ACFUtil.join(c.getArgs())<a name="line.172"></a>
|
||||
<span class="sourceLineNo">173</span> :<a name="line.173"></a>
|
||||
<span class="sourceLineNo">174</span> c.popFirstArg();<a name="line.174"></a>
|
||||
<span class="sourceLineNo">175</span><a name="line.175"></a>
|
||||
<span class="sourceLineNo">176</span> return ret;<a name="line.176"></a>
|
||||
<span class="sourceLineNo">177</span> });<a name="line.177"></a>
|
||||
<span class="sourceLineNo">178</span> registerContext(String[].class, (c) -> {<a name="line.178"></a>
|
||||
<span class="sourceLineNo">179</span> String val;<a name="line.179"></a>
|
||||
<span class="sourceLineNo">180</span> List<String> args = c.getArgs();<a name="line.180"></a>
|
||||
<span class="sourceLineNo">181</span> if (c.isLastArg() && !c.hasAnnotation(Single.class)) {<a name="line.181"></a>
|
||||
<span class="sourceLineNo">182</span> val = ACFUtil.join(args);<a name="line.182"></a>
|
||||
<span class="sourceLineNo">183</span> } else {<a name="line.183"></a>
|
||||
<span class="sourceLineNo">184</span> val = c.popFirstArg();<a name="line.184"></a>
|
||||
<span class="sourceLineNo">185</span> }<a name="line.185"></a>
|
||||
<span class="sourceLineNo">186</span> String split = c.getAnnotationValue(Split.class, Annotations.NOTHING | Annotations.NO_EMPTY);<a name="line.186"></a>
|
||||
<span class="sourceLineNo">187</span> if (split != null) {<a name="line.187"></a>
|
||||
<span class="sourceLineNo">188</span> if (val.isEmpty()) {<a name="line.188"></a>
|
||||
<span class="sourceLineNo">189</span> throw new InvalidCommandArgument();<a name="line.189"></a>
|
||||
<span class="sourceLineNo">190</span> }<a name="line.190"></a>
|
||||
<span class="sourceLineNo">191</span> return ACFPatterns.getPattern(split).split(val);<a name="line.191"></a>
|
||||
<span class="sourceLineNo">192</span> } else if (!c.isLastArg()) {<a name="line.192"></a>
|
||||
<span class="sourceLineNo">193</span> ACFUtil.sneaky(new IllegalStateException("Weird Command signature... String[] should be last or @Split"));<a name="line.193"></a>
|
||||
<span class="sourceLineNo">194</span> }<a name="line.194"></a>
|
||||
<span class="sourceLineNo">195</span><a name="line.195"></a>
|
||||
<span class="sourceLineNo">196</span> String[] result = args.toArray(new String[0]);<a name="line.196"></a>
|
||||
<span class="sourceLineNo">197</span> args.clear();<a name="line.197"></a>
|
||||
<span class="sourceLineNo">198</span> return result;<a name="line.198"></a>
|
||||
<span class="sourceLineNo">199</span> });<a name="line.199"></a>
|
||||
<span class="sourceLineNo">200</span><a name="line.200"></a>
|
||||
<span class="sourceLineNo">201</span> registerContext(Enum.class, (c) -> {<a name="line.201"></a>
|
||||
<span class="sourceLineNo">202</span> final String first = c.popFirstArg();<a name="line.202"></a>
|
||||
<span class="sourceLineNo">203</span> //noinspection unchecked<a name="line.203"></a>
|
||||
<span class="sourceLineNo">204</span> Class<? extends Enum<?>> enumCls = (Class<? extends Enum<?>>) c.getParam().getType();<a name="line.204"></a>
|
||||
<span class="sourceLineNo">205</span> Enum<?> match = ACFUtil.simpleMatch(enumCls, first);<a name="line.205"></a>
|
||||
<span class="sourceLineNo">206</span> if (match == null) {<a name="line.206"></a>
|
||||
<span class="sourceLineNo">207</span> List<String> names = ACFUtil.enumNames(enumCls);<a name="line.207"></a>
|
||||
<span class="sourceLineNo">208</span> throw new InvalidCommandArgument(MessageKeys.PLEASE_SPECIFY_ONE_OF, "{valid}", ACFUtil.join(names, ", "));<a name="line.208"></a>
|
||||
<span class="sourceLineNo">209</span> }<a name="line.209"></a>
|
||||
<span class="sourceLineNo">210</span> return match;<a name="line.210"></a>
|
||||
<span class="sourceLineNo">211</span> });<a name="line.211"></a>
|
||||
<span class="sourceLineNo">212</span> registerOptionalContext(CommandHelp.class, (c) -> {<a name="line.212"></a>
|
||||
<span class="sourceLineNo">213</span> String first = c.getFirstArg();<a name="line.213"></a>
|
||||
<span class="sourceLineNo">214</span> String last = c.getLastArg();<a name="line.214"></a>
|
||||
<span class="sourceLineNo">215</span> int page = 1;<a name="line.215"></a>
|
||||
<span class="sourceLineNo">216</span> List<String> search = null;<a name="line.216"></a>
|
||||
<span class="sourceLineNo">217</span> if (last != null && ACFUtil.isInteger(last)) {<a name="line.217"></a>
|
||||
<span class="sourceLineNo">218</span> c.popLastArg();<a name="line.218"></a>
|
||||
<span class="sourceLineNo">219</span> page = ACFUtil.parseInt(last);<a name="line.219"></a>
|
||||
<span class="sourceLineNo">220</span> if (!c.getArgs().isEmpty()) {<a name="line.220"></a>
|
||||
<span class="sourceLineNo">221</span> search = c.getArgs();<a name="line.221"></a>
|
||||
<span class="sourceLineNo">222</span> }<a name="line.222"></a>
|
||||
<span class="sourceLineNo">223</span> } else if (first != null && ACFUtil.isInteger(first)) {<a name="line.223"></a>
|
||||
<span class="sourceLineNo">224</span> c.popFirstArg();<a name="line.224"></a>
|
||||
<span class="sourceLineNo">225</span> page = ACFUtil.parseInt(first);<a name="line.225"></a>
|
||||
<span class="sourceLineNo">226</span> if (!c.getArgs().isEmpty()) {<a name="line.226"></a>
|
||||
<span class="sourceLineNo">227</span> search = c.getArgs();<a name="line.227"></a>
|
||||
<span class="sourceLineNo">228</span> }<a name="line.228"></a>
|
||||
<span class="sourceLineNo">229</span> } else if (!c.getArgs().isEmpty()) {<a name="line.229"></a>
|
||||
<span class="sourceLineNo">230</span> search = c.getArgs();<a name="line.230"></a>
|
||||
<span class="sourceLineNo">231</span> }<a name="line.231"></a>
|
||||
<span class="sourceLineNo">232</span> CommandHelp commandHelp = manager.generateCommandHelp();<a name="line.232"></a>
|
||||
<span class="sourceLineNo">233</span> commandHelp.setPage(page);<a name="line.233"></a>
|
||||
<span class="sourceLineNo">234</span> Integer perPage = c.getFlagValue("perpage", (Integer) null);<a name="line.234"></a>
|
||||
<span class="sourceLineNo">235</span> if (perPage != null) {<a name="line.235"></a>
|
||||
<span class="sourceLineNo">236</span> commandHelp.setPerPage(perPage);<a name="line.236"></a>
|
||||
<span class="sourceLineNo">237</span> }<a name="line.237"></a>
|
||||
<span class="sourceLineNo">238</span><a name="line.238"></a>
|
||||
<span class="sourceLineNo">239</span> // check if we have an exact match and should display the help page for that sub command instead<a name="line.239"></a>
|
||||
<span class="sourceLineNo">240</span> if (search != null) {<a name="line.240"></a>
|
||||
<span class="sourceLineNo">241</span> String cmd = String.join(" ", search);<a name="line.241"></a>
|
||||
<span class="sourceLineNo">242</span> if (commandHelp.testExactMatch(cmd)) {<a name="line.242"></a>
|
||||
<span class="sourceLineNo">243</span> return commandHelp;<a name="line.243"></a>
|
||||
<span class="sourceLineNo">244</span> }<a name="line.244"></a>
|
||||
<span class="sourceLineNo">245</span> }<a name="line.245"></a>
|
||||
<span class="sourceLineNo">246</span><a name="line.246"></a>
|
||||
<span class="sourceLineNo">247</span> commandHelp.setSearch(search);<a name="line.247"></a>
|
||||
<span class="sourceLineNo">248</span> return commandHelp;<a name="line.248"></a>
|
||||
<span class="sourceLineNo">249</span> });<a name="line.249"></a>
|
||||
<span class="sourceLineNo">250</span> }<a name="line.250"></a>
|
||||
<span class="sourceLineNo">176</span> Integer minLen = c.getFlagValue("minlen", (Integer) null);<a name="line.176"></a>
|
||||
<span class="sourceLineNo">177</span> Integer maxLen = c.getFlagValue("maxlen", (Integer) null);<a name="line.177"></a>
|
||||
<span class="sourceLineNo">178</span> if (minLen != null) {<a name="line.178"></a>
|
||||
<span class="sourceLineNo">179</span> if (ret.length() < minLen) {<a name="line.179"></a>
|
||||
<span class="sourceLineNo">180</span> throw new InvalidCommandArgument(MessageKeys.MUST_BE_MIN_LENGTH, "{min}", String.valueOf(minLen));<a name="line.180"></a>
|
||||
<span class="sourceLineNo">181</span> }<a name="line.181"></a>
|
||||
<span class="sourceLineNo">182</span> }<a name="line.182"></a>
|
||||
<span class="sourceLineNo">183</span> if (maxLen != null) {<a name="line.183"></a>
|
||||
<span class="sourceLineNo">184</span> if (ret.length() > maxLen) {<a name="line.184"></a>
|
||||
<span class="sourceLineNo">185</span> throw new InvalidCommandArgument(MessageKeys.MUST_BE_MAX_LENGTH, "{max}", String.valueOf(maxLen));<a name="line.185"></a>
|
||||
<span class="sourceLineNo">186</span> }<a name="line.186"></a>
|
||||
<span class="sourceLineNo">187</span> }<a name="line.187"></a>
|
||||
<span class="sourceLineNo">188</span><a name="line.188"></a>
|
||||
<span class="sourceLineNo">189</span> return ret;<a name="line.189"></a>
|
||||
<span class="sourceLineNo">190</span> });<a name="line.190"></a>
|
||||
<span class="sourceLineNo">191</span> registerContext(String[].class, (c) -> {<a name="line.191"></a>
|
||||
<span class="sourceLineNo">192</span> String val;<a name="line.192"></a>
|
||||
<span class="sourceLineNo">193</span> List<String> args = c.getArgs();<a name="line.193"></a>
|
||||
<span class="sourceLineNo">194</span> if (c.isLastArg() && !c.hasAnnotation(Single.class)) {<a name="line.194"></a>
|
||||
<span class="sourceLineNo">195</span> val = ACFUtil.join(args);<a name="line.195"></a>
|
||||
<span class="sourceLineNo">196</span> } else {<a name="line.196"></a>
|
||||
<span class="sourceLineNo">197</span> val = c.popFirstArg();<a name="line.197"></a>
|
||||
<span class="sourceLineNo">198</span> }<a name="line.198"></a>
|
||||
<span class="sourceLineNo">199</span> String split = c.getAnnotationValue(Split.class, Annotations.NOTHING | Annotations.NO_EMPTY);<a name="line.199"></a>
|
||||
<span class="sourceLineNo">200</span> if (split != null) {<a name="line.200"></a>
|
||||
<span class="sourceLineNo">201</span> if (val.isEmpty()) {<a name="line.201"></a>
|
||||
<span class="sourceLineNo">202</span> throw new InvalidCommandArgument();<a name="line.202"></a>
|
||||
<span class="sourceLineNo">203</span> }<a name="line.203"></a>
|
||||
<span class="sourceLineNo">204</span> return ACFPatterns.getPattern(split).split(val);<a name="line.204"></a>
|
||||
<span class="sourceLineNo">205</span> } else if (!c.isLastArg()) {<a name="line.205"></a>
|
||||
<span class="sourceLineNo">206</span> ACFUtil.sneaky(new IllegalStateException("Weird Command signature... String[] should be last or @Split"));<a name="line.206"></a>
|
||||
<span class="sourceLineNo">207</span> }<a name="line.207"></a>
|
||||
<span class="sourceLineNo">208</span><a name="line.208"></a>
|
||||
<span class="sourceLineNo">209</span> String[] result = args.toArray(new String[0]);<a name="line.209"></a>
|
||||
<span class="sourceLineNo">210</span> args.clear();<a name="line.210"></a>
|
||||
<span class="sourceLineNo">211</span> return result;<a name="line.211"></a>
|
||||
<span class="sourceLineNo">212</span> });<a name="line.212"></a>
|
||||
<span class="sourceLineNo">213</span><a name="line.213"></a>
|
||||
<span class="sourceLineNo">214</span> registerContext(Enum.class, (c) -> {<a name="line.214"></a>
|
||||
<span class="sourceLineNo">215</span> final String first = c.popFirstArg();<a name="line.215"></a>
|
||||
<span class="sourceLineNo">216</span> //noinspection unchecked<a name="line.216"></a>
|
||||
<span class="sourceLineNo">217</span> Class<? extends Enum<?>> enumCls = (Class<? extends Enum<?>>) c.getParam().getType();<a name="line.217"></a>
|
||||
<span class="sourceLineNo">218</span> Enum<?> match = ACFUtil.simpleMatch(enumCls, first);<a name="line.218"></a>
|
||||
<span class="sourceLineNo">219</span> if (match == null) {<a name="line.219"></a>
|
||||
<span class="sourceLineNo">220</span> List<String> names = ACFUtil.enumNames(enumCls);<a name="line.220"></a>
|
||||
<span class="sourceLineNo">221</span> throw new InvalidCommandArgument(MessageKeys.PLEASE_SPECIFY_ONE_OF, "{valid}", ACFUtil.join(names, ", "));<a name="line.221"></a>
|
||||
<span class="sourceLineNo">222</span> }<a name="line.222"></a>
|
||||
<span class="sourceLineNo">223</span> return match;<a name="line.223"></a>
|
||||
<span class="sourceLineNo">224</span> });<a name="line.224"></a>
|
||||
<span class="sourceLineNo">225</span> registerOptionalContext(CommandHelp.class, (c) -> {<a name="line.225"></a>
|
||||
<span class="sourceLineNo">226</span> String first = c.getFirstArg();<a name="line.226"></a>
|
||||
<span class="sourceLineNo">227</span> String last = c.getLastArg();<a name="line.227"></a>
|
||||
<span class="sourceLineNo">228</span> int page = 1;<a name="line.228"></a>
|
||||
<span class="sourceLineNo">229</span> List<String> search = null;<a name="line.229"></a>
|
||||
<span class="sourceLineNo">230</span> if (last != null && ACFUtil.isInteger(last)) {<a name="line.230"></a>
|
||||
<span class="sourceLineNo">231</span> c.popLastArg();<a name="line.231"></a>
|
||||
<span class="sourceLineNo">232</span> page = ACFUtil.parseInt(last);<a name="line.232"></a>
|
||||
<span class="sourceLineNo">233</span> if (!c.getArgs().isEmpty()) {<a name="line.233"></a>
|
||||
<span class="sourceLineNo">234</span> search = c.getArgs();<a name="line.234"></a>
|
||||
<span class="sourceLineNo">235</span> }<a name="line.235"></a>
|
||||
<span class="sourceLineNo">236</span> } else if (first != null && ACFUtil.isInteger(first)) {<a name="line.236"></a>
|
||||
<span class="sourceLineNo">237</span> c.popFirstArg();<a name="line.237"></a>
|
||||
<span class="sourceLineNo">238</span> page = ACFUtil.parseInt(first);<a name="line.238"></a>
|
||||
<span class="sourceLineNo">239</span> if (!c.getArgs().isEmpty()) {<a name="line.239"></a>
|
||||
<span class="sourceLineNo">240</span> search = c.getArgs();<a name="line.240"></a>
|
||||
<span class="sourceLineNo">241</span> }<a name="line.241"></a>
|
||||
<span class="sourceLineNo">242</span> } else if (!c.getArgs().isEmpty()) {<a name="line.242"></a>
|
||||
<span class="sourceLineNo">243</span> search = c.getArgs();<a name="line.243"></a>
|
||||
<span class="sourceLineNo">244</span> }<a name="line.244"></a>
|
||||
<span class="sourceLineNo">245</span> CommandHelp commandHelp = manager.generateCommandHelp();<a name="line.245"></a>
|
||||
<span class="sourceLineNo">246</span> commandHelp.setPage(page);<a name="line.246"></a>
|
||||
<span class="sourceLineNo">247</span> Integer perPage = c.getFlagValue("perpage", (Integer) null);<a name="line.247"></a>
|
||||
<span class="sourceLineNo">248</span> if (perPage != null) {<a name="line.248"></a>
|
||||
<span class="sourceLineNo">249</span> commandHelp.setPerPage(perPage);<a name="line.249"></a>
|
||||
<span class="sourceLineNo">250</span> }<a name="line.250"></a>
|
||||
<span class="sourceLineNo">251</span><a name="line.251"></a>
|
||||
<span class="sourceLineNo">252</span> @NotNull<a name="line.252"></a>
|
||||
<span class="sourceLineNo">253</span> private Number parseAndValidateNumber(R c, Number minValue, Number maxValue) throws InvalidCommandArgument {<a name="line.253"></a>
|
||||
<span class="sourceLineNo">254</span> final Number val = ACFUtil.parseNumber(c.popFirstArg(), c.hasFlag("suffixes"));<a name="line.254"></a>
|
||||
<span class="sourceLineNo">255</span> validateMinMax(c, val, minValue, maxValue);<a name="line.255"></a>
|
||||
<span class="sourceLineNo">256</span> return val;<a name="line.256"></a>
|
||||
<span class="sourceLineNo">257</span> }<a name="line.257"></a>
|
||||
<span class="sourceLineNo">258</span><a name="line.258"></a>
|
||||
<span class="sourceLineNo">259</span> private void validateMinMax(R c, Number val) throws InvalidCommandArgument {<a name="line.259"></a>
|
||||
<span class="sourceLineNo">260</span> validateMinMax(c, val, null, null);<a name="line.260"></a>
|
||||
<span class="sourceLineNo">261</span> }<a name="line.261"></a>
|
||||
<span class="sourceLineNo">262</span><a name="line.262"></a>
|
||||
<span class="sourceLineNo">263</span> private void validateMinMax(R c, Number val, Number minValue, Number maxValue) throws InvalidCommandArgument {<a name="line.263"></a>
|
||||
<span class="sourceLineNo">264</span> minValue = c.getFlagValue("min", minValue);<a name="line.264"></a>
|
||||
<span class="sourceLineNo">265</span> maxValue = c.getFlagValue("max", maxValue);<a name="line.265"></a>
|
||||
<span class="sourceLineNo">266</span> if (maxValue != null && val.doubleValue() > maxValue.doubleValue()) {<a name="line.266"></a>
|
||||
<span class="sourceLineNo">267</span> throw new InvalidCommandArgument(MessageKeys.PLEASE_SPECIFY_AT_MOST, "{max}", String.valueOf(maxValue));<a name="line.267"></a>
|
||||
<span class="sourceLineNo">268</span> }<a name="line.268"></a>
|
||||
<span class="sourceLineNo">269</span> if (minValue != null && val.doubleValue() < minValue.doubleValue()) {<a name="line.269"></a>
|
||||
<span class="sourceLineNo">270</span> throw new InvalidCommandArgument(MessageKeys.PLEASE_SPECIFY_AT_LEAST, "{min}", String.valueOf(minValue));<a name="line.270"></a>
|
||||
<span class="sourceLineNo">271</span> }<a name="line.271"></a>
|
||||
<span class="sourceLineNo">272</span> }<a name="line.272"></a>
|
||||
<span class="sourceLineNo">273</span><a name="line.273"></a>
|
||||
<span class="sourceLineNo">274</span><a name="line.274"></a>
|
||||
<span class="sourceLineNo">275</span> /**<a name="line.275"></a>
|
||||
<span class="sourceLineNo">276</span> * @see #registerIssuerAwareContext(Class, IssuerAwareContextResolver)<a name="line.276"></a>
|
||||
<span class="sourceLineNo">277</span> * @deprecated Please switch to {@link #registerIssuerAwareContext(Class, IssuerAwareContextResolver)}<a name="line.277"></a>
|
||||
<span class="sourceLineNo">278</span> * as the core wants to use the platform agnostic term of "Issuer" instead of Sender<a name="line.278"></a>
|
||||
<span class="sourceLineNo">279</span> */<a name="line.279"></a>
|
||||
<span class="sourceLineNo">280</span> @Deprecated<a name="line.280"></a>
|
||||
<span class="sourceLineNo">281</span> public <T> void registerSenderAwareContext(Class<T> context, IssuerAwareContextResolver<T, R> supplier) {<a name="line.281"></a>
|
||||
<span class="sourceLineNo">282</span> contextMap.put(context, supplier);<a name="line.282"></a>
|
||||
<span class="sourceLineNo">283</span> }<a name="line.283"></a>
|
||||
<span class="sourceLineNo">284</span><a name="line.284"></a>
|
||||
<span class="sourceLineNo">285</span> /**<a name="line.285"></a>
|
||||
<span class="sourceLineNo">286</span> * Registers a context resolver that may conditionally consume input, falling back to using the context of the<a name="line.286"></a>
|
||||
<span class="sourceLineNo">287</span> * issuer to potentially fulfill this context.<a name="line.287"></a>
|
||||
<span class="sourceLineNo">288</span> * You may call {@link CommandExecutionContext#getFirstArg()} and then conditionally call {@link CommandExecutionContext#popFirstArg()}<a name="line.288"></a>
|
||||
<span class="sourceLineNo">289</span> * if you want to consume that input.<a name="line.289"></a>
|
||||
<span class="sourceLineNo">290</span> */<a name="line.290"></a>
|
||||
<span class="sourceLineNo">291</span> public <T> void registerIssuerAwareContext(Class<T> context, IssuerAwareContextResolver<T, R> supplier) {<a name="line.291"></a>
|
||||
<span class="sourceLineNo">292</span> contextMap.put(context, supplier);<a name="line.292"></a>
|
||||
<span class="sourceLineNo">293</span> }<a name="line.293"></a>
|
||||
<span class="sourceLineNo">294</span><a name="line.294"></a>
|
||||
<span class="sourceLineNo">295</span> /**<a name="line.295"></a>
|
||||
<span class="sourceLineNo">296</span> * Registers a context resolver that will never consume input. It will always satisfy its context based on the<a name="line.296"></a>
|
||||
<span class="sourceLineNo">297</span> * issuer of the command, so it will not appear in syntax strings.<a name="line.297"></a>
|
||||
<span class="sourceLineNo">298</span> */<a name="line.298"></a>
|
||||
<span class="sourceLineNo">299</span> public <T> void registerIssuerOnlyContext(Class<T> context, IssuerOnlyContextResolver<T, R> supplier) {<a name="line.299"></a>
|
||||
<span class="sourceLineNo">300</span> contextMap.put(context, supplier);<a name="line.300"></a>
|
||||
<span class="sourceLineNo">301</span> }<a name="line.301"></a>
|
||||
<span class="sourceLineNo">302</span><a name="line.302"></a>
|
||||
<span class="sourceLineNo">303</span> /**<a name="line.303"></a>
|
||||
<span class="sourceLineNo">304</span> * Registers a context that can safely accept a null input from the command issuer to resolve. This resolver should always<a name="line.304"></a>
|
||||
<span class="sourceLineNo">305</span> * call {@link CommandExecutionContext#popFirstArg()}<a name="line.305"></a>
|
||||
<span class="sourceLineNo">306</span> */<a name="line.306"></a>
|
||||
<span class="sourceLineNo">307</span> public <T> void registerOptionalContext(Class<T> context, OptionalContextResolver<T, R> supplier) {<a name="line.307"></a>
|
||||
<span class="sourceLineNo">308</span> contextMap.put(context, supplier);<a name="line.308"></a>
|
||||
<span class="sourceLineNo">309</span> }<a name="line.309"></a>
|
||||
<span class="sourceLineNo">310</span><a name="line.310"></a>
|
||||
<span class="sourceLineNo">311</span> /**<a name="line.311"></a>
|
||||
<span class="sourceLineNo">312</span> * Registers a context that requires input from the command issuer to resolve. This resolver should always<a name="line.312"></a>
|
||||
<span class="sourceLineNo">313</span> * call {@link CommandExecutionContext#popFirstArg()}<a name="line.313"></a>
|
||||
<span class="sourceLineNo">314</span> */<a name="line.314"></a>
|
||||
<span class="sourceLineNo">315</span> public <T> void registerContext(Class<T> context, ContextResolver<T, R> supplier) {<a name="line.315"></a>
|
||||
<span class="sourceLineNo">316</span> contextMap.put(context, supplier);<a name="line.316"></a>
|
||||
<span class="sourceLineNo">317</span> }<a name="line.317"></a>
|
||||
<span class="sourceLineNo">318</span><a name="line.318"></a>
|
||||
<span class="sourceLineNo">319</span> public ContextResolver<?, R> getResolver(Class<?> type) {<a name="line.319"></a>
|
||||
<span class="sourceLineNo">320</span> Class<?> rootType = type;<a name="line.320"></a>
|
||||
<span class="sourceLineNo">321</span> do {<a name="line.321"></a>
|
||||
<span class="sourceLineNo">322</span> if (type == Object.class) {<a name="line.322"></a>
|
||||
<span class="sourceLineNo">323</span> break;<a name="line.323"></a>
|
||||
<span class="sourceLineNo">324</span> }<a name="line.324"></a>
|
||||
<span class="sourceLineNo">325</span><a name="line.325"></a>
|
||||
<span class="sourceLineNo">326</span> final ContextResolver<?, R> resolver = contextMap.get(type);<a name="line.326"></a>
|
||||
<span class="sourceLineNo">327</span> if (resolver != null) {<a name="line.327"></a>
|
||||
<span class="sourceLineNo">328</span> return resolver;<a name="line.328"></a>
|
||||
<span class="sourceLineNo">329</span> }<a name="line.329"></a>
|
||||
<span class="sourceLineNo">330</span> } while ((type = type.getSuperclass()) != null);<a name="line.330"></a>
|
||||
<span class="sourceLineNo">252</span> // check if we have an exact match and should display the help page for that sub command instead<a name="line.252"></a>
|
||||
<span class="sourceLineNo">253</span> if (search != null) {<a name="line.253"></a>
|
||||
<span class="sourceLineNo">254</span> String cmd = String.join(" ", search);<a name="line.254"></a>
|
||||
<span class="sourceLineNo">255</span> if (commandHelp.testExactMatch(cmd)) {<a name="line.255"></a>
|
||||
<span class="sourceLineNo">256</span> return commandHelp;<a name="line.256"></a>
|
||||
<span class="sourceLineNo">257</span> }<a name="line.257"></a>
|
||||
<span class="sourceLineNo">258</span> }<a name="line.258"></a>
|
||||
<span class="sourceLineNo">259</span><a name="line.259"></a>
|
||||
<span class="sourceLineNo">260</span> commandHelp.setSearch(search);<a name="line.260"></a>
|
||||
<span class="sourceLineNo">261</span> return commandHelp;<a name="line.261"></a>
|
||||
<span class="sourceLineNo">262</span> });<a name="line.262"></a>
|
||||
<span class="sourceLineNo">263</span> }<a name="line.263"></a>
|
||||
<span class="sourceLineNo">264</span><a name="line.264"></a>
|
||||
<span class="sourceLineNo">265</span> @NotNull<a name="line.265"></a>
|
||||
<span class="sourceLineNo">266</span> private Number parseAndValidateNumber(String number, R c, Number minValue, Number maxValue) throws InvalidCommandArgument {<a name="line.266"></a>
|
||||
<span class="sourceLineNo">267</span> final Number val = ACFUtil.parseNumber(number, c.hasFlag("suffixes"));<a name="line.267"></a>
|
||||
<span class="sourceLineNo">268</span> validateMinMax(c, val, minValue, maxValue);<a name="line.268"></a>
|
||||
<span class="sourceLineNo">269</span> return val;<a name="line.269"></a>
|
||||
<span class="sourceLineNo">270</span> }<a name="line.270"></a>
|
||||
<span class="sourceLineNo">271</span><a name="line.271"></a>
|
||||
<span class="sourceLineNo">272</span> private void validateMinMax(R c, Number val) throws InvalidCommandArgument {<a name="line.272"></a>
|
||||
<span class="sourceLineNo">273</span> validateMinMax(c, val, null, null);<a name="line.273"></a>
|
||||
<span class="sourceLineNo">274</span> }<a name="line.274"></a>
|
||||
<span class="sourceLineNo">275</span><a name="line.275"></a>
|
||||
<span class="sourceLineNo">276</span> private void validateMinMax(R c, Number val, Number minValue, Number maxValue) throws InvalidCommandArgument {<a name="line.276"></a>
|
||||
<span class="sourceLineNo">277</span> minValue = c.getFlagValue("min", minValue);<a name="line.277"></a>
|
||||
<span class="sourceLineNo">278</span> maxValue = c.getFlagValue("max", maxValue);<a name="line.278"></a>
|
||||
<span class="sourceLineNo">279</span> if (maxValue != null && val.doubleValue() > maxValue.doubleValue()) {<a name="line.279"></a>
|
||||
<span class="sourceLineNo">280</span> throw new InvalidCommandArgument(MessageKeys.PLEASE_SPECIFY_AT_MOST, "{max}", String.valueOf(maxValue));<a name="line.280"></a>
|
||||
<span class="sourceLineNo">281</span> }<a name="line.281"></a>
|
||||
<span class="sourceLineNo">282</span> if (minValue != null && val.doubleValue() < minValue.doubleValue()) {<a name="line.282"></a>
|
||||
<span class="sourceLineNo">283</span> throw new InvalidCommandArgument(MessageKeys.PLEASE_SPECIFY_AT_LEAST, "{min}", String.valueOf(minValue));<a name="line.283"></a>
|
||||
<span class="sourceLineNo">284</span> }<a name="line.284"></a>
|
||||
<span class="sourceLineNo">285</span> }<a name="line.285"></a>
|
||||
<span class="sourceLineNo">286</span><a name="line.286"></a>
|
||||
<span class="sourceLineNo">287</span><a name="line.287"></a>
|
||||
<span class="sourceLineNo">288</span> /**<a name="line.288"></a>
|
||||
<span class="sourceLineNo">289</span> * @see #registerIssuerAwareContext(Class, IssuerAwareContextResolver)<a name="line.289"></a>
|
||||
<span class="sourceLineNo">290</span> * @deprecated Please switch to {@link #registerIssuerAwareContext(Class, IssuerAwareContextResolver)}<a name="line.290"></a>
|
||||
<span class="sourceLineNo">291</span> * as the core wants to use the platform agnostic term of "Issuer" instead of Sender<a name="line.291"></a>
|
||||
<span class="sourceLineNo">292</span> */<a name="line.292"></a>
|
||||
<span class="sourceLineNo">293</span> @Deprecated<a name="line.293"></a>
|
||||
<span class="sourceLineNo">294</span> public <T> void registerSenderAwareContext(Class<T> context, IssuerAwareContextResolver<T, R> supplier) {<a name="line.294"></a>
|
||||
<span class="sourceLineNo">295</span> contextMap.put(context, supplier);<a name="line.295"></a>
|
||||
<span class="sourceLineNo">296</span> }<a name="line.296"></a>
|
||||
<span class="sourceLineNo">297</span><a name="line.297"></a>
|
||||
<span class="sourceLineNo">298</span> /**<a name="line.298"></a>
|
||||
<span class="sourceLineNo">299</span> * Registers a context resolver that may conditionally consume input, falling back to using the context of the<a name="line.299"></a>
|
||||
<span class="sourceLineNo">300</span> * issuer to potentially fulfill this context.<a name="line.300"></a>
|
||||
<span class="sourceLineNo">301</span> * You may call {@link CommandExecutionContext#getFirstArg()} and then conditionally call {@link CommandExecutionContext#popFirstArg()}<a name="line.301"></a>
|
||||
<span class="sourceLineNo">302</span> * if you want to consume that input.<a name="line.302"></a>
|
||||
<span class="sourceLineNo">303</span> */<a name="line.303"></a>
|
||||
<span class="sourceLineNo">304</span> public <T> void registerIssuerAwareContext(Class<T> context, IssuerAwareContextResolver<T, R> supplier) {<a name="line.304"></a>
|
||||
<span class="sourceLineNo">305</span> contextMap.put(context, supplier);<a name="line.305"></a>
|
||||
<span class="sourceLineNo">306</span> }<a name="line.306"></a>
|
||||
<span class="sourceLineNo">307</span><a name="line.307"></a>
|
||||
<span class="sourceLineNo">308</span> /**<a name="line.308"></a>
|
||||
<span class="sourceLineNo">309</span> * Registers a context resolver that will never consume input. It will always satisfy its context based on the<a name="line.309"></a>
|
||||
<span class="sourceLineNo">310</span> * issuer of the command, so it will not appear in syntax strings.<a name="line.310"></a>
|
||||
<span class="sourceLineNo">311</span> */<a name="line.311"></a>
|
||||
<span class="sourceLineNo">312</span> public <T> void registerIssuerOnlyContext(Class<T> context, IssuerOnlyContextResolver<T, R> supplier) {<a name="line.312"></a>
|
||||
<span class="sourceLineNo">313</span> contextMap.put(context, supplier);<a name="line.313"></a>
|
||||
<span class="sourceLineNo">314</span> }<a name="line.314"></a>
|
||||
<span class="sourceLineNo">315</span><a name="line.315"></a>
|
||||
<span class="sourceLineNo">316</span> /**<a name="line.316"></a>
|
||||
<span class="sourceLineNo">317</span> * Registers a context that can safely accept a null input from the command issuer to resolve. This resolver should always<a name="line.317"></a>
|
||||
<span class="sourceLineNo">318</span> * call {@link CommandExecutionContext#popFirstArg()}<a name="line.318"></a>
|
||||
<span class="sourceLineNo">319</span> */<a name="line.319"></a>
|
||||
<span class="sourceLineNo">320</span> public <T> void registerOptionalContext(Class<T> context, OptionalContextResolver<T, R> supplier) {<a name="line.320"></a>
|
||||
<span class="sourceLineNo">321</span> contextMap.put(context, supplier);<a name="line.321"></a>
|
||||
<span class="sourceLineNo">322</span> }<a name="line.322"></a>
|
||||
<span class="sourceLineNo">323</span><a name="line.323"></a>
|
||||
<span class="sourceLineNo">324</span> /**<a name="line.324"></a>
|
||||
<span class="sourceLineNo">325</span> * Registers a context that requires input from the command issuer to resolve. This resolver should always<a name="line.325"></a>
|
||||
<span class="sourceLineNo">326</span> * call {@link CommandExecutionContext#popFirstArg()}<a name="line.326"></a>
|
||||
<span class="sourceLineNo">327</span> */<a name="line.327"></a>
|
||||
<span class="sourceLineNo">328</span> public <T> void registerContext(Class<T> context, ContextResolver<T, R> supplier) {<a name="line.328"></a>
|
||||
<span class="sourceLineNo">329</span> contextMap.put(context, supplier);<a name="line.329"></a>
|
||||
<span class="sourceLineNo">330</span> }<a name="line.330"></a>
|
||||
<span class="sourceLineNo">331</span><a name="line.331"></a>
|
||||
<span class="sourceLineNo">332</span> this.manager.log(LogLevel.ERROR, "Could not find context resolver", new IllegalStateException("No context resolver defined for " + rootType.getName()));<a name="line.332"></a>
|
||||
<span class="sourceLineNo">333</span> return null;<a name="line.333"></a>
|
||||
<span class="sourceLineNo">334</span> }<a name="line.334"></a>
|
||||
<span class="sourceLineNo">335</span>}<a name="line.335"></a>
|
||||
<span class="sourceLineNo">332</span> public ContextResolver<?, R> getResolver(Class<?> type) {<a name="line.332"></a>
|
||||
<span class="sourceLineNo">333</span> Class<?> rootType = type;<a name="line.333"></a>
|
||||
<span class="sourceLineNo">334</span> do {<a name="line.334"></a>
|
||||
<span class="sourceLineNo">335</span> if (type == Object.class) {<a name="line.335"></a>
|
||||
<span class="sourceLineNo">336</span> break;<a name="line.336"></a>
|
||||
<span class="sourceLineNo">337</span> }<a name="line.337"></a>
|
||||
<span class="sourceLineNo">338</span><a name="line.338"></a>
|
||||
<span class="sourceLineNo">339</span> final ContextResolver<?, R> resolver = contextMap.get(type);<a name="line.339"></a>
|
||||
<span class="sourceLineNo">340</span> if (resolver != null) {<a name="line.340"></a>
|
||||
<span class="sourceLineNo">341</span> return resolver;<a name="line.341"></a>
|
||||
<span class="sourceLineNo">342</span> }<a name="line.342"></a>
|
||||
<span class="sourceLineNo">343</span> } while ((type = type.getSuperclass()) != null);<a name="line.343"></a>
|
||||
<span class="sourceLineNo">344</span><a name="line.344"></a>
|
||||
<span class="sourceLineNo">345</span> this.manager.log(LogLevel.ERROR, "Could not find context resolver", new IllegalStateException("No context resolver defined for " + rootType.getName()));<a name="line.345"></a>
|
||||
<span class="sourceLineNo">346</span> return null;<a name="line.346"></a>
|
||||
<span class="sourceLineNo">347</span> }<a name="line.347"></a>
|
||||
<span class="sourceLineNo">348</span>}<a name="line.348"></a>
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -84,7 +84,7 @@
|
||||
<span class="sourceLineNo">076</span><a name="line.76"></a>
|
||||
<span class="sourceLineNo">077</span> protected boolean usePerIssuerLocale = false;<a name="line.77"></a>
|
||||
<span class="sourceLineNo">078</span> protected List<IssuerLocaleChangedCallback<I>> localeChangedCallbacks = new ArrayList<>();<a name="line.78"></a>
|
||||
<span class="sourceLineNo">079</span> protected Set<Locale> supportedLanguages = new HashSet<>(Arrays.asList(Locales.ENGLISH, Locales.GERMAN, Locales.SPANISH, Locales.FRENCH, Locales.CZECH, Locales.PORTUGUESE, Locales.SWEDISH, Locales.NORWEGIAN_BOKMAAL, Locales.NORWEGIAN_NYNORSK, Locales.RUSSIAN, Locales.BULGARIAN));<a name="line.79"></a>
|
||||
<span class="sourceLineNo">079</span> protected Set<Locale> supportedLanguages = new HashSet<>(Arrays.asList(Locales.ENGLISH, Locales.GERMAN, Locales.SPANISH, Locales.FRENCH, Locales.CZECH, Locales.PORTUGUESE, Locales.SWEDISH, Locales.NORWEGIAN_BOKMAAL, Locales.NORWEGIAN_NYNORSK, Locales.RUSSIAN, Locales.BULGARIAN, Locales.HUNGARIAN));<a name="line.79"></a>
|
||||
<span class="sourceLineNo">080</span> protected Map<MessageType, MF> formatters = new IdentityHashMap<>();<a name="line.80"></a>
|
||||
<span class="sourceLineNo">081</span> protected MF defaultFormatter;<a name="line.81"></a>
|
||||
<span class="sourceLineNo">082</span> protected int defaultHelpPerPage = 10;<a name="line.82"></a>
|
||||
|
||||
@@ -84,135 +84,136 @@
|
||||
<span class="sourceLineNo">076</span> public static final Locale WELSH = new Locale("cy");<a name="line.76"></a>
|
||||
<span class="sourceLineNo">077</span> public static final Locale NORWEGIAN_BOKMAAL = new Locale("nb");<a name="line.77"></a>
|
||||
<span class="sourceLineNo">078</span> public static final Locale NORWEGIAN_NYNORSK = new Locale("nn");<a name="line.78"></a>
|
||||
<span class="sourceLineNo">079</span><a name="line.79"></a>
|
||||
<span class="sourceLineNo">080</span> private final CommandManager manager;<a name="line.80"></a>
|
||||
<span class="sourceLineNo">081</span> private final LocaleManager<CommandIssuer> localeManager;<a name="line.81"></a>
|
||||
<span class="sourceLineNo">082</span> private final Map<ClassLoader, SetMultimap<String, Locale>> loadedBundles = new HashMap<>();<a name="line.82"></a>
|
||||
<span class="sourceLineNo">083</span> private final List<ClassLoader> registeredClassLoaders = new ArrayList<>();<a name="line.83"></a>
|
||||
<span class="sourceLineNo">084</span><a name="line.84"></a>
|
||||
<span class="sourceLineNo">085</span> public Locales(CommandManager manager) {<a name="line.85"></a>
|
||||
<span class="sourceLineNo">086</span> this.manager = manager;<a name="line.86"></a>
|
||||
<span class="sourceLineNo">087</span> this.localeManager = LocaleManager.create(manager::getIssuerLocale);<a name="line.87"></a>
|
||||
<span class="sourceLineNo">088</span> this.addBundleClassLoader(this.getClass().getClassLoader());<a name="line.88"></a>
|
||||
<span class="sourceLineNo">089</span> }<a name="line.89"></a>
|
||||
<span class="sourceLineNo">090</span><a name="line.90"></a>
|
||||
<span class="sourceLineNo">091</span> public void loadLanguages() {<a name="line.91"></a>
|
||||
<span class="sourceLineNo">092</span> addMessageBundles("acf-core");<a name="line.92"></a>
|
||||
<span class="sourceLineNo">093</span> }<a name="line.93"></a>
|
||||
<span class="sourceLineNo">094</span><a name="line.94"></a>
|
||||
<span class="sourceLineNo">095</span> public Locale getDefaultLocale() {<a name="line.95"></a>
|
||||
<span class="sourceLineNo">096</span> return this.localeManager.getDefaultLocale();<a name="line.96"></a>
|
||||
<span class="sourceLineNo">097</span> }<a name="line.97"></a>
|
||||
<span class="sourceLineNo">098</span><a name="line.98"></a>
|
||||
<span class="sourceLineNo">099</span> public Locale setDefaultLocale(Locale locale) {<a name="line.99"></a>
|
||||
<span class="sourceLineNo">100</span> return this.localeManager.setDefaultLocale(locale);<a name="line.100"></a>
|
||||
<span class="sourceLineNo">101</span> }<a name="line.101"></a>
|
||||
<span class="sourceLineNo">102</span><a name="line.102"></a>
|
||||
<span class="sourceLineNo">103</span> /**<a name="line.103"></a>
|
||||
<span class="sourceLineNo">104</span> * Looks for all previously loaded bundles, and if any new Supported Languages have been added, load them.<a name="line.104"></a>
|
||||
<span class="sourceLineNo">105</span> */<a name="line.105"></a>
|
||||
<span class="sourceLineNo">106</span> public void loadMissingBundles() {<a name="line.106"></a>
|
||||
<span class="sourceLineNo">107</span> //noinspection unchecked<a name="line.107"></a>
|
||||
<span class="sourceLineNo">108</span> Set<Locale> supportedLanguages = manager.getSupportedLanguages();<a name="line.108"></a>
|
||||
<span class="sourceLineNo">109</span> for (Locale locale : supportedLanguages) {<a name="line.109"></a>
|
||||
<span class="sourceLineNo">110</span> for(SetMultimap<String, Locale> localeData: this.loadedBundles.values()) {<a name="line.110"></a>
|
||||
<span class="sourceLineNo">111</span> for (String bundleName : new HashSet<>(localeData.keys())) {<a name="line.111"></a>
|
||||
<span class="sourceLineNo">112</span> addMessageBundle(bundleName, locale);<a name="line.112"></a>
|
||||
<span class="sourceLineNo">113</span> }<a name="line.113"></a>
|
||||
<span class="sourceLineNo">114</span> }<a name="line.114"></a>
|
||||
<span class="sourceLineNo">115</span><a name="line.115"></a>
|
||||
<span class="sourceLineNo">116</span> }<a name="line.116"></a>
|
||||
<span class="sourceLineNo">117</span> }<a name="line.117"></a>
|
||||
<span class="sourceLineNo">118</span><a name="line.118"></a>
|
||||
<span class="sourceLineNo">119</span> public void addMessageBundles(String... bundleNames) {<a name="line.119"></a>
|
||||
<span class="sourceLineNo">120</span> for (String bundleName : bundleNames) {<a name="line.120"></a>
|
||||
<span class="sourceLineNo">121</span> //noinspection unchecked<a name="line.121"></a>
|
||||
<span class="sourceLineNo">122</span> Set<Locale> supportedLanguages = manager.getSupportedLanguages();<a name="line.122"></a>
|
||||
<span class="sourceLineNo">123</span> for (Locale locale : supportedLanguages) {<a name="line.123"></a>
|
||||
<span class="sourceLineNo">124</span> addMessageBundle(bundleName, locale);<a name="line.124"></a>
|
||||
<span class="sourceLineNo">125</span> }<a name="line.125"></a>
|
||||
<span class="sourceLineNo">126</span> }<a name="line.126"></a>
|
||||
<span class="sourceLineNo">127</span> }<a name="line.127"></a>
|
||||
<span class="sourceLineNo">128</span><a name="line.128"></a>
|
||||
<span class="sourceLineNo">129</span> public boolean addMessageBundle(String bundleName, Locale locale) {<a name="line.129"></a>
|
||||
<span class="sourceLineNo">130</span> boolean found = false;<a name="line.130"></a>
|
||||
<span class="sourceLineNo">131</span> for(ClassLoader classLoader: this.registeredClassLoaders) {<a name="line.131"></a>
|
||||
<span class="sourceLineNo">132</span> if(this.addMessageBundle(classLoader, bundleName, locale)) {<a name="line.132"></a>
|
||||
<span class="sourceLineNo">133</span> found = true;<a name="line.133"></a>
|
||||
<span class="sourceLineNo">134</span> }<a name="line.134"></a>
|
||||
<span class="sourceLineNo">135</span> }<a name="line.135"></a>
|
||||
<span class="sourceLineNo">136</span><a name="line.136"></a>
|
||||
<span class="sourceLineNo">137</span> return found;<a name="line.137"></a>
|
||||
<span class="sourceLineNo">138</span> }<a name="line.138"></a>
|
||||
<span class="sourceLineNo">139</span><a name="line.139"></a>
|
||||
<span class="sourceLineNo">140</span> public boolean addMessageBundle(ClassLoader classLoader, String bundleName, Locale locale) {<a name="line.140"></a>
|
||||
<span class="sourceLineNo">141</span> SetMultimap<String, Locale> classLoadersLocales = this.loadedBundles.getOrDefault(classLoader, HashMultimap.create());<a name="line.141"></a>
|
||||
<span class="sourceLineNo">142</span> if(!classLoadersLocales.containsEntry(bundleName, locale)) {<a name="line.142"></a>
|
||||
<span class="sourceLineNo">143</span> if(this.localeManager.addMessageBundle(classLoader, bundleName, locale)) {<a name="line.143"></a>
|
||||
<span class="sourceLineNo">144</span> classLoadersLocales.put(bundleName, locale);<a name="line.144"></a>
|
||||
<span class="sourceLineNo">145</span> this.loadedBundles.put(classLoader, classLoadersLocales);<a name="line.145"></a>
|
||||
<span class="sourceLineNo">146</span> return true;<a name="line.146"></a>
|
||||
<span class="sourceLineNo">147</span> }<a name="line.147"></a>
|
||||
<span class="sourceLineNo">148</span> }<a name="line.148"></a>
|
||||
<span class="sourceLineNo">149</span><a name="line.149"></a>
|
||||
<span class="sourceLineNo">150</span> return false;<a name="line.150"></a>
|
||||
<span class="sourceLineNo">151</span> }<a name="line.151"></a>
|
||||
<span class="sourceLineNo">152</span><a name="line.152"></a>
|
||||
<span class="sourceLineNo">153</span> public void addMessageStrings(Locale locale, @NotNull Map<String, String> messages) {<a name="line.153"></a>
|
||||
<span class="sourceLineNo">154</span> Map<MessageKey, String> map = new HashMap<>(messages.size());<a name="line.154"></a>
|
||||
<span class="sourceLineNo">155</span> messages.forEach((key, value) -> map.put(MessageKey.of(key), value));<a name="line.155"></a>
|
||||
<span class="sourceLineNo">156</span> this.localeManager.addMessages(locale, map);<a name="line.156"></a>
|
||||
<span class="sourceLineNo">157</span> }<a name="line.157"></a>
|
||||
<span class="sourceLineNo">158</span><a name="line.158"></a>
|
||||
<span class="sourceLineNo">159</span> public void addMessages(Locale locale, @NotNull Map<? extends MessageKeyProvider, String> messages) {<a name="line.159"></a>
|
||||
<span class="sourceLineNo">160</span> Map<MessageKey, String> messagesMap = new LinkedHashMap<>();<a name="line.160"></a>
|
||||
<span class="sourceLineNo">161</span> for (Map.Entry<? extends MessageKeyProvider, String> entry : messages.entrySet()) {<a name="line.161"></a>
|
||||
<span class="sourceLineNo">162</span> messagesMap.put(entry.getKey().getMessageKey(), entry.getValue());<a name="line.162"></a>
|
||||
<span class="sourceLineNo">163</span> }<a name="line.163"></a>
|
||||
<span class="sourceLineNo">164</span><a name="line.164"></a>
|
||||
<span class="sourceLineNo">165</span> this.localeManager.addMessages(locale, messagesMap);<a name="line.165"></a>
|
||||
<span class="sourceLineNo">166</span> }<a name="line.166"></a>
|
||||
<span class="sourceLineNo">167</span><a name="line.167"></a>
|
||||
<span class="sourceLineNo">168</span> public String addMessage(Locale locale, MessageKeyProvider key, String message) {<a name="line.168"></a>
|
||||
<span class="sourceLineNo">169</span> return this.localeManager.addMessage(locale, key.getMessageKey(), message);<a name="line.169"></a>
|
||||
<span class="sourceLineNo">170</span> }<a name="line.170"></a>
|
||||
<span class="sourceLineNo">171</span><a name="line.171"></a>
|
||||
<span class="sourceLineNo">172</span> public String getMessage(CommandIssuer issuer, MessageKeyProvider key) {<a name="line.172"></a>
|
||||
<span class="sourceLineNo">173</span> final MessageKey msgKey = key.getMessageKey();<a name="line.173"></a>
|
||||
<span class="sourceLineNo">174</span> String message = this.localeManager.getMessage(issuer, msgKey);<a name="line.174"></a>
|
||||
<span class="sourceLineNo">175</span> if (message == null) {<a name="line.175"></a>
|
||||
<span class="sourceLineNo">176</span> manager.log(LogLevel.ERROR, "Missing Language Key: " + msgKey.getKey());<a name="line.176"></a>
|
||||
<span class="sourceLineNo">177</span> message = "<MISSING_LANGUAGE_KEY:" + msgKey.getKey() + ">";<a name="line.177"></a>
|
||||
<span class="sourceLineNo">178</span> }<a name="line.178"></a>
|
||||
<span class="sourceLineNo">179</span> return message;<a name="line.179"></a>
|
||||
<span class="sourceLineNo">180</span> }<a name="line.180"></a>
|
||||
<span class="sourceLineNo">181</span><a name="line.181"></a>
|
||||
<span class="sourceLineNo">182</span> public String replaceI18NStrings(String message) {<a name="line.182"></a>
|
||||
<span class="sourceLineNo">183</span> if (message == null) {<a name="line.183"></a>
|
||||
<span class="sourceLineNo">184</span> return null;<a name="line.184"></a>
|
||||
<span class="sourceLineNo">185</span> }<a name="line.185"></a>
|
||||
<span class="sourceLineNo">186</span> Matcher matcher = ACFPatterns.I18N_STRING.matcher(message);<a name="line.186"></a>
|
||||
<span class="sourceLineNo">187</span> if (!matcher.find()) {<a name="line.187"></a>
|
||||
<span class="sourceLineNo">188</span> return message;<a name="line.188"></a>
|
||||
<span class="sourceLineNo">189</span> }<a name="line.189"></a>
|
||||
<span class="sourceLineNo">190</span><a name="line.190"></a>
|
||||
<span class="sourceLineNo">191</span> CommandIssuer issuer = CommandManager.getCurrentCommandIssuer();<a name="line.191"></a>
|
||||
<span class="sourceLineNo">192</span><a name="line.192"></a>
|
||||
<span class="sourceLineNo">193</span> matcher.reset();<a name="line.193"></a>
|
||||
<span class="sourceLineNo">194</span> StringBuffer sb = new StringBuffer(message.length());<a name="line.194"></a>
|
||||
<span class="sourceLineNo">195</span> while (matcher.find()) {<a name="line.195"></a>
|
||||
<span class="sourceLineNo">196</span> MessageKey key = MessageKey.of(matcher.group("key"));<a name="line.196"></a>
|
||||
<span class="sourceLineNo">197</span> matcher.appendReplacement(sb, Matcher.quoteReplacement(getMessage(issuer, key)));<a name="line.197"></a>
|
||||
<span class="sourceLineNo">198</span> }<a name="line.198"></a>
|
||||
<span class="sourceLineNo">199</span> matcher.appendTail(sb);<a name="line.199"></a>
|
||||
<span class="sourceLineNo">200</span> return sb.toString();<a name="line.200"></a>
|
||||
<span class="sourceLineNo">201</span> }<a name="line.201"></a>
|
||||
<span class="sourceLineNo">202</span><a name="line.202"></a>
|
||||
<span class="sourceLineNo">203</span> public boolean addBundleClassLoader(ClassLoader classLoader) {<a name="line.203"></a>
|
||||
<span class="sourceLineNo">204</span> return !this.registeredClassLoaders.contains(classLoader) && this.registeredClassLoaders.add(classLoader);<a name="line.204"></a>
|
||||
<span class="sourceLineNo">205</span><a name="line.205"></a>
|
||||
<span class="sourceLineNo">206</span> }<a name="line.206"></a>
|
||||
<span class="sourceLineNo">207</span>}<a name="line.207"></a>
|
||||
<span class="sourceLineNo">079</span> public static final Locale HUNGARIAN = new Locale("hu");<a name="line.79"></a>
|
||||
<span class="sourceLineNo">080</span><a name="line.80"></a>
|
||||
<span class="sourceLineNo">081</span> private final CommandManager manager;<a name="line.81"></a>
|
||||
<span class="sourceLineNo">082</span> private final LocaleManager<CommandIssuer> localeManager;<a name="line.82"></a>
|
||||
<span class="sourceLineNo">083</span> private final Map<ClassLoader, SetMultimap<String, Locale>> loadedBundles = new HashMap<>();<a name="line.83"></a>
|
||||
<span class="sourceLineNo">084</span> private final List<ClassLoader> registeredClassLoaders = new ArrayList<>();<a name="line.84"></a>
|
||||
<span class="sourceLineNo">085</span><a name="line.85"></a>
|
||||
<span class="sourceLineNo">086</span> public Locales(CommandManager manager) {<a name="line.86"></a>
|
||||
<span class="sourceLineNo">087</span> this.manager = manager;<a name="line.87"></a>
|
||||
<span class="sourceLineNo">088</span> this.localeManager = LocaleManager.create(manager::getIssuerLocale);<a name="line.88"></a>
|
||||
<span class="sourceLineNo">089</span> this.addBundleClassLoader(this.getClass().getClassLoader());<a name="line.89"></a>
|
||||
<span class="sourceLineNo">090</span> }<a name="line.90"></a>
|
||||
<span class="sourceLineNo">091</span><a name="line.91"></a>
|
||||
<span class="sourceLineNo">092</span> public void loadLanguages() {<a name="line.92"></a>
|
||||
<span class="sourceLineNo">093</span> addMessageBundles("acf-core");<a name="line.93"></a>
|
||||
<span class="sourceLineNo">094</span> }<a name="line.94"></a>
|
||||
<span class="sourceLineNo">095</span><a name="line.95"></a>
|
||||
<span class="sourceLineNo">096</span> public Locale getDefaultLocale() {<a name="line.96"></a>
|
||||
<span class="sourceLineNo">097</span> return this.localeManager.getDefaultLocale();<a name="line.97"></a>
|
||||
<span class="sourceLineNo">098</span> }<a name="line.98"></a>
|
||||
<span class="sourceLineNo">099</span><a name="line.99"></a>
|
||||
<span class="sourceLineNo">100</span> public Locale setDefaultLocale(Locale locale) {<a name="line.100"></a>
|
||||
<span class="sourceLineNo">101</span> return this.localeManager.setDefaultLocale(locale);<a name="line.101"></a>
|
||||
<span class="sourceLineNo">102</span> }<a name="line.102"></a>
|
||||
<span class="sourceLineNo">103</span><a name="line.103"></a>
|
||||
<span class="sourceLineNo">104</span> /**<a name="line.104"></a>
|
||||
<span class="sourceLineNo">105</span> * Looks for all previously loaded bundles, and if any new Supported Languages have been added, load them.<a name="line.105"></a>
|
||||
<span class="sourceLineNo">106</span> */<a name="line.106"></a>
|
||||
<span class="sourceLineNo">107</span> public void loadMissingBundles() {<a name="line.107"></a>
|
||||
<span class="sourceLineNo">108</span> //noinspection unchecked<a name="line.108"></a>
|
||||
<span class="sourceLineNo">109</span> Set<Locale> supportedLanguages = manager.getSupportedLanguages();<a name="line.109"></a>
|
||||
<span class="sourceLineNo">110</span> for (Locale locale : supportedLanguages) {<a name="line.110"></a>
|
||||
<span class="sourceLineNo">111</span> for(SetMultimap<String, Locale> localeData: this.loadedBundles.values()) {<a name="line.111"></a>
|
||||
<span class="sourceLineNo">112</span> for (String bundleName : new HashSet<>(localeData.keys())) {<a name="line.112"></a>
|
||||
<span class="sourceLineNo">113</span> addMessageBundle(bundleName, locale);<a name="line.113"></a>
|
||||
<span class="sourceLineNo">114</span> }<a name="line.114"></a>
|
||||
<span class="sourceLineNo">115</span> }<a name="line.115"></a>
|
||||
<span class="sourceLineNo">116</span><a name="line.116"></a>
|
||||
<span class="sourceLineNo">117</span> }<a name="line.117"></a>
|
||||
<span class="sourceLineNo">118</span> }<a name="line.118"></a>
|
||||
<span class="sourceLineNo">119</span><a name="line.119"></a>
|
||||
<span class="sourceLineNo">120</span> public void addMessageBundles(String... bundleNames) {<a name="line.120"></a>
|
||||
<span class="sourceLineNo">121</span> for (String bundleName : bundleNames) {<a name="line.121"></a>
|
||||
<span class="sourceLineNo">122</span> //noinspection unchecked<a name="line.122"></a>
|
||||
<span class="sourceLineNo">123</span> Set<Locale> supportedLanguages = manager.getSupportedLanguages();<a name="line.123"></a>
|
||||
<span class="sourceLineNo">124</span> for (Locale locale : supportedLanguages) {<a name="line.124"></a>
|
||||
<span class="sourceLineNo">125</span> addMessageBundle(bundleName, locale);<a name="line.125"></a>
|
||||
<span class="sourceLineNo">126</span> }<a name="line.126"></a>
|
||||
<span class="sourceLineNo">127</span> }<a name="line.127"></a>
|
||||
<span class="sourceLineNo">128</span> }<a name="line.128"></a>
|
||||
<span class="sourceLineNo">129</span><a name="line.129"></a>
|
||||
<span class="sourceLineNo">130</span> public boolean addMessageBundle(String bundleName, Locale locale) {<a name="line.130"></a>
|
||||
<span class="sourceLineNo">131</span> boolean found = false;<a name="line.131"></a>
|
||||
<span class="sourceLineNo">132</span> for(ClassLoader classLoader: this.registeredClassLoaders) {<a name="line.132"></a>
|
||||
<span class="sourceLineNo">133</span> if(this.addMessageBundle(classLoader, bundleName, locale)) {<a name="line.133"></a>
|
||||
<span class="sourceLineNo">134</span> found = true;<a name="line.134"></a>
|
||||
<span class="sourceLineNo">135</span> }<a name="line.135"></a>
|
||||
<span class="sourceLineNo">136</span> }<a name="line.136"></a>
|
||||
<span class="sourceLineNo">137</span><a name="line.137"></a>
|
||||
<span class="sourceLineNo">138</span> return found;<a name="line.138"></a>
|
||||
<span class="sourceLineNo">139</span> }<a name="line.139"></a>
|
||||
<span class="sourceLineNo">140</span><a name="line.140"></a>
|
||||
<span class="sourceLineNo">141</span> public boolean addMessageBundle(ClassLoader classLoader, String bundleName, Locale locale) {<a name="line.141"></a>
|
||||
<span class="sourceLineNo">142</span> SetMultimap<String, Locale> classLoadersLocales = this.loadedBundles.getOrDefault(classLoader, HashMultimap.create());<a name="line.142"></a>
|
||||
<span class="sourceLineNo">143</span> if(!classLoadersLocales.containsEntry(bundleName, locale)) {<a name="line.143"></a>
|
||||
<span class="sourceLineNo">144</span> if(this.localeManager.addMessageBundle(classLoader, bundleName, locale)) {<a name="line.144"></a>
|
||||
<span class="sourceLineNo">145</span> classLoadersLocales.put(bundleName, locale);<a name="line.145"></a>
|
||||
<span class="sourceLineNo">146</span> this.loadedBundles.put(classLoader, classLoadersLocales);<a name="line.146"></a>
|
||||
<span class="sourceLineNo">147</span> return true;<a name="line.147"></a>
|
||||
<span class="sourceLineNo">148</span> }<a name="line.148"></a>
|
||||
<span class="sourceLineNo">149</span> }<a name="line.149"></a>
|
||||
<span class="sourceLineNo">150</span><a name="line.150"></a>
|
||||
<span class="sourceLineNo">151</span> return false;<a name="line.151"></a>
|
||||
<span class="sourceLineNo">152</span> }<a name="line.152"></a>
|
||||
<span class="sourceLineNo">153</span><a name="line.153"></a>
|
||||
<span class="sourceLineNo">154</span> public void addMessageStrings(Locale locale, @NotNull Map<String, String> messages) {<a name="line.154"></a>
|
||||
<span class="sourceLineNo">155</span> Map<MessageKey, String> map = new HashMap<>(messages.size());<a name="line.155"></a>
|
||||
<span class="sourceLineNo">156</span> messages.forEach((key, value) -> map.put(MessageKey.of(key), value));<a name="line.156"></a>
|
||||
<span class="sourceLineNo">157</span> this.localeManager.addMessages(locale, map);<a name="line.157"></a>
|
||||
<span class="sourceLineNo">158</span> }<a name="line.158"></a>
|
||||
<span class="sourceLineNo">159</span><a name="line.159"></a>
|
||||
<span class="sourceLineNo">160</span> public void addMessages(Locale locale, @NotNull Map<? extends MessageKeyProvider, String> messages) {<a name="line.160"></a>
|
||||
<span class="sourceLineNo">161</span> Map<MessageKey, String> messagesMap = new LinkedHashMap<>();<a name="line.161"></a>
|
||||
<span class="sourceLineNo">162</span> for (Map.Entry<? extends MessageKeyProvider, String> entry : messages.entrySet()) {<a name="line.162"></a>
|
||||
<span class="sourceLineNo">163</span> messagesMap.put(entry.getKey().getMessageKey(), entry.getValue());<a name="line.163"></a>
|
||||
<span class="sourceLineNo">164</span> }<a name="line.164"></a>
|
||||
<span class="sourceLineNo">165</span><a name="line.165"></a>
|
||||
<span class="sourceLineNo">166</span> this.localeManager.addMessages(locale, messagesMap);<a name="line.166"></a>
|
||||
<span class="sourceLineNo">167</span> }<a name="line.167"></a>
|
||||
<span class="sourceLineNo">168</span><a name="line.168"></a>
|
||||
<span class="sourceLineNo">169</span> public String addMessage(Locale locale, MessageKeyProvider key, String message) {<a name="line.169"></a>
|
||||
<span class="sourceLineNo">170</span> return this.localeManager.addMessage(locale, key.getMessageKey(), message);<a name="line.170"></a>
|
||||
<span class="sourceLineNo">171</span> }<a name="line.171"></a>
|
||||
<span class="sourceLineNo">172</span><a name="line.172"></a>
|
||||
<span class="sourceLineNo">173</span> public String getMessage(CommandIssuer issuer, MessageKeyProvider key) {<a name="line.173"></a>
|
||||
<span class="sourceLineNo">174</span> final MessageKey msgKey = key.getMessageKey();<a name="line.174"></a>
|
||||
<span class="sourceLineNo">175</span> String message = this.localeManager.getMessage(issuer, msgKey);<a name="line.175"></a>
|
||||
<span class="sourceLineNo">176</span> if (message == null) {<a name="line.176"></a>
|
||||
<span class="sourceLineNo">177</span> manager.log(LogLevel.ERROR, "Missing Language Key: " + msgKey.getKey());<a name="line.177"></a>
|
||||
<span class="sourceLineNo">178</span> message = "<MISSING_LANGUAGE_KEY:" + msgKey.getKey() + ">";<a name="line.178"></a>
|
||||
<span class="sourceLineNo">179</span> }<a name="line.179"></a>
|
||||
<span class="sourceLineNo">180</span> return message;<a name="line.180"></a>
|
||||
<span class="sourceLineNo">181</span> }<a name="line.181"></a>
|
||||
<span class="sourceLineNo">182</span><a name="line.182"></a>
|
||||
<span class="sourceLineNo">183</span> public String replaceI18NStrings(String message) {<a name="line.183"></a>
|
||||
<span class="sourceLineNo">184</span> if (message == null) {<a name="line.184"></a>
|
||||
<span class="sourceLineNo">185</span> return null;<a name="line.185"></a>
|
||||
<span class="sourceLineNo">186</span> }<a name="line.186"></a>
|
||||
<span class="sourceLineNo">187</span> Matcher matcher = ACFPatterns.I18N_STRING.matcher(message);<a name="line.187"></a>
|
||||
<span class="sourceLineNo">188</span> if (!matcher.find()) {<a name="line.188"></a>
|
||||
<span class="sourceLineNo">189</span> return message;<a name="line.189"></a>
|
||||
<span class="sourceLineNo">190</span> }<a name="line.190"></a>
|
||||
<span class="sourceLineNo">191</span><a name="line.191"></a>
|
||||
<span class="sourceLineNo">192</span> CommandIssuer issuer = CommandManager.getCurrentCommandIssuer();<a name="line.192"></a>
|
||||
<span class="sourceLineNo">193</span><a name="line.193"></a>
|
||||
<span class="sourceLineNo">194</span> matcher.reset();<a name="line.194"></a>
|
||||
<span class="sourceLineNo">195</span> StringBuffer sb = new StringBuffer(message.length());<a name="line.195"></a>
|
||||
<span class="sourceLineNo">196</span> while (matcher.find()) {<a name="line.196"></a>
|
||||
<span class="sourceLineNo">197</span> MessageKey key = MessageKey.of(matcher.group("key"));<a name="line.197"></a>
|
||||
<span class="sourceLineNo">198</span> matcher.appendReplacement(sb, Matcher.quoteReplacement(getMessage(issuer, key)));<a name="line.198"></a>
|
||||
<span class="sourceLineNo">199</span> }<a name="line.199"></a>
|
||||
<span class="sourceLineNo">200</span> matcher.appendTail(sb);<a name="line.200"></a>
|
||||
<span class="sourceLineNo">201</span> return sb.toString();<a name="line.201"></a>
|
||||
<span class="sourceLineNo">202</span> }<a name="line.202"></a>
|
||||
<span class="sourceLineNo">203</span><a name="line.203"></a>
|
||||
<span class="sourceLineNo">204</span> public boolean addBundleClassLoader(ClassLoader classLoader) {<a name="line.204"></a>
|
||||
<span class="sourceLineNo">205</span> return !this.registeredClassLoaders.contains(classLoader) && this.registeredClassLoaders.add(classLoader);<a name="line.205"></a>
|
||||
<span class="sourceLineNo">206</span><a name="line.206"></a>
|
||||
<span class="sourceLineNo">207</span> }<a name="line.207"></a>
|
||||
<span class="sourceLineNo">208</span>}<a name="line.208"></a>
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -153,7 +153,7 @@
|
||||
<span class="sourceLineNo">145</span> }<a name="line.145"></a>
|
||||
<span class="sourceLineNo">146</span> preCommand();<a name="line.146"></a>
|
||||
<span class="sourceLineNo">147</span> try {<a name="line.147"></a>
|
||||
<span class="sourceLineNo">148</span> this.manager.conditions.validateConditions(context);<a name="line.148"></a>
|
||||
<span class="sourceLineNo">148</span> this.manager.getCommandConditions().validateConditions(context);<a name="line.148"></a>
|
||||
<span class="sourceLineNo">149</span> Map<String, Object> passedArgs = resolveContexts(sender, args);<a name="line.149"></a>
|
||||
<span class="sourceLineNo">150</span> if (passedArgs == null) return;<a name="line.150"></a>
|
||||
<span class="sourceLineNo">151</span><a name="line.151"></a>
|
||||
@@ -264,7 +264,7 @@
|
||||
<span class="sourceLineNo">256</span> throw new IllegalStateException("Parameter " + parameter.getName() + " is primitive and does not support Optional.");<a name="line.256"></a>
|
||||
<span class="sourceLineNo">257</span> }<a name="line.257"></a>
|
||||
<span class="sourceLineNo">258</span> //noinspection unchecked<a name="line.258"></a>
|
||||
<span class="sourceLineNo">259</span> this.manager.conditions.validateConditions(context, value);<a name="line.259"></a>
|
||||
<span class="sourceLineNo">259</span> this.manager.getCommandConditions().validateConditions(context, value);<a name="line.259"></a>
|
||||
<span class="sourceLineNo">260</span> passedArgs.put(parameterName, value);<a name="line.260"></a>
|
||||
<span class="sourceLineNo">261</span> continue;<a name="line.261"></a>
|
||||
<span class="sourceLineNo">262</span> } else if (requiresInput) {<a name="line.262"></a>
|
||||
@@ -304,7 +304,7 @@
|
||||
<span class="sourceLineNo">296</span> Object paramValue = resolver.getContext(context);<a name="line.296"></a>
|
||||
<span class="sourceLineNo">297</span><a name="line.297"></a>
|
||||
<span class="sourceLineNo">298</span> //noinspection unchecked<a name="line.298"></a>
|
||||
<span class="sourceLineNo">299</span> this.manager.conditions.validateConditions(context, paramValue);<a name="line.299"></a>
|
||||
<span class="sourceLineNo">299</span> this.manager.getCommandConditions().validateConditions(context, paramValue);<a name="line.299"></a>
|
||||
<span class="sourceLineNo">300</span> passedArgs.put(parameterName, paramValue);<a name="line.300"></a>
|
||||
<span class="sourceLineNo">301</span> }<a name="line.301"></a>
|
||||
<span class="sourceLineNo">302</span> return passedArgs;<a name="line.302"></a>
|
||||
|
||||
@@ -126,7 +126,7 @@ extends co.aikar.commands.Locales</pre>
|
||||
<!-- -->
|
||||
</a>
|
||||
<h3>Fields inherited from class co.aikar.commands.Locales</h3>
|
||||
<code>AFRIKAANS, ARABIC, BULGARIAN, CHINESE, CZECH, DANISH, DUTCH, ENGLISH, FINNISH, FRENCH, GERMAN, GREEK, HEBREW, HINDI, ITALIAN, JAPANESE, KOREAN, LATIN, NORWEGIAN_BOKMAAL, NORWEGIAN_NYNORSK, POLISH, PORTUGUESE, ROMANIAN, RUSSIAN, SIMPLIFIED_CHINESE, SPANISH, SWEDISH, THAI, TRADITIONAL_CHINESE, TURKISH, UKRANIAN, VIETNAMESE, WELSH</code></li>
|
||||
<code>AFRIKAANS, ARABIC, BULGARIAN, CHINESE, CZECH, DANISH, DUTCH, ENGLISH, FINNISH, FRENCH, GERMAN, GREEK, HEBREW, HINDI, HUNGARIAN, ITALIAN, JAPANESE, KOREAN, LATIN, NORWEGIAN_BOKMAAL, NORWEGIAN_NYNORSK, POLISH, PORTUGUESE, ROMANIAN, RUSSIAN, SIMPLIFIED_CHINESE, SPANISH, SWEDISH, THAI, TRADITIONAL_CHINESE, TURKISH, UKRANIAN, VIETNAMESE, WELSH</code></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
@@ -213,7 +213,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>matchPlayer</h4>
|
||||
<pre>public static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a><org.spongepowered.api.entity.living.player.Player> <a href="../../../src-html/co/aikar/commands/ACFSpongeUtil.html#line.75">matchPlayer</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> partialName)</pre>
|
||||
<pre>public static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a><org.spongepowered.api.entity.living.player.Player> <a href="../../../src-html/co/aikar/commands/ACFSpongeUtil.html#line.71">matchPlayer</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> partialName)</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="isValidName-java.lang.String-">
|
||||
@@ -222,7 +222,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<ul class="blockListLast">
|
||||
<li class="blockList">
|
||||
<h4>isValidName</h4>
|
||||
<pre>public static boolean <a href="../../../src-html/co/aikar/commands/ACFSpongeUtil.html#line.96">isValidName</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> name)</pre>
|
||||
<pre>public static boolean <a href="../../../src-html/co/aikar/commands/ACFSpongeUtil.html#line.92">isValidName</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> name)</pre>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
@@ -132,7 +132,7 @@ extends co.aikar.commands.Locales</pre>
|
||||
<!-- -->
|
||||
</a>
|
||||
<h3>Fields inherited from class co.aikar.commands.Locales</h3>
|
||||
<code>AFRIKAANS, ARABIC, BULGARIAN, CHINESE, CZECH, DANISH, DUTCH, ENGLISH, FINNISH, FRENCH, GERMAN, GREEK, HEBREW, HINDI, ITALIAN, JAPANESE, KOREAN, LATIN, NORWEGIAN_BOKMAAL, NORWEGIAN_NYNORSK, POLISH, PORTUGUESE, ROMANIAN, RUSSIAN, SIMPLIFIED_CHINESE, SPANISH, SWEDISH, THAI, TRADITIONAL_CHINESE, TURKISH, UKRANIAN, VIETNAMESE, WELSH</code></li>
|
||||
<code>AFRIKAANS, ARABIC, BULGARIAN, CHINESE, CZECH, DANISH, DUTCH, ENGLISH, FINNISH, FRENCH, GERMAN, GREEK, HEBREW, HINDI, HUNGARIAN, ITALIAN, JAPANESE, KOREAN, LATIN, NORWEGIAN_BOKMAAL, NORWEGIAN_NYNORSK, POLISH, PORTUGUESE, ROMANIAN, RUSSIAN, SIMPLIFIED_CHINESE, SPANISH, SWEDISH, THAI, TRADITIONAL_CHINESE, TURKISH, UKRANIAN, VIETNAMESE, WELSH</code></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
@@ -25,87 +25,83 @@
|
||||
<span class="sourceLineNo">017</span> return null;<a name="line.17"></a>
|
||||
<span class="sourceLineNo">018</span> }<a name="line.18"></a>
|
||||
<span class="sourceLineNo">019</span> String name = ACFUtil.replace(search, ":confirm", "");<a name="line.19"></a>
|
||||
<span class="sourceLineNo">020</span> if (name.length() < 3) {<a name="line.20"></a>
|
||||
<span class="sourceLineNo">021</span> issuer.sendError(MinecraftMessageKeys.USERNAME_TOO_SHORT);<a name="line.21"></a>
|
||||
<span class="sourceLineNo">020</span> if (!isValidName(name)) {<a name="line.20"></a>
|
||||
<span class="sourceLineNo">021</span> issuer.sendError(MinecraftMessageKeys.IS_NOT_A_VALID_NAME, "{name}", name);<a name="line.21"></a>
|
||||
<span class="sourceLineNo">022</span> return null;<a name="line.22"></a>
|
||||
<span class="sourceLineNo">023</span> }<a name="line.23"></a>
|
||||
<span class="sourceLineNo">024</span> if (!isValidName(name)) {<a name="line.24"></a>
|
||||
<span class="sourceLineNo">025</span> issuer.sendError(MinecraftMessageKeys.IS_NOT_A_VALID_NAME, "{name}", name);<a name="line.25"></a>
|
||||
<span class="sourceLineNo">026</span> return null;<a name="line.26"></a>
|
||||
<span class="sourceLineNo">027</span> }<a name="line.27"></a>
|
||||
<span class="sourceLineNo">024</span><a name="line.24"></a>
|
||||
<span class="sourceLineNo">025</span> List<Player> matches = matchPlayer(name);<a name="line.25"></a>
|
||||
<span class="sourceLineNo">026</span> List<Player> confirmList = new ArrayList<>();<a name="line.26"></a>
|
||||
<span class="sourceLineNo">027</span> findMatches(search, requester, matches, confirmList);<a name="line.27"></a>
|
||||
<span class="sourceLineNo">028</span><a name="line.28"></a>
|
||||
<span class="sourceLineNo">029</span> List<Player> matches = matchPlayer(name);<a name="line.29"></a>
|
||||
<span class="sourceLineNo">030</span> List<Player> confirmList = new ArrayList<>();<a name="line.30"></a>
|
||||
<span class="sourceLineNo">031</span> findMatches(search, requester, matches, confirmList);<a name="line.31"></a>
|
||||
<span class="sourceLineNo">032</span><a name="line.32"></a>
|
||||
<span class="sourceLineNo">033</span><a name="line.33"></a>
|
||||
<span class="sourceLineNo">034</span> if (matches.size() > 1 || confirmList.size() > 1) {<a name="line.34"></a>
|
||||
<span class="sourceLineNo">035</span> String allMatches = matches.stream().map(Player::getName).collect(Collectors.joining(", "));<a name="line.35"></a>
|
||||
<span class="sourceLineNo">036</span> issuer.sendError(MinecraftMessageKeys.MULTIPLE_PLAYERS_MATCH,<a name="line.36"></a>
|
||||
<span class="sourceLineNo">037</span> "{search}", name, "{all}", allMatches);<a name="line.37"></a>
|
||||
<span class="sourceLineNo">038</span> return null;<a name="line.38"></a>
|
||||
<span class="sourceLineNo">039</span> }<a name="line.39"></a>
|
||||
<span class="sourceLineNo">040</span><a name="line.40"></a>
|
||||
<span class="sourceLineNo">041</span> if (matches.isEmpty()) {<a name="line.41"></a>
|
||||
<span class="sourceLineNo">042</span> Player player = ACFUtil.getFirstElement(confirmList);<a name="line.42"></a>
|
||||
<span class="sourceLineNo">043</span> if (player == null) {<a name="line.43"></a>
|
||||
<span class="sourceLineNo">044</span> issuer.sendError(MinecraftMessageKeys.NO_PLAYER_FOUND_SERVER, "{search}", name);<a name="line.44"></a>
|
||||
<span class="sourceLineNo">029</span><a name="line.29"></a>
|
||||
<span class="sourceLineNo">030</span> if (matches.size() > 1 || confirmList.size() > 1) {<a name="line.30"></a>
|
||||
<span class="sourceLineNo">031</span> String allMatches = matches.stream().map(Player::getName).collect(Collectors.joining(", "));<a name="line.31"></a>
|
||||
<span class="sourceLineNo">032</span> issuer.sendError(MinecraftMessageKeys.MULTIPLE_PLAYERS_MATCH,<a name="line.32"></a>
|
||||
<span class="sourceLineNo">033</span> "{search}", name, "{all}", allMatches);<a name="line.33"></a>
|
||||
<span class="sourceLineNo">034</span> return null;<a name="line.34"></a>
|
||||
<span class="sourceLineNo">035</span> }<a name="line.35"></a>
|
||||
<span class="sourceLineNo">036</span><a name="line.36"></a>
|
||||
<span class="sourceLineNo">037</span> if (matches.isEmpty()) {<a name="line.37"></a>
|
||||
<span class="sourceLineNo">038</span> Player player = ACFUtil.getFirstElement(confirmList);<a name="line.38"></a>
|
||||
<span class="sourceLineNo">039</span> if (player == null) {<a name="line.39"></a>
|
||||
<span class="sourceLineNo">040</span> issuer.sendError(MinecraftMessageKeys.NO_PLAYER_FOUND_SERVER, "{search}", name);<a name="line.40"></a>
|
||||
<span class="sourceLineNo">041</span> return null;<a name="line.41"></a>
|
||||
<span class="sourceLineNo">042</span> } else {<a name="line.42"></a>
|
||||
<span class="sourceLineNo">043</span><a name="line.43"></a>
|
||||
<span class="sourceLineNo">044</span> issuer.sendInfo(MinecraftMessageKeys.PLAYER_IS_VANISHED_CONFIRM, "{vanished}", player.getName());<a name="line.44"></a>
|
||||
<span class="sourceLineNo">045</span> return null;<a name="line.45"></a>
|
||||
<span class="sourceLineNo">046</span> } else {<a name="line.46"></a>
|
||||
<span class="sourceLineNo">047</span><a name="line.47"></a>
|
||||
<span class="sourceLineNo">048</span> issuer.sendInfo(MinecraftMessageKeys.PLAYER_IS_VANISHED_CONFIRM, "{vanished}", player.getName());<a name="line.48"></a>
|
||||
<span class="sourceLineNo">049</span> return null;<a name="line.49"></a>
|
||||
<span class="sourceLineNo">050</span> }<a name="line.50"></a>
|
||||
<span class="sourceLineNo">051</span> }<a name="line.51"></a>
|
||||
<span class="sourceLineNo">052</span><a name="line.52"></a>
|
||||
<span class="sourceLineNo">053</span> return matches.get(0);<a name="line.53"></a>
|
||||
<span class="sourceLineNo">054</span> }<a name="line.54"></a>
|
||||
<span class="sourceLineNo">055</span><a name="line.55"></a>
|
||||
<span class="sourceLineNo">056</span> private static void findMatches(String search, CommandSource requester, List<Player> matches, List<Player> confirmList) {<a name="line.56"></a>
|
||||
<span class="sourceLineNo">057</span> // Remove vanished players from smart matching.<a name="line.57"></a>
|
||||
<span class="sourceLineNo">058</span> Iterator<Player> iter = matches.iterator();<a name="line.58"></a>
|
||||
<span class="sourceLineNo">059</span> //noinspection Duplicates<a name="line.59"></a>
|
||||
<span class="sourceLineNo">060</span> while (iter.hasNext()) {<a name="line.60"></a>
|
||||
<span class="sourceLineNo">061</span> Player player = iter.next();<a name="line.61"></a>
|
||||
<span class="sourceLineNo">062</span> if (requester instanceof Player && !((Player) requester).canSee(player)) {<a name="line.62"></a>
|
||||
<span class="sourceLineNo">063</span> if (requester.hasPermission("acf.seevanish")) {<a name="line.63"></a>
|
||||
<span class="sourceLineNo">064</span> if (!search.endsWith(":confirm")) {<a name="line.64"></a>
|
||||
<span class="sourceLineNo">065</span> confirmList.add(player);<a name="line.65"></a>
|
||||
<span class="sourceLineNo">066</span> iter.remove();<a name="line.66"></a>
|
||||
<span class="sourceLineNo">067</span> }<a name="line.67"></a>
|
||||
<span class="sourceLineNo">068</span> } else {<a name="line.68"></a>
|
||||
<span class="sourceLineNo">069</span> iter.remove();<a name="line.69"></a>
|
||||
<span class="sourceLineNo">070</span> }<a name="line.70"></a>
|
||||
<span class="sourceLineNo">071</span> }<a name="line.71"></a>
|
||||
<span class="sourceLineNo">072</span> }<a name="line.72"></a>
|
||||
<span class="sourceLineNo">073</span> }<a name="line.73"></a>
|
||||
<span class="sourceLineNo">074</span><a name="line.74"></a>
|
||||
<span class="sourceLineNo">075</span> public static List<Player> matchPlayer(String partialName) {<a name="line.75"></a>
|
||||
<span class="sourceLineNo">076</span> List<Player> matchedPlayers = new ArrayList<>();<a name="line.76"></a>
|
||||
<span class="sourceLineNo">077</span><a name="line.77"></a>
|
||||
<span class="sourceLineNo">078</span> for (Player iterPlayer : Sponge.getServer().getOnlinePlayers()) {<a name="line.78"></a>
|
||||
<span class="sourceLineNo">079</span> String iterPlayerName = iterPlayer.getName();<a name="line.79"></a>
|
||||
<span class="sourceLineNo">080</span><a name="line.80"></a>
|
||||
<span class="sourceLineNo">081</span> if (partialName.equalsIgnoreCase(iterPlayerName)) {<a name="line.81"></a>
|
||||
<span class="sourceLineNo">082</span> // Exact match<a name="line.82"></a>
|
||||
<span class="sourceLineNo">083</span> matchedPlayers.clear();<a name="line.83"></a>
|
||||
<span class="sourceLineNo">084</span> matchedPlayers.add(iterPlayer);<a name="line.84"></a>
|
||||
<span class="sourceLineNo">085</span> break;<a name="line.85"></a>
|
||||
<span class="sourceLineNo">046</span> }<a name="line.46"></a>
|
||||
<span class="sourceLineNo">047</span> }<a name="line.47"></a>
|
||||
<span class="sourceLineNo">048</span><a name="line.48"></a>
|
||||
<span class="sourceLineNo">049</span> return matches.get(0);<a name="line.49"></a>
|
||||
<span class="sourceLineNo">050</span> }<a name="line.50"></a>
|
||||
<span class="sourceLineNo">051</span><a name="line.51"></a>
|
||||
<span class="sourceLineNo">052</span> private static void findMatches(String search, CommandSource requester, List<Player> matches, List<Player> confirmList) {<a name="line.52"></a>
|
||||
<span class="sourceLineNo">053</span> // Remove vanished players from smart matching.<a name="line.53"></a>
|
||||
<span class="sourceLineNo">054</span> Iterator<Player> iter = matches.iterator();<a name="line.54"></a>
|
||||
<span class="sourceLineNo">055</span> //noinspection Duplicates<a name="line.55"></a>
|
||||
<span class="sourceLineNo">056</span> while (iter.hasNext()) {<a name="line.56"></a>
|
||||
<span class="sourceLineNo">057</span> Player player = iter.next();<a name="line.57"></a>
|
||||
<span class="sourceLineNo">058</span> if (requester instanceof Player && !((Player) requester).canSee(player)) {<a name="line.58"></a>
|
||||
<span class="sourceLineNo">059</span> if (requester.hasPermission("acf.seevanish")) {<a name="line.59"></a>
|
||||
<span class="sourceLineNo">060</span> if (!search.endsWith(":confirm")) {<a name="line.60"></a>
|
||||
<span class="sourceLineNo">061</span> confirmList.add(player);<a name="line.61"></a>
|
||||
<span class="sourceLineNo">062</span> iter.remove();<a name="line.62"></a>
|
||||
<span class="sourceLineNo">063</span> }<a name="line.63"></a>
|
||||
<span class="sourceLineNo">064</span> } else {<a name="line.64"></a>
|
||||
<span class="sourceLineNo">065</span> iter.remove();<a name="line.65"></a>
|
||||
<span class="sourceLineNo">066</span> }<a name="line.66"></a>
|
||||
<span class="sourceLineNo">067</span> }<a name="line.67"></a>
|
||||
<span class="sourceLineNo">068</span> }<a name="line.68"></a>
|
||||
<span class="sourceLineNo">069</span> }<a name="line.69"></a>
|
||||
<span class="sourceLineNo">070</span><a name="line.70"></a>
|
||||
<span class="sourceLineNo">071</span> public static List<Player> matchPlayer(String partialName) {<a name="line.71"></a>
|
||||
<span class="sourceLineNo">072</span> List<Player> matchedPlayers = new ArrayList<>();<a name="line.72"></a>
|
||||
<span class="sourceLineNo">073</span><a name="line.73"></a>
|
||||
<span class="sourceLineNo">074</span> for (Player iterPlayer : Sponge.getServer().getOnlinePlayers()) {<a name="line.74"></a>
|
||||
<span class="sourceLineNo">075</span> String iterPlayerName = iterPlayer.getName();<a name="line.75"></a>
|
||||
<span class="sourceLineNo">076</span><a name="line.76"></a>
|
||||
<span class="sourceLineNo">077</span> if (partialName.equalsIgnoreCase(iterPlayerName)) {<a name="line.77"></a>
|
||||
<span class="sourceLineNo">078</span> // Exact match<a name="line.78"></a>
|
||||
<span class="sourceLineNo">079</span> matchedPlayers.clear();<a name="line.79"></a>
|
||||
<span class="sourceLineNo">080</span> matchedPlayers.add(iterPlayer);<a name="line.80"></a>
|
||||
<span class="sourceLineNo">081</span> break;<a name="line.81"></a>
|
||||
<span class="sourceLineNo">082</span> }<a name="line.82"></a>
|
||||
<span class="sourceLineNo">083</span> if (iterPlayerName.toLowerCase(java.util.Locale.ENGLISH).contains(partialName.toLowerCase(java.util.Locale.ENGLISH))) {<a name="line.83"></a>
|
||||
<span class="sourceLineNo">084</span> // Partial match<a name="line.84"></a>
|
||||
<span class="sourceLineNo">085</span> matchedPlayers.add(iterPlayer);<a name="line.85"></a>
|
||||
<span class="sourceLineNo">086</span> }<a name="line.86"></a>
|
||||
<span class="sourceLineNo">087</span> if (iterPlayerName.toLowerCase(java.util.Locale.ENGLISH).contains(partialName.toLowerCase(java.util.Locale.ENGLISH))) {<a name="line.87"></a>
|
||||
<span class="sourceLineNo">088</span> // Partial match<a name="line.88"></a>
|
||||
<span class="sourceLineNo">089</span> matchedPlayers.add(iterPlayer);<a name="line.89"></a>
|
||||
<span class="sourceLineNo">090</span> }<a name="line.90"></a>
|
||||
<span class="sourceLineNo">091</span> }<a name="line.91"></a>
|
||||
<span class="sourceLineNo">092</span><a name="line.92"></a>
|
||||
<span class="sourceLineNo">093</span> return matchedPlayers;<a name="line.93"></a>
|
||||
<span class="sourceLineNo">087</span> }<a name="line.87"></a>
|
||||
<span class="sourceLineNo">088</span><a name="line.88"></a>
|
||||
<span class="sourceLineNo">089</span> return matchedPlayers;<a name="line.89"></a>
|
||||
<span class="sourceLineNo">090</span> }<a name="line.90"></a>
|
||||
<span class="sourceLineNo">091</span><a name="line.91"></a>
|
||||
<span class="sourceLineNo">092</span> public static boolean isValidName(String name) {<a name="line.92"></a>
|
||||
<span class="sourceLineNo">093</span> return name != null && !name.isEmpty() && ACFPatterns.VALID_NAME_PATTERN.matcher(name).matches();<a name="line.93"></a>
|
||||
<span class="sourceLineNo">094</span> }<a name="line.94"></a>
|
||||
<span class="sourceLineNo">095</span><a name="line.95"></a>
|
||||
<span class="sourceLineNo">096</span> public static boolean isValidName(String name) {<a name="line.96"></a>
|
||||
<span class="sourceLineNo">097</span> return name != null && !name.isEmpty() && ACFPatterns.VALID_NAME_PATTERN.matcher(name).matches();<a name="line.97"></a>
|
||||
<span class="sourceLineNo">098</span> }<a name="line.98"></a>
|
||||
<span class="sourceLineNo">099</span><a name="line.99"></a>
|
||||
<span class="sourceLineNo">100</span>}<a name="line.100"></a>
|
||||
<span class="sourceLineNo">096</span>}<a name="line.96"></a>
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -230,7 +230,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>isValidName</h4>
|
||||
<pre>public static boolean <a href="../../../src-html/co/aikar/commands/ACFVelocityUtil.html#line.74">isValidName</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> name)</pre>
|
||||
<pre>public static boolean <a href="../../../src-html/co/aikar/commands/ACFVelocityUtil.html#line.70">isValidName</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> name)</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="validate-java.lang.Object-java.lang.String-java.lang.Object:A-">
|
||||
@@ -241,7 +241,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<ul class="blockListLast">
|
||||
<li class="blockList">
|
||||
<h4>validate</h4>
|
||||
<pre>public static <T> T <a href="../../../src-html/co/aikar/commands/ACFVelocityUtil.html#line.78">validate</a>(T object,
|
||||
<pre>public static <T> T <a href="../../../src-html/co/aikar/commands/ACFVelocityUtil.html#line.74">validate</a>(T object,
|
||||
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> message,
|
||||
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>... values)</pre>
|
||||
</li>
|
||||
|
||||
@@ -132,7 +132,7 @@ extends co.aikar.commands.Locales</pre>
|
||||
<!-- -->
|
||||
</a>
|
||||
<h3>Fields inherited from class co.aikar.commands.Locales</h3>
|
||||
<code>AFRIKAANS, ARABIC, BULGARIAN, CHINESE, CZECH, DANISH, DUTCH, ENGLISH, FINNISH, FRENCH, GERMAN, GREEK, HEBREW, HINDI, ITALIAN, JAPANESE, KOREAN, LATIN, NORWEGIAN_BOKMAAL, NORWEGIAN_NYNORSK, POLISH, PORTUGUESE, ROMANIAN, RUSSIAN, SIMPLIFIED_CHINESE, SPANISH, SWEDISH, THAI, TRADITIONAL_CHINESE, TURKISH, UKRANIAN, VIETNAMESE, WELSH</code></li>
|
||||
<code>AFRIKAANS, ARABIC, BULGARIAN, CHINESE, CZECH, DANISH, DUTCH, ENGLISH, FINNISH, FRENCH, GERMAN, GREEK, HEBREW, HINDI, HUNGARIAN, ITALIAN, JAPANESE, KOREAN, LATIN, NORWEGIAN_BOKMAAL, NORWEGIAN_NYNORSK, POLISH, PORTUGUESE, ROMANIAN, RUSSIAN, SIMPLIFIED_CHINESE, SPANISH, SWEDISH, THAI, TRADITIONAL_CHINESE, TURKISH, UKRANIAN, VIETNAMESE, WELSH</code></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
@@ -20,76 +20,72 @@
|
||||
<span class="sourceLineNo">012</span>import com.velocitypowered.api.proxy.ProxyServer;<a name="line.12"></a>
|
||||
<span class="sourceLineNo">013</span><a name="line.13"></a>
|
||||
<span class="sourceLineNo">014</span>import net.kyori.text.TextComponent;<a name="line.14"></a>
|
||||
<span class="sourceLineNo">015</span>import net.kyori.text.serializer.ComponentSerializers;<a name="line.15"></a>
|
||||
<span class="sourceLineNo">015</span>import net.kyori.text.serializer.legacy.LegacyComponentSerializer;<a name="line.15"></a>
|
||||
<span class="sourceLineNo">016</span><a name="line.16"></a>
|
||||
<span class="sourceLineNo">017</span>public class ACFVelocityUtil {<a name="line.17"></a>
|
||||
<span class="sourceLineNo">018</span><a name="line.18"></a>
|
||||
<span class="sourceLineNo">019</span> @SuppressWarnings("deprecation")<a name="line.19"></a>
|
||||
<span class="sourceLineNo">020</span> public static TextComponent color(String message) {<a name="line.20"></a>
|
||||
<span class="sourceLineNo">021</span> return ComponentSerializers.LEGACY.deserialize(message);<a name="line.21"></a>
|
||||
<span class="sourceLineNo">021</span> return LegacyComponentSerializer.legacy().deserialize(message);<a name="line.21"></a>
|
||||
<span class="sourceLineNo">022</span> }<a name="line.22"></a>
|
||||
<span class="sourceLineNo">023</span><a name="line.23"></a>
|
||||
<span class="sourceLineNo">024</span> public static Player findPlayerSmart(ProxyServer server, CommandIssuer issuer, String search) {<a name="line.24"></a>
|
||||
<span class="sourceLineNo">025</span> CommandSource requester = issuer.getIssuer();<a name="line.25"></a>
|
||||
<span class="sourceLineNo">026</span> String name = ACFUtil.replace(search, ":confirm", "");<a name="line.26"></a>
|
||||
<span class="sourceLineNo">027</span> if (name.length() < 3) {<a name="line.27"></a>
|
||||
<span class="sourceLineNo">028</span> issuer.sendError(MinecraftMessageKeys.USERNAME_TOO_SHORT);<a name="line.28"></a>
|
||||
<span class="sourceLineNo">027</span> if (!isValidName(name)) {<a name="line.27"></a>
|
||||
<span class="sourceLineNo">028</span> issuer.sendError(MinecraftMessageKeys.IS_NOT_A_VALID_NAME, "{name}", name);<a name="line.28"></a>
|
||||
<span class="sourceLineNo">029</span> return null;<a name="line.29"></a>
|
||||
<span class="sourceLineNo">030</span> }<a name="line.30"></a>
|
||||
<span class="sourceLineNo">031</span> if (!isValidName(name)) {<a name="line.31"></a>
|
||||
<span class="sourceLineNo">032</span> issuer.sendError(MinecraftMessageKeys.IS_NOT_A_VALID_NAME, "{name}", name);<a name="line.32"></a>
|
||||
<span class="sourceLineNo">033</span> return null;<a name="line.33"></a>
|
||||
<span class="sourceLineNo">034</span> }<a name="line.34"></a>
|
||||
<span class="sourceLineNo">035</span><a name="line.35"></a>
|
||||
<span class="sourceLineNo">036</span> List<Player> matches = new ArrayList<>(matchPlayer(server, name));<a name="line.36"></a>
|
||||
<span class="sourceLineNo">037</span><a name="line.37"></a>
|
||||
<span class="sourceLineNo">038</span> if (matches.size() > 1) {<a name="line.38"></a>
|
||||
<span class="sourceLineNo">039</span> String allMatches = matches.stream().map(Player::getUsername).collect(Collectors.joining(", "));<a name="line.39"></a>
|
||||
<span class="sourceLineNo">040</span> issuer.sendError(MinecraftMessageKeys.MULTIPLE_PLAYERS_MATCH, "{search}", name, "{all}", allMatches);<a name="line.40"></a>
|
||||
<span class="sourceLineNo">041</span> return null;<a name="line.41"></a>
|
||||
<span class="sourceLineNo">042</span> }<a name="line.42"></a>
|
||||
<span class="sourceLineNo">043</span><a name="line.43"></a>
|
||||
<span class="sourceLineNo">044</span> if (matches.isEmpty()) {<a name="line.44"></a>
|
||||
<span class="sourceLineNo">045</span> issuer.sendError(MinecraftMessageKeys.NO_PLAYER_FOUND_SERVER, "{search}", name);<a name="line.45"></a>
|
||||
<span class="sourceLineNo">046</span> return null;<a name="line.46"></a>
|
||||
<span class="sourceLineNo">047</span> }<a name="line.47"></a>
|
||||
<span class="sourceLineNo">048</span><a name="line.48"></a>
|
||||
<span class="sourceLineNo">049</span> return matches.get(0);<a name="line.49"></a>
|
||||
<span class="sourceLineNo">050</span> }<a name="line.50"></a>
|
||||
<span class="sourceLineNo">051</span><a name="line.51"></a>
|
||||
<span class="sourceLineNo">052</span> /*<a name="line.52"></a>
|
||||
<span class="sourceLineNo">053</span> * Original code written by md_5<a name="line.53"></a>
|
||||
<span class="sourceLineNo">054</span> * <a name="line.54"></a>
|
||||
<span class="sourceLineNo">055</span> * Modified to work with Velocity by Crypnotic<a name="line.55"></a>
|
||||
<span class="sourceLineNo">056</span> */<a name="line.56"></a>
|
||||
<span class="sourceLineNo">057</span> private static Collection<Player> matchPlayer(ProxyServer server, final String partialName) {<a name="line.57"></a>
|
||||
<span class="sourceLineNo">058</span> // A better error message might be nice. This just mimics the previous output<a name="line.58"></a>
|
||||
<span class="sourceLineNo">059</span> if (partialName == null) {<a name="line.59"></a>
|
||||
<span class="sourceLineNo">060</span> throw new NullPointerException("partialName");<a name="line.60"></a>
|
||||
<span class="sourceLineNo">061</span> }<a name="line.61"></a>
|
||||
<span class="sourceLineNo">062</span><a name="line.62"></a>
|
||||
<span class="sourceLineNo">063</span> Optional<Player> exactMatch = server.getPlayer(partialName);<a name="line.63"></a>
|
||||
<span class="sourceLineNo">064</span> //noinspection OptionalIsPresent<a name="line.64"></a>
|
||||
<span class="sourceLineNo">065</span> if (exactMatch.isPresent()) {<a name="line.65"></a>
|
||||
<span class="sourceLineNo">066</span> return Collections.singleton(exactMatch.get());<a name="line.66"></a>
|
||||
<span class="sourceLineNo">067</span> }<a name="line.67"></a>
|
||||
<span class="sourceLineNo">068</span><a name="line.68"></a>
|
||||
<span class="sourceLineNo">069</span> return server.getAllPlayers().stream()<a name="line.69"></a>
|
||||
<span class="sourceLineNo">070</span> .filter(player -> player.getUsername().regionMatches(true, 0, partialName, 0, partialName.length()))<a name="line.70"></a>
|
||||
<span class="sourceLineNo">071</span> .collect(Collectors.toList());<a name="line.71"></a>
|
||||
<span class="sourceLineNo">031</span><a name="line.31"></a>
|
||||
<span class="sourceLineNo">032</span> List<Player> matches = new ArrayList<>(matchPlayer(server, name));<a name="line.32"></a>
|
||||
<span class="sourceLineNo">033</span><a name="line.33"></a>
|
||||
<span class="sourceLineNo">034</span> if (matches.size() > 1) {<a name="line.34"></a>
|
||||
<span class="sourceLineNo">035</span> String allMatches = matches.stream().map(Player::getUsername).collect(Collectors.joining(", "));<a name="line.35"></a>
|
||||
<span class="sourceLineNo">036</span> issuer.sendError(MinecraftMessageKeys.MULTIPLE_PLAYERS_MATCH, "{search}", name, "{all}", allMatches);<a name="line.36"></a>
|
||||
<span class="sourceLineNo">037</span> return null;<a name="line.37"></a>
|
||||
<span class="sourceLineNo">038</span> }<a name="line.38"></a>
|
||||
<span class="sourceLineNo">039</span><a name="line.39"></a>
|
||||
<span class="sourceLineNo">040</span> if (matches.isEmpty()) {<a name="line.40"></a>
|
||||
<span class="sourceLineNo">041</span> issuer.sendError(MinecraftMessageKeys.NO_PLAYER_FOUND_SERVER, "{search}", name);<a name="line.41"></a>
|
||||
<span class="sourceLineNo">042</span> return null;<a name="line.42"></a>
|
||||
<span class="sourceLineNo">043</span> }<a name="line.43"></a>
|
||||
<span class="sourceLineNo">044</span><a name="line.44"></a>
|
||||
<span class="sourceLineNo">045</span> return matches.get(0);<a name="line.45"></a>
|
||||
<span class="sourceLineNo">046</span> }<a name="line.46"></a>
|
||||
<span class="sourceLineNo">047</span><a name="line.47"></a>
|
||||
<span class="sourceLineNo">048</span> /*<a name="line.48"></a>
|
||||
<span class="sourceLineNo">049</span> * Original code written by md_5<a name="line.49"></a>
|
||||
<span class="sourceLineNo">050</span> *<a name="line.50"></a>
|
||||
<span class="sourceLineNo">051</span> * Modified to work with Velocity by Crypnotic<a name="line.51"></a>
|
||||
<span class="sourceLineNo">052</span> */<a name="line.52"></a>
|
||||
<span class="sourceLineNo">053</span> private static Collection<Player> matchPlayer(ProxyServer server, final String partialName) {<a name="line.53"></a>
|
||||
<span class="sourceLineNo">054</span> // A better error message might be nice. This just mimics the previous output<a name="line.54"></a>
|
||||
<span class="sourceLineNo">055</span> if (partialName == null) {<a name="line.55"></a>
|
||||
<span class="sourceLineNo">056</span> throw new NullPointerException("partialName");<a name="line.56"></a>
|
||||
<span class="sourceLineNo">057</span> }<a name="line.57"></a>
|
||||
<span class="sourceLineNo">058</span><a name="line.58"></a>
|
||||
<span class="sourceLineNo">059</span> Optional<Player> exactMatch = server.getPlayer(partialName);<a name="line.59"></a>
|
||||
<span class="sourceLineNo">060</span> //noinspection OptionalIsPresent<a name="line.60"></a>
|
||||
<span class="sourceLineNo">061</span> if (exactMatch.isPresent()) {<a name="line.61"></a>
|
||||
<span class="sourceLineNo">062</span> return Collections.singleton(exactMatch.get());<a name="line.62"></a>
|
||||
<span class="sourceLineNo">063</span> }<a name="line.63"></a>
|
||||
<span class="sourceLineNo">064</span><a name="line.64"></a>
|
||||
<span class="sourceLineNo">065</span> return server.getAllPlayers().stream()<a name="line.65"></a>
|
||||
<span class="sourceLineNo">066</span> .filter(player -> player.getUsername().regionMatches(true, 0, partialName, 0, partialName.length()))<a name="line.66"></a>
|
||||
<span class="sourceLineNo">067</span> .collect(Collectors.toList());<a name="line.67"></a>
|
||||
<span class="sourceLineNo">068</span> }<a name="line.68"></a>
|
||||
<span class="sourceLineNo">069</span><a name="line.69"></a>
|
||||
<span class="sourceLineNo">070</span> public static boolean isValidName(String name) {<a name="line.70"></a>
|
||||
<span class="sourceLineNo">071</span> return name != null && !name.isEmpty() && ACFPatterns.VALID_NAME_PATTERN.matcher(name).matches();<a name="line.71"></a>
|
||||
<span class="sourceLineNo">072</span> }<a name="line.72"></a>
|
||||
<span class="sourceLineNo">073</span><a name="line.73"></a>
|
||||
<span class="sourceLineNo">074</span> public static boolean isValidName(String name) {<a name="line.74"></a>
|
||||
<span class="sourceLineNo">075</span> return name != null && !name.isEmpty() && ACFPatterns.VALID_NAME_PATTERN.matcher(name).matches();<a name="line.75"></a>
|
||||
<span class="sourceLineNo">076</span> }<a name="line.76"></a>
|
||||
<span class="sourceLineNo">077</span><a name="line.77"></a>
|
||||
<span class="sourceLineNo">078</span> public static <T> T validate(T object, String message, Object... values) {<a name="line.78"></a>
|
||||
<span class="sourceLineNo">079</span> if (object == null) {<a name="line.79"></a>
|
||||
<span class="sourceLineNo">080</span> throw new NullPointerException(String.format(message, values));<a name="line.80"></a>
|
||||
<span class="sourceLineNo">081</span> }<a name="line.81"></a>
|
||||
<span class="sourceLineNo">082</span> return object;<a name="line.82"></a>
|
||||
<span class="sourceLineNo">083</span> }<a name="line.83"></a>
|
||||
<span class="sourceLineNo">084</span>}<a name="line.84"></a>
|
||||
<span class="sourceLineNo">074</span> public static <T> T validate(T object, String message, Object... values) {<a name="line.74"></a>
|
||||
<span class="sourceLineNo">075</span> if (object == null) {<a name="line.75"></a>
|
||||
<span class="sourceLineNo">076</span> throw new NullPointerException(String.format(message, values));<a name="line.76"></a>
|
||||
<span class="sourceLineNo">077</span> }<a name="line.77"></a>
|
||||
<span class="sourceLineNo">078</span> return object;<a name="line.78"></a>
|
||||
<span class="sourceLineNo">079</span> }<a name="line.79"></a>
|
||||
<span class="sourceLineNo">080</span>}<a name="line.80"></a>
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
<pre><span class="sourceLineNo">001</span>package co.aikar.commands;<a name="line.1"></a>
|
||||
<span class="sourceLineNo">002</span><a name="line.2"></a>
|
||||
<span class="sourceLineNo">003</span>import net.kyori.text.format.TextColor;<a name="line.3"></a>
|
||||
<span class="sourceLineNo">004</span>import net.kyori.text.serializer.ComponentSerializers;<a name="line.4"></a>
|
||||
<span class="sourceLineNo">004</span>import net.kyori.text.serializer.legacy.LegacyComponentSerializer;<a name="line.4"></a>
|
||||
<span class="sourceLineNo">005</span><a name="line.5"></a>
|
||||
<span class="sourceLineNo">006</span>public class VelocityMessageFormatter extends MessageFormatter<TextColor> {<a name="line.6"></a>
|
||||
<span class="sourceLineNo">007</span><a name="line.7"></a>
|
||||
@@ -20,7 +20,7 @@
|
||||
<span class="sourceLineNo">012</span> @Override<a name="line.12"></a>
|
||||
<span class="sourceLineNo">013</span> @SuppressWarnings("deprecation")<a name="line.13"></a>
|
||||
<span class="sourceLineNo">014</span> String format(TextColor color, String message) {<a name="line.14"></a>
|
||||
<span class="sourceLineNo">015</span> return ComponentSerializers.LEGACY.serialize(ComponentSerializers.LEGACY.deserialize(message).color(color));<a name="line.15"></a>
|
||||
<span class="sourceLineNo">015</span> return LegacyComponentSerializer.legacy().serialize(LegacyComponentSerializer.legacy().deserialize(message).color(color));<a name="line.15"></a>
|
||||
<span class="sourceLineNo">016</span> }<a name="line.16"></a>
|
||||
<span class="sourceLineNo">017</span>}<a name="line.17"></a>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user