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:
@@ -107,7 +107,7 @@
|
||||
<li class="blockList">
|
||||
<hr>
|
||||
<br>
|
||||
<pre>public class <a href="../../../src-html/co/aikar/commands/BukkitCommandCompletions.html#line.43">BukkitCommandCompletions</a>
|
||||
<pre>public class <a href="../../../src-html/co/aikar/commands/BukkitCommandCompletions.html#line.44">BukkitCommandCompletions</a>
|
||||
extends co.aikar.commands.CommandCompletions<<a href="../../../co/aikar/commands/BukkitCommandCompletionContext.html" title="class in co.aikar.commands">BukkitCommandCompletionContext</a>></pre>
|
||||
</li>
|
||||
</ul>
|
||||
@@ -158,7 +158,7 @@ extends co.aikar.commands.CommandCompletions<<a href="../../../co/aikar/comma
|
||||
<!-- -->
|
||||
</a>
|
||||
<h3>Methods inherited from class co.aikar.commands.CommandCompletions</h3>
|
||||
<code>registerAsyncCompletion, registerCompletion, registerStaticCompletion, registerStaticCompletion, registerStaticCompletion, registerStaticCompletion</code></li>
|
||||
<code>registerAsyncCompletion, registerCompletion, registerStaticCompletion, registerStaticCompletion, registerStaticCompletion, registerStaticCompletion, setDefaultCompletion</code></li>
|
||||
</ul>
|
||||
<ul class="blockList">
|
||||
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
|
||||
@@ -187,7 +187,7 @@ extends co.aikar.commands.CommandCompletions<<a href="../../../co/aikar/comma
|
||||
<ul class="blockListLast">
|
||||
<li class="blockList">
|
||||
<h4>BukkitCommandCompletions</h4>
|
||||
<pre>public <a href="../../../src-html/co/aikar/commands/BukkitCommandCompletions.html#line.44">BukkitCommandCompletions</a>(<a href="../../../co/aikar/commands/BukkitCommandManager.html" title="class in co.aikar.commands">BukkitCommandManager</a> manager)</pre>
|
||||
<pre>public <a href="../../../src-html/co/aikar/commands/BukkitCommandCompletions.html#line.45">BukkitCommandCompletions</a>(<a href="../../../co/aikar/commands/BukkitCommandManager.html" title="class in co.aikar.commands">BukkitCommandManager</a> manager)</pre>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
@@ -164,7 +164,7 @@ extends co.aikar.commands.CommandExecutionContext<<a href="../../../co/aikar/
|
||||
<!-- -->
|
||||
</a>
|
||||
<h3>Methods inherited from class co.aikar.commands.CommandExecutionContext</h3>
|
||||
<code>canOverridePlayerContext, getAnnotation, getAnnotationValue, getAnnotationValue, getArgs, getBooleanFlagValue, getBooleanFlagValue, getCmd, getDoubleFlagValue, getFirstArg, getFlags, getFlagValue, getFlagValue, getFlagValue, getFlagValue, getFlagValue, getFlagValue, getFloatFlagValue, getIndex, getIntFlagValue, getIssuer, getLastArg, getLongFlagValue, getNumParams, getParam, getPassedArgs, getResolvedArg, getResolvedArg, getResolvedArg, hasAnnotation, hasFlag, isLastArg, isOptional, joinArgs, joinArgs, popFirstArg, popLastArg</code></li>
|
||||
<code>canOverridePlayerContext, getAnnotation, getAnnotationValue, getAnnotationValue, getArgs, getBooleanFlagValue, getBooleanFlagValue, getCmd, getDoubleFlagValue, getFirstArg, getFlags, getFlagValue, getFlagValue, getFlagValue, getFlagValue, getFlagValue, getFlagValue, getFloatFlagValue, getIndex, getIntFlagValue, getIssuer, getLastArg, getLongFlagValue, getNumParams, getParam, getParameterPermissions, getPassedArgs, getResolvedArg, getResolvedArg, getResolvedArg, hasAnnotation, hasFlag, isLastArg, isOptional, joinArgs, joinArgs, popFirstArg, popLastArg</code></li>
|
||||
</ul>
|
||||
<ul class="blockList">
|
||||
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
|
||||
|
||||
@@ -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.63">BukkitCommandManager</a>
|
||||
<pre>public class <a href="../../../src-html/co/aikar/commands/BukkitCommandManager.html#line.64">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>
|
||||
@@ -336,7 +336,7 @@ extends co.aikar.commands.CommandManager<org.bukkit.command.CommandSender,<a
|
||||
<!-- -->
|
||||
</a>
|
||||
<h3>Methods inherited from class co.aikar.commands.CommandManager</h3>
|
||||
<code>addSupportedLanguage, enableUnstableAPI, formatMessage, generateCommandHelp, generateCommandHelp, generateCommandHelp, generateCommandHelp, getCommandConditions, getCommandReplacements, getCurrentCommandIssuer, getCurrentCommandManager, getCurrentCommandOperationContext, getDefaultExceptionHandler, getDefaultFormatter, getDefaultHelpPerPage, getFormat, getHelpFormatter, getIssuerLocale, getRootCommand, getSupportedLanguages, hasPermission, isLoggingUnhandledExceptions, log, notifyLocaleChange, obtainRootCommand, onLocaleChange, registerDependency, registerDependency, sendMessage, sendMessage, setDefaultExceptionHandler, setDefaultExceptionHandler, setDefaultFormatter, setDefaultHelpPerPage, setFormat, setFormat, setFormat, setHelpFormatter, setIssuerLocale, usePerIssuerLocale, usingPerIssuerLocale</code></li>
|
||||
<code>addSupportedLanguage, enableUnstableAPI, formatMessage, generateCommandHelp, generateCommandHelp, generateCommandHelp, generateCommandHelp, getCommandConditions, getCommandReplacements, getCurrentCommandIssuer, getCurrentCommandManager, getCurrentCommandOperationContext, getDefaultExceptionHandler, getDefaultFormatter, getDefaultHelpPerPage, getFormat, getHelpFormatter, getIssuerLocale, getRootCommand, getSupportedLanguages, hasPermission, hasPermission, isLoggingUnhandledExceptions, log, notifyLocaleChange, obtainRootCommand, onLocaleChange, registerDependency, registerDependency, sendMessage, sendMessage, setDefaultExceptionHandler, setDefaultExceptionHandler, setDefaultFormatter, setDefaultHelpPerPage, setFormat, setFormat, setFormat, setHelpFormatter, setIssuerLocale, usePerIssuerLocale, usingPerIssuerLocale</code></li>
|
||||
</ul>
|
||||
<ul class="blockList">
|
||||
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
|
||||
@@ -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.73">plugin</a></pre>
|
||||
<pre>protected final org.bukkit.plugin.Plugin <a href="../../../src-html/co/aikar/commands/BukkitCommandManager.html#line.74">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.78">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.79">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.79">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.80">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.80">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.81">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.81">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.82">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.82">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.83">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.83">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.84">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.85">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.86">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.87">autoDetectFromClient</a></pre>
|
||||
<pre>protected boolean <a href="../../../src-html/co/aikar/commands/BukkitCommandManager.html#line.88">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.90">BukkitCommandManager</a>(org.bukkit.plugin.Plugin plugin)</pre>
|
||||
<pre>public <a href="../../../src-html/co/aikar/commands/BukkitCommandManager.html#line.91">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.158">getPlugin</a>()</pre>
|
||||
<pre>public org.bukkit.plugin.Plugin <a href="../../../src-html/co/aikar/commands/BukkitCommandManager.html#line.162">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.163">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.167">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.168">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.172">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.176">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.180">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.185">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.189">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.195">hasRegisteredCommands</a>()</pre>
|
||||
<pre>public boolean <a href="../../../src-html/co/aikar/commands/BukkitCommandManager.html#line.199">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.199">registerCommand</a>(co.aikar.commands.BaseCommand command,
|
||||
<pre>public void <a href="../../../src-html/co/aikar/commands/BukkitCommandManager.html#line.203">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.233">registerCommand</a>(co.aikar.commands.BaseCommand command)</pre>
|
||||
<pre>public void <a href="../../../src-html/co/aikar/commands/BukkitCommandManager.html#line.237">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.237">unregisterCommand</a>(co.aikar.commands.BaseCommand command)</pre>
|
||||
<pre>public void <a href="../../../src-html/co/aikar/commands/BukkitCommandManager.html#line.241">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.253">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.257">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.264">unregisterCommands</a>()</pre>
|
||||
<pre>public void <a href="../../../src-html/co/aikar/commands/BukkitCommandManager.html#line.268">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.285">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.289">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.318">getTimings</a>()</pre>
|
||||
<pre>public co.aikar.timings.lib.TimingManager <a href="../../../src-html/co/aikar/commands/BukkitCommandManager.html#line.322">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.323">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.327">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.328">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.332">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.333">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.337">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.341">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.345">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.346">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.350">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.351">createRegisteredCommand</a>(co.aikar.commands.BaseCommand command,
|
||||
<pre>public co.aikar.commands.RegisteredCommand <a href="../../../src-html/co/aikar/commands/BukkitCommandManager.html#line.355">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.356">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.360">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.362">log</a>(co.aikar.commands.LogLevel level,
|
||||
<pre>public void <a href="../../../src-html/co/aikar/commands/BukkitCommandManager.html#line.366">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.372">usePerIssuerLocale</a>(boolean usePerIssuerLocale,
|
||||
<pre>public boolean <a href="../../../src-html/co/aikar/commands/BukkitCommandManager.html#line.376">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.380">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.384">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.385">handleUncaughtException</a>(co.aikar.commands.BaseCommand scope,
|
||||
<pre>protected boolean <a href="../../../src-html/co/aikar/commands/BukkitCommandManager.html#line.389">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,
|
||||
|
||||
@@ -31,72 +31,76 @@
|
||||
<span class="sourceLineNo">023</span><a name="line.23"></a>
|
||||
<span class="sourceLineNo">024</span>package co.aikar.commands;<a name="line.24"></a>
|
||||
<span class="sourceLineNo">025</span><a name="line.25"></a>
|
||||
<span class="sourceLineNo">026</span>import org.apache.commons.lang.Validate;<a name="line.26"></a>
|
||||
<span class="sourceLineNo">027</span>import org.bukkit.Bukkit;<a name="line.27"></a>
|
||||
<span class="sourceLineNo">028</span>import org.bukkit.ChatColor;<a name="line.28"></a>
|
||||
<span class="sourceLineNo">029</span>import org.bukkit.DyeColor;<a name="line.29"></a>
|
||||
<span class="sourceLineNo">030</span>import org.bukkit.World;<a name="line.30"></a>
|
||||
<span class="sourceLineNo">031</span>import org.bukkit.command.CommandSender;<a name="line.31"></a>
|
||||
<span class="sourceLineNo">032</span>import org.bukkit.entity.EntityType;<a name="line.32"></a>
|
||||
<span class="sourceLineNo">033</span>import org.bukkit.entity.Player;<a name="line.33"></a>
|
||||
<span class="sourceLineNo">034</span>import org.bukkit.util.StringUtil;<a name="line.34"></a>
|
||||
<span class="sourceLineNo">035</span><a name="line.35"></a>
|
||||
<span class="sourceLineNo">036</span>import java.util.ArrayList;<a name="line.36"></a>
|
||||
<span class="sourceLineNo">037</span>import java.util.Arrays;<a name="line.37"></a>
|
||||
<span class="sourceLineNo">038</span>import java.util.Set;<a name="line.38"></a>
|
||||
<span class="sourceLineNo">039</span>import java.util.stream.Collectors;<a name="line.39"></a>
|
||||
<span class="sourceLineNo">040</span>import java.util.stream.Stream;<a name="line.40"></a>
|
||||
<span class="sourceLineNo">041</span><a name="line.41"></a>
|
||||
<span class="sourceLineNo">042</span>@SuppressWarnings("WeakerAccess")<a name="line.42"></a>
|
||||
<span class="sourceLineNo">043</span>public class BukkitCommandCompletions extends CommandCompletions<BukkitCommandCompletionContext> {<a name="line.43"></a>
|
||||
<span class="sourceLineNo">044</span> public BukkitCommandCompletions(BukkitCommandManager manager) {<a name="line.44"></a>
|
||||
<span class="sourceLineNo">045</span> super(manager);<a name="line.45"></a>
|
||||
<span class="sourceLineNo">046</span> registerAsyncCompletion("mobs", c -> {<a name="line.46"></a>
|
||||
<span class="sourceLineNo">047</span> final Stream<String> normal = Stream.of(EntityType.values())<a name="line.47"></a>
|
||||
<span class="sourceLineNo">048</span> .map(entityType -> ACFUtil.simplifyString(entityType.getName()));<a name="line.48"></a>
|
||||
<span class="sourceLineNo">049</span> return normal.collect(Collectors.toList());<a name="line.49"></a>
|
||||
<span class="sourceLineNo">050</span> });<a name="line.50"></a>
|
||||
<span class="sourceLineNo">051</span> registerAsyncCompletion("chatcolors", c -> {<a name="line.51"></a>
|
||||
<span class="sourceLineNo">052</span> Stream<ChatColor> colors = Stream.of(ChatColor.values());<a name="line.52"></a>
|
||||
<span class="sourceLineNo">053</span> if (c.hasConfig("colorsonly")) {<a name="line.53"></a>
|
||||
<span class="sourceLineNo">054</span> colors = colors.filter(color -> color.ordinal() <= 0xF);<a name="line.54"></a>
|
||||
<span class="sourceLineNo">055</span> }<a name="line.55"></a>
|
||||
<span class="sourceLineNo">056</span> String filter = c.getConfig("filter");<a name="line.56"></a>
|
||||
<span class="sourceLineNo">057</span> if (filter != null) {<a name="line.57"></a>
|
||||
<span class="sourceLineNo">058</span> Set<String> filters = Arrays.stream(ACFPatterns.COLON.split(filter))<a name="line.58"></a>
|
||||
<span class="sourceLineNo">059</span> .map(ACFUtil::simplifyString).collect(Collectors.toSet());<a name="line.59"></a>
|
||||
<span class="sourceLineNo">060</span><a name="line.60"></a>
|
||||
<span class="sourceLineNo">061</span> colors = colors.filter(color -> filters.contains(ACFUtil.simplifyString(color.name())));<a name="line.61"></a>
|
||||
<span class="sourceLineNo">062</span> }<a name="line.62"></a>
|
||||
<span class="sourceLineNo">063</span><a name="line.63"></a>
|
||||
<span class="sourceLineNo">064</span> return colors.map(color -> ACFUtil.simplifyString(color.name())).collect(Collectors.toList());<a name="line.64"></a>
|
||||
<span class="sourceLineNo">065</span> });<a name="line.65"></a>
|
||||
<span class="sourceLineNo">066</span> registerAsyncCompletion("dyecolors", c -> ACFUtil.enumNames(DyeColor.values()));<a name="line.66"></a>
|
||||
<span class="sourceLineNo">067</span> registerCompletion("worlds", c -> (<a name="line.67"></a>
|
||||
<span class="sourceLineNo">068</span> Bukkit.getWorlds().stream().map(World::getName).collect(Collectors.toList())<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> registerCompletion("players", c -> {<a name="line.71"></a>
|
||||
<span class="sourceLineNo">072</span> CommandSender sender = c.getSender();<a name="line.72"></a>
|
||||
<span class="sourceLineNo">073</span> Validate.notNull(sender, "Sender cannot be null");<a name="line.73"></a>
|
||||
<span class="sourceLineNo">074</span><a name="line.74"></a>
|
||||
<span class="sourceLineNo">075</span> Player senderPlayer = sender instanceof Player ? (Player) sender : null;<a name="line.75"></a>
|
||||
<span class="sourceLineNo">076</span><a name="line.76"></a>
|
||||
<span class="sourceLineNo">077</span> ArrayList<String> matchedPlayers = new ArrayList<>();<a name="line.77"></a>
|
||||
<span class="sourceLineNo">078</span> for (Player player : Bukkit.getOnlinePlayers()) {<a name="line.78"></a>
|
||||
<span class="sourceLineNo">079</span> String name = player.getName();<a name="line.79"></a>
|
||||
<span class="sourceLineNo">080</span> if ((senderPlayer == null || senderPlayer.canSee(player)) && StringUtil.startsWithIgnoreCase(name, c.getInput())) {<a name="line.80"></a>
|
||||
<span class="sourceLineNo">081</span> matchedPlayers.add(name);<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><a name="line.84"></a>
|
||||
<span class="sourceLineNo">026</span>import co.aikar.commands.bukkit.contexts.OnlinePlayer;<a name="line.26"></a>
|
||||
<span class="sourceLineNo">027</span>import org.apache.commons.lang.Validate;<a name="line.27"></a>
|
||||
<span class="sourceLineNo">028</span>import org.bukkit.Bukkit;<a name="line.28"></a>
|
||||
<span class="sourceLineNo">029</span>import org.bukkit.ChatColor;<a name="line.29"></a>
|
||||
<span class="sourceLineNo">030</span>import org.bukkit.DyeColor;<a name="line.30"></a>
|
||||
<span class="sourceLineNo">031</span>import org.bukkit.World;<a name="line.31"></a>
|
||||
<span class="sourceLineNo">032</span>import org.bukkit.command.CommandSender;<a name="line.32"></a>
|
||||
<span class="sourceLineNo">033</span>import org.bukkit.entity.EntityType;<a name="line.33"></a>
|
||||
<span class="sourceLineNo">034</span>import org.bukkit.entity.Player;<a name="line.34"></a>
|
||||
<span class="sourceLineNo">035</span>import org.bukkit.util.StringUtil;<a name="line.35"></a>
|
||||
<span class="sourceLineNo">036</span><a name="line.36"></a>
|
||||
<span class="sourceLineNo">037</span>import java.util.ArrayList;<a name="line.37"></a>
|
||||
<span class="sourceLineNo">038</span>import java.util.Arrays;<a name="line.38"></a>
|
||||
<span class="sourceLineNo">039</span>import java.util.Set;<a name="line.39"></a>
|
||||
<span class="sourceLineNo">040</span>import java.util.stream.Collectors;<a name="line.40"></a>
|
||||
<span class="sourceLineNo">041</span>import java.util.stream.Stream;<a name="line.41"></a>
|
||||
<span class="sourceLineNo">042</span><a name="line.42"></a>
|
||||
<span class="sourceLineNo">043</span>@SuppressWarnings("WeakerAccess")<a name="line.43"></a>
|
||||
<span class="sourceLineNo">044</span>public class BukkitCommandCompletions extends CommandCompletions<BukkitCommandCompletionContext> {<a name="line.44"></a>
|
||||
<span class="sourceLineNo">045</span> public BukkitCommandCompletions(BukkitCommandManager manager) {<a name="line.45"></a>
|
||||
<span class="sourceLineNo">046</span> super(manager);<a name="line.46"></a>
|
||||
<span class="sourceLineNo">047</span> registerAsyncCompletion("mobs", c -> {<a name="line.47"></a>
|
||||
<span class="sourceLineNo">048</span> final Stream<String> normal = Stream.of(EntityType.values())<a name="line.48"></a>
|
||||
<span class="sourceLineNo">049</span> .map(entityType -> ACFUtil.simplifyString(entityType.getName()));<a name="line.49"></a>
|
||||
<span class="sourceLineNo">050</span> return normal.collect(Collectors.toList());<a name="line.50"></a>
|
||||
<span class="sourceLineNo">051</span> });<a name="line.51"></a>
|
||||
<span class="sourceLineNo">052</span> registerAsyncCompletion("chatcolors", c -> {<a name="line.52"></a>
|
||||
<span class="sourceLineNo">053</span> Stream<ChatColor> colors = Stream.of(ChatColor.values());<a name="line.53"></a>
|
||||
<span class="sourceLineNo">054</span> if (c.hasConfig("colorsonly")) {<a name="line.54"></a>
|
||||
<span class="sourceLineNo">055</span> colors = colors.filter(color -> color.ordinal() <= 0xF);<a name="line.55"></a>
|
||||
<span class="sourceLineNo">056</span> }<a name="line.56"></a>
|
||||
<span class="sourceLineNo">057</span> String filter = c.getConfig("filter");<a name="line.57"></a>
|
||||
<span class="sourceLineNo">058</span> if (filter != null) {<a name="line.58"></a>
|
||||
<span class="sourceLineNo">059</span> Set<String> filters = Arrays.stream(ACFPatterns.COLON.split(filter))<a name="line.59"></a>
|
||||
<span class="sourceLineNo">060</span> .map(ACFUtil::simplifyString).collect(Collectors.toSet());<a name="line.60"></a>
|
||||
<span class="sourceLineNo">061</span><a name="line.61"></a>
|
||||
<span class="sourceLineNo">062</span> colors = colors.filter(color -> filters.contains(ACFUtil.simplifyString(color.name())));<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 colors.map(color -> ACFUtil.simplifyString(color.name())).collect(Collectors.toList());<a name="line.65"></a>
|
||||
<span class="sourceLineNo">066</span> });<a name="line.66"></a>
|
||||
<span class="sourceLineNo">067</span> registerAsyncCompletion("dyecolors", c -> ACFUtil.enumNames(DyeColor.values()));<a name="line.67"></a>
|
||||
<span class="sourceLineNo">068</span> registerCompletion("worlds", c -> (<a name="line.68"></a>
|
||||
<span class="sourceLineNo">069</span> Bukkit.getWorlds().stream().map(World::getName).collect(Collectors.toList())<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> registerCompletion("players", c -> {<a name="line.72"></a>
|
||||
<span class="sourceLineNo">073</span> CommandSender sender = c.getSender();<a name="line.73"></a>
|
||||
<span class="sourceLineNo">074</span> Validate.notNull(sender, "Sender cannot be null");<a name="line.74"></a>
|
||||
<span class="sourceLineNo">075</span><a name="line.75"></a>
|
||||
<span class="sourceLineNo">076</span> Player senderPlayer = sender instanceof Player ? (Player) sender : null;<a name="line.76"></a>
|
||||
<span class="sourceLineNo">077</span><a name="line.77"></a>
|
||||
<span class="sourceLineNo">078</span> ArrayList<String> matchedPlayers = new ArrayList<>();<a name="line.78"></a>
|
||||
<span class="sourceLineNo">079</span> for (Player player : Bukkit.getOnlinePlayers()) {<a name="line.79"></a>
|
||||
<span class="sourceLineNo">080</span> String name = player.getName();<a name="line.80"></a>
|
||||
<span class="sourceLineNo">081</span> if ((senderPlayer == null || senderPlayer.canSee(player)) && StringUtil.startsWithIgnoreCase(name, c.getInput())) {<a name="line.81"></a>
|
||||
<span class="sourceLineNo">082</span> matchedPlayers.add(name);<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">085</span><a name="line.85"></a>
|
||||
<span class="sourceLineNo">086</span> matchedPlayers.sort(String.CASE_INSENSITIVE_ORDER);<a name="line.86"></a>
|
||||
<span class="sourceLineNo">087</span> return matchedPlayers;<a name="line.87"></a>
|
||||
<span class="sourceLineNo">088</span> });<a name="line.88"></a>
|
||||
<span class="sourceLineNo">089</span> }<a name="line.89"></a>
|
||||
<span class="sourceLineNo">086</span><a name="line.86"></a>
|
||||
<span class="sourceLineNo">087</span> matchedPlayers.sort(String.CASE_INSENSITIVE_ORDER);<a name="line.87"></a>
|
||||
<span class="sourceLineNo">088</span> return matchedPlayers;<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>}<a name="line.91"></a>
|
||||
<span class="sourceLineNo">091</span> setDefaultCompletion("players", OnlinePlayer.class, co.aikar.commands.contexts.OnlinePlayer.class, Player.class);<a name="line.91"></a>
|
||||
<span class="sourceLineNo">092</span> setDefaultCompletion("worlds", World.class);<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>}<a name="line.95"></a>
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -43,360 +43,364 @@
|
||||
<span class="sourceLineNo">035</span>import org.bukkit.command.CommandSender;<a name="line.35"></a>
|
||||
<span class="sourceLineNo">036</span>import org.bukkit.command.PluginIdentifiableCommand;<a name="line.36"></a>
|
||||
<span class="sourceLineNo">037</span>import org.bukkit.command.SimpleCommandMap;<a name="line.37"></a>
|
||||
<span class="sourceLineNo">038</span>import org.bukkit.entity.Player;<a name="line.38"></a>
|
||||
<span class="sourceLineNo">039</span>import org.bukkit.inventory.ItemFactory;<a name="line.39"></a>
|
||||
<span class="sourceLineNo">040</span>import org.bukkit.plugin.Plugin;<a name="line.40"></a>
|
||||
<span class="sourceLineNo">041</span>import org.bukkit.plugin.PluginManager;<a name="line.41"></a>
|
||||
<span class="sourceLineNo">042</span>import org.bukkit.plugin.java.JavaPlugin;<a name="line.42"></a>
|
||||
<span class="sourceLineNo">043</span>import org.bukkit.scheduler.BukkitScheduler;<a name="line.43"></a>
|
||||
<span class="sourceLineNo">044</span>import org.bukkit.scheduler.BukkitTask;<a name="line.44"></a>
|
||||
<span class="sourceLineNo">045</span>import org.bukkit.scoreboard.ScoreboardManager;<a name="line.45"></a>
|
||||
<span class="sourceLineNo">046</span>import org.jetbrains.annotations.NotNull;<a name="line.46"></a>
|
||||
<span class="sourceLineNo">047</span><a name="line.47"></a>
|
||||
<span class="sourceLineNo">048</span>import java.lang.reflect.Field;<a name="line.48"></a>
|
||||
<span class="sourceLineNo">049</span>import java.lang.reflect.Method;<a name="line.49"></a>
|
||||
<span class="sourceLineNo">050</span>import java.util.Collection;<a name="line.50"></a>
|
||||
<span class="sourceLineNo">051</span>import java.util.Collections;<a name="line.51"></a>
|
||||
<span class="sourceLineNo">052</span>import java.util.HashMap;<a name="line.52"></a>
|
||||
<span class="sourceLineNo">053</span>import java.util.List;<a name="line.53"></a>
|
||||
<span class="sourceLineNo">054</span>import java.util.Locale;<a name="line.54"></a>
|
||||
<span class="sourceLineNo">055</span>import java.util.Map;<a name="line.55"></a>
|
||||
<span class="sourceLineNo">056</span>import java.util.Objects;<a name="line.56"></a>
|
||||
<span class="sourceLineNo">057</span>import java.util.logging.Level;<a name="line.57"></a>
|
||||
<span class="sourceLineNo">058</span>import java.util.logging.Logger;<a name="line.58"></a>
|
||||
<span class="sourceLineNo">059</span>import java.util.regex.Matcher;<a name="line.59"></a>
|
||||
<span class="sourceLineNo">060</span>import java.util.regex.Pattern;<a name="line.60"></a>
|
||||
<span class="sourceLineNo">061</span><a name="line.61"></a>
|
||||
<span class="sourceLineNo">062</span>@SuppressWarnings("WeakerAccess")<a name="line.62"></a>
|
||||
<span class="sourceLineNo">063</span>public class BukkitCommandManager extends CommandManager<<a name="line.63"></a>
|
||||
<span class="sourceLineNo">064</span> CommandSender,<a name="line.64"></a>
|
||||
<span class="sourceLineNo">065</span> BukkitCommandIssuer,<a name="line.65"></a>
|
||||
<span class="sourceLineNo">066</span> ChatColor,<a name="line.66"></a>
|
||||
<span class="sourceLineNo">067</span> BukkitMessageFormatter,<a name="line.67"></a>
|
||||
<span class="sourceLineNo">068</span> BukkitCommandExecutionContext,<a name="line.68"></a>
|
||||
<span class="sourceLineNo">069</span> BukkitConditionContext<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> @SuppressWarnings("WeakerAccess")<a name="line.72"></a>
|
||||
<span class="sourceLineNo">073</span> protected final Plugin plugin;<a name="line.73"></a>
|
||||
<span class="sourceLineNo">074</span> private final CommandMap commandMap;<a name="line.74"></a>
|
||||
<span class="sourceLineNo">075</span> private final TimingManager timingManager;<a name="line.75"></a>
|
||||
<span class="sourceLineNo">076</span> private final BukkitTask localeTask;<a name="line.76"></a>
|
||||
<span class="sourceLineNo">077</span> private final Logger logger;<a name="line.77"></a>
|
||||
<span class="sourceLineNo">078</span> public final Integer mcMinorVersion;<a name="line.78"></a>
|
||||
<span class="sourceLineNo">079</span> public final Integer mcPatchVersion;<a name="line.79"></a>
|
||||
<span class="sourceLineNo">080</span> protected Map<String, Command> knownCommands = new HashMap<>();<a name="line.80"></a>
|
||||
<span class="sourceLineNo">081</span> protected Map<String, BukkitRootCommand> registeredCommands = new HashMap<>();<a name="line.81"></a>
|
||||
<span class="sourceLineNo">082</span> protected BukkitCommandContexts contexts;<a name="line.82"></a>
|
||||
<span class="sourceLineNo">083</span> protected BukkitCommandCompletions completions;<a name="line.83"></a>
|
||||
<span class="sourceLineNo">084</span> MCTiming commandTiming;<a name="line.84"></a>
|
||||
<span class="sourceLineNo">085</span> protected BukkitLocales locales;<a name="line.85"></a>
|
||||
<span class="sourceLineNo">086</span> private boolean cantReadLocale = false;<a name="line.86"></a>
|
||||
<span class="sourceLineNo">087</span> protected boolean autoDetectFromClient = true;<a name="line.87"></a>
|
||||
<span class="sourceLineNo">088</span><a name="line.88"></a>
|
||||
<span class="sourceLineNo">089</span> @SuppressWarnings("JavaReflectionMemberAccess")<a name="line.89"></a>
|
||||
<span class="sourceLineNo">090</span> public BukkitCommandManager(Plugin plugin) {<a name="line.90"></a>
|
||||
<span class="sourceLineNo">091</span> this.plugin = plugin;<a name="line.91"></a>
|
||||
<span class="sourceLineNo">092</span> this.logger = Logger.getLogger(this.plugin.getName());<a name="line.92"></a>
|
||||
<span class="sourceLineNo">093</span> this.timingManager = TimingManager.of(plugin);<a name="line.93"></a>
|
||||
<span class="sourceLineNo">094</span> this.commandTiming = this.timingManager.of("Commands");<a name="line.94"></a>
|
||||
<span class="sourceLineNo">095</span> this.commandMap = hookCommandMap();<a name="line.95"></a>
|
||||
<span class="sourceLineNo">096</span> this.formatters.put(MessageType.ERROR, defaultFormatter = new BukkitMessageFormatter(ChatColor.RED, ChatColor.YELLOW, ChatColor.RED));<a name="line.96"></a>
|
||||
<span class="sourceLineNo">097</span> this.formatters.put(MessageType.SYNTAX, new BukkitMessageFormatter(ChatColor.YELLOW, ChatColor.GREEN, ChatColor.WHITE));<a name="line.97"></a>
|
||||
<span class="sourceLineNo">098</span> this.formatters.put(MessageType.INFO, new BukkitMessageFormatter(ChatColor.BLUE, ChatColor.DARK_GREEN, ChatColor.GREEN));<a name="line.98"></a>
|
||||
<span class="sourceLineNo">099</span> this.formatters.put(MessageType.HELP, new BukkitMessageFormatter(ChatColor.AQUA, ChatColor.GREEN, ChatColor.YELLOW));<a name="line.99"></a>
|
||||
<span class="sourceLineNo">100</span> Pattern versionPattern = Pattern.compile("\\(MC: (\\d)\\.(\\d+)\\.?(\\d+?)?\\)");<a name="line.100"></a>
|
||||
<span class="sourceLineNo">101</span> Matcher matcher = versionPattern.matcher(Bukkit.getVersion());<a name="line.101"></a>
|
||||
<span class="sourceLineNo">102</span> if (matcher.find()) {<a name="line.102"></a>
|
||||
<span class="sourceLineNo">103</span> this.mcMinorVersion = ACFUtil.parseInt(matcher.toMatchResult().group(2), 0);<a name="line.103"></a>
|
||||
<span class="sourceLineNo">104</span> this.mcPatchVersion = ACFUtil.parseInt(matcher.toMatchResult().group(3), 0);<a name="line.104"></a>
|
||||
<span class="sourceLineNo">105</span> } else {<a name="line.105"></a>
|
||||
<span class="sourceLineNo">106</span> this.mcMinorVersion = -1;<a name="line.106"></a>
|
||||
<span class="sourceLineNo">107</span> this.mcPatchVersion = -1;<a name="line.107"></a>
|
||||
<span class="sourceLineNo">108</span> }<a name="line.108"></a>
|
||||
<span class="sourceLineNo">109</span><a name="line.109"></a>
|
||||
<span class="sourceLineNo">110</span> Bukkit.getPluginManager().registerEvents(new ACFBukkitListener(this, plugin), plugin);<a name="line.110"></a>
|
||||
<span class="sourceLineNo">111</span><a name="line.111"></a>
|
||||
<span class="sourceLineNo">112</span> getLocales(); // auto load locales<a name="line.112"></a>
|
||||
<span class="sourceLineNo">113</span> this.localeTask = Bukkit.getScheduler().runTaskTimer(plugin, () -> {<a name="line.113"></a>
|
||||
<span class="sourceLineNo">114</span> if (this.cantReadLocale || !this.autoDetectFromClient) {<a name="line.114"></a>
|
||||
<span class="sourceLineNo">115</span> return;<a name="line.115"></a>
|
||||
<span class="sourceLineNo">116</span> }<a name="line.116"></a>
|
||||
<span class="sourceLineNo">117</span> Bukkit.getOnlinePlayers().forEach(this::readPlayerLocale);<a name="line.117"></a>
|
||||
<span class="sourceLineNo">118</span> }, 5, 5);<a name="line.118"></a>
|
||||
<span class="sourceLineNo">119</span><a name="line.119"></a>
|
||||
<span class="sourceLineNo">120</span> registerDependency(plugin.getClass(), plugin);<a name="line.120"></a>
|
||||
<span class="sourceLineNo">121</span> registerDependency(Plugin.class, plugin);<a name="line.121"></a>
|
||||
<span class="sourceLineNo">122</span> registerDependency(JavaPlugin.class, plugin);<a name="line.122"></a>
|
||||
<span class="sourceLineNo">123</span> registerDependency(PluginManager.class, Bukkit.getPluginManager());<a name="line.123"></a>
|
||||
<span class="sourceLineNo">124</span> registerDependency(Server.class, Bukkit.getServer());<a name="line.124"></a>
|
||||
<span class="sourceLineNo">125</span> registerDependency(BukkitScheduler.class, Bukkit.getScheduler());<a name="line.125"></a>
|
||||
<span class="sourceLineNo">126</span> registerDependency(ScoreboardManager.class, Bukkit.getScoreboardManager());<a name="line.126"></a>
|
||||
<span class="sourceLineNo">127</span> registerDependency(ItemFactory.class, Bukkit.getItemFactory());<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> @NotNull<a name="line.130"></a>
|
||||
<span class="sourceLineNo">131</span> private CommandMap hookCommandMap() {<a name="line.131"></a>
|
||||
<span class="sourceLineNo">132</span> CommandMap commandMap = null;<a name="line.132"></a>
|
||||
<span class="sourceLineNo">133</span> try {<a name="line.133"></a>
|
||||
<span class="sourceLineNo">134</span> Server server = Bukkit.getServer();<a name="line.134"></a>
|
||||
<span class="sourceLineNo">135</span> Method getCommandMap = server.getClass().getDeclaredMethod("getCommandMap");<a name="line.135"></a>
|
||||
<span class="sourceLineNo">136</span> getCommandMap.setAccessible(true);<a name="line.136"></a>
|
||||
<span class="sourceLineNo">137</span> commandMap = (CommandMap) getCommandMap.invoke(server);<a name="line.137"></a>
|
||||
<span class="sourceLineNo">138</span> if (!SimpleCommandMap.class.isAssignableFrom(commandMap.getClass())) {<a name="line.138"></a>
|
||||
<span class="sourceLineNo">139</span> this.log(LogLevel.ERROR, "ERROR: CommandMap has been hijacked! Offending command map is located at: " + commandMap.getClass().getName());<a name="line.139"></a>
|
||||
<span class="sourceLineNo">140</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.140"></a>
|
||||
<span class="sourceLineNo">141</span> this.log(LogLevel.ERROR, "We can not guarantee things are going to work.");<a name="line.141"></a>
|
||||
<span class="sourceLineNo">142</span> Field cmField = server.getClass().getDeclaredField("commandMap");<a name="line.142"></a>
|
||||
<span class="sourceLineNo">143</span> commandMap = new ProxyCommandMap(this, commandMap);<a name="line.143"></a>
|
||||
<span class="sourceLineNo">144</span> cmField.set(server, commandMap);<a name="line.144"></a>
|
||||
<span class="sourceLineNo">145</span> this.log(LogLevel.INFO, "Injected Proxy Command Map... good luck...");<a name="line.145"></a>
|
||||
<span class="sourceLineNo">146</span> }<a name="line.146"></a>
|
||||
<span class="sourceLineNo">147</span> Field knownCommands = SimpleCommandMap.class.getDeclaredField("knownCommands");<a name="line.147"></a>
|
||||
<span class="sourceLineNo">148</span> knownCommands.setAccessible(true);<a name="line.148"></a>
|
||||
<span class="sourceLineNo">149</span> //noinspection unchecked<a name="line.149"></a>
|
||||
<span class="sourceLineNo">150</span> this.knownCommands = (Map<String, Command>) knownCommands.get(commandMap);<a name="line.150"></a>
|
||||
<span class="sourceLineNo">151</span> } catch (Exception e) {<a name="line.151"></a>
|
||||
<span class="sourceLineNo">152</span> this.log(LogLevel.ERROR, "Failed to get Command Map. ACF will not function.");<a name="line.152"></a>
|
||||
<span class="sourceLineNo">153</span> ACFUtil.sneaky(e);<a name="line.153"></a>
|
||||
<span class="sourceLineNo">154</span> }<a name="line.154"></a>
|
||||
<span class="sourceLineNo">155</span> return commandMap;<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 Plugin getPlugin() {<a name="line.158"></a>
|
||||
<span class="sourceLineNo">159</span> return this.plugin;<a name="line.159"></a>
|
||||
<span class="sourceLineNo">038</span>import org.bukkit.configuration.file.FileConfiguration;<a name="line.38"></a>
|
||||
<span class="sourceLineNo">039</span>import org.bukkit.entity.Player;<a name="line.39"></a>
|
||||
<span class="sourceLineNo">040</span>import org.bukkit.inventory.ItemFactory;<a name="line.40"></a>
|
||||
<span class="sourceLineNo">041</span>import org.bukkit.plugin.Plugin;<a name="line.41"></a>
|
||||
<span class="sourceLineNo">042</span>import org.bukkit.plugin.PluginManager;<a name="line.42"></a>
|
||||
<span class="sourceLineNo">043</span>import org.bukkit.plugin.java.JavaPlugin;<a name="line.43"></a>
|
||||
<span class="sourceLineNo">044</span>import org.bukkit.scheduler.BukkitScheduler;<a name="line.44"></a>
|
||||
<span class="sourceLineNo">045</span>import org.bukkit.scheduler.BukkitTask;<a name="line.45"></a>
|
||||
<span class="sourceLineNo">046</span>import org.bukkit.scoreboard.ScoreboardManager;<a name="line.46"></a>
|
||||
<span class="sourceLineNo">047</span>import org.jetbrains.annotations.NotNull;<a name="line.47"></a>
|
||||
<span class="sourceLineNo">048</span><a name="line.48"></a>
|
||||
<span class="sourceLineNo">049</span>import java.lang.reflect.Field;<a name="line.49"></a>
|
||||
<span class="sourceLineNo">050</span>import java.lang.reflect.Method;<a name="line.50"></a>
|
||||
<span class="sourceLineNo">051</span>import java.util.Collection;<a name="line.51"></a>
|
||||
<span class="sourceLineNo">052</span>import java.util.Collections;<a name="line.52"></a>
|
||||
<span class="sourceLineNo">053</span>import java.util.HashMap;<a name="line.53"></a>
|
||||
<span class="sourceLineNo">054</span>import java.util.List;<a name="line.54"></a>
|
||||
<span class="sourceLineNo">055</span>import java.util.Locale;<a name="line.55"></a>
|
||||
<span class="sourceLineNo">056</span>import java.util.Map;<a name="line.56"></a>
|
||||
<span class="sourceLineNo">057</span>import java.util.Objects;<a name="line.57"></a>
|
||||
<span class="sourceLineNo">058</span>import java.util.logging.Level;<a name="line.58"></a>
|
||||
<span class="sourceLineNo">059</span>import java.util.logging.Logger;<a name="line.59"></a>
|
||||
<span class="sourceLineNo">060</span>import java.util.regex.Matcher;<a name="line.60"></a>
|
||||
<span class="sourceLineNo">061</span>import java.util.regex.Pattern;<a name="line.61"></a>
|
||||
<span class="sourceLineNo">062</span><a name="line.62"></a>
|
||||
<span class="sourceLineNo">063</span>@SuppressWarnings("WeakerAccess")<a name="line.63"></a>
|
||||
<span class="sourceLineNo">064</span>public class BukkitCommandManager extends CommandManager<<a name="line.64"></a>
|
||||
<span class="sourceLineNo">065</span> CommandSender,<a name="line.65"></a>
|
||||
<span class="sourceLineNo">066</span> BukkitCommandIssuer,<a name="line.66"></a>
|
||||
<span class="sourceLineNo">067</span> ChatColor,<a name="line.67"></a>
|
||||
<span class="sourceLineNo">068</span> BukkitMessageFormatter,<a name="line.68"></a>
|
||||
<span class="sourceLineNo">069</span> BukkitCommandExecutionContext,<a name="line.69"></a>
|
||||
<span class="sourceLineNo">070</span> BukkitConditionContext<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> @SuppressWarnings("WeakerAccess")<a name="line.73"></a>
|
||||
<span class="sourceLineNo">074</span> protected final Plugin plugin;<a name="line.74"></a>
|
||||
<span class="sourceLineNo">075</span> private final CommandMap commandMap;<a name="line.75"></a>
|
||||
<span class="sourceLineNo">076</span> private final TimingManager timingManager;<a name="line.76"></a>
|
||||
<span class="sourceLineNo">077</span> private final BukkitTask localeTask;<a name="line.77"></a>
|
||||
<span class="sourceLineNo">078</span> private final Logger logger;<a name="line.78"></a>
|
||||
<span class="sourceLineNo">079</span> public final Integer mcMinorVersion;<a name="line.79"></a>
|
||||
<span class="sourceLineNo">080</span> public final Integer mcPatchVersion;<a name="line.80"></a>
|
||||
<span class="sourceLineNo">081</span> protected Map<String, Command> knownCommands = new HashMap<>();<a name="line.81"></a>
|
||||
<span class="sourceLineNo">082</span> protected Map<String, BukkitRootCommand> registeredCommands = new HashMap<>();<a name="line.82"></a>
|
||||
<span class="sourceLineNo">083</span> protected BukkitCommandContexts contexts;<a name="line.83"></a>
|
||||
<span class="sourceLineNo">084</span> protected BukkitCommandCompletions completions;<a name="line.84"></a>
|
||||
<span class="sourceLineNo">085</span> MCTiming commandTiming;<a name="line.85"></a>
|
||||
<span class="sourceLineNo">086</span> protected BukkitLocales locales;<a name="line.86"></a>
|
||||
<span class="sourceLineNo">087</span> private boolean cantReadLocale = false;<a name="line.87"></a>
|
||||
<span class="sourceLineNo">088</span> protected boolean autoDetectFromClient = true;<a name="line.88"></a>
|
||||
<span class="sourceLineNo">089</span><a name="line.89"></a>
|
||||
<span class="sourceLineNo">090</span> @SuppressWarnings("JavaReflectionMemberAccess")<a name="line.90"></a>
|
||||
<span class="sourceLineNo">091</span> public BukkitCommandManager(Plugin plugin) {<a name="line.91"></a>
|
||||
<span class="sourceLineNo">092</span> this.plugin = plugin;<a name="line.92"></a>
|
||||
<span class="sourceLineNo">093</span> this.logger = Logger.getLogger(this.plugin.getName());<a name="line.93"></a>
|
||||
<span class="sourceLineNo">094</span> this.timingManager = TimingManager.of(plugin);<a name="line.94"></a>
|
||||
<span class="sourceLineNo">095</span> this.commandTiming = this.timingManager.of("Commands");<a name="line.95"></a>
|
||||
<span class="sourceLineNo">096</span> this.commandMap = hookCommandMap();<a name="line.96"></a>
|
||||
<span class="sourceLineNo">097</span> this.formatters.put(MessageType.ERROR, defaultFormatter = new BukkitMessageFormatter(ChatColor.RED, ChatColor.YELLOW, ChatColor.RED));<a name="line.97"></a>
|
||||
<span class="sourceLineNo">098</span> this.formatters.put(MessageType.SYNTAX, new BukkitMessageFormatter(ChatColor.YELLOW, ChatColor.GREEN, ChatColor.WHITE));<a name="line.98"></a>
|
||||
<span class="sourceLineNo">099</span> this.formatters.put(MessageType.INFO, new BukkitMessageFormatter(ChatColor.BLUE, ChatColor.DARK_GREEN, ChatColor.GREEN));<a name="line.99"></a>
|
||||
<span class="sourceLineNo">100</span> this.formatters.put(MessageType.HELP, new BukkitMessageFormatter(ChatColor.AQUA, ChatColor.GREEN, ChatColor.YELLOW));<a name="line.100"></a>
|
||||
<span class="sourceLineNo">101</span> Pattern versionPattern = Pattern.compile("\\(MC: (\\d)\\.(\\d+)\\.?(\\d+?)?\\)");<a name="line.101"></a>
|
||||
<span class="sourceLineNo">102</span> Matcher matcher = versionPattern.matcher(Bukkit.getVersion());<a name="line.102"></a>
|
||||
<span class="sourceLineNo">103</span> if (matcher.find()) {<a name="line.103"></a>
|
||||
<span class="sourceLineNo">104</span> this.mcMinorVersion = ACFUtil.parseInt(matcher.toMatchResult().group(2), 0);<a name="line.104"></a>
|
||||
<span class="sourceLineNo">105</span> this.mcPatchVersion = ACFUtil.parseInt(matcher.toMatchResult().group(3), 0);<a name="line.105"></a>
|
||||
<span class="sourceLineNo">106</span> } else {<a name="line.106"></a>
|
||||
<span class="sourceLineNo">107</span> this.mcMinorVersion = -1;<a name="line.107"></a>
|
||||
<span class="sourceLineNo">108</span> this.mcPatchVersion = -1;<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">111</span> Bukkit.getPluginManager().registerEvents(new ACFBukkitListener(this, plugin), plugin);<a name="line.111"></a>
|
||||
<span class="sourceLineNo">112</span><a name="line.112"></a>
|
||||
<span class="sourceLineNo">113</span> getLocales(); // auto load locales<a name="line.113"></a>
|
||||
<span class="sourceLineNo">114</span> this.localeTask = Bukkit.getScheduler().runTaskTimer(plugin, () -> {<a name="line.114"></a>
|
||||
<span class="sourceLineNo">115</span> if (this.cantReadLocale || !this.autoDetectFromClient) {<a name="line.115"></a>
|
||||
<span class="sourceLineNo">116</span> return;<a name="line.116"></a>
|
||||
<span class="sourceLineNo">117</span> }<a name="line.117"></a>
|
||||
<span class="sourceLineNo">118</span> Bukkit.getOnlinePlayers().forEach(this::readPlayerLocale);<a name="line.118"></a>
|
||||
<span class="sourceLineNo">119</span> }, 5, 5);<a name="line.119"></a>
|
||||
<span class="sourceLineNo">120</span><a name="line.120"></a>
|
||||
<span class="sourceLineNo">121</span> registerDependency(plugin.getClass(), plugin);<a name="line.121"></a>
|
||||
<span class="sourceLineNo">122</span> registerDependency(Logger.class, plugin.getLogger());<a name="line.122"></a>
|
||||
<span class="sourceLineNo">123</span> registerDependency(FileConfiguration.class, plugin.getConfig());<a name="line.123"></a>
|
||||
<span class="sourceLineNo">124</span> registerDependency(FileConfiguration.class, "config", plugin.getConfig());<a name="line.124"></a>
|
||||
<span class="sourceLineNo">125</span> registerDependency(Plugin.class, plugin);<a name="line.125"></a>
|
||||
<span class="sourceLineNo">126</span> registerDependency(JavaPlugin.class, plugin);<a name="line.126"></a>
|
||||
<span class="sourceLineNo">127</span> registerDependency(PluginManager.class, Bukkit.getPluginManager());<a name="line.127"></a>
|
||||
<span class="sourceLineNo">128</span> registerDependency(Server.class, Bukkit.getServer());<a name="line.128"></a>
|
||||
<span class="sourceLineNo">129</span> registerDependency(BukkitScheduler.class, Bukkit.getScheduler());<a name="line.129"></a>
|
||||
<span class="sourceLineNo">130</span> registerDependency(ScoreboardManager.class, Bukkit.getScoreboardManager());<a name="line.130"></a>
|
||||
<span class="sourceLineNo">131</span> registerDependency(ItemFactory.class, Bukkit.getItemFactory());<a name="line.131"></a>
|
||||
<span class="sourceLineNo">132</span> }<a name="line.132"></a>
|
||||
<span class="sourceLineNo">133</span><a name="line.133"></a>
|
||||
<span class="sourceLineNo">134</span> @NotNull<a name="line.134"></a>
|
||||
<span class="sourceLineNo">135</span> private CommandMap hookCommandMap() {<a name="line.135"></a>
|
||||
<span class="sourceLineNo">136</span> CommandMap commandMap = null;<a name="line.136"></a>
|
||||
<span class="sourceLineNo">137</span> try {<a name="line.137"></a>
|
||||
<span class="sourceLineNo">138</span> Server server = Bukkit.getServer();<a name="line.138"></a>
|
||||
<span class="sourceLineNo">139</span> Method getCommandMap = server.getClass().getDeclaredMethod("getCommandMap");<a name="line.139"></a>
|
||||
<span class="sourceLineNo">140</span> getCommandMap.setAccessible(true);<a name="line.140"></a>
|
||||
<span class="sourceLineNo">141</span> commandMap = (CommandMap) getCommandMap.invoke(server);<a name="line.141"></a>
|
||||
<span class="sourceLineNo">142</span> if (!SimpleCommandMap.class.isAssignableFrom(commandMap.getClass())) {<a name="line.142"></a>
|
||||
<span class="sourceLineNo">143</span> this.log(LogLevel.ERROR, "ERROR: CommandMap has been hijacked! Offending command map is located at: " + commandMap.getClass().getName());<a name="line.143"></a>
|
||||
<span class="sourceLineNo">144</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.144"></a>
|
||||
<span class="sourceLineNo">145</span> this.log(LogLevel.ERROR, "We can not guarantee things are going to work.");<a name="line.145"></a>
|
||||
<span class="sourceLineNo">146</span> Field cmField = server.getClass().getDeclaredField("commandMap");<a name="line.146"></a>
|
||||
<span class="sourceLineNo">147</span> commandMap = new ProxyCommandMap(this, commandMap);<a name="line.147"></a>
|
||||
<span class="sourceLineNo">148</span> cmField.set(server, commandMap);<a name="line.148"></a>
|
||||
<span class="sourceLineNo">149</span> this.log(LogLevel.INFO, "Injected Proxy Command Map... good luck...");<a name="line.149"></a>
|
||||
<span class="sourceLineNo">150</span> }<a name="line.150"></a>
|
||||
<span class="sourceLineNo">151</span> Field knownCommands = SimpleCommandMap.class.getDeclaredField("knownCommands");<a name="line.151"></a>
|
||||
<span class="sourceLineNo">152</span> knownCommands.setAccessible(true);<a name="line.152"></a>
|
||||
<span class="sourceLineNo">153</span> //noinspection unchecked<a name="line.153"></a>
|
||||
<span class="sourceLineNo">154</span> this.knownCommands = (Map<String, Command>) knownCommands.get(commandMap);<a name="line.154"></a>
|
||||
<span class="sourceLineNo">155</span> } catch (Exception e) {<a name="line.155"></a>
|
||||
<span class="sourceLineNo">156</span> this.log(LogLevel.ERROR, "Failed to get Command Map. ACF will not function.");<a name="line.156"></a>
|
||||
<span class="sourceLineNo">157</span> ACFUtil.sneaky(e);<a name="line.157"></a>
|
||||
<span class="sourceLineNo">158</span> }<a name="line.158"></a>
|
||||
<span class="sourceLineNo">159</span> return commandMap;<a name="line.159"></a>
|
||||
<span class="sourceLineNo">160</span> }<a name="line.160"></a>
|
||||
<span class="sourceLineNo">161</span><a name="line.161"></a>
|
||||
<span class="sourceLineNo">162</span> @Override<a name="line.162"></a>
|
||||
<span class="sourceLineNo">163</span> public boolean isCommandIssuer(Class<?> type) {<a name="line.163"></a>
|
||||
<span class="sourceLineNo">164</span> return CommandSender.class.isAssignableFrom(type);<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">167</span> @Override<a name="line.167"></a>
|
||||
<span class="sourceLineNo">168</span> public synchronized CommandContexts<BukkitCommandExecutionContext> getCommandContexts() {<a name="line.168"></a>
|
||||
<span class="sourceLineNo">169</span> if (this.contexts == null) {<a name="line.169"></a>
|
||||
<span class="sourceLineNo">170</span> this.contexts = new BukkitCommandContexts(this);<a name="line.170"></a>
|
||||
<span class="sourceLineNo">171</span> }<a name="line.171"></a>
|
||||
<span class="sourceLineNo">172</span> return contexts;<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 synchronized CommandCompletions<BukkitCommandCompletionContext> getCommandCompletions() {<a name="line.176"></a>
|
||||
<span class="sourceLineNo">177</span> if (this.completions == null) {<a name="line.177"></a>
|
||||
<span class="sourceLineNo">178</span> this.completions = new BukkitCommandCompletions(this);<a name="line.178"></a>
|
||||
<span class="sourceLineNo">179</span> }<a name="line.179"></a>
|
||||
<span class="sourceLineNo">180</span> return completions;<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><a name="line.183"></a>
|
||||
<span class="sourceLineNo">184</span> @Override<a name="line.184"></a>
|
||||
<span class="sourceLineNo">185</span> public BukkitLocales getLocales() {<a name="line.185"></a>
|
||||
<span class="sourceLineNo">186</span> if (this.locales == null) {<a name="line.186"></a>
|
||||
<span class="sourceLineNo">187</span> this.locales = new BukkitLocales(this);<a name="line.187"></a>
|
||||
<span class="sourceLineNo">188</span> this.locales.loadLanguages();<a name="line.188"></a>
|
||||
<span class="sourceLineNo">189</span> }<a name="line.189"></a>
|
||||
<span class="sourceLineNo">190</span> return locales;<a name="line.190"></a>
|
||||
<span class="sourceLineNo">191</span> }<a name="line.191"></a>
|
||||
<span class="sourceLineNo">192</span><a name="line.192"></a>
|
||||
<span class="sourceLineNo">193</span><a name="line.193"></a>
|
||||
<span class="sourceLineNo">194</span> @Override<a name="line.194"></a>
|
||||
<span class="sourceLineNo">195</span> public boolean hasRegisteredCommands() {<a name="line.195"></a>
|
||||
<span class="sourceLineNo">196</span> return !registeredCommands.isEmpty();<a name="line.196"></a>
|
||||
<span class="sourceLineNo">197</span> }<a name="line.197"></a>
|
||||
<span class="sourceLineNo">198</span><a name="line.198"></a>
|
||||
<span class="sourceLineNo">199</span> public void registerCommand(BaseCommand command, boolean force) {<a name="line.199"></a>
|
||||
<span class="sourceLineNo">200</span> final String plugin = this.plugin.getName().toLowerCase();<a name="line.200"></a>
|
||||
<span class="sourceLineNo">201</span> command.onRegister(this);<a name="line.201"></a>
|
||||
<span class="sourceLineNo">202</span> for (Map.Entry<String, RootCommand> entry : command.registeredCommands.entrySet()) {<a name="line.202"></a>
|
||||
<span class="sourceLineNo">203</span> String commandName = entry.getKey().toLowerCase();<a name="line.203"></a>
|
||||
<span class="sourceLineNo">204</span> BukkitRootCommand bukkitCommand = (BukkitRootCommand) entry.getValue();<a name="line.204"></a>
|
||||
<span class="sourceLineNo">205</span> if (!bukkitCommand.isRegistered) {<a name="line.205"></a>
|
||||
<span class="sourceLineNo">206</span> Command oldCommand = commandMap.getCommand(commandName);<a name="line.206"></a>
|
||||
<span class="sourceLineNo">207</span> if (oldCommand instanceof PluginIdentifiableCommand && ((PluginIdentifiableCommand) oldCommand).getPlugin() == this.plugin) {<a name="line.207"></a>
|
||||
<span class="sourceLineNo">208</span> knownCommands.remove(commandName);<a name="line.208"></a>
|
||||
<span class="sourceLineNo">209</span> oldCommand.unregister(commandMap);<a name="line.209"></a>
|
||||
<span class="sourceLineNo">210</span> } else if (oldCommand != null && force) {<a name="line.210"></a>
|
||||
<span class="sourceLineNo">211</span> knownCommands.remove(commandName);<a name="line.211"></a>
|
||||
<span class="sourceLineNo">212</span> for (Map.Entry<String, Command> ce : knownCommands.entrySet()) {<a name="line.212"></a>
|
||||
<span class="sourceLineNo">213</span> String key = ce.getKey();<a name="line.213"></a>
|
||||
<span class="sourceLineNo">214</span> Command value = ce.getValue();<a name="line.214"></a>
|
||||
<span class="sourceLineNo">215</span> if (key.contains(":") && oldCommand.equals(value)) {<a name="line.215"></a>
|
||||
<span class="sourceLineNo">216</span> String[] split = ACFPatterns.COLON.split(key, 2);<a name="line.216"></a>
|
||||
<span class="sourceLineNo">217</span> if (split.length > 1) {<a name="line.217"></a>
|
||||
<span class="sourceLineNo">218</span> oldCommand.unregister(commandMap);<a name="line.218"></a>
|
||||
<span class="sourceLineNo">219</span> oldCommand.setLabel(split[0] + ":" + command.getName());<a name="line.219"></a>
|
||||
<span class="sourceLineNo">220</span> oldCommand.register(commandMap);<a name="line.220"></a>
|
||||
<span class="sourceLineNo">221</span> }<a name="line.221"></a>
|
||||
<span class="sourceLineNo">222</span> }<a name="line.222"></a>
|
||||
<span class="sourceLineNo">223</span> }<a name="line.223"></a>
|
||||
<span class="sourceLineNo">224</span> }<a name="line.224"></a>
|
||||
<span class="sourceLineNo">225</span> commandMap.register(commandName, plugin, bukkitCommand);<a name="line.225"></a>
|
||||
<span class="sourceLineNo">226</span> }<a name="line.226"></a>
|
||||
<span class="sourceLineNo">227</span> bukkitCommand.isRegistered = true;<a name="line.227"></a>
|
||||
<span class="sourceLineNo">228</span> registeredCommands.put(commandName, bukkitCommand);<a name="line.228"></a>
|
||||
<span class="sourceLineNo">229</span> }<a name="line.229"></a>
|
||||
<span class="sourceLineNo">230</span> }<a name="line.230"></a>
|
||||
<span class="sourceLineNo">231</span><a name="line.231"></a>
|
||||
<span class="sourceLineNo">232</span> @Override<a name="line.232"></a>
|
||||
<span class="sourceLineNo">233</span> public void registerCommand(BaseCommand command) {<a name="line.233"></a>
|
||||
<span class="sourceLineNo">234</span> registerCommand(command, false);<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> public void unregisterCommand(BaseCommand command) {<a name="line.237"></a>
|
||||
<span class="sourceLineNo">238</span> for (RootCommand rootcommand : command.registeredCommands.values()) {<a name="line.238"></a>
|
||||
<span class="sourceLineNo">239</span> BukkitRootCommand bukkitCommand = (BukkitRootCommand) rootcommand;<a name="line.239"></a>
|
||||
<span class="sourceLineNo">240</span> bukkitCommand.getSubCommands().values().removeAll(command.subCommands.values());<a name="line.240"></a>
|
||||
<span class="sourceLineNo">241</span> if (bukkitCommand.isRegistered && bukkitCommand.getSubCommands().isEmpty()) {<a name="line.241"></a>
|
||||
<span class="sourceLineNo">242</span> unregisterCommand(bukkitCommand);<a name="line.242"></a>
|
||||
<span class="sourceLineNo">243</span> bukkitCommand.isRegistered = false;<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><a name="line.247"></a>
|
||||
<span class="sourceLineNo">248</span> /**<a name="line.248"></a>
|
||||
<span class="sourceLineNo">249</span> * @param command<a name="line.249"></a>
|
||||
<span class="sourceLineNo">250</span> * @deprecated Use unregisterCommand(BaseCommand) - this will be visibility reduced later.<a name="line.250"></a>
|
||||
<span class="sourceLineNo">251</span> */<a name="line.251"></a>
|
||||
<span class="sourceLineNo">252</span> @Deprecated<a name="line.252"></a>
|
||||
<span class="sourceLineNo">253</span> public void unregisterCommand(BukkitRootCommand command) {<a name="line.253"></a>
|
||||
<span class="sourceLineNo">254</span> final String plugin = this.plugin.getName().toLowerCase();<a name="line.254"></a>
|
||||
<span class="sourceLineNo">255</span> command.unregister(commandMap);<a name="line.255"></a>
|
||||
<span class="sourceLineNo">256</span> String key = command.getName();<a name="line.256"></a>
|
||||
<span class="sourceLineNo">257</span> Command registered = knownCommands.get(key);<a name="line.257"></a>
|
||||
<span class="sourceLineNo">258</span> if (command.equals(registered)) {<a name="line.258"></a>
|
||||
<span class="sourceLineNo">259</span> knownCommands.remove(key);<a name="line.259"></a>
|
||||
<span class="sourceLineNo">260</span> }<a name="line.260"></a>
|
||||
<span class="sourceLineNo">261</span> knownCommands.remove(plugin + ":" + key);<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> public void unregisterCommands() {<a name="line.264"></a>
|
||||
<span class="sourceLineNo">265</span> for (Map.Entry<String, BukkitRootCommand> entry : registeredCommands.entrySet()) {<a name="line.265"></a>
|
||||
<span class="sourceLineNo">266</span> unregisterCommand(entry.getValue());<a name="line.266"></a>
|
||||
<span class="sourceLineNo">267</span> }<a name="line.267"></a>
|
||||
<span class="sourceLineNo">268</span> this.registeredCommands.clear();<a name="line.268"></a>
|
||||
<span class="sourceLineNo">269</span> }<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 Field getEntityField(Player player) throws NoSuchFieldException {<a name="line.272"></a>
|
||||
<span class="sourceLineNo">273</span> Class cls = player.getClass();<a name="line.273"></a>
|
||||
<span class="sourceLineNo">274</span> while (cls != Object.class) {<a name="line.274"></a>
|
||||
<span class="sourceLineNo">275</span> if (cls.getName().endsWith("CraftEntity")) {<a name="line.275"></a>
|
||||
<span class="sourceLineNo">276</span> Field field = cls.getDeclaredField("entity");<a name="line.276"></a>
|
||||
<span class="sourceLineNo">277</span> field.setAccessible(true);<a name="line.277"></a>
|
||||
<span class="sourceLineNo">278</span> return field;<a name="line.278"></a>
|
||||
<span class="sourceLineNo">279</span> }<a name="line.279"></a>
|
||||
<span class="sourceLineNo">280</span> cls = cls.getSuperclass();<a name="line.280"></a>
|
||||
<span class="sourceLineNo">281</span> }<a name="line.281"></a>
|
||||
<span class="sourceLineNo">282</span> return null;<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> public Locale setPlayerLocale(Player player, Locale locale) {<a name="line.285"></a>
|
||||
<span class="sourceLineNo">286</span> return this.setIssuerLocale(player, locale);<a name="line.286"></a>
|
||||
<span class="sourceLineNo">162</span> public Plugin getPlugin() {<a name="line.162"></a>
|
||||
<span class="sourceLineNo">163</span> return this.plugin;<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> @Override<a name="line.166"></a>
|
||||
<span class="sourceLineNo">167</span> public boolean isCommandIssuer(Class<?> type) {<a name="line.167"></a>
|
||||
<span class="sourceLineNo">168</span> return CommandSender.class.isAssignableFrom(type);<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> @Override<a name="line.171"></a>
|
||||
<span class="sourceLineNo">172</span> public synchronized CommandContexts<BukkitCommandExecutionContext> getCommandContexts() {<a name="line.172"></a>
|
||||
<span class="sourceLineNo">173</span> if (this.contexts == null) {<a name="line.173"></a>
|
||||
<span class="sourceLineNo">174</span> this.contexts = new BukkitCommandContexts(this);<a name="line.174"></a>
|
||||
<span class="sourceLineNo">175</span> }<a name="line.175"></a>
|
||||
<span class="sourceLineNo">176</span> return contexts;<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 CommandCompletions<BukkitCommandCompletionContext> getCommandCompletions() {<a name="line.180"></a>
|
||||
<span class="sourceLineNo">181</span> if (this.completions == null) {<a name="line.181"></a>
|
||||
<span class="sourceLineNo">182</span> this.completions = new BukkitCommandCompletions(this);<a name="line.182"></a>
|
||||
<span class="sourceLineNo">183</span> }<a name="line.183"></a>
|
||||
<span class="sourceLineNo">184</span> return completions;<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><a name="line.187"></a>
|
||||
<span class="sourceLineNo">188</span> @Override<a name="line.188"></a>
|
||||
<span class="sourceLineNo">189</span> public BukkitLocales getLocales() {<a name="line.189"></a>
|
||||
<span class="sourceLineNo">190</span> if (this.locales == null) {<a name="line.190"></a>
|
||||
<span class="sourceLineNo">191</span> this.locales = new BukkitLocales(this);<a name="line.191"></a>
|
||||
<span class="sourceLineNo">192</span> this.locales.loadLanguages();<a name="line.192"></a>
|
||||
<span class="sourceLineNo">193</span> }<a name="line.193"></a>
|
||||
<span class="sourceLineNo">194</span> return locales;<a name="line.194"></a>
|
||||
<span class="sourceLineNo">195</span> }<a name="line.195"></a>
|
||||
<span class="sourceLineNo">196</span><a name="line.196"></a>
|
||||
<span class="sourceLineNo">197</span><a name="line.197"></a>
|
||||
<span class="sourceLineNo">198</span> @Override<a name="line.198"></a>
|
||||
<span class="sourceLineNo">199</span> public boolean hasRegisteredCommands() {<a name="line.199"></a>
|
||||
<span class="sourceLineNo">200</span> return !registeredCommands.isEmpty();<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 void registerCommand(BaseCommand command, boolean force) {<a name="line.203"></a>
|
||||
<span class="sourceLineNo">204</span> final String plugin = this.plugin.getName().toLowerCase();<a name="line.204"></a>
|
||||
<span class="sourceLineNo">205</span> command.onRegister(this);<a name="line.205"></a>
|
||||
<span class="sourceLineNo">206</span> for (Map.Entry<String, RootCommand> entry : command.registeredCommands.entrySet()) {<a name="line.206"></a>
|
||||
<span class="sourceLineNo">207</span> String commandName = entry.getKey().toLowerCase();<a name="line.207"></a>
|
||||
<span class="sourceLineNo">208</span> BukkitRootCommand bukkitCommand = (BukkitRootCommand) entry.getValue();<a name="line.208"></a>
|
||||
<span class="sourceLineNo">209</span> if (!bukkitCommand.isRegistered) {<a name="line.209"></a>
|
||||
<span class="sourceLineNo">210</span> Command oldCommand = commandMap.getCommand(commandName);<a name="line.210"></a>
|
||||
<span class="sourceLineNo">211</span> if (oldCommand instanceof PluginIdentifiableCommand && ((PluginIdentifiableCommand) oldCommand).getPlugin() == this.plugin) {<a name="line.211"></a>
|
||||
<span class="sourceLineNo">212</span> knownCommands.remove(commandName);<a name="line.212"></a>
|
||||
<span class="sourceLineNo">213</span> oldCommand.unregister(commandMap);<a name="line.213"></a>
|
||||
<span class="sourceLineNo">214</span> } else if (oldCommand != null && force) {<a name="line.214"></a>
|
||||
<span class="sourceLineNo">215</span> knownCommands.remove(commandName);<a name="line.215"></a>
|
||||
<span class="sourceLineNo">216</span> for (Map.Entry<String, Command> ce : knownCommands.entrySet()) {<a name="line.216"></a>
|
||||
<span class="sourceLineNo">217</span> String key = ce.getKey();<a name="line.217"></a>
|
||||
<span class="sourceLineNo">218</span> Command value = ce.getValue();<a name="line.218"></a>
|
||||
<span class="sourceLineNo">219</span> if (key.contains(":") && oldCommand.equals(value)) {<a name="line.219"></a>
|
||||
<span class="sourceLineNo">220</span> String[] split = ACFPatterns.COLON.split(key, 2);<a name="line.220"></a>
|
||||
<span class="sourceLineNo">221</span> if (split.length > 1) {<a name="line.221"></a>
|
||||
<span class="sourceLineNo">222</span> oldCommand.unregister(commandMap);<a name="line.222"></a>
|
||||
<span class="sourceLineNo">223</span> oldCommand.setLabel(split[0] + ":" + command.getName());<a name="line.223"></a>
|
||||
<span class="sourceLineNo">224</span> oldCommand.register(commandMap);<a name="line.224"></a>
|
||||
<span class="sourceLineNo">225</span> }<a name="line.225"></a>
|
||||
<span class="sourceLineNo">226</span> }<a name="line.226"></a>
|
||||
<span class="sourceLineNo">227</span> }<a name="line.227"></a>
|
||||
<span class="sourceLineNo">228</span> }<a name="line.228"></a>
|
||||
<span class="sourceLineNo">229</span> commandMap.register(commandName, plugin, bukkitCommand);<a name="line.229"></a>
|
||||
<span class="sourceLineNo">230</span> }<a name="line.230"></a>
|
||||
<span class="sourceLineNo">231</span> bukkitCommand.isRegistered = true;<a name="line.231"></a>
|
||||
<span class="sourceLineNo">232</span> registeredCommands.put(commandName, bukkitCommand);<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> @Override<a name="line.236"></a>
|
||||
<span class="sourceLineNo">237</span> public void registerCommand(BaseCommand command) {<a name="line.237"></a>
|
||||
<span class="sourceLineNo">238</span> registerCommand(command, false);<a name="line.238"></a>
|
||||
<span class="sourceLineNo">239</span> }<a name="line.239"></a>
|
||||
<span class="sourceLineNo">240</span><a name="line.240"></a>
|
||||
<span class="sourceLineNo">241</span> public void unregisterCommand(BaseCommand command) {<a name="line.241"></a>
|
||||
<span class="sourceLineNo">242</span> for (RootCommand rootcommand : command.registeredCommands.values()) {<a name="line.242"></a>
|
||||
<span class="sourceLineNo">243</span> BukkitRootCommand bukkitCommand = (BukkitRootCommand) rootcommand;<a name="line.243"></a>
|
||||
<span class="sourceLineNo">244</span> bukkitCommand.getSubCommands().values().removeAll(command.subCommands.values());<a name="line.244"></a>
|
||||
<span class="sourceLineNo">245</span> if (bukkitCommand.isRegistered && bukkitCommand.getSubCommands().isEmpty()) {<a name="line.245"></a>
|
||||
<span class="sourceLineNo">246</span> unregisterCommand(bukkitCommand);<a name="line.246"></a>
|
||||
<span class="sourceLineNo">247</span> bukkitCommand.isRegistered = 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> }<a name="line.250"></a>
|
||||
<span class="sourceLineNo">251</span><a name="line.251"></a>
|
||||
<span class="sourceLineNo">252</span> /**<a name="line.252"></a>
|
||||
<span class="sourceLineNo">253</span> * @param command<a name="line.253"></a>
|
||||
<span class="sourceLineNo">254</span> * @deprecated Use unregisterCommand(BaseCommand) - this will be visibility reduced later.<a name="line.254"></a>
|
||||
<span class="sourceLineNo">255</span> */<a name="line.255"></a>
|
||||
<span class="sourceLineNo">256</span> @Deprecated<a name="line.256"></a>
|
||||
<span class="sourceLineNo">257</span> public void unregisterCommand(BukkitRootCommand command) {<a name="line.257"></a>
|
||||
<span class="sourceLineNo">258</span> final String plugin = this.plugin.getName().toLowerCase();<a name="line.258"></a>
|
||||
<span class="sourceLineNo">259</span> command.unregister(commandMap);<a name="line.259"></a>
|
||||
<span class="sourceLineNo">260</span> String key = command.getName();<a name="line.260"></a>
|
||||
<span class="sourceLineNo">261</span> Command registered = knownCommands.get(key);<a name="line.261"></a>
|
||||
<span class="sourceLineNo">262</span> if (command.equals(registered)) {<a name="line.262"></a>
|
||||
<span class="sourceLineNo">263</span> knownCommands.remove(key);<a name="line.263"></a>
|
||||
<span class="sourceLineNo">264</span> }<a name="line.264"></a>
|
||||
<span class="sourceLineNo">265</span> knownCommands.remove(plugin + ":" + key);<a name="line.265"></a>
|
||||
<span class="sourceLineNo">266</span> }<a name="line.266"></a>
|
||||
<span class="sourceLineNo">267</span><a name="line.267"></a>
|
||||
<span class="sourceLineNo">268</span> public void unregisterCommands() {<a name="line.268"></a>
|
||||
<span class="sourceLineNo">269</span> for (Map.Entry<String, BukkitRootCommand> entry : registeredCommands.entrySet()) {<a name="line.269"></a>
|
||||
<span class="sourceLineNo">270</span> unregisterCommand(entry.getValue());<a name="line.270"></a>
|
||||
<span class="sourceLineNo">271</span> }<a name="line.271"></a>
|
||||
<span class="sourceLineNo">272</span> this.registeredCommands.clear();<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> private Field getEntityField(Player player) throws NoSuchFieldException {<a name="line.276"></a>
|
||||
<span class="sourceLineNo">277</span> Class cls = player.getClass();<a name="line.277"></a>
|
||||
<span class="sourceLineNo">278</span> while (cls != Object.class) {<a name="line.278"></a>
|
||||
<span class="sourceLineNo">279</span> if (cls.getName().endsWith("CraftEntity")) {<a name="line.279"></a>
|
||||
<span class="sourceLineNo">280</span> Field field = cls.getDeclaredField("entity");<a name="line.280"></a>
|
||||
<span class="sourceLineNo">281</span> field.setAccessible(true);<a name="line.281"></a>
|
||||
<span class="sourceLineNo">282</span> return field;<a name="line.282"></a>
|
||||
<span class="sourceLineNo">283</span> }<a name="line.283"></a>
|
||||
<span class="sourceLineNo">284</span> cls = cls.getSuperclass();<a name="line.284"></a>
|
||||
<span class="sourceLineNo">285</span> }<a name="line.285"></a>
|
||||
<span class="sourceLineNo">286</span> return null;<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> void readPlayerLocale(Player player) {<a name="line.289"></a>
|
||||
<span class="sourceLineNo">290</span> if (!player.isOnline() || cantReadLocale) {<a name="line.290"></a>
|
||||
<span class="sourceLineNo">291</span> return;<a name="line.291"></a>
|
||||
<span class="sourceLineNo">292</span> }<a name="line.292"></a>
|
||||
<span class="sourceLineNo">293</span> try {<a name="line.293"></a>
|
||||
<span class="sourceLineNo">294</span> Field entityField = getEntityField(player);<a name="line.294"></a>
|
||||
<span class="sourceLineNo">295</span> if (entityField == null) {<a name="line.295"></a>
|
||||
<span class="sourceLineNo">296</span> return;<a name="line.296"></a>
|
||||
<span class="sourceLineNo">297</span> }<a name="line.297"></a>
|
||||
<span class="sourceLineNo">298</span> Object nmsPlayer = entityField.get(player);<a name="line.298"></a>
|
||||
<span class="sourceLineNo">299</span> if (nmsPlayer != null) {<a name="line.299"></a>
|
||||
<span class="sourceLineNo">300</span> Field localeField = nmsPlayer.getClass().getDeclaredField("locale");<a name="line.300"></a>
|
||||
<span class="sourceLineNo">301</span> Object localeString = localeField.get(nmsPlayer);<a name="line.301"></a>
|
||||
<span class="sourceLineNo">302</span> if (localeString instanceof String) {<a name="line.302"></a>
|
||||
<span class="sourceLineNo">303</span> String[] split = ACFPatterns.UNDERSCORE.split((String) localeString);<a name="line.303"></a>
|
||||
<span class="sourceLineNo">304</span> Locale locale = split.length > 1 ? new Locale(split[0], split[1]) : new Locale(split[0]);<a name="line.304"></a>
|
||||
<span class="sourceLineNo">305</span> Locale prev = issuersLocale.put(player.getUniqueId(), locale);<a name="line.305"></a>
|
||||
<span class="sourceLineNo">306</span> if (!Objects.equals(locale, prev)) {<a name="line.306"></a>
|
||||
<span class="sourceLineNo">307</span> this.notifyLocaleChange(getCommandIssuer(player), prev, locale);<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>
|
||||
<span class="sourceLineNo">310</span> }<a name="line.310"></a>
|
||||
<span class="sourceLineNo">311</span> } catch (Exception e) {<a name="line.311"></a>
|
||||
<span class="sourceLineNo">312</span> cantReadLocale = true;<a name="line.312"></a>
|
||||
<span class="sourceLineNo">313</span> this.localeTask.cancel();<a name="line.313"></a>
|
||||
<span class="sourceLineNo">314</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.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><a name="line.317"></a>
|
||||
<span class="sourceLineNo">318</span> public TimingManager getTimings() {<a name="line.318"></a>
|
||||
<span class="sourceLineNo">319</span> return timingManager;<a name="line.319"></a>
|
||||
<span class="sourceLineNo">289</span> public Locale setPlayerLocale(Player player, Locale locale) {<a name="line.289"></a>
|
||||
<span class="sourceLineNo">290</span> return this.setIssuerLocale(player, locale);<a name="line.290"></a>
|
||||
<span class="sourceLineNo">291</span> }<a name="line.291"></a>
|
||||
<span class="sourceLineNo">292</span><a name="line.292"></a>
|
||||
<span class="sourceLineNo">293</span> void readPlayerLocale(Player player) {<a name="line.293"></a>
|
||||
<span class="sourceLineNo">294</span> if (!player.isOnline() || cantReadLocale) {<a name="line.294"></a>
|
||||
<span class="sourceLineNo">295</span> return;<a name="line.295"></a>
|
||||
<span class="sourceLineNo">296</span> }<a name="line.296"></a>
|
||||
<span class="sourceLineNo">297</span> try {<a name="line.297"></a>
|
||||
<span class="sourceLineNo">298</span> Field entityField = getEntityField(player);<a name="line.298"></a>
|
||||
<span class="sourceLineNo">299</span> if (entityField == null) {<a name="line.299"></a>
|
||||
<span class="sourceLineNo">300</span> return;<a name="line.300"></a>
|
||||
<span class="sourceLineNo">301</span> }<a name="line.301"></a>
|
||||
<span class="sourceLineNo">302</span> Object nmsPlayer = entityField.get(player);<a name="line.302"></a>
|
||||
<span class="sourceLineNo">303</span> if (nmsPlayer != null) {<a name="line.303"></a>
|
||||
<span class="sourceLineNo">304</span> Field localeField = nmsPlayer.getClass().getDeclaredField("locale");<a name="line.304"></a>
|
||||
<span class="sourceLineNo">305</span> Object localeString = localeField.get(nmsPlayer);<a name="line.305"></a>
|
||||
<span class="sourceLineNo">306</span> if (localeString instanceof String) {<a name="line.306"></a>
|
||||
<span class="sourceLineNo">307</span> String[] split = ACFPatterns.UNDERSCORE.split((String) localeString);<a name="line.307"></a>
|
||||
<span class="sourceLineNo">308</span> Locale locale = split.length > 1 ? new Locale(split[0], split[1]) : new Locale(split[0]);<a name="line.308"></a>
|
||||
<span class="sourceLineNo">309</span> Locale prev = issuersLocale.put(player.getUniqueId(), locale);<a name="line.309"></a>
|
||||
<span class="sourceLineNo">310</span> if (!Objects.equals(locale, prev)) {<a name="line.310"></a>
|
||||
<span class="sourceLineNo">311</span> this.notifyLocaleChange(getCommandIssuer(player), prev, locale);<a name="line.311"></a>
|
||||
<span class="sourceLineNo">312</span> }<a name="line.312"></a>
|
||||
<span class="sourceLineNo">313</span> }<a name="line.313"></a>
|
||||
<span class="sourceLineNo">314</span> }<a name="line.314"></a>
|
||||
<span class="sourceLineNo">315</span> } catch (Exception e) {<a name="line.315"></a>
|
||||
<span class="sourceLineNo">316</span> cantReadLocale = true;<a name="line.316"></a>
|
||||
<span class="sourceLineNo">317</span> this.localeTask.cancel();<a name="line.317"></a>
|
||||
<span class="sourceLineNo">318</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.318"></a>
|
||||
<span class="sourceLineNo">319</span> }<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> @Override<a name="line.322"></a>
|
||||
<span class="sourceLineNo">323</span> public RootCommand createRootCommand(String cmd) {<a name="line.323"></a>
|
||||
<span class="sourceLineNo">324</span> return new BukkitRootCommand(this, cmd);<a name="line.324"></a>
|
||||
<span class="sourceLineNo">325</span> }<a name="line.325"></a>
|
||||
<span class="sourceLineNo">326</span><a name="line.326"></a>
|
||||
<span class="sourceLineNo">327</span> @Override<a name="line.327"></a>
|
||||
<span class="sourceLineNo">328</span> public Collection<RootCommand> getRegisteredRootCommands() {<a name="line.328"></a>
|
||||
<span class="sourceLineNo">329</span> return Collections.unmodifiableCollection(registeredCommands.values());<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> @Override<a name="line.332"></a>
|
||||
<span class="sourceLineNo">333</span> public BukkitCommandIssuer getCommandIssuer(Object issuer) {<a name="line.333"></a>
|
||||
<span class="sourceLineNo">334</span> if (!(issuer instanceof CommandSender)) {<a name="line.334"></a>
|
||||
<span class="sourceLineNo">335</span> throw new IllegalArgumentException(issuer.getClass().getName() + " is not a Command Issuer.");<a name="line.335"></a>
|
||||
<span class="sourceLineNo">336</span> }<a name="line.336"></a>
|
||||
<span class="sourceLineNo">337</span> return new BukkitCommandIssuer(this, (CommandSender) issuer);<a name="line.337"></a>
|
||||
<span class="sourceLineNo">338</span> }<a name="line.338"></a>
|
||||
<span class="sourceLineNo">339</span><a name="line.339"></a>
|
||||
<span class="sourceLineNo">340</span> @Override<a name="line.340"></a>
|
||||
<span class="sourceLineNo">341</span> public BukkitCommandExecutionContext createCommandContext(RegisteredCommand command, CommandParameter parameter, CommandIssuer sender, List<String> args, int i, Map<String, Object> passedArgs) {<a name="line.341"></a>
|
||||
<span class="sourceLineNo">342</span> return new BukkitCommandExecutionContext(command, parameter, (BukkitCommandIssuer) sender, args, i, passedArgs);<a name="line.342"></a>
|
||||
<span class="sourceLineNo">343</span> }<a name="line.343"></a>
|
||||
<span class="sourceLineNo">344</span><a name="line.344"></a>
|
||||
<span class="sourceLineNo">345</span> @Override<a name="line.345"></a>
|
||||
<span class="sourceLineNo">346</span> public BukkitCommandCompletionContext createCompletionContext(RegisteredCommand command, CommandIssuer sender, String input, String config, String[] args) {<a name="line.346"></a>
|
||||
<span class="sourceLineNo">347</span> return new BukkitCommandCompletionContext(command, (BukkitCommandIssuer) sender, input, config, args);<a name="line.347"></a>
|
||||
<span class="sourceLineNo">348</span> }<a name="line.348"></a>
|
||||
<span class="sourceLineNo">349</span><a name="line.349"></a>
|
||||
<span class="sourceLineNo">350</span> @Override<a name="line.350"></a>
|
||||
<span class="sourceLineNo">351</span> public RegisteredCommand createRegisteredCommand(BaseCommand command, String cmdName, Method method, String prefSubCommand) {<a name="line.351"></a>
|
||||
<span class="sourceLineNo">352</span> return new BukkitRegisteredCommand(command, cmdName, method, prefSubCommand);<a name="line.352"></a>
|
||||
<span class="sourceLineNo">353</span> }<a name="line.353"></a>
|
||||
<span class="sourceLineNo">354</span><a name="line.354"></a>
|
||||
<span class="sourceLineNo">355</span> @Override<a name="line.355"></a>
|
||||
<span class="sourceLineNo">356</span> public BukkitConditionContext createConditionContext(CommandIssuer issuer, String config) {<a name="line.356"></a>
|
||||
<span class="sourceLineNo">357</span> return new BukkitConditionContext((BukkitCommandIssuer) issuer, config);<a name="line.357"></a>
|
||||
<span class="sourceLineNo">358</span> }<a name="line.358"></a>
|
||||
<span class="sourceLineNo">359</span><a name="line.359"></a>
|
||||
<span class="sourceLineNo">360</span><a name="line.360"></a>
|
||||
<span class="sourceLineNo">361</span> @Override<a name="line.361"></a>
|
||||
<span class="sourceLineNo">362</span> public void log(LogLevel level, String message, Throwable throwable) {<a name="line.362"></a>
|
||||
<span class="sourceLineNo">363</span> Level logLevel = level == LogLevel.INFO ? Level.INFO : Level.SEVERE;<a name="line.363"></a>
|
||||
<span class="sourceLineNo">364</span> logger.log(logLevel, LogLevel.LOG_PREFIX + message);<a name="line.364"></a>
|
||||
<span class="sourceLineNo">365</span> if (throwable != null) {<a name="line.365"></a>
|
||||
<span class="sourceLineNo">366</span> for (String line : ACFPatterns.NEWLINE.split(ApacheCommonsExceptionUtil.getFullStackTrace(throwable))) {<a name="line.366"></a>
|
||||
<span class="sourceLineNo">367</span> logger.log(logLevel, LogLevel.LOG_PREFIX + line);<a name="line.367"></a>
|
||||
<span class="sourceLineNo">368</span> }<a name="line.368"></a>
|
||||
<span class="sourceLineNo">369</span> }<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> public boolean usePerIssuerLocale(boolean usePerIssuerLocale, boolean autoDetectFromClient) {<a name="line.372"></a>
|
||||
<span class="sourceLineNo">373</span> boolean old = this.usePerIssuerLocale;<a name="line.373"></a>
|
||||
<span class="sourceLineNo">374</span> this.usePerIssuerLocale = usePerIssuerLocale;<a name="line.374"></a>
|
||||
<span class="sourceLineNo">375</span> this.autoDetectFromClient = autoDetectFromClient;<a name="line.375"></a>
|
||||
<span class="sourceLineNo">376</span> return old;<a name="line.376"></a>
|
||||
<span class="sourceLineNo">377</span> }<a name="line.377"></a>
|
||||
<span class="sourceLineNo">378</span><a name="line.378"></a>
|
||||
<span class="sourceLineNo">379</span> @Override<a name="line.379"></a>
|
||||
<span class="sourceLineNo">380</span> public String getCommandPrefix(CommandIssuer issuer) {<a name="line.380"></a>
|
||||
<span class="sourceLineNo">381</span> return issuer.isPlayer() ? "/" : "";<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> @Override<a name="line.384"></a>
|
||||
<span class="sourceLineNo">385</span> protected boolean handleUncaughtException(BaseCommand scope, RegisteredCommand registeredCommand, CommandIssuer sender, List<String> args, Throwable t) {<a name="line.385"></a>
|
||||
<span class="sourceLineNo">386</span> if (t instanceof CommandException && t.getCause() != null && t.getMessage().startsWith("Unhandled exception")) {<a name="line.386"></a>
|
||||
<span class="sourceLineNo">387</span> t = t.getCause();<a name="line.387"></a>
|
||||
<span class="sourceLineNo">388</span> }<a name="line.388"></a>
|
||||
<span class="sourceLineNo">389</span> return super.handleUncaughtException(scope, registeredCommand, sender, args, t);<a name="line.389"></a>
|
||||
<span class="sourceLineNo">390</span> }<a name="line.390"></a>
|
||||
<span class="sourceLineNo">391</span>}<a name="line.391"></a>
|
||||
<span class="sourceLineNo">322</span> public TimingManager getTimings() {<a name="line.322"></a>
|
||||
<span class="sourceLineNo">323</span> return timingManager;<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> @Override<a name="line.326"></a>
|
||||
<span class="sourceLineNo">327</span> public RootCommand createRootCommand(String cmd) {<a name="line.327"></a>
|
||||
<span class="sourceLineNo">328</span> return new BukkitRootCommand(this, cmd);<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> @Override<a name="line.331"></a>
|
||||
<span class="sourceLineNo">332</span> public Collection<RootCommand> getRegisteredRootCommands() {<a name="line.332"></a>
|
||||
<span class="sourceLineNo">333</span> return Collections.unmodifiableCollection(registeredCommands.values());<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 BukkitCommandIssuer getCommandIssuer(Object issuer) {<a name="line.337"></a>
|
||||
<span class="sourceLineNo">338</span> if (!(issuer instanceof CommandSender)) {<a name="line.338"></a>
|
||||
<span class="sourceLineNo">339</span> throw new IllegalArgumentException(issuer.getClass().getName() + " is not a Command Issuer.");<a name="line.339"></a>
|
||||
<span class="sourceLineNo">340</span> }<a name="line.340"></a>
|
||||
<span class="sourceLineNo">341</span> return new BukkitCommandIssuer(this, (CommandSender) issuer);<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 BukkitCommandExecutionContext createCommandContext(RegisteredCommand command, CommandParameter parameter, CommandIssuer sender, List<String> args, int i, Map<String, Object> passedArgs) {<a name="line.345"></a>
|
||||
<span class="sourceLineNo">346</span> return new BukkitCommandExecutionContext(command, parameter, (BukkitCommandIssuer) sender, args, i, passedArgs);<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>
|
||||
<span class="sourceLineNo">349</span> @Override<a name="line.349"></a>
|
||||
<span class="sourceLineNo">350</span> public BukkitCommandCompletionContext createCompletionContext(RegisteredCommand command, CommandIssuer sender, String input, String config, String[] args) {<a name="line.350"></a>
|
||||
<span class="sourceLineNo">351</span> return new BukkitCommandCompletionContext(command, (BukkitCommandIssuer) sender, input, config, args);<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 RegisteredCommand createRegisteredCommand(BaseCommand command, String cmdName, Method method, String prefSubCommand) {<a name="line.355"></a>
|
||||
<span class="sourceLineNo">356</span> return new BukkitRegisteredCommand(command, cmdName, method, prefSubCommand);<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 BukkitConditionContext createConditionContext(CommandIssuer issuer, String config) {<a name="line.360"></a>
|
||||
<span class="sourceLineNo">361</span> return new BukkitConditionContext((BukkitCommandIssuer) issuer, config);<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><a name="line.364"></a>
|
||||
<span class="sourceLineNo">365</span> @Override<a name="line.365"></a>
|
||||
<span class="sourceLineNo">366</span> public void log(LogLevel level, String message, Throwable throwable) {<a name="line.366"></a>
|
||||
<span class="sourceLineNo">367</span> Level logLevel = level == LogLevel.INFO ? Level.INFO : Level.SEVERE;<a name="line.367"></a>
|
||||
<span class="sourceLineNo">368</span> logger.log(logLevel, LogLevel.LOG_PREFIX + message);<a name="line.368"></a>
|
||||
<span class="sourceLineNo">369</span> if (throwable != null) {<a name="line.369"></a>
|
||||
<span class="sourceLineNo">370</span> for (String line : ACFPatterns.NEWLINE.split(ApacheCommonsExceptionUtil.getFullStackTrace(throwable))) {<a name="line.370"></a>
|
||||
<span class="sourceLineNo">371</span> logger.log(logLevel, LogLevel.LOG_PREFIX + line);<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><a name="line.375"></a>
|
||||
<span class="sourceLineNo">376</span> public boolean usePerIssuerLocale(boolean usePerIssuerLocale, boolean autoDetectFromClient) {<a name="line.376"></a>
|
||||
<span class="sourceLineNo">377</span> boolean old = this.usePerIssuerLocale;<a name="line.377"></a>
|
||||
<span class="sourceLineNo">378</span> this.usePerIssuerLocale = usePerIssuerLocale;<a name="line.378"></a>
|
||||
<span class="sourceLineNo">379</span> this.autoDetectFromClient = autoDetectFromClient;<a name="line.379"></a>
|
||||
<span class="sourceLineNo">380</span> return old;<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> @Override<a name="line.383"></a>
|
||||
<span class="sourceLineNo">384</span> public String getCommandPrefix(CommandIssuer issuer) {<a name="line.384"></a>
|
||||
<span class="sourceLineNo">385</span> return issuer.isPlayer() ? "/" : "";<a name="line.385"></a>
|
||||
<span class="sourceLineNo">386</span> }<a name="line.386"></a>
|
||||
<span class="sourceLineNo">387</span><a name="line.387"></a>
|
||||
<span class="sourceLineNo">388</span> @Override<a name="line.388"></a>
|
||||
<span class="sourceLineNo">389</span> protected boolean handleUncaughtException(BaseCommand scope, RegisteredCommand registeredCommand, CommandIssuer sender, List<String> args, Throwable t) {<a name="line.389"></a>
|
||||
<span class="sourceLineNo">390</span> if (t instanceof CommandException && t.getCause() != null && t.getMessage().startsWith("Unhandled exception")) {<a name="line.390"></a>
|
||||
<span class="sourceLineNo">391</span> t = t.getCause();<a name="line.391"></a>
|
||||
<span class="sourceLineNo">392</span> }<a name="line.392"></a>
|
||||
<span class="sourceLineNo">393</span> return super.handleUncaughtException(scope, registeredCommand, sender, args, t);<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>
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -158,7 +158,7 @@ extends co.aikar.commands.CommandCompletions<<a href="../../../co/aikar/comma
|
||||
<!-- -->
|
||||
</a>
|
||||
<h3>Methods inherited from class co.aikar.commands.CommandCompletions</h3>
|
||||
<code>registerAsyncCompletion, registerCompletion, registerStaticCompletion, registerStaticCompletion, registerStaticCompletion, registerStaticCompletion</code></li>
|
||||
<code>registerAsyncCompletion, registerCompletion, registerStaticCompletion, registerStaticCompletion, registerStaticCompletion, registerStaticCompletion, setDefaultCompletion</code></li>
|
||||
</ul>
|
||||
<ul class="blockList">
|
||||
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
|
||||
|
||||
@@ -162,7 +162,7 @@ extends co.aikar.commands.CommandExecutionContext<<a href="../../../co/aikar/
|
||||
<!-- -->
|
||||
</a>
|
||||
<h3>Methods inherited from class co.aikar.commands.CommandExecutionContext</h3>
|
||||
<code>canOverridePlayerContext, getAnnotation, getAnnotationValue, getAnnotationValue, getArgs, getBooleanFlagValue, getBooleanFlagValue, getCmd, getDoubleFlagValue, getFirstArg, getFlags, getFlagValue, getFlagValue, getFlagValue, getFlagValue, getFlagValue, getFlagValue, getFloatFlagValue, getIndex, getIntFlagValue, getIssuer, getLastArg, getLongFlagValue, getNumParams, getParam, getPassedArgs, getResolvedArg, getResolvedArg, getResolvedArg, hasAnnotation, hasFlag, isLastArg, isOptional, joinArgs, joinArgs, popFirstArg, popLastArg</code></li>
|
||||
<code>canOverridePlayerContext, getAnnotation, getAnnotationValue, getAnnotationValue, getArgs, getBooleanFlagValue, getBooleanFlagValue, getCmd, getDoubleFlagValue, getFirstArg, getFlags, getFlagValue, getFlagValue, getFlagValue, getFlagValue, getFlagValue, getFlagValue, getFloatFlagValue, getIndex, getIntFlagValue, getIssuer, getLastArg, getLongFlagValue, getNumParams, getParam, getParameterPermissions, getPassedArgs, getResolvedArg, getResolvedArg, getResolvedArg, hasAnnotation, hasFlag, isLastArg, isOptional, joinArgs, joinArgs, popFirstArg, popLastArg</code></li>
|
||||
</ul>
|
||||
<ul class="blockList">
|
||||
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
|
||||
|
||||
@@ -293,7 +293,7 @@ extends co.aikar.commands.CommandManager<net.md_5.bungee.api.CommandSender,<a
|
||||
<!-- -->
|
||||
</a>
|
||||
<h3>Methods inherited from class co.aikar.commands.CommandManager</h3>
|
||||
<code>addSupportedLanguage, enableUnstableAPI, formatMessage, generateCommandHelp, generateCommandHelp, generateCommandHelp, generateCommandHelp, getCommandConditions, getCommandReplacements, getCurrentCommandIssuer, getCurrentCommandManager, getCurrentCommandOperationContext, getDefaultExceptionHandler, getDefaultFormatter, getDefaultHelpPerPage, getFormat, getHelpFormatter, getIssuerLocale, getRootCommand, getSupportedLanguages, handleUncaughtException, hasPermission, isLoggingUnhandledExceptions, log, notifyLocaleChange, obtainRootCommand, onLocaleChange, registerDependency, registerDependency, sendMessage, sendMessage, setDefaultExceptionHandler, setDefaultExceptionHandler, setDefaultFormatter, setDefaultHelpPerPage, setFormat, setFormat, setFormat, setHelpFormatter, setIssuerLocale, usePerIssuerLocale, usingPerIssuerLocale</code></li>
|
||||
<code>addSupportedLanguage, enableUnstableAPI, formatMessage, generateCommandHelp, generateCommandHelp, generateCommandHelp, generateCommandHelp, getCommandConditions, getCommandReplacements, getCurrentCommandIssuer, getCurrentCommandManager, getCurrentCommandOperationContext, getDefaultExceptionHandler, getDefaultFormatter, getDefaultHelpPerPage, getFormat, getHelpFormatter, getIssuerLocale, getRootCommand, getSupportedLanguages, handleUncaughtException, hasPermission, hasPermission, isLoggingUnhandledExceptions, log, notifyLocaleChange, obtainRootCommand, onLocaleChange, registerDependency, registerDependency, sendMessage, sendMessage, setDefaultExceptionHandler, setDefaultExceptionHandler, setDefaultFormatter, setDefaultHelpPerPage, setFormat, setFormat, setFormat, setHelpFormatter, setIssuerLocale, usePerIssuerLocale, usingPerIssuerLocale</code></li>
|
||||
</ul>
|
||||
<ul class="blockList">
|
||||
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
|
||||
|
||||
+1
-1
@@ -102,7 +102,7 @@
|
||||
</dl>
|
||||
<hr>
|
||||
<br>
|
||||
<pre>public static interface <a href="../../../src-html/co/aikar/commands/CommandCompletions.html#line.236">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.282">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.232">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.278">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.233">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.279">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.239">CommandCompletions.SyncCompletionRequired</a>
|
||||
<pre>public static class <a href="../../../src-html/co/aikar/commands/CommandCompletions.html#line.285">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.239">SyncCompletionRequired</a>()</pre>
|
||||
<pre>public <a href="../../../src-html/co/aikar/commands/CommandCompletions.SyncCompletionRequired.html#line.285">SyncCompletionRequired</a>()</pre>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
catch(err) {
|
||||
}
|
||||
//-->
|
||||
var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10};
|
||||
var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10};
|
||||
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
|
||||
var altColor = "altColor";
|
||||
var rowColor = "rowColor";
|
||||
@@ -214,6 +214,13 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<div class="block">Register a static list of command completions that will never change.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i6" class="altColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/CommandCompletions.html#setDefaultCompletion-java.lang.String-java.lang.Class...-">setDefaultCompletion</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> id,
|
||||
<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>... classes)</code>
|
||||
<div class="block">Registers a completion handler such as @players to default apply to all command parameters of the specified types</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<ul class="blockList">
|
||||
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
|
||||
@@ -242,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>CommandCompletions</h4>
|
||||
<pre>public <a href="../../../src-html/co/aikar/commands/CommandCompletions.html#line.46">CommandCompletions</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/CommandCompletions.html#line.48">CommandCompletions</a>(<a href="../../../co/aikar/commands/CommandManager.html" title="class in co.aikar.commands">CommandManager</a> manager)</pre>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
@@ -259,7 +266,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>registerCompletion</h4>
|
||||
<pre>public <a href="../../../co/aikar/commands/CommandCompletions.CommandCompletionHandler.html" title="interface in co.aikar.commands">CommandCompletions.CommandCompletionHandler</a> <a href="../../../src-html/co/aikar/commands/CommandCompletions.html#line.77">registerCompletion</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> id,
|
||||
<pre>public <a href="../../../co/aikar/commands/CommandCompletions.CommandCompletionHandler.html" title="interface in co.aikar.commands">CommandCompletions.CommandCompletionHandler</a> <a href="../../../src-html/co/aikar/commands/CommandCompletions.html#line.79">registerCompletion</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> id,
|
||||
<a href="../../../co/aikar/commands/CommandCompletions.CommandCompletionHandler.html" title="interface in co.aikar.commands">CommandCompletions.CommandCompletionHandler</a><<a href="../../../co/aikar/commands/CommandCompletions.html" title="type parameter in CommandCompletions">C</a>> handler)</pre>
|
||||
<div class="block">Registr a completion handler to provide command completions based on the user input.</div>
|
||||
<dl>
|
||||
@@ -276,7 +283,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>registerAsyncCompletion</h4>
|
||||
<pre>public <a href="../../../co/aikar/commands/CommandCompletions.CommandCompletionHandler.html" title="interface in co.aikar.commands">CommandCompletions.CommandCompletionHandler</a> <a href="../../../src-html/co/aikar/commands/CommandCompletions.html#line.96">registerAsyncCompletion</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> id,
|
||||
<pre>public <a href="../../../co/aikar/commands/CommandCompletions.CommandCompletionHandler.html" title="interface in co.aikar.commands">CommandCompletions.CommandCompletionHandler</a> <a href="../../../src-html/co/aikar/commands/CommandCompletions.html#line.98">registerAsyncCompletion</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> id,
|
||||
<a href="../../../co/aikar/commands/CommandCompletions.AsyncCommandCompletionHandler.html" title="interface in co.aikar.commands">CommandCompletions.AsyncCommandCompletionHandler</a><<a href="../../../co/aikar/commands/CommandCompletions.html" title="type parameter in CommandCompletions">C</a>> handler)</pre>
|
||||
<div class="block">Registr a completion handler to provide command completions based on the user input.
|
||||
This handler is declared to be safe to be executed asynchronously.
|
||||
@@ -301,7 +308,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>registerStaticCompletion</h4>
|
||||
<pre>public <a href="../../../co/aikar/commands/CommandCompletions.CommandCompletionHandler.html" title="interface in co.aikar.commands">CommandCompletions.CommandCompletionHandler</a> <a href="../../../src-html/co/aikar/commands/CommandCompletions.html#line.110">registerStaticCompletion</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> id,
|
||||
<pre>public <a href="../../../co/aikar/commands/CommandCompletions.CommandCompletionHandler.html" title="interface in co.aikar.commands">CommandCompletions.CommandCompletionHandler</a> <a href="../../../src-html/co/aikar/commands/CommandCompletions.html#line.112">registerStaticCompletion</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> id,
|
||||
<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> list)</pre>
|
||||
<div class="block">Register a static list of command completions that will never change.
|
||||
Like @CommandCompletion, values are | (PIPE) separated.
|
||||
@@ -321,7 +328,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>registerStaticCompletion</h4>
|
||||
<pre>public <a href="../../../co/aikar/commands/CommandCompletions.CommandCompletionHandler.html" title="interface in co.aikar.commands">CommandCompletions.CommandCompletionHandler</a> <a href="../../../src-html/co/aikar/commands/CommandCompletions.html#line.121">registerStaticCompletion</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> id,
|
||||
<pre>public <a href="../../../co/aikar/commands/CommandCompletions.CommandCompletionHandler.html" title="interface in co.aikar.commands">CommandCompletions.CommandCompletionHandler</a> <a href="../../../src-html/co/aikar/commands/CommandCompletions.html#line.123">registerStaticCompletion</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> id,
|
||||
<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>[] completions)</pre>
|
||||
<div class="block">Register a static list of command completions that will never change</div>
|
||||
<dl>
|
||||
@@ -338,7 +345,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>registerStaticCompletion</h4>
|
||||
<pre>public <a href="../../../co/aikar/commands/CommandCompletions.CommandCompletionHandler.html" title="interface in co.aikar.commands">CommandCompletions.CommandCompletionHandler</a> <a href="../../../src-html/co/aikar/commands/CommandCompletions.html#line.133">registerStaticCompletion</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> id,
|
||||
<pre>public <a href="../../../co/aikar/commands/CommandCompletions.CommandCompletionHandler.html" title="interface in co.aikar.commands">CommandCompletions.CommandCompletionHandler</a> <a href="../../../src-html/co/aikar/commands/CommandCompletions.html#line.135">registerStaticCompletion</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> id,
|
||||
<a href="https://docs.oracle.com/javase/8/docs/api/java/util/function/Supplier.html?is-external=true" title="class or interface in java.util.function">Supplier</a><<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>>> supplier)</pre>
|
||||
<div class="block">Register a static list of command completions that will never change. The list is obtained from the supplier
|
||||
immediately as part of this method call.</div>
|
||||
@@ -353,10 +360,10 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<a name="registerStaticCompletion-java.lang.String-java.util.Collection-">
|
||||
<!-- -->
|
||||
</a>
|
||||
<ul class="blockListLast">
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>registerStaticCompletion</h4>
|
||||
<pre>public <a href="../../../co/aikar/commands/CommandCompletions.CommandCompletionHandler.html" title="interface in co.aikar.commands">CommandCompletions.CommandCompletionHandler</a> <a href="../../../src-html/co/aikar/commands/CommandCompletions.html#line.144">registerStaticCompletion</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> id,
|
||||
<pre>public <a href="../../../co/aikar/commands/CommandCompletions.CommandCompletionHandler.html" title="interface in co.aikar.commands">CommandCompletions.CommandCompletionHandler</a> <a href="../../../src-html/co/aikar/commands/CommandCompletions.html#line.146">registerStaticCompletion</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> id,
|
||||
<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>> completions)</pre>
|
||||
<div class="block">Register a static list of command completions that will never change</div>
|
||||
<dl>
|
||||
@@ -367,6 +374,24 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
</dl>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="setDefaultCompletion-java.lang.String-java.lang.Class...-">
|
||||
<!-- -->
|
||||
</a>
|
||||
<ul class="blockListLast">
|
||||
<li class="blockList">
|
||||
<h4>setDefaultCompletion</h4>
|
||||
<pre>public void <a href="../../../src-html/co/aikar/commands/CommandCompletions.html#line.158">setDefaultCompletion</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> id,
|
||||
<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>... classes)</pre>
|
||||
<div class="block">Registers a completion handler such as @players to default apply to all command parameters of the specified types
|
||||
<p>
|
||||
This enables automatic completion support for parameters without manually defining it for custom objects</div>
|
||||
<dl>
|
||||
<dt><span class="paramLabel">Parameters:</span></dt>
|
||||
<dd><code>id</code> - </dd>
|
||||
<dd><code>classes</code> - </dd>
|
||||
</dl>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
catch(err) {
|
||||
}
|
||||
//-->
|
||||
var methods = {"i0":10,"i1":42,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":42,"i25":10,"i26":10,"i27":10,"i28":10,"i29":10,"i30":10,"i31":10,"i32":10,"i33":10,"i34":10,"i35":10,"i36":10};
|
||||
var methods = {"i0":10,"i1":42,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":42,"i25":10,"i26":10,"i27":10,"i28":10,"i29":10,"i30":10,"i31":10,"i32":10,"i33":10,"i34":10,"i35":10,"i36":10,"i37":10};
|
||||
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"],32:["t6","Deprecated Methods"]};
|
||||
var altColor = "altColor";
|
||||
var rowColor = "rowColor";
|
||||
@@ -108,7 +108,7 @@ var activeTableTab = "activeTableTab";
|
||||
<li class="blockList">
|
||||
<hr>
|
||||
<br>
|
||||
<pre>public class <a href="../../../src-html/co/aikar/commands/CommandExecutionContext.html#line.32">CommandExecutionContext</a><CEC extends CommandExecutionContext,I extends <a href="../../../co/aikar/commands/CommandIssuer.html" title="interface in co.aikar.commands">CommandIssuer</a>>
|
||||
<pre>public class <a href="../../../src-html/co/aikar/commands/CommandExecutionContext.html#line.33">CommandExecutionContext</a><CEC extends CommandExecutionContext,I extends <a href="../../../co/aikar/commands/CommandIssuer.html" title="interface in co.aikar.commands">CommandIssuer</a>>
|
||||
extends <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></pre>
|
||||
</li>
|
||||
</ul>
|
||||
@@ -266,51 +266,55 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i25" class="rowColor">
|
||||
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</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>></code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/CommandExecutionContext.html#getParameterPermissions--">getParameterPermissions</a></span>()</code> </td>
|
||||
</tr>
|
||||
<tr id="i26" class="altColor">
|
||||
<td class="colFirst"><code><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/Object.html?is-external=true" title="class or interface in java.lang">Object</a>></code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/CommandExecutionContext.html#getPassedArgs--">getPassedArgs</a></span>()</code> </td>
|
||||
</tr>
|
||||
<tr id="i26" class="altColor">
|
||||
<tr id="i27" class="rowColor">
|
||||
<td class="colFirst"><code><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></code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/CommandExecutionContext.html#getResolvedArg-java.lang.Class...-">getResolvedArg</a></span>(<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><?>... classes)</code> </td>
|
||||
</tr>
|
||||
<tr id="i27" class="rowColor">
|
||||
<tr id="i28" class="altColor">
|
||||
<td class="colFirst"><code><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></code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/CommandExecutionContext.html#getResolvedArg-java.lang.String-">getResolvedArg</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> arg)</code> </td>
|
||||
</tr>
|
||||
<tr id="i28" class="altColor">
|
||||
<tr id="i29" class="rowColor">
|
||||
<td class="colFirst"><code><T> T</code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/CommandExecutionContext.html#getResolvedArg-java.lang.String-java.lang.Class...-">getResolvedArg</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> key,
|
||||
<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><?>... classes)</code> </td>
|
||||
</tr>
|
||||
<tr id="i29" class="rowColor">
|
||||
<tr id="i30" class="altColor">
|
||||
<td class="colFirst"><code><T extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/annotation/Annotation.html?is-external=true" title="class or interface in java.lang.annotation">Annotation</a>><br>boolean</code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/CommandExecutionContext.html#hasAnnotation-java.lang.Class-">hasAnnotation</a></span>(<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> cls)</code> </td>
|
||||
</tr>
|
||||
<tr id="i30" class="altColor">
|
||||
<tr id="i31" class="rowColor">
|
||||
<td class="colFirst"><code>boolean</code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/CommandExecutionContext.html#hasFlag-java.lang.String-">hasFlag</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> flag)</code> </td>
|
||||
</tr>
|
||||
<tr id="i31" class="rowColor">
|
||||
<tr id="i32" class="altColor">
|
||||
<td class="colFirst"><code>boolean</code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/CommandExecutionContext.html#isLastArg--">isLastArg</a></span>()</code> </td>
|
||||
</tr>
|
||||
<tr id="i32" class="altColor">
|
||||
<tr id="i33" class="rowColor">
|
||||
<td class="colFirst"><code>boolean</code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/CommandExecutionContext.html#isOptional--">isOptional</a></span>()</code> </td>
|
||||
</tr>
|
||||
<tr id="i33" class="rowColor">
|
||||
<tr id="i34" class="altColor">
|
||||
<td class="colFirst"><code><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></code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/CommandExecutionContext.html#joinArgs--">joinArgs</a></span>()</code> </td>
|
||||
</tr>
|
||||
<tr id="i34" class="altColor">
|
||||
<tr id="i35" class="rowColor">
|
||||
<td class="colFirst"><code><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></code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/CommandExecutionContext.html#joinArgs-java.lang.String-">joinArgs</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> sep)</code> </td>
|
||||
</tr>
|
||||
<tr id="i35" class="rowColor">
|
||||
<tr id="i36" class="altColor">
|
||||
<td class="colFirst"><code><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></code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/CommandExecutionContext.html#popFirstArg--">popFirstArg</a></span>()</code> </td>
|
||||
</tr>
|
||||
<tr id="i36" class="altColor">
|
||||
<tr id="i37" class="rowColor">
|
||||
<td class="colFirst"><code><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></code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/CommandExecutionContext.html#popLastArg--">popLastArg</a></span>()</code> </td>
|
||||
</tr>
|
||||
@@ -342,7 +346,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<ul class="blockListLast">
|
||||
<li class="blockList">
|
||||
<h4>issuer</h4>
|
||||
<pre>protected final <a href="../../../co/aikar/commands/CommandExecutionContext.html" title="type parameter in CommandExecutionContext">I</a> extends <a href="../../../co/aikar/commands/CommandIssuer.html" title="interface in co.aikar.commands">CommandIssuer</a> <a href="../../../src-html/co/aikar/commands/CommandExecutionContext.html#line.35">issuer</a></pre>
|
||||
<pre>protected final <a href="../../../co/aikar/commands/CommandExecutionContext.html" title="type parameter in CommandExecutionContext">I</a> extends <a href="../../../co/aikar/commands/CommandIssuer.html" title="interface in co.aikar.commands">CommandIssuer</a> <a href="../../../src-html/co/aikar/commands/CommandExecutionContext.html#line.36">issuer</a></pre>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
@@ -359,7 +363,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>popFirstArg</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/CommandExecutionContext.html#line.55">popFirstArg</a>()</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/CommandExecutionContext.html#line.56">popFirstArg</a>()</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="popLastArg--">
|
||||
@@ -368,7 +372,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>popLastArg</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/CommandExecutionContext.html#line.59">popLastArg</a>()</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/CommandExecutionContext.html#line.60">popLastArg</a>()</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="getFirstArg--">
|
||||
@@ -377,7 +381,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>getFirstArg</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/CommandExecutionContext.html#line.63">getFirstArg</a>()</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/CommandExecutionContext.html#line.64">getFirstArg</a>()</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="getLastArg--">
|
||||
@@ -386,7 +390,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>getLastArg</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/CommandExecutionContext.html#line.67">getLastArg</a>()</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/CommandExecutionContext.html#line.68">getLastArg</a>()</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="isLastArg--">
|
||||
@@ -395,7 +399,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>isLastArg</h4>
|
||||
<pre>public boolean <a href="../../../src-html/co/aikar/commands/CommandExecutionContext.html#line.71">isLastArg</a>()</pre>
|
||||
<pre>public boolean <a href="../../../src-html/co/aikar/commands/CommandExecutionContext.html#line.72">isLastArg</a>()</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="getNumParams--">
|
||||
@@ -404,7 +408,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>getNumParams</h4>
|
||||
<pre>public int <a href="../../../src-html/co/aikar/commands/CommandExecutionContext.html#line.75">getNumParams</a>()</pre>
|
||||
<pre>public int <a href="../../../src-html/co/aikar/commands/CommandExecutionContext.html#line.76">getNumParams</a>()</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="canOverridePlayerContext--">
|
||||
@@ -413,7 +417,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>canOverridePlayerContext</h4>
|
||||
<pre>public boolean <a href="../../../src-html/co/aikar/commands/CommandExecutionContext.html#line.79">canOverridePlayerContext</a>()</pre>
|
||||
<pre>public boolean <a href="../../../src-html/co/aikar/commands/CommandExecutionContext.html#line.80">canOverridePlayerContext</a>()</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="getResolvedArg-java.lang.String-">
|
||||
@@ -422,7 +426,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>getResolvedArg</h4>
|
||||
<pre>public <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> <a href="../../../src-html/co/aikar/commands/CommandExecutionContext.html#line.83">getResolvedArg</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> arg)</pre>
|
||||
<pre>public <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> <a href="../../../src-html/co/aikar/commands/CommandExecutionContext.html#line.84">getResolvedArg</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> arg)</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="getResolvedArg-java.lang.Class...-">
|
||||
@@ -431,7 +435,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>getResolvedArg</h4>
|
||||
<pre>public <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> <a href="../../../src-html/co/aikar/commands/CommandExecutionContext.html#line.87">getResolvedArg</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><?>... classes)</pre>
|
||||
<pre>public <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> <a href="../../../src-html/co/aikar/commands/CommandExecutionContext.html#line.88">getResolvedArg</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><?>... classes)</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="getResolvedArg-java.lang.String-java.lang.Class...-">
|
||||
@@ -440,17 +444,26 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>getResolvedArg</h4>
|
||||
<pre>public <T> T <a href="../../../src-html/co/aikar/commands/CommandExecutionContext.html#line.99">getResolvedArg</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> key,
|
||||
<pre>public <T> T <a href="../../../src-html/co/aikar/commands/CommandExecutionContext.html#line.100">getResolvedArg</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> key,
|
||||
<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><?>... classes)</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="getParameterPermissions--">
|
||||
<!-- -->
|
||||
</a>
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>getParameterPermissions</h4>
|
||||
<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</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/CommandExecutionContext.html#line.111">getParameterPermissions</a>()</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="isOptional--">
|
||||
<!-- -->
|
||||
</a>
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>isOptional</h4>
|
||||
<pre>public boolean <a href="../../../src-html/co/aikar/commands/CommandExecutionContext.html#line.111">isOptional</a>()</pre>
|
||||
<pre>public boolean <a href="../../../src-html/co/aikar/commands/CommandExecutionContext.html#line.115">isOptional</a>()</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="hasFlag-java.lang.String-">
|
||||
@@ -459,7 +472,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>hasFlag</h4>
|
||||
<pre>public boolean <a href="../../../src-html/co/aikar/commands/CommandExecutionContext.html#line.115">hasFlag</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> flag)</pre>
|
||||
<pre>public boolean <a href="../../../src-html/co/aikar/commands/CommandExecutionContext.html#line.119">hasFlag</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> flag)</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="getFlagValue-java.lang.String-java.lang.String-">
|
||||
@@ -468,7 +481,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>getFlagValue</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/CommandExecutionContext.html#line.119">getFlagValue</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> flag,
|
||||
<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/CommandExecutionContext.html#line.123">getFlagValue</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> flag,
|
||||
<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> def)</pre>
|
||||
</li>
|
||||
</ul>
|
||||
@@ -478,7 +491,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>getFlagValue</h4>
|
||||
<pre>public <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/CommandExecutionContext.html#line.123">getFlagValue</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> flag,
|
||||
<pre>public <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/CommandExecutionContext.html#line.127">getFlagValue</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> flag,
|
||||
<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> def)</pre>
|
||||
</li>
|
||||
</ul>
|
||||
@@ -488,7 +501,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>getFlagValue</h4>
|
||||
<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a> <a href="../../../src-html/co/aikar/commands/CommandExecutionContext.html#line.127">getFlagValue</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> flag,
|
||||
<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a> <a href="../../../src-html/co/aikar/commands/CommandExecutionContext.html#line.131">getFlagValue</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> flag,
|
||||
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a> def)</pre>
|
||||
</li>
|
||||
</ul>
|
||||
@@ -498,7 +511,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>getFlagValue</h4>
|
||||
<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Float.html?is-external=true" title="class or interface in java.lang">Float</a> <a href="../../../src-html/co/aikar/commands/CommandExecutionContext.html#line.131">getFlagValue</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> flag,
|
||||
<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Float.html?is-external=true" title="class or interface in java.lang">Float</a> <a href="../../../src-html/co/aikar/commands/CommandExecutionContext.html#line.135">getFlagValue</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> flag,
|
||||
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Float.html?is-external=true" title="class or interface in java.lang">Float</a> def)</pre>
|
||||
</li>
|
||||
</ul>
|
||||
@@ -508,7 +521,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>getFlagValue</h4>
|
||||
<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Double.html?is-external=true" title="class or interface in java.lang">Double</a> <a href="../../../src-html/co/aikar/commands/CommandExecutionContext.html#line.135">getFlagValue</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> flag,
|
||||
<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Double.html?is-external=true" title="class or interface in java.lang">Double</a> <a href="../../../src-html/co/aikar/commands/CommandExecutionContext.html#line.139">getFlagValue</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> flag,
|
||||
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Double.html?is-external=true" title="class or interface in java.lang">Double</a> def)</pre>
|
||||
</li>
|
||||
</ul>
|
||||
@@ -518,7 +531,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>getIntFlagValue</h4>
|
||||
<pre>public <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/CommandExecutionContext.html#line.139">getIntFlagValue</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> flag,
|
||||
<pre>public <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/CommandExecutionContext.html#line.143">getIntFlagValue</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> flag,
|
||||
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Number.html?is-external=true" title="class or interface in java.lang">Number</a> def)</pre>
|
||||
</li>
|
||||
</ul>
|
||||
@@ -528,7 +541,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>getLongFlagValue</h4>
|
||||
<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a> <a href="../../../src-html/co/aikar/commands/CommandExecutionContext.html#line.143">getLongFlagValue</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> flag,
|
||||
<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a> <a href="../../../src-html/co/aikar/commands/CommandExecutionContext.html#line.147">getLongFlagValue</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> flag,
|
||||
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Number.html?is-external=true" title="class or interface in java.lang">Number</a> def)</pre>
|
||||
</li>
|
||||
</ul>
|
||||
@@ -538,7 +551,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>getFloatFlagValue</h4>
|
||||
<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Float.html?is-external=true" title="class or interface in java.lang">Float</a> <a href="../../../src-html/co/aikar/commands/CommandExecutionContext.html#line.147">getFloatFlagValue</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> flag,
|
||||
<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Float.html?is-external=true" title="class or interface in java.lang">Float</a> <a href="../../../src-html/co/aikar/commands/CommandExecutionContext.html#line.151">getFloatFlagValue</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> flag,
|
||||
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Number.html?is-external=true" title="class or interface in java.lang">Number</a> def)</pre>
|
||||
</li>
|
||||
</ul>
|
||||
@@ -548,7 +561,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>getDoubleFlagValue</h4>
|
||||
<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Double.html?is-external=true" title="class or interface in java.lang">Double</a> <a href="../../../src-html/co/aikar/commands/CommandExecutionContext.html#line.151">getDoubleFlagValue</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> flag,
|
||||
<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Double.html?is-external=true" title="class or interface in java.lang">Double</a> <a href="../../../src-html/co/aikar/commands/CommandExecutionContext.html#line.155">getDoubleFlagValue</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> flag,
|
||||
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Number.html?is-external=true" title="class or interface in java.lang">Number</a> def)</pre>
|
||||
</li>
|
||||
</ul>
|
||||
@@ -558,7 +571,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>getBooleanFlagValue</h4>
|
||||
<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a> <a href="../../../src-html/co/aikar/commands/CommandExecutionContext.html#line.155">getBooleanFlagValue</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> flag)</pre>
|
||||
<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a> <a href="../../../src-html/co/aikar/commands/CommandExecutionContext.html#line.159">getBooleanFlagValue</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> flag)</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="getBooleanFlagValue-java.lang.String-java.lang.Boolean-">
|
||||
@@ -567,7 +580,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>getBooleanFlagValue</h4>
|
||||
<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a> <a href="../../../src-html/co/aikar/commands/CommandExecutionContext.html#line.159">getBooleanFlagValue</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> flag,
|
||||
<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a> <a href="../../../src-html/co/aikar/commands/CommandExecutionContext.html#line.163">getBooleanFlagValue</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> flag,
|
||||
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a> def)</pre>
|
||||
</li>
|
||||
</ul>
|
||||
@@ -577,7 +590,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>getFlagValue</h4>
|
||||
<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Double.html?is-external=true" title="class or interface in java.lang">Double</a> <a href="../../../src-html/co/aikar/commands/CommandExecutionContext.html#line.167">getFlagValue</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> flag,
|
||||
<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Double.html?is-external=true" title="class or interface in java.lang">Double</a> <a href="../../../src-html/co/aikar/commands/CommandExecutionContext.html#line.171">getFlagValue</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> flag,
|
||||
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Number.html?is-external=true" title="class or interface in java.lang">Number</a> def)</pre>
|
||||
</li>
|
||||
</ul>
|
||||
@@ -588,7 +601,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<li class="blockList">
|
||||
<h4>getAnnotation</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 extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/annotation/Annotation.html?is-external=true" title="class or interface in java.lang.annotation">Annotation</a>> T <a href="../../../src-html/co/aikar/commands/CommandExecutionContext.html#line.176">getAnnotation</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> cls)</pre>
|
||||
public <T extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/annotation/Annotation.html?is-external=true" title="class or interface in java.lang.annotation">Annotation</a>> T <a href="../../../src-html/co/aikar/commands/CommandExecutionContext.html#line.181">getAnnotation</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> cls)</pre>
|
||||
<div class="block"><span class="deprecatedLabel">Deprecated.</span> <span class="deprecationComment">Use <a href="../../../co/aikar/commands/CommandExecutionContext.html#getAnnotationValue-java.lang.Class-"><code>getAnnotationValue(Class)</code></a></span></div>
|
||||
<div class="block">This method will not support annotation processors!! use getAnnotationValue or hasAnnotation</div>
|
||||
</li>
|
||||
@@ -599,7 +612,7 @@ public <T extends <a href="https://docs.oracle.com/javase/8/docs/api/jav
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>getAnnotationValue</h4>
|
||||
<pre>public <T extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/annotation/Annotation.html?is-external=true" title="class or interface in java.lang.annotation">Annotation</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/CommandExecutionContext.html#line.180">getAnnotationValue</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> cls)</pre>
|
||||
<pre>public <T extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/annotation/Annotation.html?is-external=true" title="class or interface in java.lang.annotation">Annotation</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/CommandExecutionContext.html#line.185">getAnnotationValue</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> cls)</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="getAnnotationValue-java.lang.Class-int-">
|
||||
@@ -608,7 +621,7 @@ public <T extends <a href="https://docs.oracle.com/javase/8/docs/api/jav
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>getAnnotationValue</h4>
|
||||
<pre>public <T extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/annotation/Annotation.html?is-external=true" title="class or interface in java.lang.annotation">Annotation</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/CommandExecutionContext.html#line.184">getAnnotationValue</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> cls,
|
||||
<pre>public <T extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/annotation/Annotation.html?is-external=true" title="class or interface in java.lang.annotation">Annotation</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/CommandExecutionContext.html#line.189">getAnnotationValue</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> cls,
|
||||
int options)</pre>
|
||||
</li>
|
||||
</ul>
|
||||
@@ -618,7 +631,7 @@ public <T extends <a href="https://docs.oracle.com/javase/8/docs/api/jav
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>hasAnnotation</h4>
|
||||
<pre>public <T extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/annotation/Annotation.html?is-external=true" title="class or interface in java.lang.annotation">Annotation</a>> boolean <a href="../../../src-html/co/aikar/commands/CommandExecutionContext.html#line.188">hasAnnotation</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> cls)</pre>
|
||||
<pre>public <T extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/annotation/Annotation.html?is-external=true" title="class or interface in java.lang.annotation">Annotation</a>> boolean <a href="../../../src-html/co/aikar/commands/CommandExecutionContext.html#line.193">hasAnnotation</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> cls)</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="getCmd--">
|
||||
@@ -627,7 +640,7 @@ public <T extends <a href="https://docs.oracle.com/javase/8/docs/api/jav
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>getCmd</h4>
|
||||
<pre>public <a href="../../../co/aikar/commands/RegisteredCommand.html" title="class in co.aikar.commands">RegisteredCommand</a> <a href="../../../src-html/co/aikar/commands/CommandExecutionContext.html#line.192">getCmd</a>()</pre>
|
||||
<pre>public <a href="../../../co/aikar/commands/RegisteredCommand.html" title="class in co.aikar.commands">RegisteredCommand</a> <a href="../../../src-html/co/aikar/commands/CommandExecutionContext.html#line.197">getCmd</a>()</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="getParam--">
|
||||
@@ -637,7 +650,7 @@ public <T extends <a href="https://docs.oracle.com/javase/8/docs/api/jav
|
||||
<li class="blockList">
|
||||
<h4>getParam</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 <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Parameter.html?is-external=true" title="class or interface in java.lang.reflect">Parameter</a> <a href="../../../src-html/co/aikar/commands/CommandExecutionContext.html#line.202">getParam</a>()</pre>
|
||||
public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Parameter.html?is-external=true" title="class or interface in java.lang.reflect">Parameter</a> <a href="../../../src-html/co/aikar/commands/CommandExecutionContext.html#line.207">getParam</a>()</pre>
|
||||
<div class="block"><span class="deprecatedLabel">Deprecated.</span> </div>
|
||||
</li>
|
||||
</ul>
|
||||
@@ -647,7 +660,7 @@ public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/reflect
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>getIssuer</h4>
|
||||
<pre>public <a href="../../../co/aikar/commands/CommandExecutionContext.html" title="type parameter in CommandExecutionContext">I</a> <a href="../../../src-html/co/aikar/commands/CommandExecutionContext.html#line.206">getIssuer</a>()</pre>
|
||||
<pre>public <a href="../../../co/aikar/commands/CommandExecutionContext.html" title="type parameter in CommandExecutionContext">I</a> <a href="../../../src-html/co/aikar/commands/CommandExecutionContext.html#line.211">getIssuer</a>()</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="getArgs--">
|
||||
@@ -656,7 +669,7 @@ public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/reflect
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>getArgs</h4>
|
||||
<pre>public <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>> <a href="../../../src-html/co/aikar/commands/CommandExecutionContext.html#line.210">getArgs</a>()</pre>
|
||||
<pre>public <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>> <a href="../../../src-html/co/aikar/commands/CommandExecutionContext.html#line.215">getArgs</a>()</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="getIndex--">
|
||||
@@ -665,7 +678,7 @@ public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/reflect
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>getIndex</h4>
|
||||
<pre>public int <a href="../../../src-html/co/aikar/commands/CommandExecutionContext.html#line.214">getIndex</a>()</pre>
|
||||
<pre>public int <a href="../../../src-html/co/aikar/commands/CommandExecutionContext.html#line.219">getIndex</a>()</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="getPassedArgs--">
|
||||
@@ -674,7 +687,7 @@ public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/reflect
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>getPassedArgs</h4>
|
||||
<pre>public <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/Object.html?is-external=true" title="class or interface in java.lang">Object</a>> <a href="../../../src-html/co/aikar/commands/CommandExecutionContext.html#line.218">getPassedArgs</a>()</pre>
|
||||
<pre>public <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/Object.html?is-external=true" title="class or interface in java.lang">Object</a>> <a href="../../../src-html/co/aikar/commands/CommandExecutionContext.html#line.223">getPassedArgs</a>()</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="getFlags--">
|
||||
@@ -683,7 +696,7 @@ public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/reflect
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>getFlags</h4>
|
||||
<pre>public <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>> <a href="../../../src-html/co/aikar/commands/CommandExecutionContext.html#line.222">getFlags</a>()</pre>
|
||||
<pre>public <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>> <a href="../../../src-html/co/aikar/commands/CommandExecutionContext.html#line.227">getFlags</a>()</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="joinArgs--">
|
||||
@@ -692,7 +705,7 @@ public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/reflect
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>joinArgs</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/CommandExecutionContext.html#line.226">joinArgs</a>()</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/CommandExecutionContext.html#line.231">joinArgs</a>()</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="joinArgs-java.lang.String-">
|
||||
@@ -701,7 +714,7 @@ public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/reflect
|
||||
<ul class="blockListLast">
|
||||
<li class="blockList">
|
||||
<h4>joinArgs</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/CommandExecutionContext.html#line.229">joinArgs</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> sep)</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/CommandExecutionContext.html#line.235">joinArgs</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> sep)</pre>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
catch(err) {
|
||||
}
|
||||
//-->
|
||||
var methods = {"i0":10,"i1":6,"i2":6,"i3":10,"i4":10,"i5":6,"i6":42,"i7":10,"i8":42,"i9":42,"i10":42,"i11":42,"i12":6,"i13":10,"i14":6,"i15":6,"i16":10,"i17":10,"i18":9,"i19":9,"i20":9,"i21":10,"i22":10,"i23":42,"i24":10,"i25":42,"i26":10,"i27":6,"i28":6,"i29":10,"i30":10,"i31":10,"i32":10,"i33":6,"i34":6,"i35":10,"i36":10,"i37":6,"i38":10,"i39":10,"i40":10,"i41":6,"i42":10,"i43":10,"i44":10,"i45":10,"i46":10,"i47":10,"i48":10,"i49":42,"i50":10,"i51":10,"i52":10,"i53":42,"i54":10,"i55":10,"i56":10};
|
||||
var methods = {"i0":10,"i1":6,"i2":6,"i3":10,"i4":10,"i5":6,"i6":42,"i7":10,"i8":42,"i9":42,"i10":42,"i11":42,"i12":6,"i13":10,"i14":6,"i15":6,"i16":10,"i17":10,"i18":9,"i19":9,"i20":9,"i21":10,"i22":10,"i23":42,"i24":10,"i25":42,"i26":10,"i27":6,"i28":6,"i29":10,"i30":10,"i31":10,"i32":10,"i33":10,"i34":6,"i35":6,"i36":10,"i37":10,"i38":6,"i39":10,"i40":10,"i41":10,"i42":6,"i43":10,"i44":10,"i45":10,"i46":10,"i47":10,"i48":10,"i49":10,"i50":42,"i51":10,"i52":10,"i53":10,"i54":42,"i55":10,"i56":10,"i57":10};
|
||||
var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"],8:["t4","Concrete Methods"],32:["t6","Deprecated Methods"]};
|
||||
var altColor = "altColor";
|
||||
var rowColor = "rowColor";
|
||||
@@ -408,53 +408,58 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
</tr>
|
||||
<tr id="i32" class="altColor">
|
||||
<td class="colFirst"><code>boolean</code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/CommandManager.html#hasPermission-co.aikar.commands.CommandIssuer-java.util.Set-">hasPermission</a></span>(<a href="../../../co/aikar/commands/CommandIssuer.html" title="interface in co.aikar.commands">CommandIssuer</a> issuer,
|
||||
<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</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>> permissions)</code> </td>
|
||||
</tr>
|
||||
<tr id="i33" class="rowColor">
|
||||
<td class="colFirst"><code>boolean</code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/CommandManager.html#hasPermission-co.aikar.commands.CommandIssuer-java.lang.String-">hasPermission</a></span>(<a href="../../../co/aikar/commands/CommandIssuer.html" title="interface in co.aikar.commands">CommandIssuer</a> 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> permission)</code> </td>
|
||||
</tr>
|
||||
<tr id="i33" class="rowColor">
|
||||
<tr id="i34" class="altColor">
|
||||
<td class="colFirst"><code>abstract boolean</code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/CommandManager.html#hasRegisteredCommands--">hasRegisteredCommands</a></span>()</code> </td>
|
||||
</tr>
|
||||
<tr id="i34" class="altColor">
|
||||
<tr id="i35" class="rowColor">
|
||||
<td class="colFirst"><code>abstract boolean</code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/CommandManager.html#isCommandIssuer-java.lang.Class-">isCommandIssuer</a></span>(<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)</code> </td>
|
||||
</tr>
|
||||
<tr id="i35" class="rowColor">
|
||||
<tr id="i36" class="altColor">
|
||||
<td class="colFirst"><code>boolean</code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/CommandManager.html#isLoggingUnhandledExceptions--">isLoggingUnhandledExceptions</a></span>()</code> </td>
|
||||
</tr>
|
||||
<tr id="i36" class="altColor">
|
||||
<tr id="i37" class="rowColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/CommandManager.html#log-co.aikar.commands.LogLevel-java.lang.String-">log</a></span>(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)</code> </td>
|
||||
</tr>
|
||||
<tr id="i37" class="rowColor">
|
||||
<tr id="i38" class="altColor">
|
||||
<td class="colFirst"><code>abstract void</code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/CommandManager.html#log-co.aikar.commands.LogLevel-java.lang.String-java.lang.Throwable-">log</a></span>(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)</code> </td>
|
||||
</tr>
|
||||
<tr id="i38" class="altColor">
|
||||
<tr id="i39" class="rowColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/CommandManager.html#notifyLocaleChange-I-java.util.Locale-java.util.Locale-">notifyLocaleChange</a></span>(<a href="../../../co/aikar/commands/CommandManager.html" title="type parameter in CommandManager">I</a> issuer,
|
||||
<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> oldLocale,
|
||||
<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> newLocale)</code> </td>
|
||||
</tr>
|
||||
<tr id="i39" class="rowColor">
|
||||
<tr id="i40" class="altColor">
|
||||
<td class="colFirst"><code><a href="../../../co/aikar/commands/RootCommand.html" title="interface in co.aikar.commands">RootCommand</a></code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/CommandManager.html#obtainRootCommand-java.lang.String-">obtainRootCommand</a></span>(@NotNull <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)</code> </td>
|
||||
</tr>
|
||||
<tr id="i40" class="altColor">
|
||||
<tr id="i41" class="rowColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/CommandManager.html#onLocaleChange-co.aikar.commands.IssuerLocaleChangedCallback-">onLocaleChange</a></span>(<a href="../../../co/aikar/commands/IssuerLocaleChangedCallback.html" title="interface in co.aikar.commands">IssuerLocaleChangedCallback</a><<a href="../../../co/aikar/commands/CommandManager.html" title="type parameter in CommandManager">I</a>> onChange)</code> </td>
|
||||
</tr>
|
||||
<tr id="i41" class="rowColor">
|
||||
<tr id="i42" class="altColor">
|
||||
<td class="colFirst"><code>abstract void</code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/CommandManager.html#registerCommand-co.aikar.commands.BaseCommand-">registerCommand</a></span>(<a href="../../../co/aikar/commands/BaseCommand.html" title="class in co.aikar.commands">BaseCommand</a> command)</code>
|
||||
<div class="block">Registers a command with ACF</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i42" class="altColor">
|
||||
<tr id="i43" class="rowColor">
|
||||
<td class="colFirst"><code><T> void</code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/CommandManager.html#registerDependency-java.lang.Class-java.lang.String-T-">registerDependency</a></span>(<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><? extends T> clazz,
|
||||
<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> key,
|
||||
@@ -464,7 +469,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<a href="../../../co/aikar/commands/annotation/Dependency.html" title="annotation in co.aikar.commands.annotation"><code>Dependency</code></a> with the provided instance.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i43" class="rowColor">
|
||||
<tr id="i44" class="altColor">
|
||||
<td class="colFirst"><code><T> void</code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/CommandManager.html#registerDependency-java.lang.Class-T-">registerDependency</a></span>(<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><? extends T> clazz,
|
||||
T instance)</code>
|
||||
@@ -473,38 +478,38 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<a href="../../../co/aikar/commands/annotation/Dependency.html" title="annotation in co.aikar.commands.annotation"><code>Dependency</code></a> with the provided instance.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i44" class="altColor">
|
||||
<tr id="i45" class="rowColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/CommandManager.html#sendMessage-co.aikar.commands.CommandIssuer-co.aikar.commands.MessageType-co.aikar.locales.MessageKeyProvider-java.lang.String...-">sendMessage</a></span>(<a href="../../../co/aikar/commands/CommandIssuer.html" title="interface in co.aikar.commands">CommandIssuer</a> issuer,
|
||||
<a href="../../../co/aikar/commands/MessageType.html" title="class in co.aikar.commands">MessageType</a> type,
|
||||
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>... replacements)</code> </td>
|
||||
</tr>
|
||||
<tr id="i45" class="rowColor">
|
||||
<tr id="i46" class="altColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/CommandManager.html#sendMessage-IT-co.aikar.commands.MessageType-co.aikar.locales.MessageKeyProvider-java.lang.String...-">sendMessage</a></span>(<a href="../../../co/aikar/commands/CommandManager.html" title="type parameter in CommandManager">IT</a> issuerArg,
|
||||
<a href="../../../co/aikar/commands/MessageType.html" title="class in co.aikar.commands">MessageType</a> type,
|
||||
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>... replacements)</code> </td>
|
||||
</tr>
|
||||
<tr id="i46" class="altColor">
|
||||
<tr id="i47" class="rowColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/CommandManager.html#setDefaultExceptionHandler-co.aikar.commands.ExceptionHandler-">setDefaultExceptionHandler</a></span>(<a href="../../../co/aikar/commands/ExceptionHandler.html" title="interface in co.aikar.commands">ExceptionHandler</a> exceptionHandler)</code>
|
||||
<div class="block">Sets the default <a href="../../../co/aikar/commands/ExceptionHandler.html" title="interface in co.aikar.commands"><code>ExceptionHandler</code></a> that is called when an exception occurs while executing a command, if the command doesn't have it's own exception handler registered.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i47" class="rowColor">
|
||||
<tr id="i48" class="altColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/CommandManager.html#setDefaultExceptionHandler-co.aikar.commands.ExceptionHandler-boolean-">setDefaultExceptionHandler</a></span>(<a href="../../../co/aikar/commands/ExceptionHandler.html" title="interface in co.aikar.commands">ExceptionHandler</a> exceptionHandler,
|
||||
boolean logExceptions)</code>
|
||||
<div class="block">Sets the default <a href="../../../co/aikar/commands/ExceptionHandler.html" title="interface in co.aikar.commands"><code>ExceptionHandler</code></a> that is called when an exception occurs while executing a command, if the command doesn't have it's own exception handler registered, and lets you control if ACF should also log the exception still.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i48" class="altColor">
|
||||
<tr id="i49" class="rowColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/CommandManager.html#setDefaultFormatter-MF-">setDefaultFormatter</a></span>(<a href="../../../co/aikar/commands/CommandManager.html" title="type parameter in CommandManager">MF</a> defaultFormatter)</code> </td>
|
||||
</tr>
|
||||
<tr id="i49" class="rowColor">
|
||||
<tr id="i50" class="altColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/CommandManager.html#setDefaultHelpPerPage-int-">setDefaultHelpPerPage</a></span>(int defaultHelpPerPage)</code>
|
||||
<div class="block"><span class="deprecatedLabel">Deprecated.</span>
|
||||
@@ -512,23 +517,23 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i50" class="altColor">
|
||||
<tr id="i51" class="rowColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/CommandManager.html#setFormat-co.aikar.commands.MessageType-FT...-">setFormat</a></span>(<a href="../../../co/aikar/commands/MessageType.html" title="class in co.aikar.commands">MessageType</a> type,
|
||||
<a href="../../../co/aikar/commands/CommandManager.html" title="type parameter in CommandManager">FT</a>... colors)</code> </td>
|
||||
</tr>
|
||||
<tr id="i51" class="rowColor">
|
||||
<tr id="i52" class="altColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/CommandManager.html#setFormat-co.aikar.commands.MessageType-int-FT-">setFormat</a></span>(<a href="../../../co/aikar/commands/MessageType.html" title="class in co.aikar.commands">MessageType</a> type,
|
||||
int i,
|
||||
<a href="../../../co/aikar/commands/CommandManager.html" title="type parameter in CommandManager">FT</a> color)</code> </td>
|
||||
</tr>
|
||||
<tr id="i52" class="altColor">
|
||||
<tr id="i53" class="rowColor">
|
||||
<td class="colFirst"><code><a href="../../../co/aikar/commands/CommandManager.html" title="type parameter in CommandManager">MF</a></code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/CommandManager.html#setFormat-co.aikar.commands.MessageType-MF-">setFormat</a></span>(<a href="../../../co/aikar/commands/MessageType.html" title="class in co.aikar.commands">MessageType</a> type,
|
||||
<a href="../../../co/aikar/commands/CommandManager.html" title="type parameter in CommandManager">MF</a> formatter)</code> </td>
|
||||
</tr>
|
||||
<tr id="i53" class="rowColor">
|
||||
<tr id="i54" class="altColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/CommandManager.html#setHelpFormatter-co.aikar.commands.CommandHelpFormatter-">setHelpFormatter</a></span>(<a href="../../../co/aikar/commands/CommandHelpFormatter.html" title="class in co.aikar.commands">CommandHelpFormatter</a> helpFormatter)</code>
|
||||
<div class="block"><span class="deprecatedLabel">Deprecated.</span>
|
||||
@@ -536,16 +541,16 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="i54" class="altColor">
|
||||
<tr id="i55" class="rowColor">
|
||||
<td class="colFirst"><code><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/CommandManager.html#setIssuerLocale-IT-java.util.Locale-">setIssuerLocale</a></span>(<a href="../../../co/aikar/commands/CommandManager.html" title="type parameter in CommandManager">IT</a> issuer,
|
||||
<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> </td>
|
||||
</tr>
|
||||
<tr id="i55" class="rowColor">
|
||||
<tr id="i56" class="altColor">
|
||||
<td class="colFirst"><code>boolean</code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/CommandManager.html#usePerIssuerLocale-boolean-">usePerIssuerLocale</a></span>(boolean setting)</code> </td>
|
||||
</tr>
|
||||
<tr id="i56" class="altColor">
|
||||
<tr id="i57" class="rowColor">
|
||||
<td class="colFirst"><code>boolean</code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/CommandManager.html#usingPerIssuerLocale--">usingPerIssuerLocale</a></span>()</code> </td>
|
||||
</tr>
|
||||
@@ -821,7 +826,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>getCommandContexts</h4>
|
||||
<pre>public abstract <a href="../../../co/aikar/commands/CommandContexts.html" title="class in co.aikar.commands">CommandContexts</a><?> <a href="../../../src-html/co/aikar/commands/CommandManager.html#line.141">getCommandContexts</a>()</pre>
|
||||
<pre>public abstract <a href="../../../co/aikar/commands/CommandContexts.html" title="class in co.aikar.commands">CommandContexts</a><?> <a href="../../../src-html/co/aikar/commands/CommandManager.html#line.142">getCommandContexts</a>()</pre>
|
||||
<div class="block">Gets the command contexts manager</div>
|
||||
<dl>
|
||||
<dt><span class="returnLabel">Returns:</span></dt>
|
||||
@@ -835,7 +840,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>getCommandCompletions</h4>
|
||||
<pre>public abstract <a href="../../../co/aikar/commands/CommandCompletions.html" title="class in co.aikar.commands">CommandCompletions</a><?> <a href="../../../src-html/co/aikar/commands/CommandManager.html#line.147">getCommandCompletions</a>()</pre>
|
||||
<pre>public abstract <a href="../../../co/aikar/commands/CommandCompletions.html" title="class in co.aikar.commands">CommandCompletions</a><?> <a href="../../../src-html/co/aikar/commands/CommandManager.html#line.149">getCommandCompletions</a>()</pre>
|
||||
<div class="block">Gets the command completions manager</div>
|
||||
<dl>
|
||||
<dt><span class="returnLabel">Returns:</span></dt>
|
||||
@@ -850,7 +855,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<li class="blockList">
|
||||
<h4>generateCommandHelp</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 <a href="../../../co/aikar/commands/CommandHelp.html" title="class in co.aikar.commands">CommandHelp</a> <a href="../../../src-html/co/aikar/commands/CommandManager.html#line.150">generateCommandHelp</a>(@NotNull
|
||||
public <a href="../../../co/aikar/commands/CommandHelp.html" title="class in co.aikar.commands">CommandHelp</a> <a href="../../../src-html/co/aikar/commands/CommandManager.html#line.156">generateCommandHelp</a>(@NotNull
|
||||
@NotNull <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> command)</pre>
|
||||
<div class="block"><span class="deprecatedLabel">Deprecated.</span> <span class="deprecationComment">Unstable API</span></div>
|
||||
</li>
|
||||
@@ -862,7 +867,7 @@ public <a href="../../../co/aikar/commands/CommandHelp.html" title="class i
|
||||
<li class="blockList">
|
||||
<h4>generateCommandHelp</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 <a href="../../../co/aikar/commands/CommandHelp.html" title="class in co.aikar.commands">CommandHelp</a> <a href="../../../src-html/co/aikar/commands/CommandManager.html#line.160">generateCommandHelp</a>(<a href="../../../co/aikar/commands/CommandIssuer.html" title="interface in co.aikar.commands">CommandIssuer</a> issuer,
|
||||
public <a href="../../../co/aikar/commands/CommandHelp.html" title="class in co.aikar.commands">CommandHelp</a> <a href="../../../src-html/co/aikar/commands/CommandManager.html#line.170">generateCommandHelp</a>(<a href="../../../co/aikar/commands/CommandIssuer.html" title="interface in co.aikar.commands">CommandIssuer</a> issuer,
|
||||
@NotNull
|
||||
@NotNull <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> command)</pre>
|
||||
<div class="block"><span class="deprecatedLabel">Deprecated.</span> <span class="deprecationComment">Unstable API</span></div>
|
||||
@@ -875,7 +880,7 @@ public <a href="../../../co/aikar/commands/CommandHelp.html" title="class i
|
||||
<li class="blockList">
|
||||
<h4>generateCommandHelp</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 <a href="../../../co/aikar/commands/CommandHelp.html" title="class in co.aikar.commands">CommandHelp</a> <a href="../../../src-html/co/aikar/commands/CommandManager.html#line.166">generateCommandHelp</a>()</pre>
|
||||
public <a href="../../../co/aikar/commands/CommandHelp.html" title="class in co.aikar.commands">CommandHelp</a> <a href="../../../src-html/co/aikar/commands/CommandManager.html#line.180">generateCommandHelp</a>()</pre>
|
||||
<div class="block"><span class="deprecatedLabel">Deprecated.</span> <span class="deprecationComment">Unstable API</span></div>
|
||||
</li>
|
||||
</ul>
|
||||
@@ -886,7 +891,7 @@ public <a href="../../../co/aikar/commands/CommandHelp.html" title="class i
|
||||
<li class="blockList">
|
||||
<h4>generateCommandHelp</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 <a href="../../../co/aikar/commands/CommandHelp.html" title="class in co.aikar.commands">CommandHelp</a> <a href="../../../src-html/co/aikar/commands/CommandManager.html#line.177">generateCommandHelp</a>(<a href="../../../co/aikar/commands/CommandIssuer.html" title="interface in co.aikar.commands">CommandIssuer</a> issuer,
|
||||
public <a href="../../../co/aikar/commands/CommandHelp.html" title="class in co.aikar.commands">CommandHelp</a> <a href="../../../src-html/co/aikar/commands/CommandManager.html#line.195">generateCommandHelp</a>(<a href="../../../co/aikar/commands/CommandIssuer.html" title="interface in co.aikar.commands">CommandIssuer</a> issuer,
|
||||
<a href="../../../co/aikar/commands/RootCommand.html" title="interface in co.aikar.commands">RootCommand</a> rootCommand)</pre>
|
||||
<div class="block"><span class="deprecatedLabel">Deprecated.</span> <span class="deprecationComment">Unstable API</span></div>
|
||||
</li>
|
||||
@@ -898,7 +903,7 @@ public <a href="../../../co/aikar/commands/CommandHelp.html" title="class i
|
||||
<li class="blockList">
|
||||
<h4>getDefaultHelpPerPage</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 int <a href="../../../src-html/co/aikar/commands/CommandManager.html#line.183">getDefaultHelpPerPage</a>()</pre>
|
||||
public int <a href="../../../src-html/co/aikar/commands/CommandManager.html#line.205">getDefaultHelpPerPage</a>()</pre>
|
||||
<div class="block"><span class="deprecatedLabel">Deprecated.</span> <span class="deprecationComment">Unstable API</span></div>
|
||||
</li>
|
||||
</ul>
|
||||
@@ -909,7 +914,7 @@ public int <a href="../../../src-html/co/aikar/commands/CommandManager
|
||||
<li class="blockList">
|
||||
<h4>setDefaultHelpPerPage</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/CommandManager.html#line.189">setDefaultHelpPerPage</a>(int defaultHelpPerPage)</pre>
|
||||
public void <a href="../../../src-html/co/aikar/commands/CommandManager.html#line.215">setDefaultHelpPerPage</a>(int defaultHelpPerPage)</pre>
|
||||
<div class="block"><span class="deprecatedLabel">Deprecated.</span> <span class="deprecationComment">Unstable API</span></div>
|
||||
</li>
|
||||
</ul>
|
||||
@@ -920,7 +925,7 @@ public void <a href="../../../src-html/co/aikar/commands/CommandManage
|
||||
<li class="blockList">
|
||||
<h4>setHelpFormatter</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/CommandManager.html#line.194">setHelpFormatter</a>(<a href="../../../co/aikar/commands/CommandHelpFormatter.html" title="class in co.aikar.commands">CommandHelpFormatter</a> helpFormatter)</pre>
|
||||
public void <a href="../../../src-html/co/aikar/commands/CommandManager.html#line.225">setHelpFormatter</a>(<a href="../../../co/aikar/commands/CommandHelpFormatter.html" title="class in co.aikar.commands">CommandHelpFormatter</a> helpFormatter)</pre>
|
||||
<div class="block"><span class="deprecatedLabel">Deprecated.</span> <span class="deprecationComment">Unstable API</span></div>
|
||||
</li>
|
||||
</ul>
|
||||
@@ -931,7 +936,7 @@ public void <a href="../../../src-html/co/aikar/commands/CommandManage
|
||||
<li class="blockList">
|
||||
<h4>getHelpFormatter</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 <a href="../../../co/aikar/commands/CommandHelpFormatter.html" title="class in co.aikar.commands">CommandHelpFormatter</a> <a href="../../../src-html/co/aikar/commands/CommandManager.html#line.199">getHelpFormatter</a>()</pre>
|
||||
public <a href="../../../co/aikar/commands/CommandHelpFormatter.html" title="class in co.aikar.commands">CommandHelpFormatter</a> <a href="../../../src-html/co/aikar/commands/CommandManager.html#line.234">getHelpFormatter</a>()</pre>
|
||||
<div class="block"><span class="deprecatedLabel">Deprecated.</span> <span class="deprecationComment">Unstable API</span></div>
|
||||
</li>
|
||||
</ul>
|
||||
@@ -941,7 +946,7 @@ public <a href="../../../co/aikar/commands/CommandHelpFormatter.html" title
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>registerCommand</h4>
|
||||
<pre>public abstract void <a href="../../../src-html/co/aikar/commands/CommandManager.html#line.213">registerCommand</a>(<a href="../../../co/aikar/commands/BaseCommand.html" title="class in co.aikar.commands">BaseCommand</a> command)</pre>
|
||||
<pre>public abstract void <a href="../../../src-html/co/aikar/commands/CommandManager.html#line.248">registerCommand</a>(<a href="../../../co/aikar/commands/BaseCommand.html" title="class in co.aikar.commands">BaseCommand</a> command)</pre>
|
||||
<div class="block">Registers a command with ACF</div>
|
||||
<dl>
|
||||
<dt><span class="paramLabel">Parameters:</span></dt>
|
||||
@@ -955,7 +960,7 @@ public <a href="../../../co/aikar/commands/CommandHelpFormatter.html" title
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>hasRegisteredCommands</h4>
|
||||
<pre>public abstract boolean <a href="../../../src-html/co/aikar/commands/CommandManager.html#line.214">hasRegisteredCommands</a>()</pre>
|
||||
<pre>public abstract boolean <a href="../../../src-html/co/aikar/commands/CommandManager.html#line.250">hasRegisteredCommands</a>()</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="isCommandIssuer-java.lang.Class-">
|
||||
@@ -964,7 +969,7 @@ public <a href="../../../co/aikar/commands/CommandHelpFormatter.html" title
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>isCommandIssuer</h4>
|
||||
<pre>public abstract boolean <a href="../../../src-html/co/aikar/commands/CommandManager.html#line.215">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 abstract boolean <a href="../../../src-html/co/aikar/commands/CommandManager.html#line.252">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>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="getCommandIssuer-java.lang.Object-">
|
||||
@@ -973,7 +978,7 @@ public <a href="../../../co/aikar/commands/CommandHelpFormatter.html" title
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>getCommandIssuer</h4>
|
||||
<pre>public abstract <a href="../../../co/aikar/commands/CommandManager.html" title="type parameter in CommandManager">I</a> <a href="../../../src-html/co/aikar/commands/CommandManager.html#line.218">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 abstract <a href="../../../co/aikar/commands/CommandManager.html" title="type parameter in CommandManager">I</a> <a href="../../../src-html/co/aikar/commands/CommandManager.html#line.255">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>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="createRootCommand-java.lang.String-">
|
||||
@@ -982,7 +987,7 @@ public <a href="../../../co/aikar/commands/CommandHelpFormatter.html" title
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>createRootCommand</h4>
|
||||
<pre>public abstract <a href="../../../co/aikar/commands/RootCommand.html" title="interface in co.aikar.commands">RootCommand</a> <a href="../../../src-html/co/aikar/commands/CommandManager.html#line.220">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 abstract <a href="../../../co/aikar/commands/RootCommand.html" title="interface in co.aikar.commands">RootCommand</a> <a href="../../../src-html/co/aikar/commands/CommandManager.html#line.257">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>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="getLocales--">
|
||||
@@ -991,7 +996,7 @@ public <a href="../../../co/aikar/commands/CommandHelpFormatter.html" title
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>getLocales</h4>
|
||||
<pre>public abstract <a href="../../../co/aikar/commands/Locales.html" title="class in co.aikar.commands">Locales</a> <a href="../../../src-html/co/aikar/commands/CommandManager.html#line.226">getLocales</a>()</pre>
|
||||
<pre>public abstract <a href="../../../co/aikar/commands/Locales.html" title="class in co.aikar.commands">Locales</a> <a href="../../../src-html/co/aikar/commands/CommandManager.html#line.264">getLocales</a>()</pre>
|
||||
<div class="block">Returns a Locales Manager to add and modify language tables for your commands.</div>
|
||||
<dl>
|
||||
<dt><span class="returnLabel">Returns:</span></dt>
|
||||
@@ -1004,7 +1009,7 @@ public <a href="../../../co/aikar/commands/CommandHelpFormatter.html" title
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>usingPerIssuerLocale</h4>
|
||||
<pre>public boolean <a href="../../../src-html/co/aikar/commands/CommandManager.html#line.228">usingPerIssuerLocale</a>()</pre>
|
||||
<pre>public boolean <a href="../../../src-html/co/aikar/commands/CommandManager.html#line.266">usingPerIssuerLocale</a>()</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="usePerIssuerLocale-boolean-">
|
||||
@@ -1013,7 +1018,7 @@ public <a href="../../../co/aikar/commands/CommandHelpFormatter.html" title
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>usePerIssuerLocale</h4>
|
||||
<pre>public boolean <a href="../../../src-html/co/aikar/commands/CommandManager.html#line.232">usePerIssuerLocale</a>(boolean setting)</pre>
|
||||
<pre>public boolean <a href="../../../src-html/co/aikar/commands/CommandManager.html#line.270">usePerIssuerLocale</a>(boolean setting)</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="createConditionContext-co.aikar.commands.CommandIssuer-java.lang.String-">
|
||||
@@ -1022,7 +1027,7 @@ public <a href="../../../co/aikar/commands/CommandHelpFormatter.html" title
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>createConditionContext</h4>
|
||||
<pre>public <a href="../../../co/aikar/commands/ConditionContext.html" title="class in co.aikar.commands">ConditionContext</a> <a href="../../../src-html/co/aikar/commands/CommandManager.html#line.238">createConditionContext</a>(<a href="../../../co/aikar/commands/CommandIssuer.html" title="interface in co.aikar.commands">CommandIssuer</a> issuer,
|
||||
<pre>public <a href="../../../co/aikar/commands/ConditionContext.html" title="class in co.aikar.commands">ConditionContext</a> <a href="../../../src-html/co/aikar/commands/CommandManager.html#line.276">createConditionContext</a>(<a href="../../../co/aikar/commands/CommandIssuer.html" title="interface in co.aikar.commands">CommandIssuer</a> 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>
|
||||
</li>
|
||||
</ul>
|
||||
@@ -1032,7 +1037,7 @@ public <a href="../../../co/aikar/commands/CommandHelpFormatter.html" title
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>createCommandContext</h4>
|
||||
<pre>public abstract <a href="../../../co/aikar/commands/CommandExecutionContext.html" title="class in co.aikar.commands">CommandExecutionContext</a> <a href="../../../src-html/co/aikar/commands/CommandManager.html#line.243">createCommandContext</a>(<a href="../../../co/aikar/commands/RegisteredCommand.html" title="class in co.aikar.commands">RegisteredCommand</a> command,
|
||||
<pre>public abstract <a href="../../../co/aikar/commands/CommandExecutionContext.html" title="class in co.aikar.commands">CommandExecutionContext</a> <a href="../../../src-html/co/aikar/commands/CommandManager.html#line.281">createCommandContext</a>(<a href="../../../co/aikar/commands/RegisteredCommand.html" title="class in co.aikar.commands">RegisteredCommand</a> command,
|
||||
<a href="../../../co/aikar/commands/CommandParameter.html" title="class in co.aikar.commands">CommandParameter</a> parameter,
|
||||
<a href="../../../co/aikar/commands/CommandIssuer.html" title="interface in co.aikar.commands">CommandIssuer</a> 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,
|
||||
@@ -1046,7 +1051,7 @@ public <a href="../../../co/aikar/commands/CommandHelpFormatter.html" title
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>createCompletionContext</h4>
|
||||
<pre>public abstract <a href="../../../co/aikar/commands/CommandCompletionContext.html" title="class in co.aikar.commands">CommandCompletionContext</a> <a href="../../../src-html/co/aikar/commands/CommandManager.html#line.245">createCompletionContext</a>(<a href="../../../co/aikar/commands/RegisteredCommand.html" title="class in co.aikar.commands">RegisteredCommand</a> command,
|
||||
<pre>public abstract <a href="../../../co/aikar/commands/CommandCompletionContext.html" title="class in co.aikar.commands">CommandCompletionContext</a> <a href="../../../src-html/co/aikar/commands/CommandManager.html#line.283">createCompletionContext</a>(<a href="../../../co/aikar/commands/RegisteredCommand.html" title="class in co.aikar.commands">RegisteredCommand</a> command,
|
||||
<a href="../../../co/aikar/commands/CommandIssuer.html" title="interface in co.aikar.commands">CommandIssuer</a> 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,
|
||||
@@ -1059,7 +1064,7 @@ public <a href="../../../co/aikar/commands/CommandHelpFormatter.html" title
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>log</h4>
|
||||
<pre>public abstract void <a href="../../../src-html/co/aikar/commands/CommandManager.html#line.247">log</a>(co.aikar.commands.LogLevel level,
|
||||
<pre>public abstract void <a href="../../../src-html/co/aikar/commands/CommandManager.html#line.285">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>
|
||||
</li>
|
||||
@@ -1070,7 +1075,7 @@ public <a href="../../../co/aikar/commands/CommandHelpFormatter.html" title
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>log</h4>
|
||||
<pre>public void <a href="../../../src-html/co/aikar/commands/CommandManager.html#line.249">log</a>(co.aikar.commands.LogLevel level,
|
||||
<pre>public void <a href="../../../src-html/co/aikar/commands/CommandManager.html#line.287">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)</pre>
|
||||
</li>
|
||||
</ul>
|
||||
@@ -1080,12 +1085,12 @@ public <a href="../../../co/aikar/commands/CommandHelpFormatter.html" title
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>getCommandReplacements</h4>
|
||||
<pre>public <a href="../../../co/aikar/commands/CommandReplacements.html" title="class in co.aikar.commands">CommandReplacements</a> <a href="../../../src-html/co/aikar/commands/CommandManager.html#line.262">getCommandReplacements</a>()</pre>
|
||||
<pre>public <a href="../../../co/aikar/commands/CommandReplacements.html" title="class in co.aikar.commands">CommandReplacements</a> <a href="../../../src-html/co/aikar/commands/CommandManager.html#line.301">getCommandReplacements</a>()</pre>
|
||||
<div class="block">Lets you add custom string replacements that can be applied to annotation values,
|
||||
to reduce duplication/repetition of common values such as permission nodes and command prefixes.
|
||||
|
||||
<p>
|
||||
Any replacement registered starts with a %
|
||||
|
||||
<p>
|
||||
So for ex @CommandPermission("%staff")</div>
|
||||
<dl>
|
||||
<dt><span class="returnLabel">Returns:</span></dt>
|
||||
@@ -1093,13 +1098,23 @@ public <a href="../../../co/aikar/commands/CommandHelpFormatter.html" title
|
||||
</dl>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="hasPermission-co.aikar.commands.CommandIssuer-java.util.Set-">
|
||||
<!-- -->
|
||||
</a>
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>hasPermission</h4>
|
||||
<pre>public boolean <a href="../../../src-html/co/aikar/commands/CommandManager.html#line.305">hasPermission</a>(<a href="../../../co/aikar/commands/CommandIssuer.html" title="interface in co.aikar.commands">CommandIssuer</a> issuer,
|
||||
<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</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>> permissions)</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="hasPermission-co.aikar.commands.CommandIssuer-java.lang.String-">
|
||||
<!-- -->
|
||||
</a>
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>hasPermission</h4>
|
||||
<pre>public boolean <a href="../../../src-html/co/aikar/commands/CommandManager.html#line.266">hasPermission</a>(<a href="../../../co/aikar/commands/CommandIssuer.html" title="interface in co.aikar.commands">CommandIssuer</a> issuer,
|
||||
<pre>public boolean <a href="../../../src-html/co/aikar/commands/CommandManager.html#line.314">hasPermission</a>(<a href="../../../co/aikar/commands/CommandIssuer.html" title="interface in co.aikar.commands">CommandIssuer</a> 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> permission)</pre>
|
||||
</li>
|
||||
</ul>
|
||||
@@ -1109,7 +1124,7 @@ public <a href="../../../co/aikar/commands/CommandHelpFormatter.html" title
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>getRootCommand</h4>
|
||||
<pre>public <a href="../../../co/aikar/commands/RootCommand.html" title="interface in co.aikar.commands">RootCommand</a> <a href="../../../src-html/co/aikar/commands/CommandManager.html#line.278">getRootCommand</a>(@NotNull
|
||||
<pre>public <a href="../../../co/aikar/commands/RootCommand.html" title="interface in co.aikar.commands">RootCommand</a> <a href="../../../src-html/co/aikar/commands/CommandManager.html#line.326">getRootCommand</a>(@NotNull
|
||||
@NotNull <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>
|
||||
</li>
|
||||
</ul>
|
||||
@@ -1119,7 +1134,7 @@ public <a href="../../../co/aikar/commands/CommandHelpFormatter.html" title
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>obtainRootCommand</h4>
|
||||
<pre>public <a href="../../../co/aikar/commands/RootCommand.html" title="interface in co.aikar.commands">RootCommand</a> <a href="../../../src-html/co/aikar/commands/CommandManager.html#line.282">obtainRootCommand</a>(@NotNull
|
||||
<pre>public <a href="../../../co/aikar/commands/RootCommand.html" title="interface in co.aikar.commands">RootCommand</a> <a href="../../../src-html/co/aikar/commands/CommandManager.html#line.330">obtainRootCommand</a>(@NotNull
|
||||
@NotNull <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>
|
||||
</li>
|
||||
</ul>
|
||||
@@ -1129,7 +1144,7 @@ public <a href="../../../co/aikar/commands/CommandHelpFormatter.html" title
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>getRegisteredRootCommands</h4>
|
||||
<pre>public abstract <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="../../../co/aikar/commands/RootCommand.html" title="interface in co.aikar.commands">RootCommand</a>> <a href="../../../src-html/co/aikar/commands/CommandManager.html#line.286">getRegisteredRootCommands</a>()</pre>
|
||||
<pre>public abstract <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="../../../co/aikar/commands/RootCommand.html" title="interface in co.aikar.commands">RootCommand</a>> <a href="../../../src-html/co/aikar/commands/CommandManager.html#line.334">getRegisteredRootCommands</a>()</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="createRegisteredCommand-co.aikar.commands.BaseCommand-java.lang.String-java.lang.reflect.Method-java.lang.String-">
|
||||
@@ -1138,7 +1153,7 @@ public <a href="../../../co/aikar/commands/CommandHelpFormatter.html" title
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>createRegisteredCommand</h4>
|
||||
<pre>public <a href="../../../co/aikar/commands/RegisteredCommand.html" title="class in co.aikar.commands">RegisteredCommand</a> <a href="../../../src-html/co/aikar/commands/CommandManager.html#line.288">createRegisteredCommand</a>(<a href="../../../co/aikar/commands/BaseCommand.html" title="class in co.aikar.commands">BaseCommand</a> command,
|
||||
<pre>public <a href="../../../co/aikar/commands/RegisteredCommand.html" title="class in co.aikar.commands">RegisteredCommand</a> <a href="../../../src-html/co/aikar/commands/CommandManager.html#line.336">createRegisteredCommand</a>(<a href="../../../co/aikar/commands/BaseCommand.html" title="class in co.aikar.commands">BaseCommand</a> 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>
|
||||
@@ -1150,7 +1165,7 @@ public <a href="../../../co/aikar/commands/CommandHelpFormatter.html" title
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>setDefaultExceptionHandler</h4>
|
||||
<pre>public void <a href="../../../src-html/co/aikar/commands/CommandManager.html#line.297">setDefaultExceptionHandler</a>(<a href="../../../co/aikar/commands/ExceptionHandler.html" title="interface in co.aikar.commands">ExceptionHandler</a> exceptionHandler)</pre>
|
||||
<pre>public void <a href="../../../src-html/co/aikar/commands/CommandManager.html#line.345">setDefaultExceptionHandler</a>(<a href="../../../co/aikar/commands/ExceptionHandler.html" title="interface in co.aikar.commands">ExceptionHandler</a> exceptionHandler)</pre>
|
||||
<div class="block">Sets the default <a href="../../../co/aikar/commands/ExceptionHandler.html" title="interface in co.aikar.commands"><code>ExceptionHandler</code></a> that is called when an exception occurs while executing a command, if the command doesn't have it's own exception handler registered.</div>
|
||||
<dl>
|
||||
<dt><span class="paramLabel">Parameters:</span></dt>
|
||||
@@ -1164,7 +1179,7 @@ public <a href="../../../co/aikar/commands/CommandHelpFormatter.html" title
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>setDefaultExceptionHandler</h4>
|
||||
<pre>public void <a href="../../../src-html/co/aikar/commands/CommandManager.html#line.312">setDefaultExceptionHandler</a>(<a href="../../../co/aikar/commands/ExceptionHandler.html" title="interface in co.aikar.commands">ExceptionHandler</a> exceptionHandler,
|
||||
<pre>public void <a href="../../../src-html/co/aikar/commands/CommandManager.html#line.360">setDefaultExceptionHandler</a>(<a href="../../../co/aikar/commands/ExceptionHandler.html" title="interface in co.aikar.commands">ExceptionHandler</a> exceptionHandler,
|
||||
boolean logExceptions)</pre>
|
||||
<div class="block">Sets the default <a href="../../../co/aikar/commands/ExceptionHandler.html" title="interface in co.aikar.commands"><code>ExceptionHandler</code></a> that is called when an exception occurs while executing a command, if the command doesn't have it's own exception handler registered, and lets you control if ACF should also log the exception still.
|
||||
<p>
|
||||
@@ -1182,7 +1197,7 @@ public <a href="../../../co/aikar/commands/CommandHelpFormatter.html" title
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>isLoggingUnhandledExceptions</h4>
|
||||
<pre>public boolean <a href="../../../src-html/co/aikar/commands/CommandManager.html#line.320">isLoggingUnhandledExceptions</a>()</pre>
|
||||
<pre>public boolean <a href="../../../src-html/co/aikar/commands/CommandManager.html#line.368">isLoggingUnhandledExceptions</a>()</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="getDefaultExceptionHandler--">
|
||||
@@ -1191,7 +1206,7 @@ public <a href="../../../co/aikar/commands/CommandHelpFormatter.html" title
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>getDefaultExceptionHandler</h4>
|
||||
<pre>public <a href="../../../co/aikar/commands/ExceptionHandler.html" title="interface in co.aikar.commands">ExceptionHandler</a> <a href="../../../src-html/co/aikar/commands/CommandManager.html#line.329">getDefaultExceptionHandler</a>()</pre>
|
||||
<pre>public <a href="../../../co/aikar/commands/ExceptionHandler.html" title="interface in co.aikar.commands">ExceptionHandler</a> <a href="../../../src-html/co/aikar/commands/CommandManager.html#line.377">getDefaultExceptionHandler</a>()</pre>
|
||||
<div class="block">Gets the current default exception handler, might be null.</div>
|
||||
<dl>
|
||||
<dt><span class="returnLabel">Returns:</span></dt>
|
||||
@@ -1205,7 +1220,7 @@ public <a href="../../../co/aikar/commands/CommandHelpFormatter.html" title
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>handleUncaughtException</h4>
|
||||
<pre>protected boolean <a href="../../../src-html/co/aikar/commands/CommandManager.html#line.333">handleUncaughtException</a>(<a href="../../../co/aikar/commands/BaseCommand.html" title="class in co.aikar.commands">BaseCommand</a> scope,
|
||||
<pre>protected boolean <a href="../../../src-html/co/aikar/commands/CommandManager.html#line.381">handleUncaughtException</a>(<a href="../../../co/aikar/commands/BaseCommand.html" title="class in co.aikar.commands">BaseCommand</a> scope,
|
||||
<a href="../../../co/aikar/commands/RegisteredCommand.html" title="class in co.aikar.commands">RegisteredCommand</a> registeredCommand,
|
||||
<a href="../../../co/aikar/commands/CommandIssuer.html" title="interface in co.aikar.commands">CommandIssuer</a> 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,
|
||||
@@ -1220,7 +1235,7 @@ public <a href="../../../co/aikar/commands/CommandHelpFormatter.html" title
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>sendMessage</h4>
|
||||
<pre>public void <a href="../../../src-html/co/aikar/commands/CommandManager.html#line.346">sendMessage</a>(<a href="../../../co/aikar/commands/CommandManager.html" title="type parameter in CommandManager">IT</a> issuerArg,
|
||||
<pre>public void <a href="../../../src-html/co/aikar/commands/CommandManager.html#line.394">sendMessage</a>(<a href="../../../co/aikar/commands/CommandManager.html" title="type parameter in CommandManager">IT</a> issuerArg,
|
||||
<a href="../../../co/aikar/commands/MessageType.html" title="class in co.aikar.commands">MessageType</a> type,
|
||||
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>... replacements)</pre>
|
||||
@@ -1232,7 +1247,7 @@ public <a href="../../../co/aikar/commands/CommandHelpFormatter.html" title
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>sendMessage</h4>
|
||||
<pre>public void <a href="../../../src-html/co/aikar/commands/CommandManager.html#line.350">sendMessage</a>(<a href="../../../co/aikar/commands/CommandIssuer.html" title="interface in co.aikar.commands">CommandIssuer</a> issuer,
|
||||
<pre>public void <a href="../../../src-html/co/aikar/commands/CommandManager.html#line.398">sendMessage</a>(<a href="../../../co/aikar/commands/CommandIssuer.html" title="interface in co.aikar.commands">CommandIssuer</a> issuer,
|
||||
<a href="../../../co/aikar/commands/MessageType.html" title="class in co.aikar.commands">MessageType</a> type,
|
||||
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>... replacements)</pre>
|
||||
@@ -1244,7 +1259,7 @@ public <a href="../../../co/aikar/commands/CommandHelpFormatter.html" title
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>formatMessage</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/CommandManager.html#line.358">formatMessage</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/CommandManager.html#line.406">formatMessage</a>(<a href="../../../co/aikar/commands/CommandIssuer.html" title="interface in co.aikar.commands">CommandIssuer</a> issuer,
|
||||
<a href="../../../co/aikar/commands/MessageType.html" title="class in co.aikar.commands">MessageType</a> type,
|
||||
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>... replacements)</pre>
|
||||
@@ -1256,7 +1271,7 @@ public <a href="../../../co/aikar/commands/CommandHelpFormatter.html" title
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>onLocaleChange</h4>
|
||||
<pre>public void <a href="../../../src-html/co/aikar/commands/CommandManager.html#line.374">onLocaleChange</a>(<a href="../../../co/aikar/commands/IssuerLocaleChangedCallback.html" title="interface in co.aikar.commands">IssuerLocaleChangedCallback</a><<a href="../../../co/aikar/commands/CommandManager.html" title="type parameter in CommandManager">I</a>> onChange)</pre>
|
||||
<pre>public void <a href="../../../src-html/co/aikar/commands/CommandManager.html#line.422">onLocaleChange</a>(<a href="../../../co/aikar/commands/IssuerLocaleChangedCallback.html" title="interface in co.aikar.commands">IssuerLocaleChangedCallback</a><<a href="../../../co/aikar/commands/CommandManager.html" title="type parameter in CommandManager">I</a>> onChange)</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="notifyLocaleChange-co.aikar.commands.CommandIssuer-java.util.Locale-java.util.Locale-">
|
||||
@@ -1267,7 +1282,7 @@ public <a href="../../../co/aikar/commands/CommandHelpFormatter.html" title
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>notifyLocaleChange</h4>
|
||||
<pre>public void <a href="../../../src-html/co/aikar/commands/CommandManager.html#line.378">notifyLocaleChange</a>(<a href="../../../co/aikar/commands/CommandManager.html" title="type parameter in CommandManager">I</a> issuer,
|
||||
<pre>public void <a href="../../../src-html/co/aikar/commands/CommandManager.html#line.426">notifyLocaleChange</a>(<a href="../../../co/aikar/commands/CommandManager.html" title="type parameter in CommandManager">I</a> issuer,
|
||||
<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> oldLocale,
|
||||
<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> newLocale)</pre>
|
||||
</li>
|
||||
@@ -1280,7 +1295,7 @@ public <a href="../../../co/aikar/commands/CommandHelpFormatter.html" title
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>setIssuerLocale</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/CommandManager.html#line.388">setIssuerLocale</a>(<a href="../../../co/aikar/commands/CommandManager.html" title="type parameter in CommandManager">IT</a> issuer,
|
||||
<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/CommandManager.html#line.436">setIssuerLocale</a>(<a href="../../../co/aikar/commands/CommandManager.html" title="type parameter in CommandManager">IT</a> issuer,
|
||||
<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>
|
||||
@@ -1290,7 +1305,7 @@ public <a href="../../../co/aikar/commands/CommandHelpFormatter.html" title
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>getIssuerLocale</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/CommandManager.html#line.399">getIssuerLocale</a>(<a href="../../../co/aikar/commands/CommandIssuer.html" title="interface in co.aikar.commands">CommandIssuer</a> issuer)</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/CommandManager.html#line.447">getIssuerLocale</a>(<a href="../../../co/aikar/commands/CommandIssuer.html" title="interface in co.aikar.commands">CommandIssuer</a> issuer)</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="getSupportedLanguages--">
|
||||
@@ -1299,7 +1314,7 @@ public <a href="../../../co/aikar/commands/CommandHelpFormatter.html" title
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>getSupportedLanguages</h4>
|
||||
<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</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>> <a href="../../../src-html/co/aikar/commands/CommandManager.html#line.427">getSupportedLanguages</a>()</pre>
|
||||
<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</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>> <a href="../../../src-html/co/aikar/commands/CommandManager.html#line.476">getSupportedLanguages</a>()</pre>
|
||||
<div class="block">Gets a list of all currently supported languages for this manager.
|
||||
These locales will be automatically loaded from</div>
|
||||
<dl>
|
||||
@@ -1313,7 +1328,7 @@ public <a href="../../../co/aikar/commands/CommandHelpFormatter.html" title
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>addSupportedLanguage</h4>
|
||||
<pre>public void <a href="../../../src-html/co/aikar/commands/CommandManager.html#line.437">addSupportedLanguage</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 void <a href="../../../src-html/co/aikar/commands/CommandManager.html#line.486">addSupportedLanguage</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>
|
||||
<div class="block">Adds a new locale to the list of automatic Locales to load Message Bundles for.
|
||||
All bundles loaded under the previous supported languages will now automatically load for this new locale too.</div>
|
||||
<dl>
|
||||
@@ -1330,7 +1345,7 @@ public <a href="../../../co/aikar/commands/CommandHelpFormatter.html" title
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>registerDependency</h4>
|
||||
<pre>public <T> void <a href="../../../src-html/co/aikar/commands/CommandManager.html#line.451">registerDependency</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><? extends T> clazz,
|
||||
<pre>public <T> void <a href="../../../src-html/co/aikar/commands/CommandManager.html#line.500">registerDependency</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><? extends T> clazz,
|
||||
T instance)</pre>
|
||||
<div class="block">Registers an instance of a class to be registered as an injectable dependency.<br>
|
||||
The command manager will attempt to inject all fields in a command class that are annotated with
|
||||
@@ -1352,7 +1367,7 @@ public <a href="../../../co/aikar/commands/CommandHelpFormatter.html" title
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>registerDependency</h4>
|
||||
<pre>public <T> void <a href="../../../src-html/co/aikar/commands/CommandManager.html#line.465">registerDependency</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><? extends T> clazz,
|
||||
<pre>public <T> void <a href="../../../src-html/co/aikar/commands/CommandManager.html#line.514">registerDependency</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><? extends T> clazz,
|
||||
<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> key,
|
||||
T instance)</pre>
|
||||
<div class="block">Registers an instance of a class to be registered as an injectable dependency.<br>
|
||||
@@ -1375,7 +1390,7 @@ public <a href="../../../co/aikar/commands/CommandHelpFormatter.html" title
|
||||
<li class="blockList">
|
||||
<h4>enableUnstableAPI</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/CommandManager.html#line.514">enableUnstableAPI</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> api)</pre>
|
||||
public void <a href="../../../src-html/co/aikar/commands/CommandManager.html#line.563">enableUnstableAPI</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> api)</pre>
|
||||
<div class="block"><span class="deprecatedLabel">Deprecated.</span> <span class="deprecationComment">Use this with caution! If you enable and use Unstable API's, your next compile using ACF
|
||||
may require you to update your implementation to those unstable API's</span></div>
|
||||
</li>
|
||||
@@ -1386,7 +1401,7 @@ public void <a href="../../../src-html/co/aikar/commands/CommandManage
|
||||
<ul class="blockListLast">
|
||||
<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/CommandManager.html#line.531">getCommandPrefix</a>(<a href="../../../co/aikar/commands/CommandIssuer.html" title="interface in co.aikar.commands">CommandIssuer</a> 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/CommandManager.html#line.581">getCommandPrefix</a>(<a href="../../../co/aikar/commands/CommandIssuer.html" title="interface in co.aikar.commands">CommandIssuer</a> issuer)</pre>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
@@ -108,7 +108,7 @@ var activeTableTab = "activeTableTab";
|
||||
<li class="blockList">
|
||||
<hr>
|
||||
<br>
|
||||
<pre>public class <a href="../../../src-html/co/aikar/commands/CommandOperationContext.html#line.31">CommandOperationContext</a><I extends <a href="../../../co/aikar/commands/CommandIssuer.html" title="interface in co.aikar.commands">CommandIssuer</a>>
|
||||
<pre>public class <a href="../../../src-html/co/aikar/commands/CommandOperationContext.html#line.32">CommandOperationContext</a><I extends <a href="../../../co/aikar/commands/CommandIssuer.html" title="interface in co.aikar.commands">CommandIssuer</a>>
|
||||
extends <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></pre>
|
||||
<div class="block">Holds information about the currently executing command on this thread</div>
|
||||
</li>
|
||||
@@ -210,7 +210,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>getCommandManager</h4>
|
||||
<pre>public <a href="../../../co/aikar/commands/CommandManager.html" title="class in co.aikar.commands">CommandManager</a> <a href="../../../src-html/co/aikar/commands/CommandOperationContext.html#line.50">getCommandManager</a>()</pre>
|
||||
<pre>public <a href="../../../co/aikar/commands/CommandManager.html" title="class in co.aikar.commands">CommandManager</a> <a href="../../../src-html/co/aikar/commands/CommandOperationContext.html#line.52">getCommandManager</a>()</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="getCommandIssuer--">
|
||||
@@ -219,7 +219,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>getCommandIssuer</h4>
|
||||
<pre>public <a href="../../../co/aikar/commands/CommandOperationContext.html" title="type parameter in CommandOperationContext">I</a> <a href="../../../src-html/co/aikar/commands/CommandOperationContext.html#line.54">getCommandIssuer</a>()</pre>
|
||||
<pre>public <a href="../../../co/aikar/commands/CommandOperationContext.html" title="type parameter in CommandOperationContext">I</a> <a href="../../../src-html/co/aikar/commands/CommandOperationContext.html#line.56">getCommandIssuer</a>()</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="getCommand--">
|
||||
@@ -228,7 +228,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>getCommand</h4>
|
||||
<pre>public <a href="../../../co/aikar/commands/BaseCommand.html" title="class in co.aikar.commands">BaseCommand</a> <a href="../../../src-html/co/aikar/commands/CommandOperationContext.html#line.58">getCommand</a>()</pre>
|
||||
<pre>public <a href="../../../co/aikar/commands/BaseCommand.html" title="class in co.aikar.commands">BaseCommand</a> <a href="../../../src-html/co/aikar/commands/CommandOperationContext.html#line.60">getCommand</a>()</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="getCommandLabel--">
|
||||
@@ -237,7 +237,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>getCommandLabel</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/CommandOperationContext.html#line.62">getCommandLabel</a>()</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/CommandOperationContext.html#line.64">getCommandLabel</a>()</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="getArgs--">
|
||||
@@ -246,7 +246,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>getArgs</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/CommandOperationContext.html#line.66">getArgs</a>()</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/CommandOperationContext.html#line.68">getArgs</a>()</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="isAsync--">
|
||||
@@ -255,7 +255,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>isAsync</h4>
|
||||
<pre>public boolean <a href="../../../src-html/co/aikar/commands/CommandOperationContext.html#line.70">isAsync</a>()</pre>
|
||||
<pre>public boolean <a href="../../../src-html/co/aikar/commands/CommandOperationContext.html#line.72">isAsync</a>()</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="setRegisteredCommand-co.aikar.commands.RegisteredCommand-">
|
||||
@@ -264,7 +264,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>setRegisteredCommand</h4>
|
||||
<pre>public void <a href="../../../src-html/co/aikar/commands/CommandOperationContext.html#line.74">setRegisteredCommand</a>(<a href="../../../co/aikar/commands/RegisteredCommand.html" title="class in co.aikar.commands">RegisteredCommand</a> registeredCommand)</pre>
|
||||
<pre>public void <a href="../../../src-html/co/aikar/commands/CommandOperationContext.html#line.76">setRegisteredCommand</a>(<a href="../../../co/aikar/commands/RegisteredCommand.html" title="class in co.aikar.commands">RegisteredCommand</a> registeredCommand)</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="getRegisteredCommand--">
|
||||
@@ -273,7 +273,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>getRegisteredCommand</h4>
|
||||
<pre>public <a href="../../../co/aikar/commands/RegisteredCommand.html" title="class in co.aikar.commands">RegisteredCommand</a> <a href="../../../src-html/co/aikar/commands/CommandOperationContext.html#line.78">getRegisteredCommand</a>()</pre>
|
||||
<pre>public <a href="../../../co/aikar/commands/RegisteredCommand.html" title="class in co.aikar.commands">RegisteredCommand</a> <a href="../../../src-html/co/aikar/commands/CommandOperationContext.html#line.80">getRegisteredCommand</a>()</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="getAnnotation-java.lang.Class-">
|
||||
@@ -283,7 +283,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<li class="blockList">
|
||||
<h4>getAnnotation</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 extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/annotation/Annotation.html?is-external=true" title="class or interface in java.lang.annotation">Annotation</a>> T <a href="../../../src-html/co/aikar/commands/CommandOperationContext.html#line.87">getAnnotation</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> anno)</pre>
|
||||
public <T extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/annotation/Annotation.html?is-external=true" title="class or interface in java.lang.annotation">Annotation</a>> T <a href="../../../src-html/co/aikar/commands/CommandOperationContext.html#line.90">getAnnotation</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> anno)</pre>
|
||||
<div class="block"><span class="deprecatedLabel">Deprecated.</span> <span class="deprecationComment">Use <a href="../../../co/aikar/commands/CommandOperationContext.html#getAnnotationValue-java.lang.Class-"><code>getAnnotationValue(Class)</code></a></span></div>
|
||||
<div class="block">This method will not support annotation processors!! use getAnnotationValue or hasAnnotation</div>
|
||||
</li>
|
||||
@@ -294,7 +294,7 @@ public <T extends <a href="https://docs.oracle.com/javase/8/docs/api/jav
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>getAnnotationValue</h4>
|
||||
<pre>public <T extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/annotation/Annotation.html?is-external=true" title="class or interface in java.lang.annotation">Annotation</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/CommandOperationContext.html#line.91">getAnnotationValue</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> cls)</pre>
|
||||
<pre>public <T extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/annotation/Annotation.html?is-external=true" title="class or interface in java.lang.annotation">Annotation</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/CommandOperationContext.html#line.94">getAnnotationValue</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> cls)</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="getAnnotationValue-java.lang.Class-int-">
|
||||
@@ -303,7 +303,7 @@ public <T extends <a href="https://docs.oracle.com/javase/8/docs/api/jav
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>getAnnotationValue</h4>
|
||||
<pre>public <T extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/annotation/Annotation.html?is-external=true" title="class or interface in java.lang.annotation">Annotation</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/CommandOperationContext.html#line.95">getAnnotationValue</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> cls,
|
||||
<pre>public <T extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/annotation/Annotation.html?is-external=true" title="class or interface in java.lang.annotation">Annotation</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/CommandOperationContext.html#line.98">getAnnotationValue</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> cls,
|
||||
int options)</pre>
|
||||
</li>
|
||||
</ul>
|
||||
@@ -313,7 +313,7 @@ public <T extends <a href="https://docs.oracle.com/javase/8/docs/api/jav
|
||||
<ul class="blockListLast">
|
||||
<li class="blockList">
|
||||
<h4>hasAnnotation</h4>
|
||||
<pre>public boolean <a href="../../../src-html/co/aikar/commands/CommandOperationContext.html#line.99">hasAnnotation</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><? extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/annotation/Annotation.html?is-external=true" title="class or interface in java.lang.annotation">Annotation</a>> anno)</pre>
|
||||
<pre>public boolean <a href="../../../src-html/co/aikar/commands/CommandOperationContext.html#line.102">hasAnnotation</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><? extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/annotation/Annotation.html?is-external=true" title="class or interface in java.lang.annotation">Annotation</a>> anno)</pre>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
catch(err) {
|
||||
}
|
||||
//-->
|
||||
var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10,"i25":10,"i26":10,"i27":10,"i28":10};
|
||||
var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10,"i25":10,"i26":10,"i27":10,"i28":10,"i29":10};
|
||||
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
|
||||
var altColor = "altColor";
|
||||
var rowColor = "rowColor";
|
||||
@@ -108,7 +108,7 @@ var activeTableTab = "activeTableTab";
|
||||
<li class="blockList">
|
||||
<hr>
|
||||
<br>
|
||||
<pre>public class <a href="../../../src-html/co/aikar/commands/CommandParameter.html#line.43">CommandParameter</a><CEC extends <a href="../../../co/aikar/commands/CommandExecutionContext.html" title="class in co.aikar.commands">CommandExecutionContext</a><CEC,? extends <a href="../../../co/aikar/commands/CommandIssuer.html" title="interface in co.aikar.commands">CommandIssuer</a>>>
|
||||
<pre>public class <a href="../../../src-html/co/aikar/commands/CommandParameter.html#line.47">CommandParameter</a><CEC extends <a href="../../../co/aikar/commands/CommandExecutionContext.html" title="class in co.aikar.commands">CommandExecutionContext</a><CEC,? extends <a href="../../../co/aikar/commands/CommandIssuer.html" title="interface in co.aikar.commands">CommandIssuer</a>>>
|
||||
extends <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></pre>
|
||||
</li>
|
||||
</ul>
|
||||
@@ -185,82 +185,86 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/CommandParameter.html#getParamIndex--">getParamIndex</a></span>()</code> </td>
|
||||
</tr>
|
||||
<tr id="i9" class="rowColor">
|
||||
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</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>></code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/CommandParameter.html#getRequiredPermissions--">getRequiredPermissions</a></span>()</code> </td>
|
||||
</tr>
|
||||
<tr id="i10" class="altColor">
|
||||
<td class="colFirst"><code><a href="../../../co/aikar/commands/contexts/ContextResolver.html" title="interface in co.aikar.commands.contexts">ContextResolver</a><?,<a href="../../../co/aikar/commands/CommandParameter.html" title="type parameter in CommandParameter">CEC</a>></code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/CommandParameter.html#getResolver--">getResolver</a></span>()</code> </td>
|
||||
</tr>
|
||||
<tr id="i10" class="altColor">
|
||||
<tr id="i11" class="rowColor">
|
||||
<td class="colFirst"><code><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></code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/CommandParameter.html#getSyntax--">getSyntax</a></span>()</code> </td>
|
||||
</tr>
|
||||
<tr id="i11" class="rowColor">
|
||||
<tr id="i12" class="altColor">
|
||||
<td class="colFirst"><code><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><?></code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/CommandParameter.html#getType--">getType</a></span>()</code> </td>
|
||||
</tr>
|
||||
<tr id="i12" class="altColor">
|
||||
<tr id="i13" class="rowColor">
|
||||
<td class="colFirst"><code><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>[]</code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/CommandParameter.html#getValues--">getValues</a></span>()</code> </td>
|
||||
</tr>
|
||||
<tr id="i13" class="rowColor">
|
||||
<tr id="i14" class="altColor">
|
||||
<td class="colFirst"><code>boolean</code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/CommandParameter.html#isCommandIssuer--">isCommandIssuer</a></span>()</code> </td>
|
||||
</tr>
|
||||
<tr id="i14" class="altColor">
|
||||
<tr id="i15" class="rowColor">
|
||||
<td class="colFirst"><code>boolean</code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/CommandParameter.html#isOptional--">isOptional</a></span>()</code> </td>
|
||||
</tr>
|
||||
<tr id="i15" class="rowColor">
|
||||
<tr id="i16" class="altColor">
|
||||
<td class="colFirst"><code>boolean</code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/CommandParameter.html#isOptionalResolver--">isOptionalResolver</a></span>()</code> </td>
|
||||
</tr>
|
||||
<tr id="i16" class="altColor">
|
||||
<tr id="i17" class="rowColor">
|
||||
<td class="colFirst"><code>boolean</code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/CommandParameter.html#requiresInput--">requiresInput</a></span>()</code> </td>
|
||||
</tr>
|
||||
<tr id="i17" class="rowColor">
|
||||
<tr id="i18" class="altColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/CommandParameter.html#setCanConsumeInput-boolean-">setCanConsumeInput</a></span>(boolean canConsumeInput)</code> </td>
|
||||
</tr>
|
||||
<tr id="i18" class="altColor">
|
||||
<tr id="i19" class="rowColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/CommandParameter.html#setCommandIssuer-boolean-">setCommandIssuer</a></span>(boolean commandIssuer)</code> </td>
|
||||
</tr>
|
||||
<tr id="i19" class="rowColor">
|
||||
<tr id="i20" class="altColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/CommandParameter.html#setConditions-java.lang.String-">setConditions</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> conditions)</code> </td>
|
||||
</tr>
|
||||
<tr id="i20" class="altColor">
|
||||
<tr id="i21" class="rowColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/CommandParameter.html#setDefaultValue-java.lang.String-">setDefaultValue</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> defaultValue)</code> </td>
|
||||
</tr>
|
||||
<tr id="i21" class="rowColor">
|
||||
<tr id="i22" class="altColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/CommandParameter.html#setDescription-java.lang.String-">setDescription</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> description)</code> </td>
|
||||
</tr>
|
||||
<tr id="i22" class="altColor">
|
||||
<tr id="i23" class="rowColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/CommandParameter.html#setFlags-java.util.Map-">setFlags</a></span>(<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>> flags)</code> </td>
|
||||
</tr>
|
||||
<tr id="i23" class="rowColor">
|
||||
<tr id="i24" class="altColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/CommandParameter.html#setOptional-boolean-">setOptional</a></span>(boolean optional)</code> </td>
|
||||
</tr>
|
||||
<tr id="i24" class="altColor">
|
||||
<tr id="i25" class="rowColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/CommandParameter.html#setOptionalResolver-boolean-">setOptionalResolver</a></span>(boolean optionalResolver)</code> </td>
|
||||
</tr>
|
||||
<tr id="i25" class="rowColor">
|
||||
<tr id="i26" class="altColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/CommandParameter.html#setRequiresInput-boolean-">setRequiresInput</a></span>(boolean requiresInput)</code> </td>
|
||||
</tr>
|
||||
<tr id="i26" class="altColor">
|
||||
<tr id="i27" class="rowColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/CommandParameter.html#setResolver-co.aikar.commands.contexts.ContextResolver-">setResolver</a></span>(<a href="../../../co/aikar/commands/contexts/ContextResolver.html" title="interface in co.aikar.commands.contexts">ContextResolver</a><?,<a href="../../../co/aikar/commands/CommandParameter.html" title="type parameter in CommandParameter">CEC</a>> resolver)</code> </td>
|
||||
</tr>
|
||||
<tr id="i27" class="rowColor">
|
||||
<tr id="i28" class="altColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/CommandParameter.html#setSyntax-java.lang.String-">setSyntax</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> syntax)</code> </td>
|
||||
</tr>
|
||||
<tr id="i28" class="altColor">
|
||||
<tr id="i29" class="rowColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/CommandParameter.html#setValues-java.lang.String:A-">setValues</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>[] values)</code> </td>
|
||||
</tr>
|
||||
@@ -292,7 +296,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<ul class="blockListLast">
|
||||
<li class="blockList">
|
||||
<h4>CommandParameter</h4>
|
||||
<pre>public <a href="../../../src-html/co/aikar/commands/CommandParameter.html#line.64">CommandParameter</a>(<a href="../../../co/aikar/commands/RegisteredCommand.html" title="class in co.aikar.commands">RegisteredCommand</a><<a href="../../../co/aikar/commands/CommandParameter.html" title="type parameter in CommandParameter">CEC</a>> command,
|
||||
<pre>public <a href="../../../src-html/co/aikar/commands/CommandParameter.html#line.70">CommandParameter</a>(<a href="../../../co/aikar/commands/RegisteredCommand.html" title="class in co.aikar.commands">RegisteredCommand</a><<a href="../../../co/aikar/commands/CommandParameter.html" title="type parameter in CommandParameter">CEC</a>> command,
|
||||
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Parameter.html?is-external=true" title="class or interface in java.lang.reflect">Parameter</a> param,
|
||||
int paramIndex,
|
||||
boolean isLast)</pre>
|
||||
@@ -312,7 +316,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>getParameter</h4>
|
||||
<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Parameter.html?is-external=true" title="class or interface in java.lang.reflect">Parameter</a> <a href="../../../src-html/co/aikar/commands/CommandParameter.html#line.144">getParameter</a>()</pre>
|
||||
<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Parameter.html?is-external=true" title="class or interface in java.lang.reflect">Parameter</a> <a href="../../../src-html/co/aikar/commands/CommandParameter.html#line.159">getParameter</a>()</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="getType--">
|
||||
@@ -321,7 +325,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>getType</h4>
|
||||
<pre>public <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><?> <a href="../../../src-html/co/aikar/commands/CommandParameter.html#line.148">getType</a>()</pre>
|
||||
<pre>public <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><?> <a href="../../../src-html/co/aikar/commands/CommandParameter.html#line.163">getType</a>()</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="getName--">
|
||||
@@ -330,7 +334,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>getName</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/CommandParameter.html#line.152">getName</a>()</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/CommandParameter.html#line.167">getName</a>()</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="getManager--">
|
||||
@@ -339,7 +343,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>getManager</h4>
|
||||
<pre>public <a href="../../../co/aikar/commands/CommandManager.html" title="class in co.aikar.commands">CommandManager</a> <a href="../../../src-html/co/aikar/commands/CommandParameter.html#line.156">getManager</a>()</pre>
|
||||
<pre>public <a href="../../../co/aikar/commands/CommandManager.html" title="class in co.aikar.commands">CommandManager</a> <a href="../../../src-html/co/aikar/commands/CommandParameter.html#line.171">getManager</a>()</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="getParamIndex--">
|
||||
@@ -348,7 +352,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>getParamIndex</h4>
|
||||
<pre>public int <a href="../../../src-html/co/aikar/commands/CommandParameter.html#line.160">getParamIndex</a>()</pre>
|
||||
<pre>public int <a href="../../../src-html/co/aikar/commands/CommandParameter.html#line.175">getParamIndex</a>()</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="getResolver--">
|
||||
@@ -357,7 +361,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<ul class="blockList">
|
||||
<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/CommandParameter.html" title="type parameter in CommandParameter">CEC</a>> <a href="../../../src-html/co/aikar/commands/CommandParameter.html#line.164">getResolver</a>()</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/CommandParameter.html" title="type parameter in CommandParameter">CEC</a>> <a href="../../../src-html/co/aikar/commands/CommandParameter.html#line.179">getResolver</a>()</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="setResolver-co.aikar.commands.contexts.ContextResolver-">
|
||||
@@ -366,7 +370,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>setResolver</h4>
|
||||
<pre>public void <a href="../../../src-html/co/aikar/commands/CommandParameter.html#line.168">setResolver</a>(<a href="../../../co/aikar/commands/contexts/ContextResolver.html" title="interface in co.aikar.commands.contexts">ContextResolver</a><?,<a href="../../../co/aikar/commands/CommandParameter.html" title="type parameter in CommandParameter">CEC</a>> resolver)</pre>
|
||||
<pre>public void <a href="../../../src-html/co/aikar/commands/CommandParameter.html#line.183">setResolver</a>(<a href="../../../co/aikar/commands/contexts/ContextResolver.html" title="interface in co.aikar.commands.contexts">ContextResolver</a><?,<a href="../../../co/aikar/commands/CommandParameter.html" title="type parameter in CommandParameter">CEC</a>> resolver)</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="isOptional--">
|
||||
@@ -375,7 +379,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>isOptional</h4>
|
||||
<pre>public boolean <a href="../../../src-html/co/aikar/commands/CommandParameter.html#line.172">isOptional</a>()</pre>
|
||||
<pre>public boolean <a href="../../../src-html/co/aikar/commands/CommandParameter.html#line.187">isOptional</a>()</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="setOptional-boolean-">
|
||||
@@ -384,7 +388,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>setOptional</h4>
|
||||
<pre>public void <a href="../../../src-html/co/aikar/commands/CommandParameter.html#line.176">setOptional</a>(boolean optional)</pre>
|
||||
<pre>public void <a href="../../../src-html/co/aikar/commands/CommandParameter.html#line.191">setOptional</a>(boolean optional)</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="getDescription--">
|
||||
@@ -393,7 +397,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>getDescription</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/CommandParameter.html#line.180">getDescription</a>()</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/CommandParameter.html#line.195">getDescription</a>()</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="setDescription-java.lang.String-">
|
||||
@@ -402,7 +406,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>setDescription</h4>
|
||||
<pre>public void <a href="../../../src-html/co/aikar/commands/CommandParameter.html#line.184">setDescription</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> description)</pre>
|
||||
<pre>public void <a href="../../../src-html/co/aikar/commands/CommandParameter.html#line.199">setDescription</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> description)</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="getDefaultValue--">
|
||||
@@ -411,7 +415,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>getDefaultValue</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/CommandParameter.html#line.188">getDefaultValue</a>()</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/CommandParameter.html#line.203">getDefaultValue</a>()</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="setDefaultValue-java.lang.String-">
|
||||
@@ -420,7 +424,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>setDefaultValue</h4>
|
||||
<pre>public void <a href="../../../src-html/co/aikar/commands/CommandParameter.html#line.192">setDefaultValue</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> defaultValue)</pre>
|
||||
<pre>public void <a href="../../../src-html/co/aikar/commands/CommandParameter.html#line.207">setDefaultValue</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> defaultValue)</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="isCommandIssuer--">
|
||||
@@ -429,7 +433,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>isCommandIssuer</h4>
|
||||
<pre>public boolean <a href="../../../src-html/co/aikar/commands/CommandParameter.html#line.196">isCommandIssuer</a>()</pre>
|
||||
<pre>public boolean <a href="../../../src-html/co/aikar/commands/CommandParameter.html#line.211">isCommandIssuer</a>()</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="setCommandIssuer-boolean-">
|
||||
@@ -438,7 +442,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>setCommandIssuer</h4>
|
||||
<pre>public void <a href="../../../src-html/co/aikar/commands/CommandParameter.html#line.200">setCommandIssuer</a>(boolean commandIssuer)</pre>
|
||||
<pre>public void <a href="../../../src-html/co/aikar/commands/CommandParameter.html#line.215">setCommandIssuer</a>(boolean commandIssuer)</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="getValues--">
|
||||
@@ -447,7 +451,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>getValues</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/CommandParameter.html#line.204">getValues</a>()</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/CommandParameter.html#line.219">getValues</a>()</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="setValues-java.lang.String:A-">
|
||||
@@ -456,7 +460,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>setValues</h4>
|
||||
<pre>public void <a href="../../../src-html/co/aikar/commands/CommandParameter.html#line.208">setValues</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>[] values)</pre>
|
||||
<pre>public void <a href="../../../src-html/co/aikar/commands/CommandParameter.html#line.223">setValues</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>[] values)</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="getFlags--">
|
||||
@@ -465,7 +469,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>getFlags</h4>
|
||||
<pre>public <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>> <a href="../../../src-html/co/aikar/commands/CommandParameter.html#line.212">getFlags</a>()</pre>
|
||||
<pre>public <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>> <a href="../../../src-html/co/aikar/commands/CommandParameter.html#line.227">getFlags</a>()</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="setFlags-java.util.Map-">
|
||||
@@ -474,7 +478,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>setFlags</h4>
|
||||
<pre>public void <a href="../../../src-html/co/aikar/commands/CommandParameter.html#line.216">setFlags</a>(<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>> flags)</pre>
|
||||
<pre>public void <a href="../../../src-html/co/aikar/commands/CommandParameter.html#line.231">setFlags</a>(<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>> flags)</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="canConsumeInput--">
|
||||
@@ -483,7 +487,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>canConsumeInput</h4>
|
||||
<pre>public boolean <a href="../../../src-html/co/aikar/commands/CommandParameter.html#line.220">canConsumeInput</a>()</pre>
|
||||
<pre>public boolean <a href="../../../src-html/co/aikar/commands/CommandParameter.html#line.235">canConsumeInput</a>()</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="setCanConsumeInput-boolean-">
|
||||
@@ -492,7 +496,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>setCanConsumeInput</h4>
|
||||
<pre>public void <a href="../../../src-html/co/aikar/commands/CommandParameter.html#line.224">setCanConsumeInput</a>(boolean canConsumeInput)</pre>
|
||||
<pre>public void <a href="../../../src-html/co/aikar/commands/CommandParameter.html#line.239">setCanConsumeInput</a>(boolean canConsumeInput)</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="setOptionalResolver-boolean-">
|
||||
@@ -501,7 +505,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>setOptionalResolver</h4>
|
||||
<pre>public void <a href="../../../src-html/co/aikar/commands/CommandParameter.html#line.228">setOptionalResolver</a>(boolean optionalResolver)</pre>
|
||||
<pre>public void <a href="../../../src-html/co/aikar/commands/CommandParameter.html#line.243">setOptionalResolver</a>(boolean optionalResolver)</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="isOptionalResolver--">
|
||||
@@ -510,7 +514,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>isOptionalResolver</h4>
|
||||
<pre>public boolean <a href="../../../src-html/co/aikar/commands/CommandParameter.html#line.232">isOptionalResolver</a>()</pre>
|
||||
<pre>public boolean <a href="../../../src-html/co/aikar/commands/CommandParameter.html#line.247">isOptionalResolver</a>()</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="requiresInput--">
|
||||
@@ -519,7 +523,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>requiresInput</h4>
|
||||
<pre>public boolean <a href="../../../src-html/co/aikar/commands/CommandParameter.html#line.236">requiresInput</a>()</pre>
|
||||
<pre>public boolean <a href="../../../src-html/co/aikar/commands/CommandParameter.html#line.251">requiresInput</a>()</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="setRequiresInput-boolean-">
|
||||
@@ -528,7 +532,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>setRequiresInput</h4>
|
||||
<pre>public void <a href="../../../src-html/co/aikar/commands/CommandParameter.html#line.240">setRequiresInput</a>(boolean requiresInput)</pre>
|
||||
<pre>public void <a href="../../../src-html/co/aikar/commands/CommandParameter.html#line.255">setRequiresInput</a>(boolean requiresInput)</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="getSyntax--">
|
||||
@@ -537,7 +541,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>getSyntax</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/CommandParameter.html#line.244">getSyntax</a>()</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/CommandParameter.html#line.259">getSyntax</a>()</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="setSyntax-java.lang.String-">
|
||||
@@ -546,7 +550,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>setSyntax</h4>
|
||||
<pre>public void <a href="../../../src-html/co/aikar/commands/CommandParameter.html#line.248">setSyntax</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> syntax)</pre>
|
||||
<pre>public void <a href="../../../src-html/co/aikar/commands/CommandParameter.html#line.263">setSyntax</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> syntax)</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="getConditions--">
|
||||
@@ -555,16 +559,25 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>getConditions</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/CommandParameter.html#line.252">getConditions</a>()</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/CommandParameter.html#line.267">getConditions</a>()</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="setConditions-java.lang.String-">
|
||||
<!-- -->
|
||||
</a>
|
||||
<ul class="blockListLast">
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>setConditions</h4>
|
||||
<pre>public void <a href="../../../src-html/co/aikar/commands/CommandParameter.html#line.256">setConditions</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> conditions)</pre>
|
||||
<pre>public void <a href="../../../src-html/co/aikar/commands/CommandParameter.html#line.271">setConditions</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> conditions)</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="getRequiredPermissions--">
|
||||
<!-- -->
|
||||
</a>
|
||||
<ul class="blockListLast">
|
||||
<li class="blockList">
|
||||
<h4>getRequiredPermissions</h4>
|
||||
<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</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/CommandParameter.html#line.275">getRequiredPermissions</a>()</pre>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
@@ -199,15 +199,18 @@ implements co.aikar.locales.MessageKeyProvider</pre>
|
||||
<td class="colOne"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/MessageKeys.html#PERMISSION_DENIED">PERMISSION_DENIED</a></span></code> </td>
|
||||
</tr>
|
||||
<tr class="altColor">
|
||||
<td class="colOne"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/MessageKeys.html#PERMISSION_DENIED_PARAMETER">PERMISSION_DENIED_PARAMETER</a></span></code> </td>
|
||||
</tr>
|
||||
<tr class="rowColor">
|
||||
<td class="colOne"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/MessageKeys.html#PLEASE_SPECIFY_AT_LEAST">PLEASE_SPECIFY_AT_LEAST</a></span></code> </td>
|
||||
</tr>
|
||||
<tr class="rowColor">
|
||||
<tr class="altColor">
|
||||
<td class="colOne"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/MessageKeys.html#PLEASE_SPECIFY_AT_MOST">PLEASE_SPECIFY_AT_MOST</a></span></code> </td>
|
||||
</tr>
|
||||
<tr class="altColor">
|
||||
<tr class="rowColor">
|
||||
<td class="colOne"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/MessageKeys.html#PLEASE_SPECIFY_ONE_OF">PLEASE_SPECIFY_ONE_OF</a></span></code> </td>
|
||||
</tr>
|
||||
<tr class="rowColor">
|
||||
<tr class="altColor">
|
||||
<td class="colOne"><code><span class="memberNameLink"><a href="../../../co/aikar/commands/MessageKeys.html#UNKNOWN_COMMAND">UNKNOWN_COMMAND</a></span></code> </td>
|
||||
</tr>
|
||||
</table>
|
||||
@@ -280,13 +283,22 @@ the order they are declared.</div>
|
||||
<pre>public static final <a href="../../../co/aikar/commands/MessageKeys.html" title="enum in co.aikar.commands">MessageKeys</a> <a href="../../../src-html/co/aikar/commands/MessageKeys.html#line.34">PERMISSION_DENIED</a></pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="PERMISSION_DENIED_PARAMETER">
|
||||
<!-- -->
|
||||
</a>
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>PERMISSION_DENIED_PARAMETER</h4>
|
||||
<pre>public static final <a href="../../../co/aikar/commands/MessageKeys.html" title="enum in co.aikar.commands">MessageKeys</a> <a href="../../../src-html/co/aikar/commands/MessageKeys.html#line.35">PERMISSION_DENIED_PARAMETER</a></pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="ERROR_GENERIC_LOGGED">
|
||||
<!-- -->
|
||||
</a>
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>ERROR_GENERIC_LOGGED</h4>
|
||||
<pre>public static final <a href="../../../co/aikar/commands/MessageKeys.html" title="enum in co.aikar.commands">MessageKeys</a> <a href="../../../src-html/co/aikar/commands/MessageKeys.html#line.35">ERROR_GENERIC_LOGGED</a></pre>
|
||||
<pre>public static final <a href="../../../co/aikar/commands/MessageKeys.html" title="enum in co.aikar.commands">MessageKeys</a> <a href="../../../src-html/co/aikar/commands/MessageKeys.html#line.36">ERROR_GENERIC_LOGGED</a></pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="UNKNOWN_COMMAND">
|
||||
@@ -295,7 +307,7 @@ the order they are declared.</div>
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>UNKNOWN_COMMAND</h4>
|
||||
<pre>public static final <a href="../../../co/aikar/commands/MessageKeys.html" title="enum in co.aikar.commands">MessageKeys</a> <a href="../../../src-html/co/aikar/commands/MessageKeys.html#line.36">UNKNOWN_COMMAND</a></pre>
|
||||
<pre>public static final <a href="../../../co/aikar/commands/MessageKeys.html" title="enum in co.aikar.commands">MessageKeys</a> <a href="../../../src-html/co/aikar/commands/MessageKeys.html#line.37">UNKNOWN_COMMAND</a></pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="INVALID_SYNTAX">
|
||||
@@ -304,7 +316,7 @@ the order they are declared.</div>
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>INVALID_SYNTAX</h4>
|
||||
<pre>public static final <a href="../../../co/aikar/commands/MessageKeys.html" title="enum in co.aikar.commands">MessageKeys</a> <a href="../../../src-html/co/aikar/commands/MessageKeys.html#line.37">INVALID_SYNTAX</a></pre>
|
||||
<pre>public static final <a href="../../../co/aikar/commands/MessageKeys.html" title="enum in co.aikar.commands">MessageKeys</a> <a href="../../../src-html/co/aikar/commands/MessageKeys.html#line.38">INVALID_SYNTAX</a></pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="ERROR_PREFIX">
|
||||
@@ -313,7 +325,7 @@ the order they are declared.</div>
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>ERROR_PREFIX</h4>
|
||||
<pre>public static final <a href="../../../co/aikar/commands/MessageKeys.html" title="enum in co.aikar.commands">MessageKeys</a> <a href="../../../src-html/co/aikar/commands/MessageKeys.html#line.38">ERROR_PREFIX</a></pre>
|
||||
<pre>public static final <a href="../../../co/aikar/commands/MessageKeys.html" title="enum in co.aikar.commands">MessageKeys</a> <a href="../../../src-html/co/aikar/commands/MessageKeys.html#line.39">ERROR_PREFIX</a></pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="ERROR_PERFORMING_COMMAND">
|
||||
@@ -322,7 +334,7 @@ the order they are declared.</div>
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>ERROR_PERFORMING_COMMAND</h4>
|
||||
<pre>public static final <a href="../../../co/aikar/commands/MessageKeys.html" title="enum in co.aikar.commands">MessageKeys</a> <a href="../../../src-html/co/aikar/commands/MessageKeys.html#line.39">ERROR_PERFORMING_COMMAND</a></pre>
|
||||
<pre>public static final <a href="../../../co/aikar/commands/MessageKeys.html" title="enum in co.aikar.commands">MessageKeys</a> <a href="../../../src-html/co/aikar/commands/MessageKeys.html#line.40">ERROR_PERFORMING_COMMAND</a></pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="INFO_MESSAGE">
|
||||
@@ -331,7 +343,7 @@ the order they are declared.</div>
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>INFO_MESSAGE</h4>
|
||||
<pre>public static final <a href="../../../co/aikar/commands/MessageKeys.html" title="enum in co.aikar.commands">MessageKeys</a> <a href="../../../src-html/co/aikar/commands/MessageKeys.html#line.40">INFO_MESSAGE</a></pre>
|
||||
<pre>public static final <a href="../../../co/aikar/commands/MessageKeys.html" title="enum in co.aikar.commands">MessageKeys</a> <a href="../../../src-html/co/aikar/commands/MessageKeys.html#line.41">INFO_MESSAGE</a></pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="PLEASE_SPECIFY_ONE_OF">
|
||||
@@ -340,7 +352,7 @@ the order they are declared.</div>
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>PLEASE_SPECIFY_ONE_OF</h4>
|
||||
<pre>public static final <a href="../../../co/aikar/commands/MessageKeys.html" title="enum in co.aikar.commands">MessageKeys</a> <a href="../../../src-html/co/aikar/commands/MessageKeys.html#line.41">PLEASE_SPECIFY_ONE_OF</a></pre>
|
||||
<pre>public static final <a href="../../../co/aikar/commands/MessageKeys.html" title="enum in co.aikar.commands">MessageKeys</a> <a href="../../../src-html/co/aikar/commands/MessageKeys.html#line.42">PLEASE_SPECIFY_ONE_OF</a></pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="MUST_BE_A_NUMBER">
|
||||
@@ -349,7 +361,7 @@ the order they are declared.</div>
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>MUST_BE_A_NUMBER</h4>
|
||||
<pre>public static final <a href="../../../co/aikar/commands/MessageKeys.html" title="enum in co.aikar.commands">MessageKeys</a> <a href="../../../src-html/co/aikar/commands/MessageKeys.html#line.42">MUST_BE_A_NUMBER</a></pre>
|
||||
<pre>public static final <a href="../../../co/aikar/commands/MessageKeys.html" title="enum in co.aikar.commands">MessageKeys</a> <a href="../../../src-html/co/aikar/commands/MessageKeys.html#line.43">MUST_BE_A_NUMBER</a></pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="MUST_BE_MIN_LENGTH">
|
||||
@@ -358,7 +370,7 @@ the order they are declared.</div>
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>MUST_BE_MIN_LENGTH</h4>
|
||||
<pre>public static final <a href="../../../co/aikar/commands/MessageKeys.html" title="enum in co.aikar.commands">MessageKeys</a> <a href="../../../src-html/co/aikar/commands/MessageKeys.html#line.43">MUST_BE_MIN_LENGTH</a></pre>
|
||||
<pre>public static final <a href="../../../co/aikar/commands/MessageKeys.html" title="enum in co.aikar.commands">MessageKeys</a> <a href="../../../src-html/co/aikar/commands/MessageKeys.html#line.44">MUST_BE_MIN_LENGTH</a></pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="MUST_BE_MAX_LENGTH">
|
||||
@@ -367,7 +379,7 @@ the order they are declared.</div>
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>MUST_BE_MAX_LENGTH</h4>
|
||||
<pre>public static final <a href="../../../co/aikar/commands/MessageKeys.html" title="enum in co.aikar.commands">MessageKeys</a> <a href="../../../src-html/co/aikar/commands/MessageKeys.html#line.44">MUST_BE_MAX_LENGTH</a></pre>
|
||||
<pre>public static final <a href="../../../co/aikar/commands/MessageKeys.html" title="enum in co.aikar.commands">MessageKeys</a> <a href="../../../src-html/co/aikar/commands/MessageKeys.html#line.45">MUST_BE_MAX_LENGTH</a></pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="PLEASE_SPECIFY_AT_LEAST">
|
||||
@@ -376,7 +388,7 @@ the order they are declared.</div>
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>PLEASE_SPECIFY_AT_LEAST</h4>
|
||||
<pre>public static final <a href="../../../co/aikar/commands/MessageKeys.html" title="enum in co.aikar.commands">MessageKeys</a> <a href="../../../src-html/co/aikar/commands/MessageKeys.html#line.45">PLEASE_SPECIFY_AT_LEAST</a></pre>
|
||||
<pre>public static final <a href="../../../co/aikar/commands/MessageKeys.html" title="enum in co.aikar.commands">MessageKeys</a> <a href="../../../src-html/co/aikar/commands/MessageKeys.html#line.46">PLEASE_SPECIFY_AT_LEAST</a></pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="PLEASE_SPECIFY_AT_MOST">
|
||||
@@ -385,7 +397,7 @@ the order they are declared.</div>
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>PLEASE_SPECIFY_AT_MOST</h4>
|
||||
<pre>public static final <a href="../../../co/aikar/commands/MessageKeys.html" title="enum in co.aikar.commands">MessageKeys</a> <a href="../../../src-html/co/aikar/commands/MessageKeys.html#line.46">PLEASE_SPECIFY_AT_MOST</a></pre>
|
||||
<pre>public static final <a href="../../../co/aikar/commands/MessageKeys.html" title="enum in co.aikar.commands">MessageKeys</a> <a href="../../../src-html/co/aikar/commands/MessageKeys.html#line.47">PLEASE_SPECIFY_AT_MOST</a></pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="NOT_ALLOWED_ON_CONSOLE">
|
||||
@@ -394,7 +406,7 @@ the order they are declared.</div>
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>NOT_ALLOWED_ON_CONSOLE</h4>
|
||||
<pre>public static final <a href="../../../co/aikar/commands/MessageKeys.html" title="enum in co.aikar.commands">MessageKeys</a> <a href="../../../src-html/co/aikar/commands/MessageKeys.html#line.47">NOT_ALLOWED_ON_CONSOLE</a></pre>
|
||||
<pre>public static final <a href="../../../co/aikar/commands/MessageKeys.html" title="enum in co.aikar.commands">MessageKeys</a> <a href="../../../src-html/co/aikar/commands/MessageKeys.html#line.48">NOT_ALLOWED_ON_CONSOLE</a></pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="COULD_NOT_FIND_PLAYER">
|
||||
@@ -403,7 +415,7 @@ the order they are declared.</div>
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>COULD_NOT_FIND_PLAYER</h4>
|
||||
<pre>public static final <a href="../../../co/aikar/commands/MessageKeys.html" title="enum in co.aikar.commands">MessageKeys</a> <a href="../../../src-html/co/aikar/commands/MessageKeys.html#line.48">COULD_NOT_FIND_PLAYER</a></pre>
|
||||
<pre>public static final <a href="../../../co/aikar/commands/MessageKeys.html" title="enum in co.aikar.commands">MessageKeys</a> <a href="../../../src-html/co/aikar/commands/MessageKeys.html#line.49">COULD_NOT_FIND_PLAYER</a></pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="NO_COMMAND_MATCHED_SEARCH">
|
||||
@@ -412,7 +424,7 @@ the order they are declared.</div>
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>NO_COMMAND_MATCHED_SEARCH</h4>
|
||||
<pre>public static final <a href="../../../co/aikar/commands/MessageKeys.html" title="enum in co.aikar.commands">MessageKeys</a> <a href="../../../src-html/co/aikar/commands/MessageKeys.html#line.49">NO_COMMAND_MATCHED_SEARCH</a></pre>
|
||||
<pre>public static final <a href="../../../co/aikar/commands/MessageKeys.html" title="enum in co.aikar.commands">MessageKeys</a> <a href="../../../src-html/co/aikar/commands/MessageKeys.html#line.50">NO_COMMAND_MATCHED_SEARCH</a></pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="HELP_PAGE_INFORMATION">
|
||||
@@ -421,7 +433,7 @@ the order they are declared.</div>
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>HELP_PAGE_INFORMATION</h4>
|
||||
<pre>public static final <a href="../../../co/aikar/commands/MessageKeys.html" title="enum in co.aikar.commands">MessageKeys</a> <a href="../../../src-html/co/aikar/commands/MessageKeys.html#line.50">HELP_PAGE_INFORMATION</a></pre>
|
||||
<pre>public static final <a href="../../../co/aikar/commands/MessageKeys.html" title="enum in co.aikar.commands">MessageKeys</a> <a href="../../../src-html/co/aikar/commands/MessageKeys.html#line.51">HELP_PAGE_INFORMATION</a></pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="HELP_NO_RESULTS">
|
||||
@@ -430,7 +442,7 @@ the order they are declared.</div>
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>HELP_NO_RESULTS</h4>
|
||||
<pre>public static final <a href="../../../co/aikar/commands/MessageKeys.html" title="enum in co.aikar.commands">MessageKeys</a> <a href="../../../src-html/co/aikar/commands/MessageKeys.html#line.51">HELP_NO_RESULTS</a></pre>
|
||||
<pre>public static final <a href="../../../co/aikar/commands/MessageKeys.html" title="enum in co.aikar.commands">MessageKeys</a> <a href="../../../src-html/co/aikar/commands/MessageKeys.html#line.52">HELP_NO_RESULTS</a></pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="HELP_HEADER">
|
||||
@@ -439,7 +451,7 @@ the order they are declared.</div>
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>HELP_HEADER</h4>
|
||||
<pre>public static final <a href="../../../co/aikar/commands/MessageKeys.html" title="enum in co.aikar.commands">MessageKeys</a> <a href="../../../src-html/co/aikar/commands/MessageKeys.html#line.52">HELP_HEADER</a></pre>
|
||||
<pre>public static final <a href="../../../co/aikar/commands/MessageKeys.html" title="enum in co.aikar.commands">MessageKeys</a> <a href="../../../src-html/co/aikar/commands/MessageKeys.html#line.53">HELP_HEADER</a></pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="HELP_FORMAT">
|
||||
@@ -448,7 +460,7 @@ the order they are declared.</div>
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>HELP_FORMAT</h4>
|
||||
<pre>public static final <a href="../../../co/aikar/commands/MessageKeys.html" title="enum in co.aikar.commands">MessageKeys</a> <a href="../../../src-html/co/aikar/commands/MessageKeys.html#line.53">HELP_FORMAT</a></pre>
|
||||
<pre>public static final <a href="../../../co/aikar/commands/MessageKeys.html" title="enum in co.aikar.commands">MessageKeys</a> <a href="../../../src-html/co/aikar/commands/MessageKeys.html#line.54">HELP_FORMAT</a></pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="HELP_DETAILED_HEADER">
|
||||
@@ -457,7 +469,7 @@ the order they are declared.</div>
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>HELP_DETAILED_HEADER</h4>
|
||||
<pre>public static final <a href="../../../co/aikar/commands/MessageKeys.html" title="enum in co.aikar.commands">MessageKeys</a> <a href="../../../src-html/co/aikar/commands/MessageKeys.html#line.54">HELP_DETAILED_HEADER</a></pre>
|
||||
<pre>public static final <a href="../../../co/aikar/commands/MessageKeys.html" title="enum in co.aikar.commands">MessageKeys</a> <a href="../../../src-html/co/aikar/commands/MessageKeys.html#line.55">HELP_DETAILED_HEADER</a></pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="HELP_DETAILED_COMMAND_FORMAT">
|
||||
@@ -466,7 +478,7 @@ the order they are declared.</div>
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>HELP_DETAILED_COMMAND_FORMAT</h4>
|
||||
<pre>public static final <a href="../../../co/aikar/commands/MessageKeys.html" title="enum in co.aikar.commands">MessageKeys</a> <a href="../../../src-html/co/aikar/commands/MessageKeys.html#line.55">HELP_DETAILED_COMMAND_FORMAT</a></pre>
|
||||
<pre>public static final <a href="../../../co/aikar/commands/MessageKeys.html" title="enum in co.aikar.commands">MessageKeys</a> <a href="../../../src-html/co/aikar/commands/MessageKeys.html#line.56">HELP_DETAILED_COMMAND_FORMAT</a></pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="HELP_DETAILED_PARAMETER_FORMAT">
|
||||
@@ -475,7 +487,7 @@ the order they are declared.</div>
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>HELP_DETAILED_PARAMETER_FORMAT</h4>
|
||||
<pre>public static final <a href="../../../co/aikar/commands/MessageKeys.html" title="enum in co.aikar.commands">MessageKeys</a> <a href="../../../src-html/co/aikar/commands/MessageKeys.html#line.56">HELP_DETAILED_PARAMETER_FORMAT</a></pre>
|
||||
<pre>public static final <a href="../../../co/aikar/commands/MessageKeys.html" title="enum in co.aikar.commands">MessageKeys</a> <a href="../../../src-html/co/aikar/commands/MessageKeys.html#line.57">HELP_DETAILED_PARAMETER_FORMAT</a></pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="HELP_SEARCH_HEADER">
|
||||
@@ -484,7 +496,7 @@ the order they are declared.</div>
|
||||
<ul class="blockListLast">
|
||||
<li class="blockList">
|
||||
<h4>HELP_SEARCH_HEADER</h4>
|
||||
<pre>public static final <a href="../../../co/aikar/commands/MessageKeys.html" title="enum in co.aikar.commands">MessageKeys</a> <a href="../../../src-html/co/aikar/commands/MessageKeys.html#line.57">HELP_SEARCH_HEADER</a></pre>
|
||||
<pre>public static final <a href="../../../co/aikar/commands/MessageKeys.html" title="enum in co.aikar.commands">MessageKeys</a> <a href="../../../src-html/co/aikar/commands/MessageKeys.html#line.58">HELP_SEARCH_HEADER</a></pre>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
@@ -543,7 +555,7 @@ not permitted.)</div>
|
||||
<ul class="blockListLast">
|
||||
<li class="blockList">
|
||||
<h4>getMessageKey</h4>
|
||||
<pre>public co.aikar.locales.MessageKey <a href="../../../src-html/co/aikar/commands/MessageKeys.html#line.61">getMessageKey</a>()</pre>
|
||||
<pre>public co.aikar.locales.MessageKey <a href="../../../src-html/co/aikar/commands/MessageKeys.html#line.63">getMessageKey</a>()</pre>
|
||||
<dl>
|
||||
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
|
||||
<dd><code>getMessageKey</code> in interface <code>co.aikar.locales.MessageKeyProvider</code></dd>
|
||||
|
||||
@@ -265,7 +265,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
|
||||
<li class="blockList">
|
||||
<h4>getPermission</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 <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/RegisteredCommand.html#line.285">getPermission</a>()</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/RegisteredCommand.html#line.300">getPermission</a>()</pre>
|
||||
<div class="block"><span class="deprecatedLabel">Deprecated.</span> </div>
|
||||
<dl>
|
||||
<dt><span class="seeLabel">See Also:</span></dt>
|
||||
@@ -279,7 +279,7 @@ public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>getRequiredPermissions</h4>
|
||||
<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</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/RegisteredCommand.html#line.300">getRequiredPermissions</a>()</pre>
|
||||
<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</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/RegisteredCommand.html#line.315">getRequiredPermissions</a>()</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="requiresPermission-java.lang.String-">
|
||||
@@ -288,7 +288,7 @@ public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>requiresPermission</h4>
|
||||
<pre>public boolean <a href="../../../src-html/co/aikar/commands/RegisteredCommand.html#line.304">requiresPermission</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> permission)</pre>
|
||||
<pre>public boolean <a href="../../../src-html/co/aikar/commands/RegisteredCommand.html#line.319">requiresPermission</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> permission)</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="getPrefSubCommand--">
|
||||
@@ -297,7 +297,7 @@ public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>getPrefSubCommand</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/RegisteredCommand.html#line.308">getPrefSubCommand</a>()</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/RegisteredCommand.html#line.323">getPrefSubCommand</a>()</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="getSyntaxText--">
|
||||
@@ -306,7 +306,7 @@ public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>getSyntaxText</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/RegisteredCommand.html#line.312">getSyntaxText</a>()</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/RegisteredCommand.html#line.327">getSyntaxText</a>()</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="getHelpText--">
|
||||
@@ -315,7 +315,7 @@ public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>getHelpText</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/RegisteredCommand.html#line.316">getHelpText</a>()</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/RegisteredCommand.html#line.331">getHelpText</a>()</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="isPrivate--">
|
||||
@@ -324,7 +324,7 @@ public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>isPrivate</h4>
|
||||
<pre>public boolean <a href="../../../src-html/co/aikar/commands/RegisteredCommand.html#line.320">isPrivate</a>()</pre>
|
||||
<pre>public boolean <a href="../../../src-html/co/aikar/commands/RegisteredCommand.html#line.335">isPrivate</a>()</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="getCommand--">
|
||||
@@ -333,7 +333,7 @@ public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>getCommand</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/RegisteredCommand.html#line.324">getCommand</a>()</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/RegisteredCommand.html#line.339">getCommand</a>()</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="addSubcommand-java.lang.String-">
|
||||
@@ -342,7 +342,7 @@ public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>addSubcommand</h4>
|
||||
<pre>public void <a href="../../../src-html/co/aikar/commands/RegisteredCommand.html#line.328">addSubcommand</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 void <a href="../../../src-html/co/aikar/commands/RegisteredCommand.html#line.343">addSubcommand</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>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="addSubcommands-java.util.Collection-">
|
||||
@@ -351,7 +351,7 @@ public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.
|
||||
<ul class="blockList">
|
||||
<li class="blockList">
|
||||
<h4>addSubcommands</h4>
|
||||
<pre>public void <a href="../../../src-html/co/aikar/commands/RegisteredCommand.html#line.332">addSubcommands</a>(<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>> cmd)</pre>
|
||||
<pre>public void <a href="../../../src-html/co/aikar/commands/RegisteredCommand.html#line.347">addSubcommands</a>(<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>> cmd)</pre>
|
||||
</li>
|
||||
</ul>
|
||||
<a name="getAnnotation-java.lang.Class-">
|
||||
@@ -360,7 +360,7 @@ public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.
|
||||
<ul class="blockListLast">
|
||||
<li class="blockList">
|
||||
<h4>getAnnotation</h4>
|
||||
<pre>public <T extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/annotation/Annotation.html?is-external=true" title="class or interface in java.lang.annotation">Annotation</a>> T <a href="../../../src-html/co/aikar/commands/RegisteredCommand.html#line.336">getAnnotation</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> annotation)</pre>
|
||||
<pre>public <T extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/annotation/Annotation.html?is-external=true" title="class or interface in java.lang.annotation">Annotation</a>> T <a href="../../../src-html/co/aikar/commands/RegisteredCommand.html#line.351">getAnnotation</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> annotation)</pre>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
@@ -93,10 +93,10 @@
|
||||
<hr>
|
||||
<br>
|
||||
<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/annotation/Retention.html?is-external=true" title="class or interface in java.lang.annotation">@Retention</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/annotation/Retention.html?is-external=true#value--" title="class or interface in java.lang.annotation">value</a>=<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/annotation/RetentionPolicy.html?is-external=true#RUNTIME" title="class or interface in java.lang.annotation">RUNTIME</a>)
|
||||
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/annotation/Target.html?is-external=true" title="class or interface in java.lang.annotation">@Target</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/annotation/Target.html?is-external=true#value--" title="class or interface in java.lang.annotation">value</a>={<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/annotation/ElementType.html?is-external=true#METHOD" title="class or interface in java.lang.annotation">METHOD</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/annotation/ElementType.html?is-external=true#TYPE" title="class or interface in java.lang.annotation">TYPE</a>})
|
||||
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/annotation/Target.html?is-external=true" title="class or interface in java.lang.annotation">@Target</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/annotation/Target.html?is-external=true#value--" title="class or interface in java.lang.annotation">value</a>={<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/annotation/ElementType.html?is-external=true#METHOD" title="class or interface in java.lang.annotation">METHOD</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/annotation/ElementType.html?is-external=true#TYPE" title="class or interface in java.lang.annotation">TYPE</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/annotation/ElementType.html?is-external=true#PARAMETER" title="class or interface in java.lang.annotation">PARAMETER</a>})
|
||||
public @interface <a href="../../../../src-html/co/aikar/commands/annotation/CommandPermission.html#line.38">CommandPermission</a></pre>
|
||||
<div class="block">Sets the permission required to perform this command.
|
||||
|
||||
<p>
|
||||
Permission format will vary based on implementation platform</div>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
@@ -348,95 +348,100 @@
|
||||
</tr>
|
||||
<tr class="rowColor">
|
||||
<td class="colFirst"><code>boolean</code></td>
|
||||
<td class="colLast"><span class="typeNameLabel">CommandManager.</span><code><span class="memberNameLink"><a href="../../../../co/aikar/commands/CommandManager.html#hasPermission-co.aikar.commands.CommandIssuer-java.util.Set-">hasPermission</a></span>(<a href="../../../../co/aikar/commands/CommandIssuer.html" title="interface in co.aikar.commands">CommandIssuer</a> issuer,
|
||||
<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</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>> permissions)</code> </td>
|
||||
</tr>
|
||||
<tr class="altColor">
|
||||
<td class="colFirst"><code>boolean</code></td>
|
||||
<td class="colLast"><span class="typeNameLabel">CommandManager.</span><code><span class="memberNameLink"><a href="../../../../co/aikar/commands/CommandManager.html#hasPermission-co.aikar.commands.CommandIssuer-java.lang.String-">hasPermission</a></span>(<a href="../../../../co/aikar/commands/CommandIssuer.html" title="interface in co.aikar.commands">CommandIssuer</a> 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> permission)</code> </td>
|
||||
</tr>
|
||||
<tr class="altColor">
|
||||
<tr class="rowColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<td class="colLast"><span class="typeNameLabel">BaseCommand.</span><code><span class="memberNameLink"><a href="../../../../co/aikar/commands/BaseCommand.html#help-co.aikar.commands.CommandIssuer-java.lang.String:A-">help</a></span>(<a href="../../../../co/aikar/commands/CommandIssuer.html" title="interface in co.aikar.commands">CommandIssuer</a> 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>[] args)</code> </td>
|
||||
</tr>
|
||||
<tr class="rowColor">
|
||||
<tr class="altColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<td class="colLast"><span class="typeNameLabel">CommandHelpFormatter.</span><code><span class="memberNameLink"><a href="../../../../co/aikar/commands/CommandHelpFormatter.html#printDetailedHelpCommand-co.aikar.commands.CommandHelp-co.aikar.commands.CommandIssuer-co.aikar.commands.HelpEntry-">printDetailedHelpCommand</a></span>(<a href="../../../../co/aikar/commands/CommandHelp.html" title="class in co.aikar.commands">CommandHelp</a> help,
|
||||
<a href="../../../../co/aikar/commands/CommandIssuer.html" title="interface in co.aikar.commands">CommandIssuer</a> issuer,
|
||||
<a href="../../../../co/aikar/commands/HelpEntry.html" title="class in co.aikar.commands">HelpEntry</a> entry)</code> </td>
|
||||
</tr>
|
||||
<tr class="altColor">
|
||||
<tr class="rowColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<td class="colLast"><span class="typeNameLabel">CommandHelpFormatter.</span><code><span class="memberNameLink"><a href="../../../../co/aikar/commands/CommandHelpFormatter.html#printDetailedHelpFooter-co.aikar.commands.CommandHelp-co.aikar.commands.CommandIssuer-co.aikar.commands.HelpEntry-">printDetailedHelpFooter</a></span>(<a href="../../../../co/aikar/commands/CommandHelp.html" title="class in co.aikar.commands">CommandHelp</a> help,
|
||||
<a href="../../../../co/aikar/commands/CommandIssuer.html" title="interface in co.aikar.commands">CommandIssuer</a> issuer,
|
||||
<a href="../../../../co/aikar/commands/HelpEntry.html" title="class in co.aikar.commands">HelpEntry</a> entry)</code> </td>
|
||||
</tr>
|
||||
<tr class="rowColor">
|
||||
<tr class="altColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<td class="colLast"><span class="typeNameLabel">CommandHelpFormatter.</span><code><span class="memberNameLink"><a href="../../../../co/aikar/commands/CommandHelpFormatter.html#printDetailedHelpHeader-co.aikar.commands.CommandHelp-co.aikar.commands.CommandIssuer-co.aikar.commands.HelpEntry-">printDetailedHelpHeader</a></span>(<a href="../../../../co/aikar/commands/CommandHelp.html" title="class in co.aikar.commands">CommandHelp</a> help,
|
||||
<a href="../../../../co/aikar/commands/CommandIssuer.html" title="interface in co.aikar.commands">CommandIssuer</a> issuer,
|
||||
<a href="../../../../co/aikar/commands/HelpEntry.html" title="class in co.aikar.commands">HelpEntry</a> entry)</code> </td>
|
||||
</tr>
|
||||
<tr class="altColor">
|
||||
<tr class="rowColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<td class="colLast"><span class="typeNameLabel">CommandHelpFormatter.</span><code><span class="memberNameLink"><a href="../../../../co/aikar/commands/CommandHelpFormatter.html#printDetailedParameter-co.aikar.commands.CommandHelp-co.aikar.commands.CommandIssuer-co.aikar.commands.HelpEntry-co.aikar.commands.CommandParameter-">printDetailedParameter</a></span>(<a href="../../../../co/aikar/commands/CommandHelp.html" title="class in co.aikar.commands">CommandHelp</a> help,
|
||||
<a href="../../../../co/aikar/commands/CommandIssuer.html" title="interface in co.aikar.commands">CommandIssuer</a> issuer,
|
||||
<a href="../../../../co/aikar/commands/HelpEntry.html" title="class in co.aikar.commands">HelpEntry</a> entry,
|
||||
<a href="../../../../co/aikar/commands/CommandParameter.html" title="class in co.aikar.commands">CommandParameter</a> param)</code> </td>
|
||||
</tr>
|
||||
<tr class="rowColor">
|
||||
<tr class="altColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<td class="colLast"><span class="typeNameLabel">CommandHelpFormatter.</span><code><span class="memberNameLink"><a href="../../../../co/aikar/commands/CommandHelpFormatter.html#printHelpCommand-co.aikar.commands.CommandHelp-co.aikar.commands.CommandIssuer-co.aikar.commands.HelpEntry-">printHelpCommand</a></span>(<a href="../../../../co/aikar/commands/CommandHelp.html" title="class in co.aikar.commands">CommandHelp</a> help,
|
||||
<a href="../../../../co/aikar/commands/CommandIssuer.html" title="interface in co.aikar.commands">CommandIssuer</a> issuer,
|
||||
<a href="../../../../co/aikar/commands/HelpEntry.html" title="class in co.aikar.commands">HelpEntry</a> entry)</code> </td>
|
||||
</tr>
|
||||
<tr class="altColor">
|
||||
<tr class="rowColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<td class="colLast"><span class="typeNameLabel">CommandHelpFormatter.</span><code><span class="memberNameLink"><a href="../../../../co/aikar/commands/CommandHelpFormatter.html#printHelpFooter-co.aikar.commands.CommandHelp-co.aikar.commands.CommandIssuer-">printHelpFooter</a></span>(<a href="../../../../co/aikar/commands/CommandHelp.html" title="class in co.aikar.commands">CommandHelp</a> help,
|
||||
<a href="../../../../co/aikar/commands/CommandIssuer.html" title="interface in co.aikar.commands">CommandIssuer</a> issuer)</code> </td>
|
||||
</tr>
|
||||
<tr class="rowColor">
|
||||
<tr class="altColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<td class="colLast"><span class="typeNameLabel">CommandHelpFormatter.</span><code><span class="memberNameLink"><a href="../../../../co/aikar/commands/CommandHelpFormatter.html#printHelpHeader-co.aikar.commands.CommandHelp-co.aikar.commands.CommandIssuer-">printHelpHeader</a></span>(<a href="../../../../co/aikar/commands/CommandHelp.html" title="class in co.aikar.commands">CommandHelp</a> help,
|
||||
<a href="../../../../co/aikar/commands/CommandIssuer.html" title="interface in co.aikar.commands">CommandIssuer</a> issuer)</code> </td>
|
||||
</tr>
|
||||
<tr class="altColor">
|
||||
<tr class="rowColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<td class="colLast"><span class="typeNameLabel">CommandHelpFormatter.</span><code><span class="memberNameLink"><a href="../../../../co/aikar/commands/CommandHelpFormatter.html#printSearchEntry-co.aikar.commands.CommandHelp-co.aikar.commands.CommandIssuer-co.aikar.commands.HelpEntry-">printSearchEntry</a></span>(<a href="../../../../co/aikar/commands/CommandHelp.html" title="class in co.aikar.commands">CommandHelp</a> help,
|
||||
<a href="../../../../co/aikar/commands/CommandIssuer.html" title="interface in co.aikar.commands">CommandIssuer</a> issuer,
|
||||
<a href="../../../../co/aikar/commands/HelpEntry.html" title="class in co.aikar.commands">HelpEntry</a> page)</code> </td>
|
||||
</tr>
|
||||
<tr class="rowColor">
|
||||
<tr class="altColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<td class="colLast"><span class="typeNameLabel">CommandHelpFormatter.</span><code><span class="memberNameLink"><a href="../../../../co/aikar/commands/CommandHelpFormatter.html#printSearchFooter-co.aikar.commands.CommandHelp-co.aikar.commands.CommandIssuer-">printSearchFooter</a></span>(<a href="../../../../co/aikar/commands/CommandHelp.html" title="class in co.aikar.commands">CommandHelp</a> help,
|
||||
<a href="../../../../co/aikar/commands/CommandIssuer.html" title="interface in co.aikar.commands">CommandIssuer</a> issuer)</code> </td>
|
||||
</tr>
|
||||
<tr class="altColor">
|
||||
<tr class="rowColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<td class="colLast"><span class="typeNameLabel">CommandHelpFormatter.</span><code><span class="memberNameLink"><a href="../../../../co/aikar/commands/CommandHelpFormatter.html#printSearchHeader-co.aikar.commands.CommandHelp-co.aikar.commands.CommandIssuer-">printSearchHeader</a></span>(<a href="../../../../co/aikar/commands/CommandHelp.html" title="class in co.aikar.commands">CommandHelp</a> help,
|
||||
<a href="../../../../co/aikar/commands/CommandIssuer.html" title="interface in co.aikar.commands">CommandIssuer</a> issuer)</code> </td>
|
||||
</tr>
|
||||
<tr class="rowColor">
|
||||
<tr class="altColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<td class="colLast"><span class="typeNameLabel">CommandManager.</span><code><span class="memberNameLink"><a href="../../../../co/aikar/commands/CommandManager.html#sendMessage-co.aikar.commands.CommandIssuer-co.aikar.commands.MessageType-co.aikar.locales.MessageKeyProvider-java.lang.String...-">sendMessage</a></span>(<a href="../../../../co/aikar/commands/CommandIssuer.html" title="interface in co.aikar.commands">CommandIssuer</a> issuer,
|
||||
<a href="../../../../co/aikar/commands/MessageType.html" title="class in co.aikar.commands">MessageType</a> type,
|
||||
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>... replacements)</code> </td>
|
||||
</tr>
|
||||
<tr class="altColor">
|
||||
<tr class="rowColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<td class="colLast"><span class="typeNameLabel">CommandHelp.</span><code><span class="memberNameLink"><a href="../../../../co/aikar/commands/CommandHelp.html#showHelp-co.aikar.commands.CommandIssuer-">showHelp</a></span>(<a href="../../../../co/aikar/commands/CommandIssuer.html" title="interface in co.aikar.commands">CommandIssuer</a> issuer)</code> </td>
|
||||
</tr>
|
||||
<tr class="rowColor">
|
||||
<tr class="altColor">
|
||||
<td class="colFirst"><code>void</code></td>
|
||||
<td class="colLast"><span class="typeNameLabel">BaseCommand.</span><code><span class="memberNameLink"><a href="../../../../co/aikar/commands/BaseCommand.html#showSyntax-co.aikar.commands.CommandIssuer-co.aikar.commands.RegisteredCommand-">showSyntax</a></span>(<a href="../../../../co/aikar/commands/CommandIssuer.html" title="interface in co.aikar.commands">CommandIssuer</a> issuer,
|
||||
<a href="../../../../co/aikar/commands/RegisteredCommand.html" title="class in co.aikar.commands">RegisteredCommand</a><?> cmd)</code> </td>
|
||||
</tr>
|
||||
<tr class="altColor">
|
||||
<tr class="rowColor">
|
||||
<td class="colFirst"><code><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>></code></td>
|
||||
<td class="colLast"><span class="typeNameLabel">ForwardingCommand.</span><code><span class="memberNameLink"><a href="../../../../co/aikar/commands/ForwardingCommand.html#tabComplete-co.aikar.commands.CommandIssuer-co.aikar.commands.RootCommand-java.lang.String:A-boolean-">tabComplete</a></span>(<a href="../../../../co/aikar/commands/CommandIssuer.html" title="interface in co.aikar.commands">CommandIssuer</a> issuer,
|
||||
<a href="../../../../co/aikar/commands/RootCommand.html" title="interface in co.aikar.commands">RootCommand</a> rootCommand,
|
||||
<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,
|
||||
boolean isAsync)</code> </td>
|
||||
</tr>
|
||||
<tr class="rowColor">
|
||||
<tr class="altColor">
|
||||
<td class="colFirst"><code><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>></code></td>
|
||||
<td class="colLast"><span class="typeNameLabel">BaseCommand.</span><code><span class="memberNameLink"><a href="../../../../co/aikar/commands/BaseCommand.html#tabComplete-co.aikar.commands.CommandIssuer-java.lang.String-java.lang.String:A-">tabComplete</a></span>(<a href="../../../../co/aikar/commands/CommandIssuer.html" title="interface in co.aikar.commands">CommandIssuer</a> 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> commandLabel,
|
||||
@@ -444,7 +449,7 @@
|
||||
<div class="block">Gets tab completed data from the given command from the user.</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="altColor">
|
||||
<tr class="rowColor">
|
||||
<td class="colFirst"><code><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>></code></td>
|
||||
<td class="colLast"><span class="typeNameLabel">BaseCommand.</span><code><span class="memberNameLink"><a href="../../../../co/aikar/commands/BaseCommand.html#tabComplete-co.aikar.commands.CommandIssuer-java.lang.String-java.lang.String:A-boolean-">tabComplete</a></span>(<a href="../../../../co/aikar/commands/CommandIssuer.html" title="interface in co.aikar.commands">CommandIssuer</a> 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> commandLabel,
|
||||
|
||||
@@ -799,6 +799,8 @@
|
||||
<dd>
|
||||
<div class="block">Override this to control replacements</div>
|
||||
</dd>
|
||||
<dt><span class="memberNameLink"><a href="co/aikar/commands/CommandExecutionContext.html#getParameterPermissions--">getParameterPermissions()</a></span> - Method in class co.aikar.commands.<a href="co/aikar/commands/CommandExecutionContext.html" title="class in co.aikar.commands">CommandExecutionContext</a></dt>
|
||||
<dd> </dd>
|
||||
<dt><span class="memberNameLink"><a href="co/aikar/commands/HelpEntry.html#getParameters--">getParameters()</a></span> - Method in class co.aikar.commands.<a href="co/aikar/commands/HelpEntry.html" title="class in co.aikar.commands">HelpEntry</a></dt>
|
||||
<dd> </dd>
|
||||
<dt><span class="memberNameLink"><a href="co/aikar/commands/HelpEntry.html#getParameterSyntax--">getParameterSyntax()</a></span> - Method in class co.aikar.commands.<a href="co/aikar/commands/HelpEntry.html" title="class in co.aikar.commands">HelpEntry</a></dt>
|
||||
@@ -825,6 +827,8 @@
|
||||
<dd> </dd>
|
||||
<dt><span class="memberNameLink"><a href="co/aikar/commands/BaseCommand.html#getRequiredPermissions--">getRequiredPermissions()</a></span> - Method in class co.aikar.commands.<a href="co/aikar/commands/BaseCommand.html" title="class in co.aikar.commands">BaseCommand</a></dt>
|
||||
<dd> </dd>
|
||||
<dt><span class="memberNameLink"><a href="co/aikar/commands/CommandParameter.html#getRequiredPermissions--">getRequiredPermissions()</a></span> - Method in class co.aikar.commands.<a href="co/aikar/commands/CommandParameter.html" title="class in co.aikar.commands">CommandParameter</a></dt>
|
||||
<dd> </dd>
|
||||
<dt><span class="memberNameLink"><a href="co/aikar/commands/ForwardingCommand.html#getRequiredPermissions--">getRequiredPermissions()</a></span> - Method in class co.aikar.commands.<a href="co/aikar/commands/ForwardingCommand.html" title="class in co.aikar.commands">ForwardingCommand</a></dt>
|
||||
<dd> </dd>
|
||||
<dt><span class="memberNameLink"><a href="co/aikar/commands/RegisteredCommand.html#getRequiredPermissions--">getRequiredPermissions()</a></span> - Method in class co.aikar.commands.<a href="co/aikar/commands/RegisteredCommand.html" title="class in co.aikar.commands">RegisteredCommand</a></dt>
|
||||
@@ -952,6 +956,8 @@
|
||||
<dd>
|
||||
<div class="block">Has permission node</div>
|
||||
</dd>
|
||||
<dt><span class="memberNameLink"><a href="co/aikar/commands/CommandManager.html#hasPermission-co.aikar.commands.CommandIssuer-java.util.Set-">hasPermission(CommandIssuer, Set<String>)</a></span> - Method in class co.aikar.commands.<a href="co/aikar/commands/CommandManager.html" title="class in co.aikar.commands">CommandManager</a></dt>
|
||||
<dd> </dd>
|
||||
<dt><span class="memberNameLink"><a href="co/aikar/commands/CommandManager.html#hasPermission-co.aikar.commands.CommandIssuer-java.lang.String-">hasPermission(CommandIssuer, String)</a></span> - Method in class co.aikar.commands.<a href="co/aikar/commands/CommandManager.html" title="class in co.aikar.commands">CommandManager</a></dt>
|
||||
<dd> </dd>
|
||||
<dt><span class="memberNameLink"><a href="co/aikar/commands/ForwardingCommand.html#hasPermission-java.lang.Object-">hasPermission(Object)</a></span> - Method in class co.aikar.commands.<a href="co/aikar/commands/ForwardingCommand.html" title="class in co.aikar.commands">ForwardingCommand</a></dt>
|
||||
@@ -1713,6 +1719,10 @@
|
||||
<dd> </dd>
|
||||
<dt><span class="memberNameLink"><a href="co/aikar/commands/BaseCommand.html#setContextFlags-java.lang.Class-java.lang.String-">setContextFlags(Class<?>, String)</a></span> - Method in class co.aikar.commands.<a href="co/aikar/commands/BaseCommand.html" title="class in co.aikar.commands">BaseCommand</a></dt>
|
||||
<dd> </dd>
|
||||
<dt><span class="memberNameLink"><a href="co/aikar/commands/CommandCompletions.html#setDefaultCompletion-java.lang.String-java.lang.Class...-">setDefaultCompletion(String, Class...)</a></span> - Method in class co.aikar.commands.<a href="co/aikar/commands/CommandCompletions.html" title="class in co.aikar.commands">CommandCompletions</a></dt>
|
||||
<dd>
|
||||
<div class="block">Registers a completion handler such as @players to default apply to all command parameters of the specified types</div>
|
||||
</dd>
|
||||
<dt><span class="memberNameLink"><a href="co/aikar/commands/CommandManager.html#setDefaultExceptionHandler-co.aikar.commands.ExceptionHandler-">setDefaultExceptionHandler(ExceptionHandler)</a></span> - Method in class co.aikar.commands.<a href="co/aikar/commands/CommandManager.html" title="class in co.aikar.commands">CommandManager</a></dt>
|
||||
<dd>
|
||||
<div class="block">Sets the default <a href="co/aikar/commands/ExceptionHandler.html" title="interface in co.aikar.commands"><code>ExceptionHandler</code></a> that is called when an exception occurs while executing a command, if the command doesn't have it's own exception handler registered.</div>
|
||||
|
||||
@@ -688,7 +688,7 @@
|
||||
<span class="sourceLineNo">680</span> * @return All results to complete the command.<a name="line.680"></a>
|
||||
<span class="sourceLineNo">681</span> */<a name="line.681"></a>
|
||||
<span class="sourceLineNo">682</span> private List<String> completeCommand(CommandIssuer issuer, RegisteredCommand cmd, String[] args, String commandLabel, boolean isAsync) {<a name="line.682"></a>
|
||||
<span class="sourceLineNo">683</span> if (!cmd.hasPermission(issuer) || args.length > cmd.consumeInputResolvers || args.length == 0 || cmd.complete == null) {<a name="line.683"></a>
|
||||
<span class="sourceLineNo">683</span> if (!cmd.hasPermission(issuer) || args.length > cmd.consumeInputResolvers || args.length == 0) {<a name="line.683"></a>
|
||||
<span class="sourceLineNo">684</span> return Collections.emptyList();<a name="line.684"></a>
|
||||
<span class="sourceLineNo">685</span> }<a name="line.685"></a>
|
||||
<span class="sourceLineNo">686</span><a name="line.686"></a>
|
||||
@@ -796,7 +796,7 @@
|
||||
<span class="sourceLineNo">788</span> }<a name="line.788"></a>
|
||||
<span class="sourceLineNo">789</span><a name="line.789"></a>
|
||||
<span class="sourceLineNo">790</span> public boolean hasPermission(CommandIssuer issuer) {<a name="line.790"></a>
|
||||
<span class="sourceLineNo">791</span> return getRequiredPermissions().isEmpty() || getRequiredPermissions().stream().allMatch(permission -> manager.hasPermission(issuer, permission));<a name="line.791"></a>
|
||||
<span class="sourceLineNo">791</span> return this.manager.hasPermission(issuer, getRequiredPermissions());<a name="line.791"></a>
|
||||
<span class="sourceLineNo">792</span> }<a name="line.792"></a>
|
||||
<span class="sourceLineNo">793</span><a name="line.793"></a>
|
||||
<span class="sourceLineNo">794</span> public Set<String> getRequiredPermissions() {<a name="line.794"></a>
|
||||
|
||||
+242
-196
@@ -47,207 +47,253 @@
|
||||
<span class="sourceLineNo">039</span><a name="line.39"></a>
|
||||
<span class="sourceLineNo">040</span>@SuppressWarnings({"WeakerAccess", "UnusedReturnValue"})<a name="line.40"></a>
|
||||
<span class="sourceLineNo">041</span>public class CommandCompletions<C extends CommandCompletionContext> {<a name="line.41"></a>
|
||||
<span class="sourceLineNo">042</span> private final CommandManager manager;<a name="line.42"></a>
|
||||
<span class="sourceLineNo">043</span> private Map<String, CommandCompletionHandler> completionMap = new HashMap<>();<a name="line.43"></a>
|
||||
<span class="sourceLineNo">044</span> private Map<Class, String> defaultCompletions = new HashMap<>();<a name="line.44"></a>
|
||||
<span class="sourceLineNo">045</span><a name="line.45"></a>
|
||||
<span class="sourceLineNo">046</span> public CommandCompletions(CommandManager manager) {<a name="line.46"></a>
|
||||
<span class="sourceLineNo">047</span> this.manager = manager;<a name="line.47"></a>
|
||||
<span class="sourceLineNo">048</span> registerAsyncCompletion("nothing", c -> Collections.emptyList());<a name="line.48"></a>
|
||||
<span class="sourceLineNo">049</span> registerAsyncCompletion("range", (c) -> {<a name="line.49"></a>
|
||||
<span class="sourceLineNo">050</span> String config = c.getConfig();<a name="line.50"></a>
|
||||
<span class="sourceLineNo">051</span> if (config == null) {<a name="line.51"></a>
|
||||
<span class="sourceLineNo">052</span> return Collections.emptyList();<a name="line.52"></a>
|
||||
<span class="sourceLineNo">053</span> }<a name="line.53"></a>
|
||||
<span class="sourceLineNo">054</span> final String[] ranges = ACFPatterns.DASH.split(config);<a name="line.54"></a>
|
||||
<span class="sourceLineNo">055</span> int start;<a name="line.55"></a>
|
||||
<span class="sourceLineNo">056</span> int end;<a name="line.56"></a>
|
||||
<span class="sourceLineNo">057</span> if (ranges.length != 2) {<a name="line.57"></a>
|
||||
<span class="sourceLineNo">058</span> start = 0;<a name="line.58"></a>
|
||||
<span class="sourceLineNo">059</span> end = ACFUtil.parseInt(ranges[0], 0);<a name="line.59"></a>
|
||||
<span class="sourceLineNo">060</span> } else {<a name="line.60"></a>
|
||||
<span class="sourceLineNo">061</span> start = ACFUtil.parseInt(ranges[0], 0);<a name="line.61"></a>
|
||||
<span class="sourceLineNo">062</span> end = ACFUtil.parseInt(ranges[1], 0);<a name="line.62"></a>
|
||||
<span class="sourceLineNo">063</span> }<a name="line.63"></a>
|
||||
<span class="sourceLineNo">064</span> return IntStream.rangeClosed(start, end).mapToObj(Integer::toString).collect(Collectors.toList());<a name="line.64"></a>
|
||||
<span class="sourceLineNo">065</span> });<a name="line.65"></a>
|
||||
<span class="sourceLineNo">066</span> List<String> timeunits = Arrays.asList("minutes", "hours", "days", "weeks", "months", "years");<a name="line.66"></a>
|
||||
<span class="sourceLineNo">067</span> registerAsyncCompletion("timeunits", (c) -> timeunits);<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> * Registr a completion handler to provide command completions based on the user input.<a name="line.71"></a>
|
||||
<span class="sourceLineNo">072</span> *<a name="line.72"></a>
|
||||
<span class="sourceLineNo">073</span> * @param id<a name="line.73"></a>
|
||||
<span class="sourceLineNo">074</span> * @param handler<a name="line.74"></a>
|
||||
<span class="sourceLineNo">075</span> * @return<a name="line.75"></a>
|
||||
<span class="sourceLineNo">076</span> */<a name="line.76"></a>
|
||||
<span class="sourceLineNo">077</span> public CommandCompletionHandler registerCompletion(String id, CommandCompletionHandler<C> handler) {<a name="line.77"></a>
|
||||
<span class="sourceLineNo">078</span> return this.completionMap.put("@" + id.toLowerCase(), handler);<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> /**<a name="line.81"></a>
|
||||
<span class="sourceLineNo">082</span> * Registr a completion handler to provide command completions based on the user input.<a name="line.82"></a>
|
||||
<span class="sourceLineNo">083</span> * This handler is declared to be safe to be executed asynchronously.<a name="line.83"></a>
|
||||
<span class="sourceLineNo">084</span> * <p><a name="line.84"></a>
|
||||
<span class="sourceLineNo">085</span> * Not all platforms support this, so if the platform does not support asynchronous execution,<a name="line.85"></a>
|
||||
<span class="sourceLineNo">086</span> * your handler will be executed on the main thread.<a name="line.86"></a>
|
||||
<span class="sourceLineNo">087</span> * <p><a name="line.87"></a>
|
||||
<span class="sourceLineNo">088</span> * Use this anytime your handler does not need to access state that is not considered thread safe.<a name="line.88"></a>
|
||||
<span class="sourceLineNo">042</span> private static final String DEFAULT_ENUM_ID = "@__defaultenum__";<a name="line.42"></a>
|
||||
<span class="sourceLineNo">043</span> private final CommandManager manager;<a name="line.43"></a>
|
||||
<span class="sourceLineNo">044</span> // TODO: use a CompletionProvider that can return a delegated Id or provide values such as enum support<a name="line.44"></a>
|
||||
<span class="sourceLineNo">045</span> private Map<String, CommandCompletionHandler> completionMap = new HashMap<>();<a name="line.45"></a>
|
||||
<span class="sourceLineNo">046</span> private Map<Class, String> defaultCompletions = new HashMap<>();<a name="line.46"></a>
|
||||
<span class="sourceLineNo">047</span><a name="line.47"></a>
|
||||
<span class="sourceLineNo">048</span> public CommandCompletions(CommandManager manager) {<a name="line.48"></a>
|
||||
<span class="sourceLineNo">049</span> this.manager = manager;<a name="line.49"></a>
|
||||
<span class="sourceLineNo">050</span> registerAsyncCompletion("nothing", c -> Collections.emptyList());<a name="line.50"></a>
|
||||
<span class="sourceLineNo">051</span> registerAsyncCompletion("range", (c) -> {<a name="line.51"></a>
|
||||
<span class="sourceLineNo">052</span> String config = c.getConfig();<a name="line.52"></a>
|
||||
<span class="sourceLineNo">053</span> if (config == null) {<a name="line.53"></a>
|
||||
<span class="sourceLineNo">054</span> return Collections.emptyList();<a name="line.54"></a>
|
||||
<span class="sourceLineNo">055</span> }<a name="line.55"></a>
|
||||
<span class="sourceLineNo">056</span> final String[] ranges = ACFPatterns.DASH.split(config);<a name="line.56"></a>
|
||||
<span class="sourceLineNo">057</span> int start;<a name="line.57"></a>
|
||||
<span class="sourceLineNo">058</span> int end;<a name="line.58"></a>
|
||||
<span class="sourceLineNo">059</span> if (ranges.length != 2) {<a name="line.59"></a>
|
||||
<span class="sourceLineNo">060</span> start = 0;<a name="line.60"></a>
|
||||
<span class="sourceLineNo">061</span> end = ACFUtil.parseInt(ranges[0], 0);<a name="line.61"></a>
|
||||
<span class="sourceLineNo">062</span> } else {<a name="line.62"></a>
|
||||
<span class="sourceLineNo">063</span> start = ACFUtil.parseInt(ranges[0], 0);<a name="line.63"></a>
|
||||
<span class="sourceLineNo">064</span> end = ACFUtil.parseInt(ranges[1], 0);<a name="line.64"></a>
|
||||
<span class="sourceLineNo">065</span> }<a name="line.65"></a>
|
||||
<span class="sourceLineNo">066</span> return IntStream.rangeClosed(start, end).mapToObj(Integer::toString).collect(Collectors.toList());<a name="line.66"></a>
|
||||
<span class="sourceLineNo">067</span> });<a name="line.67"></a>
|
||||
<span class="sourceLineNo">068</span> List<String> timeunits = Arrays.asList("minutes", "hours", "days", "weeks", "months", "years");<a name="line.68"></a>
|
||||
<span class="sourceLineNo">069</span> registerAsyncCompletion("timeunits", (c) -> timeunits);<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> * Registr a completion handler to provide command completions based on the user input.<a name="line.73"></a>
|
||||
<span class="sourceLineNo">074</span> *<a name="line.74"></a>
|
||||
<span class="sourceLineNo">075</span> * @param id<a name="line.75"></a>
|
||||
<span class="sourceLineNo">076</span> * @param handler<a name="line.76"></a>
|
||||
<span class="sourceLineNo">077</span> * @return<a name="line.77"></a>
|
||||
<span class="sourceLineNo">078</span> */<a name="line.78"></a>
|
||||
<span class="sourceLineNo">079</span> public CommandCompletionHandler registerCompletion(String id, CommandCompletionHandler<C> handler) {<a name="line.79"></a>
|
||||
<span class="sourceLineNo">080</span> return this.completionMap.put(prepareCompletionId(id), handler);<a name="line.80"></a>
|
||||
<span class="sourceLineNo">081</span> }<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> * Registr a completion handler to provide command completions based on the user input.<a name="line.84"></a>
|
||||
<span class="sourceLineNo">085</span> * This handler is declared to be safe to be executed asynchronously.<a name="line.85"></a>
|
||||
<span class="sourceLineNo">086</span> * <p><a name="line.86"></a>
|
||||
<span class="sourceLineNo">087</span> * Not all platforms support this, so if the platform does not support asynchronous execution,<a name="line.87"></a>
|
||||
<span class="sourceLineNo">088</span> * your handler will be executed on the main thread.<a name="line.88"></a>
|
||||
<span class="sourceLineNo">089</span> * <p><a name="line.89"></a>
|
||||
<span class="sourceLineNo">090</span> * Use context.isAsync() to determine if you are async or not.<a name="line.90"></a>
|
||||
<span class="sourceLineNo">091</span> *<a name="line.91"></a>
|
||||
<span class="sourceLineNo">092</span> * @param id<a name="line.92"></a>
|
||||
<span class="sourceLineNo">093</span> * @param handler<a name="line.93"></a>
|
||||
<span class="sourceLineNo">094</span> * @return<a name="line.94"></a>
|
||||
<span class="sourceLineNo">095</span> */<a name="line.95"></a>
|
||||
<span class="sourceLineNo">096</span> public CommandCompletionHandler registerAsyncCompletion(String id, AsyncCommandCompletionHandler<C> handler) {<a name="line.96"></a>
|
||||
<span class="sourceLineNo">097</span> return this.completionMap.put("@" + id.toLowerCase(), handler);<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> * Register a static list of command completions that will never change.<a name="line.101"></a>
|
||||
<span class="sourceLineNo">102</span> * Like @CommandCompletion, values are | (PIPE) separated.<a name="line.102"></a>
|
||||
<span class="sourceLineNo">103</span> * <p><a name="line.103"></a>
|
||||
<span class="sourceLineNo">104</span> * Example: foo|bar|baz<a name="line.104"></a>
|
||||
<span class="sourceLineNo">105</span> *<a name="line.105"></a>
|
||||
<span class="sourceLineNo">106</span> * @param id<a name="line.106"></a>
|
||||
<span class="sourceLineNo">107</span> * @param list<a name="line.107"></a>
|
||||
<span class="sourceLineNo">108</span> * @return<a name="line.108"></a>
|
||||
<span class="sourceLineNo">109</span> */<a name="line.109"></a>
|
||||
<span class="sourceLineNo">110</span> public CommandCompletionHandler registerStaticCompletion(String id, String list) {<a name="line.110"></a>
|
||||
<span class="sourceLineNo">111</span> return registerStaticCompletion(id, ACFPatterns.PIPE.split(list));<a name="line.111"></a>
|
||||
<span class="sourceLineNo">112</span> }<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> * Register a static list of command completions that will never change<a name="line.115"></a>
|
||||
<span class="sourceLineNo">116</span> *<a name="line.116"></a>
|
||||
<span class="sourceLineNo">117</span> * @param id<a name="line.117"></a>
|
||||
<span class="sourceLineNo">118</span> * @param completions<a name="line.118"></a>
|
||||
<span class="sourceLineNo">119</span> * @return<a name="line.119"></a>
|
||||
<span class="sourceLineNo">120</span> */<a name="line.120"></a>
|
||||
<span class="sourceLineNo">121</span> public CommandCompletionHandler registerStaticCompletion(String id, String[] completions) {<a name="line.121"></a>
|
||||
<span class="sourceLineNo">122</span> return registerStaticCompletion(id, Arrays.asList(completions));<a name="line.122"></a>
|
||||
<span class="sourceLineNo">123</span> }<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> * Register a static list of command completions that will never change. The list is obtained from the supplier<a name="line.126"></a>
|
||||
<span class="sourceLineNo">127</span> * immediately as part of this method call.<a name="line.127"></a>
|
||||
<span class="sourceLineNo">128</span> *<a name="line.128"></a>
|
||||
<span class="sourceLineNo">129</span> * @param id<a name="line.129"></a>
|
||||
<span class="sourceLineNo">130</span> * @param supplier<a name="line.130"></a>
|
||||
<span class="sourceLineNo">131</span> * @return<a name="line.131"></a>
|
||||
<span class="sourceLineNo">132</span> */<a name="line.132"></a>
|
||||
<span class="sourceLineNo">133</span> public CommandCompletionHandler registerStaticCompletion(String id, Supplier<Collection<String>> supplier) {<a name="line.133"></a>
|
||||
<span class="sourceLineNo">134</span> return registerStaticCompletion(id, supplier.get());<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> * Register a static list of command completions that will never change<a name="line.138"></a>
|
||||
<span class="sourceLineNo">139</span> *<a name="line.139"></a>
|
||||
<span class="sourceLineNo">140</span> * @param id<a name="line.140"></a>
|
||||
<span class="sourceLineNo">141</span> * @param completions<a name="line.141"></a>
|
||||
<span class="sourceLineNo">142</span> * @return<a name="line.142"></a>
|
||||
<span class="sourceLineNo">143</span> */<a name="line.143"></a>
|
||||
<span class="sourceLineNo">144</span> public CommandCompletionHandler registerStaticCompletion(String id, Collection<String> completions) {<a name="line.144"></a>
|
||||
<span class="sourceLineNo">145</span> return registerAsyncCompletion(id, x -> completions);<a name="line.145"></a>
|
||||
<span class="sourceLineNo">146</span> }<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> * @param id<a name="line.149"></a>
|
||||
<span class="sourceLineNo">150</span> * @param classes<a name="line.150"></a>
|
||||
<span class="sourceLineNo">151</span> * @return<a name="line.151"></a>
|
||||
<span class="sourceLineNo">152</span> * @deprecated Feature Not done yet<a name="line.152"></a>
|
||||
<span class="sourceLineNo">153</span> */<a name="line.153"></a>
|
||||
<span class="sourceLineNo">154</span> CommandCompletionHandler setDefaultCompletion(String id, Class... classes) {<a name="line.154"></a>
|
||||
<span class="sourceLineNo">155</span> // get completion with specified id<a name="line.155"></a>
|
||||
<span class="sourceLineNo">156</span> id = id.toLowerCase();<a name="line.156"></a>
|
||||
<span class="sourceLineNo">157</span> CommandCompletionHandler completion = completionMap.get(id);<a name="line.157"></a>
|
||||
<span class="sourceLineNo">158</span><a name="line.158"></a>
|
||||
<span class="sourceLineNo">159</span> if (completion == null) {<a name="line.159"></a>
|
||||
<span class="sourceLineNo">160</span> // Throw something because no completion with specified id<a name="line.160"></a>
|
||||
<span class="sourceLineNo">161</span> throw new IllegalStateException("Completion not registered for " + id);<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> for (Class clazz : classes) {<a name="line.164"></a>
|
||||
<span class="sourceLineNo">165</span> defaultCompletions.put(clazz, id);<a name="line.165"></a>
|
||||
<span class="sourceLineNo">090</span> * Use this anytime your handler does not need to access state that is not considered thread safe.<a name="line.90"></a>
|
||||
<span class="sourceLineNo">091</span> * <p><a name="line.91"></a>
|
||||
<span class="sourceLineNo">092</span> * Use context.isAsync() to determine if you are async or not.<a name="line.92"></a>
|
||||
<span class="sourceLineNo">093</span> *<a name="line.93"></a>
|
||||
<span class="sourceLineNo">094</span> * @param id<a name="line.94"></a>
|
||||
<span class="sourceLineNo">095</span> * @param handler<a name="line.95"></a>
|
||||
<span class="sourceLineNo">096</span> * @return<a name="line.96"></a>
|
||||
<span class="sourceLineNo">097</span> */<a name="line.97"></a>
|
||||
<span class="sourceLineNo">098</span> public CommandCompletionHandler registerAsyncCompletion(String id, AsyncCommandCompletionHandler<C> handler) {<a name="line.98"></a>
|
||||
<span class="sourceLineNo">099</span> return this.completionMap.put(prepareCompletionId(id), handler);<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> * Register a static list of command completions that will never change.<a name="line.103"></a>
|
||||
<span class="sourceLineNo">104</span> * Like @CommandCompletion, values are | (PIPE) separated.<a name="line.104"></a>
|
||||
<span class="sourceLineNo">105</span> * <p><a name="line.105"></a>
|
||||
<span class="sourceLineNo">106</span> * Example: foo|bar|baz<a name="line.106"></a>
|
||||
<span class="sourceLineNo">107</span> *<a name="line.107"></a>
|
||||
<span class="sourceLineNo">108</span> * @param id<a name="line.108"></a>
|
||||
<span class="sourceLineNo">109</span> * @param list<a name="line.109"></a>
|
||||
<span class="sourceLineNo">110</span> * @return<a name="line.110"></a>
|
||||
<span class="sourceLineNo">111</span> */<a name="line.111"></a>
|
||||
<span class="sourceLineNo">112</span> public CommandCompletionHandler registerStaticCompletion(String id, String list) {<a name="line.112"></a>
|
||||
<span class="sourceLineNo">113</span> return registerStaticCompletion(id, ACFPatterns.PIPE.split(list));<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> * Register a static list of command completions that will never change<a name="line.117"></a>
|
||||
<span class="sourceLineNo">118</span> *<a name="line.118"></a>
|
||||
<span class="sourceLineNo">119</span> * @param id<a name="line.119"></a>
|
||||
<span class="sourceLineNo">120</span> * @param completions<a name="line.120"></a>
|
||||
<span class="sourceLineNo">121</span> * @return<a name="line.121"></a>
|
||||
<span class="sourceLineNo">122</span> */<a name="line.122"></a>
|
||||
<span class="sourceLineNo">123</span> public CommandCompletionHandler registerStaticCompletion(String id, String[] completions) {<a name="line.123"></a>
|
||||
<span class="sourceLineNo">124</span> return registerStaticCompletion(id, Arrays.asList(completions));<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> * Register a static list of command completions that will never change. The list is obtained from the supplier<a name="line.128"></a>
|
||||
<span class="sourceLineNo">129</span> * immediately as part of this method call.<a name="line.129"></a>
|
||||
<span class="sourceLineNo">130</span> *<a name="line.130"></a>
|
||||
<span class="sourceLineNo">131</span> * @param id<a name="line.131"></a>
|
||||
<span class="sourceLineNo">132</span> * @param supplier<a name="line.132"></a>
|
||||
<span class="sourceLineNo">133</span> * @return<a name="line.133"></a>
|
||||
<span class="sourceLineNo">134</span> */<a name="line.134"></a>
|
||||
<span class="sourceLineNo">135</span> public CommandCompletionHandler registerStaticCompletion(String id, Supplier<Collection<String>> supplier) {<a name="line.135"></a>
|
||||
<span class="sourceLineNo">136</span> return registerStaticCompletion(id, supplier.get());<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> /**<a name="line.139"></a>
|
||||
<span class="sourceLineNo">140</span> * Register a static list of command completions that will never change<a name="line.140"></a>
|
||||
<span class="sourceLineNo">141</span> *<a name="line.141"></a>
|
||||
<span class="sourceLineNo">142</span> * @param id<a name="line.142"></a>
|
||||
<span class="sourceLineNo">143</span> * @param completions<a name="line.143"></a>
|
||||
<span class="sourceLineNo">144</span> * @return<a name="line.144"></a>
|
||||
<span class="sourceLineNo">145</span> */<a name="line.145"></a>
|
||||
<span class="sourceLineNo">146</span> public CommandCompletionHandler registerStaticCompletion(String id, Collection<String> completions) {<a name="line.146"></a>
|
||||
<span class="sourceLineNo">147</span> return registerAsyncCompletion(id, x -> completions);<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> * Registers a completion handler such as @players to default apply to all command parameters of the specified types<a name="line.151"></a>
|
||||
<span class="sourceLineNo">152</span> * <p><a name="line.152"></a>
|
||||
<span class="sourceLineNo">153</span> * This enables automatic completion support for parameters without manually defining it for custom objects<a name="line.153"></a>
|
||||
<span class="sourceLineNo">154</span> *<a name="line.154"></a>
|
||||
<span class="sourceLineNo">155</span> * @param id<a name="line.155"></a>
|
||||
<span class="sourceLineNo">156</span> * @param classes<a name="line.156"></a>
|
||||
<span class="sourceLineNo">157</span> */<a name="line.157"></a>
|
||||
<span class="sourceLineNo">158</span> public void setDefaultCompletion(String id, Class... classes) {<a name="line.158"></a>
|
||||
<span class="sourceLineNo">159</span> // get completion with specified id<a name="line.159"></a>
|
||||
<span class="sourceLineNo">160</span> id = prepareCompletionId(id);<a name="line.160"></a>
|
||||
<span class="sourceLineNo">161</span> CommandCompletionHandler completion = completionMap.get(id);<a name="line.161"></a>
|
||||
<span class="sourceLineNo">162</span><a name="line.162"></a>
|
||||
<span class="sourceLineNo">163</span> if (completion == null) {<a name="line.163"></a>
|
||||
<span class="sourceLineNo">164</span> // Throw something because no completion with specified id<a name="line.164"></a>
|
||||
<span class="sourceLineNo">165</span> throw new IllegalStateException("Completion not registered for " + id);<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> return completion;<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> @NotNull<a name="line.171"></a>
|
||||
<span class="sourceLineNo">172</span> List<String> of(RegisteredCommand cmd, CommandIssuer sender, String[] args, boolean isAsync) {<a name="line.172"></a>
|
||||
<span class="sourceLineNo">173</span> String[] completions = ACFPatterns.SPACE.split(cmd.complete);<a name="line.173"></a>
|
||||
<span class="sourceLineNo">174</span> final int argIndex = args.length - 1;<a name="line.174"></a>
|
||||
<span class="sourceLineNo">175</span><a name="line.175"></a>
|
||||
<span class="sourceLineNo">176</span> String input = args[argIndex];<a name="line.176"></a>
|
||||
<span class="sourceLineNo">168</span> for (Class clazz : classes) {<a name="line.168"></a>
|
||||
<span class="sourceLineNo">169</span> defaultCompletions.put(clazz, id);<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><a name="line.172"></a>
|
||||
<span class="sourceLineNo">173</span> @NotNull<a name="line.173"></a>
|
||||
<span class="sourceLineNo">174</span> private static String prepareCompletionId(String id) {<a name="line.174"></a>
|
||||
<span class="sourceLineNo">175</span> return (id.startsWith("@") ? "" : "@") + id.toLowerCase();<a name="line.175"></a>
|
||||
<span class="sourceLineNo">176</span> }<a name="line.176"></a>
|
||||
<span class="sourceLineNo">177</span><a name="line.177"></a>
|
||||
<span class="sourceLineNo">178</span> String completion = argIndex < completions.length ? completions[argIndex] : null;<a name="line.178"></a>
|
||||
<span class="sourceLineNo">179</span> if (completion == null && completions.length > 0) {<a name="line.179"></a>
|
||||
<span class="sourceLineNo">180</span> completion = completions[completions.length - 1];<a name="line.180"></a>
|
||||
<span class="sourceLineNo">181</span> }<a name="line.181"></a>
|
||||
<span class="sourceLineNo">182</span> if (completion == null) {<a name="line.182"></a>
|
||||
<span class="sourceLineNo">183</span> return Collections.singletonList(input);<a name="line.183"></a>
|
||||
<span class="sourceLineNo">184</span> }<a name="line.184"></a>
|
||||
<span class="sourceLineNo">185</span><a name="line.185"></a>
|
||||
<span class="sourceLineNo">186</span> return getCompletionValues(cmd, sender, completion, args, isAsync);<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> List<String> getCompletionValues(RegisteredCommand command, CommandIssuer sender, String completion, String[] args, boolean isAsync) {<a name="line.189"></a>
|
||||
<span class="sourceLineNo">190</span> completion = manager.getCommandReplacements().replace(completion);<a name="line.190"></a>
|
||||
<span class="sourceLineNo">191</span><a name="line.191"></a>
|
||||
<span class="sourceLineNo">192</span> List<String> allCompletions = new ArrayList<>();<a name="line.192"></a>
|
||||
<span class="sourceLineNo">193</span> String input = args.length > 0 ? args[args.length - 1] : "";<a name="line.193"></a>
|
||||
<span class="sourceLineNo">194</span><a name="line.194"></a>
|
||||
<span class="sourceLineNo">195</span> for (String value : ACFPatterns.PIPE.split(completion)) {<a name="line.195"></a>
|
||||
<span class="sourceLineNo">196</span> String[] complete = ACFPatterns.COLONEQUALS.split(value, 2);<a name="line.196"></a>
|
||||
<span class="sourceLineNo">197</span> CommandCompletionHandler handler = this.completionMap.get(complete[0].toLowerCase());<a name="line.197"></a>
|
||||
<span class="sourceLineNo">198</span> if (handler != null) {<a name="line.198"></a>
|
||||
<span class="sourceLineNo">199</span> if (isAsync && !(handler instanceof AsyncCommandCompletionHandler)) {<a name="line.199"></a>
|
||||
<span class="sourceLineNo">200</span> ACFUtil.sneaky(new SyncCompletionRequired());<a name="line.200"></a>
|
||||
<span class="sourceLineNo">201</span> return null;<a name="line.201"></a>
|
||||
<span class="sourceLineNo">202</span> }<a name="line.202"></a>
|
||||
<span class="sourceLineNo">203</span> String config = complete.length == 1 ? null : complete[1];<a name="line.203"></a>
|
||||
<span class="sourceLineNo">204</span> CommandCompletionContext context = manager.createCompletionContext(command, sender, input, config, args);<a name="line.204"></a>
|
||||
<span class="sourceLineNo">205</span><a name="line.205"></a>
|
||||
<span class="sourceLineNo">206</span> try {<a name="line.206"></a>
|
||||
<span class="sourceLineNo">207</span> //noinspection unchecked<a name="line.207"></a>
|
||||
<span class="sourceLineNo">208</span> Collection<String> completions = handler.getCompletions(context);<a name="line.208"></a>
|
||||
<span class="sourceLineNo">209</span> if (completions != null) {<a name="line.209"></a>
|
||||
<span class="sourceLineNo">210</span> allCompletions.addAll(completions);<a name="line.210"></a>
|
||||
<span class="sourceLineNo">211</span> continue;<a name="line.211"></a>
|
||||
<span class="sourceLineNo">212</span> }<a name="line.212"></a>
|
||||
<span class="sourceLineNo">213</span> //noinspection ConstantIfStatement,ConstantConditions<a name="line.213"></a>
|
||||
<span class="sourceLineNo">214</span> if (false) { // Hack to fool compiler. since its sneakily thrown.<a name="line.214"></a>
|
||||
<span class="sourceLineNo">215</span> throw new CommandCompletionTextLookupException();<a name="line.215"></a>
|
||||
<span class="sourceLineNo">216</span> }<a name="line.216"></a>
|
||||
<span class="sourceLineNo">217</span> } catch (CommandCompletionTextLookupException ignored) {<a name="line.217"></a>
|
||||
<span class="sourceLineNo">218</span> // This should only happen if some other feedback error occured.<a name="line.218"></a>
|
||||
<span class="sourceLineNo">219</span> } catch (Exception e) {<a name="line.219"></a>
|
||||
<span class="sourceLineNo">220</span> command.handleException(sender, Arrays.asList(args), e);<a name="line.220"></a>
|
||||
<span class="sourceLineNo">178</span> @NotNull<a name="line.178"></a>
|
||||
<span class="sourceLineNo">179</span> List<String> of(RegisteredCommand cmd, CommandIssuer sender, String[] args, boolean isAsync) {<a name="line.179"></a>
|
||||
<span class="sourceLineNo">180</span> String[] completions = ACFPatterns.SPACE.split(cmd.complete);<a name="line.180"></a>
|
||||
<span class="sourceLineNo">181</span> final int argIndex = args.length - 1;<a name="line.181"></a>
|
||||
<span class="sourceLineNo">182</span><a name="line.182"></a>
|
||||
<span class="sourceLineNo">183</span> String input = args[argIndex];<a name="line.183"></a>
|
||||
<span class="sourceLineNo">184</span><a name="line.184"></a>
|
||||
<span class="sourceLineNo">185</span> String completion = argIndex < completions.length ? completions[argIndex] : null;<a name="line.185"></a>
|
||||
<span class="sourceLineNo">186</span> if (completion == null || "*".equals(completion)) {<a name="line.186"></a>
|
||||
<span class="sourceLineNo">187</span> completion = findDefaultCompletion(cmd, args);<a name="line.187"></a>
|
||||
<span class="sourceLineNo">188</span> }<a name="line.188"></a>
|
||||
<span class="sourceLineNo">189</span><a name="line.189"></a>
|
||||
<span class="sourceLineNo">190</span> if (completion == null && completions.length > 0) {<a name="line.190"></a>
|
||||
<span class="sourceLineNo">191</span> String last = completions[completions.length - 1];<a name="line.191"></a>
|
||||
<span class="sourceLineNo">192</span> if (last.startsWith("repeat@")) {<a name="line.192"></a>
|
||||
<span class="sourceLineNo">193</span> completion = last;<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><a name="line.196"></a>
|
||||
<span class="sourceLineNo">197</span> if (completion == null) {<a name="line.197"></a>
|
||||
<span class="sourceLineNo">198</span> return Collections.singletonList(input);<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> return getCompletionValues(cmd, sender, completion, args, isAsync);<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> String findDefaultCompletion(RegisteredCommand cmd, String[] args) {<a name="line.204"></a>
|
||||
<span class="sourceLineNo">205</span> int i = 0;<a name="line.205"></a>
|
||||
<span class="sourceLineNo">206</span> for (CommandParameter param : cmd.parameters) {<a name="line.206"></a>
|
||||
<span class="sourceLineNo">207</span> if (param.canConsumeInput() && ++i == args.length) {<a name="line.207"></a>
|
||||
<span class="sourceLineNo">208</span> Class type = param.getType();<a name="line.208"></a>
|
||||
<span class="sourceLineNo">209</span> while (type != null) {<a name="line.209"></a>
|
||||
<span class="sourceLineNo">210</span> String completion = this.defaultCompletions.get(type);<a name="line.210"></a>
|
||||
<span class="sourceLineNo">211</span> if (completion != null) {<a name="line.211"></a>
|
||||
<span class="sourceLineNo">212</span> return completion;<a name="line.212"></a>
|
||||
<span class="sourceLineNo">213</span> }<a name="line.213"></a>
|
||||
<span class="sourceLineNo">214</span> type = type.getSuperclass();<a name="line.214"></a>
|
||||
<span class="sourceLineNo">215</span> }<a name="line.215"></a>
|
||||
<span class="sourceLineNo">216</span> if (param.getType().isEnum()) {<a name="line.216"></a>
|
||||
<span class="sourceLineNo">217</span> CommandOperationContext ctx = CommandManager.getCurrentCommandOperationContext();<a name="line.217"></a>
|
||||
<span class="sourceLineNo">218</span> //noinspection unchecked<a name="line.218"></a>
|
||||
<span class="sourceLineNo">219</span> ctx.enumCompletionValues = ACFUtil.enumNames((Class<? extends Enum<?>>) param.getType());<a name="line.219"></a>
|
||||
<span class="sourceLineNo">220</span> return DEFAULT_ENUM_ID;<a name="line.220"></a>
|
||||
<span class="sourceLineNo">221</span> }<a name="line.221"></a>
|
||||
<span class="sourceLineNo">222</span> // Something went wrong in lookup, fall back to input<a name="line.222"></a>
|
||||
<span class="sourceLineNo">223</span> return Collections.singletonList(input);<a name="line.223"></a>
|
||||
<span class="sourceLineNo">224</span> } else {<a name="line.224"></a>
|
||||
<span class="sourceLineNo">225</span> // Plaintext value<a name="line.225"></a>
|
||||
<span class="sourceLineNo">226</span> allCompletions.add(value);<a name="line.226"></a>
|
||||
<span class="sourceLineNo">227</span> }<a name="line.227"></a>
|
||||
<span class="sourceLineNo">228</span> }<a name="line.228"></a>
|
||||
<span class="sourceLineNo">229</span> return allCompletions;<a name="line.229"></a>
|
||||
<span class="sourceLineNo">230</span> }<a name="line.230"></a>
|
||||
<span class="sourceLineNo">231</span><a name="line.231"></a>
|
||||
<span class="sourceLineNo">232</span> public interface CommandCompletionHandler<C extends CommandCompletionContext> {<a name="line.232"></a>
|
||||
<span class="sourceLineNo">233</span> Collection<String> getCompletions(C context) throws InvalidCommandArgument;<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> public interface AsyncCommandCompletionHandler<C extends CommandCompletionContext> extends CommandCompletionHandler<C> {<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> public static class SyncCompletionRequired extends RuntimeException {<a name="line.239"></a>
|
||||
<span class="sourceLineNo">240</span> }<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">222</span> break;<a name="line.222"></a>
|
||||
<span class="sourceLineNo">223</span> }<a name="line.223"></a>
|
||||
<span class="sourceLineNo">224</span> }<a name="line.224"></a>
|
||||
<span class="sourceLineNo">225</span> return null;<a name="line.225"></a>
|
||||
<span class="sourceLineNo">226</span> }<a name="line.226"></a>
|
||||
<span class="sourceLineNo">227</span><a name="line.227"></a>
|
||||
<span class="sourceLineNo">228</span> List<String> getCompletionValues(RegisteredCommand command, CommandIssuer sender, String completion, String[] args, boolean isAsync) {<a name="line.228"></a>
|
||||
<span class="sourceLineNo">229</span> if (DEFAULT_ENUM_ID.equals(completion)) {<a name="line.229"></a>
|
||||
<span class="sourceLineNo">230</span> CommandOperationContext<?> ctx = CommandManager.getCurrentCommandOperationContext();<a name="line.230"></a>
|
||||
<span class="sourceLineNo">231</span> return ctx.enumCompletionValues;<a name="line.231"></a>
|
||||
<span class="sourceLineNo">232</span> }<a name="line.232"></a>
|
||||
<span class="sourceLineNo">233</span> if (completion.startsWith("repeat@")) {<a name="line.233"></a>
|
||||
<span class="sourceLineNo">234</span> completion = completion.substring(6);<a name="line.234"></a>
|
||||
<span class="sourceLineNo">235</span> }<a name="line.235"></a>
|
||||
<span class="sourceLineNo">236</span> completion = manager.getCommandReplacements().replace(completion);<a name="line.236"></a>
|
||||
<span class="sourceLineNo">237</span><a name="line.237"></a>
|
||||
<span class="sourceLineNo">238</span> List<String> allCompletions = new ArrayList<>();<a name="line.238"></a>
|
||||
<span class="sourceLineNo">239</span> String input = args.length > 0 ? args[args.length - 1] : "";<a name="line.239"></a>
|
||||
<span class="sourceLineNo">240</span><a name="line.240"></a>
|
||||
<span class="sourceLineNo">241</span> for (String value : ACFPatterns.PIPE.split(completion)) {<a name="line.241"></a>
|
||||
<span class="sourceLineNo">242</span> String[] complete = ACFPatterns.COLONEQUALS.split(value, 2);<a name="line.242"></a>
|
||||
<span class="sourceLineNo">243</span> CommandCompletionHandler handler = this.completionMap.get(complete[0].toLowerCase());<a name="line.243"></a>
|
||||
<span class="sourceLineNo">244</span> if (handler != null) {<a name="line.244"></a>
|
||||
<span class="sourceLineNo">245</span> if (isAsync && !(handler instanceof AsyncCommandCompletionHandler)) {<a name="line.245"></a>
|
||||
<span class="sourceLineNo">246</span> ACFUtil.sneaky(new SyncCompletionRequired());<a name="line.246"></a>
|
||||
<span class="sourceLineNo">247</span> return null;<a name="line.247"></a>
|
||||
<span class="sourceLineNo">248</span> }<a name="line.248"></a>
|
||||
<span class="sourceLineNo">249</span> String config = complete.length == 1 ? null : complete[1];<a name="line.249"></a>
|
||||
<span class="sourceLineNo">250</span> CommandCompletionContext context = manager.createCompletionContext(command, sender, input, config, args);<a name="line.250"></a>
|
||||
<span class="sourceLineNo">251</span><a name="line.251"></a>
|
||||
<span class="sourceLineNo">252</span> try {<a name="line.252"></a>
|
||||
<span class="sourceLineNo">253</span> //noinspection unchecked<a name="line.253"></a>
|
||||
<span class="sourceLineNo">254</span> Collection<String> completions = handler.getCompletions(context);<a name="line.254"></a>
|
||||
<span class="sourceLineNo">255</span> if (completions != null) {<a name="line.255"></a>
|
||||
<span class="sourceLineNo">256</span> allCompletions.addAll(completions);<a name="line.256"></a>
|
||||
<span class="sourceLineNo">257</span> continue;<a name="line.257"></a>
|
||||
<span class="sourceLineNo">258</span> }<a name="line.258"></a>
|
||||
<span class="sourceLineNo">259</span> //noinspection ConstantIfStatement,ConstantConditions<a name="line.259"></a>
|
||||
<span class="sourceLineNo">260</span> if (false) { // Hack to fool compiler. since its sneakily thrown.<a name="line.260"></a>
|
||||
<span class="sourceLineNo">261</span> throw new CommandCompletionTextLookupException();<a name="line.261"></a>
|
||||
<span class="sourceLineNo">262</span> }<a name="line.262"></a>
|
||||
<span class="sourceLineNo">263</span> } catch (CommandCompletionTextLookupException ignored) {<a name="line.263"></a>
|
||||
<span class="sourceLineNo">264</span> // This should only happen if some other feedback error occured.<a name="line.264"></a>
|
||||
<span class="sourceLineNo">265</span> } catch (Exception e) {<a name="line.265"></a>
|
||||
<span class="sourceLineNo">266</span> command.handleException(sender, Arrays.asList(args), e);<a name="line.266"></a>
|
||||
<span class="sourceLineNo">267</span> }<a name="line.267"></a>
|
||||
<span class="sourceLineNo">268</span> // Something went wrong in lookup, fall back to input<a name="line.268"></a>
|
||||
<span class="sourceLineNo">269</span> return Collections.singletonList(input);<a name="line.269"></a>
|
||||
<span class="sourceLineNo">270</span> } else {<a name="line.270"></a>
|
||||
<span class="sourceLineNo">271</span> // Plaintext value<a name="line.271"></a>
|
||||
<span class="sourceLineNo">272</span> allCompletions.add(value);<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> return allCompletions;<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 interface CommandCompletionHandler<C extends CommandCompletionContext> {<a name="line.278"></a>
|
||||
<span class="sourceLineNo">279</span> Collection<String> getCompletions(C context) throws InvalidCommandArgument;<a name="line.279"></a>
|
||||
<span class="sourceLineNo">280</span> }<a name="line.280"></a>
|
||||
<span class="sourceLineNo">281</span><a name="line.281"></a>
|
||||
<span class="sourceLineNo">282</span> public interface AsyncCommandCompletionHandler<C extends CommandCompletionContext> extends CommandCompletionHandler<C> {<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> public static class SyncCompletionRequired extends RuntimeException {<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>
|
||||
|
||||
|
||||
|
||||
|
||||
+242
-196
@@ -47,207 +47,253 @@
|
||||
<span class="sourceLineNo">039</span><a name="line.39"></a>
|
||||
<span class="sourceLineNo">040</span>@SuppressWarnings({"WeakerAccess", "UnusedReturnValue"})<a name="line.40"></a>
|
||||
<span class="sourceLineNo">041</span>public class CommandCompletions<C extends CommandCompletionContext> {<a name="line.41"></a>
|
||||
<span class="sourceLineNo">042</span> private final CommandManager manager;<a name="line.42"></a>
|
||||
<span class="sourceLineNo">043</span> private Map<String, CommandCompletionHandler> completionMap = new HashMap<>();<a name="line.43"></a>
|
||||
<span class="sourceLineNo">044</span> private Map<Class, String> defaultCompletions = new HashMap<>();<a name="line.44"></a>
|
||||
<span class="sourceLineNo">045</span><a name="line.45"></a>
|
||||
<span class="sourceLineNo">046</span> public CommandCompletions(CommandManager manager) {<a name="line.46"></a>
|
||||
<span class="sourceLineNo">047</span> this.manager = manager;<a name="line.47"></a>
|
||||
<span class="sourceLineNo">048</span> registerAsyncCompletion("nothing", c -> Collections.emptyList());<a name="line.48"></a>
|
||||
<span class="sourceLineNo">049</span> registerAsyncCompletion("range", (c) -> {<a name="line.49"></a>
|
||||
<span class="sourceLineNo">050</span> String config = c.getConfig();<a name="line.50"></a>
|
||||
<span class="sourceLineNo">051</span> if (config == null) {<a name="line.51"></a>
|
||||
<span class="sourceLineNo">052</span> return Collections.emptyList();<a name="line.52"></a>
|
||||
<span class="sourceLineNo">053</span> }<a name="line.53"></a>
|
||||
<span class="sourceLineNo">054</span> final String[] ranges = ACFPatterns.DASH.split(config);<a name="line.54"></a>
|
||||
<span class="sourceLineNo">055</span> int start;<a name="line.55"></a>
|
||||
<span class="sourceLineNo">056</span> int end;<a name="line.56"></a>
|
||||
<span class="sourceLineNo">057</span> if (ranges.length != 2) {<a name="line.57"></a>
|
||||
<span class="sourceLineNo">058</span> start = 0;<a name="line.58"></a>
|
||||
<span class="sourceLineNo">059</span> end = ACFUtil.parseInt(ranges[0], 0);<a name="line.59"></a>
|
||||
<span class="sourceLineNo">060</span> } else {<a name="line.60"></a>
|
||||
<span class="sourceLineNo">061</span> start = ACFUtil.parseInt(ranges[0], 0);<a name="line.61"></a>
|
||||
<span class="sourceLineNo">062</span> end = ACFUtil.parseInt(ranges[1], 0);<a name="line.62"></a>
|
||||
<span class="sourceLineNo">063</span> }<a name="line.63"></a>
|
||||
<span class="sourceLineNo">064</span> return IntStream.rangeClosed(start, end).mapToObj(Integer::toString).collect(Collectors.toList());<a name="line.64"></a>
|
||||
<span class="sourceLineNo">065</span> });<a name="line.65"></a>
|
||||
<span class="sourceLineNo">066</span> List<String> timeunits = Arrays.asList("minutes", "hours", "days", "weeks", "months", "years");<a name="line.66"></a>
|
||||
<span class="sourceLineNo">067</span> registerAsyncCompletion("timeunits", (c) -> timeunits);<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> * Registr a completion handler to provide command completions based on the user input.<a name="line.71"></a>
|
||||
<span class="sourceLineNo">072</span> *<a name="line.72"></a>
|
||||
<span class="sourceLineNo">073</span> * @param id<a name="line.73"></a>
|
||||
<span class="sourceLineNo">074</span> * @param handler<a name="line.74"></a>
|
||||
<span class="sourceLineNo">075</span> * @return<a name="line.75"></a>
|
||||
<span class="sourceLineNo">076</span> */<a name="line.76"></a>
|
||||
<span class="sourceLineNo">077</span> public CommandCompletionHandler registerCompletion(String id, CommandCompletionHandler<C> handler) {<a name="line.77"></a>
|
||||
<span class="sourceLineNo">078</span> return this.completionMap.put("@" + id.toLowerCase(), handler);<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> /**<a name="line.81"></a>
|
||||
<span class="sourceLineNo">082</span> * Registr a completion handler to provide command completions based on the user input.<a name="line.82"></a>
|
||||
<span class="sourceLineNo">083</span> * This handler is declared to be safe to be executed asynchronously.<a name="line.83"></a>
|
||||
<span class="sourceLineNo">084</span> * <p><a name="line.84"></a>
|
||||
<span class="sourceLineNo">085</span> * Not all platforms support this, so if the platform does not support asynchronous execution,<a name="line.85"></a>
|
||||
<span class="sourceLineNo">086</span> * your handler will be executed on the main thread.<a name="line.86"></a>
|
||||
<span class="sourceLineNo">087</span> * <p><a name="line.87"></a>
|
||||
<span class="sourceLineNo">088</span> * Use this anytime your handler does not need to access state that is not considered thread safe.<a name="line.88"></a>
|
||||
<span class="sourceLineNo">042</span> private static final String DEFAULT_ENUM_ID = "@__defaultenum__";<a name="line.42"></a>
|
||||
<span class="sourceLineNo">043</span> private final CommandManager manager;<a name="line.43"></a>
|
||||
<span class="sourceLineNo">044</span> // TODO: use a CompletionProvider that can return a delegated Id or provide values such as enum support<a name="line.44"></a>
|
||||
<span class="sourceLineNo">045</span> private Map<String, CommandCompletionHandler> completionMap = new HashMap<>();<a name="line.45"></a>
|
||||
<span class="sourceLineNo">046</span> private Map<Class, String> defaultCompletions = new HashMap<>();<a name="line.46"></a>
|
||||
<span class="sourceLineNo">047</span><a name="line.47"></a>
|
||||
<span class="sourceLineNo">048</span> public CommandCompletions(CommandManager manager) {<a name="line.48"></a>
|
||||
<span class="sourceLineNo">049</span> this.manager = manager;<a name="line.49"></a>
|
||||
<span class="sourceLineNo">050</span> registerAsyncCompletion("nothing", c -> Collections.emptyList());<a name="line.50"></a>
|
||||
<span class="sourceLineNo">051</span> registerAsyncCompletion("range", (c) -> {<a name="line.51"></a>
|
||||
<span class="sourceLineNo">052</span> String config = c.getConfig();<a name="line.52"></a>
|
||||
<span class="sourceLineNo">053</span> if (config == null) {<a name="line.53"></a>
|
||||
<span class="sourceLineNo">054</span> return Collections.emptyList();<a name="line.54"></a>
|
||||
<span class="sourceLineNo">055</span> }<a name="line.55"></a>
|
||||
<span class="sourceLineNo">056</span> final String[] ranges = ACFPatterns.DASH.split(config);<a name="line.56"></a>
|
||||
<span class="sourceLineNo">057</span> int start;<a name="line.57"></a>
|
||||
<span class="sourceLineNo">058</span> int end;<a name="line.58"></a>
|
||||
<span class="sourceLineNo">059</span> if (ranges.length != 2) {<a name="line.59"></a>
|
||||
<span class="sourceLineNo">060</span> start = 0;<a name="line.60"></a>
|
||||
<span class="sourceLineNo">061</span> end = ACFUtil.parseInt(ranges[0], 0);<a name="line.61"></a>
|
||||
<span class="sourceLineNo">062</span> } else {<a name="line.62"></a>
|
||||
<span class="sourceLineNo">063</span> start = ACFUtil.parseInt(ranges[0], 0);<a name="line.63"></a>
|
||||
<span class="sourceLineNo">064</span> end = ACFUtil.parseInt(ranges[1], 0);<a name="line.64"></a>
|
||||
<span class="sourceLineNo">065</span> }<a name="line.65"></a>
|
||||
<span class="sourceLineNo">066</span> return IntStream.rangeClosed(start, end).mapToObj(Integer::toString).collect(Collectors.toList());<a name="line.66"></a>
|
||||
<span class="sourceLineNo">067</span> });<a name="line.67"></a>
|
||||
<span class="sourceLineNo">068</span> List<String> timeunits = Arrays.asList("minutes", "hours", "days", "weeks", "months", "years");<a name="line.68"></a>
|
||||
<span class="sourceLineNo">069</span> registerAsyncCompletion("timeunits", (c) -> timeunits);<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> * Registr a completion handler to provide command completions based on the user input.<a name="line.73"></a>
|
||||
<span class="sourceLineNo">074</span> *<a name="line.74"></a>
|
||||
<span class="sourceLineNo">075</span> * @param id<a name="line.75"></a>
|
||||
<span class="sourceLineNo">076</span> * @param handler<a name="line.76"></a>
|
||||
<span class="sourceLineNo">077</span> * @return<a name="line.77"></a>
|
||||
<span class="sourceLineNo">078</span> */<a name="line.78"></a>
|
||||
<span class="sourceLineNo">079</span> public CommandCompletionHandler registerCompletion(String id, CommandCompletionHandler<C> handler) {<a name="line.79"></a>
|
||||
<span class="sourceLineNo">080</span> return this.completionMap.put(prepareCompletionId(id), handler);<a name="line.80"></a>
|
||||
<span class="sourceLineNo">081</span> }<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> * Registr a completion handler to provide command completions based on the user input.<a name="line.84"></a>
|
||||
<span class="sourceLineNo">085</span> * This handler is declared to be safe to be executed asynchronously.<a name="line.85"></a>
|
||||
<span class="sourceLineNo">086</span> * <p><a name="line.86"></a>
|
||||
<span class="sourceLineNo">087</span> * Not all platforms support this, so if the platform does not support asynchronous execution,<a name="line.87"></a>
|
||||
<span class="sourceLineNo">088</span> * your handler will be executed on the main thread.<a name="line.88"></a>
|
||||
<span class="sourceLineNo">089</span> * <p><a name="line.89"></a>
|
||||
<span class="sourceLineNo">090</span> * Use context.isAsync() to determine if you are async or not.<a name="line.90"></a>
|
||||
<span class="sourceLineNo">091</span> *<a name="line.91"></a>
|
||||
<span class="sourceLineNo">092</span> * @param id<a name="line.92"></a>
|
||||
<span class="sourceLineNo">093</span> * @param handler<a name="line.93"></a>
|
||||
<span class="sourceLineNo">094</span> * @return<a name="line.94"></a>
|
||||
<span class="sourceLineNo">095</span> */<a name="line.95"></a>
|
||||
<span class="sourceLineNo">096</span> public CommandCompletionHandler registerAsyncCompletion(String id, AsyncCommandCompletionHandler<C> handler) {<a name="line.96"></a>
|
||||
<span class="sourceLineNo">097</span> return this.completionMap.put("@" + id.toLowerCase(), handler);<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> * Register a static list of command completions that will never change.<a name="line.101"></a>
|
||||
<span class="sourceLineNo">102</span> * Like @CommandCompletion, values are | (PIPE) separated.<a name="line.102"></a>
|
||||
<span class="sourceLineNo">103</span> * <p><a name="line.103"></a>
|
||||
<span class="sourceLineNo">104</span> * Example: foo|bar|baz<a name="line.104"></a>
|
||||
<span class="sourceLineNo">105</span> *<a name="line.105"></a>
|
||||
<span class="sourceLineNo">106</span> * @param id<a name="line.106"></a>
|
||||
<span class="sourceLineNo">107</span> * @param list<a name="line.107"></a>
|
||||
<span class="sourceLineNo">108</span> * @return<a name="line.108"></a>
|
||||
<span class="sourceLineNo">109</span> */<a name="line.109"></a>
|
||||
<span class="sourceLineNo">110</span> public CommandCompletionHandler registerStaticCompletion(String id, String list) {<a name="line.110"></a>
|
||||
<span class="sourceLineNo">111</span> return registerStaticCompletion(id, ACFPatterns.PIPE.split(list));<a name="line.111"></a>
|
||||
<span class="sourceLineNo">112</span> }<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> * Register a static list of command completions that will never change<a name="line.115"></a>
|
||||
<span class="sourceLineNo">116</span> *<a name="line.116"></a>
|
||||
<span class="sourceLineNo">117</span> * @param id<a name="line.117"></a>
|
||||
<span class="sourceLineNo">118</span> * @param completions<a name="line.118"></a>
|
||||
<span class="sourceLineNo">119</span> * @return<a name="line.119"></a>
|
||||
<span class="sourceLineNo">120</span> */<a name="line.120"></a>
|
||||
<span class="sourceLineNo">121</span> public CommandCompletionHandler registerStaticCompletion(String id, String[] completions) {<a name="line.121"></a>
|
||||
<span class="sourceLineNo">122</span> return registerStaticCompletion(id, Arrays.asList(completions));<a name="line.122"></a>
|
||||
<span class="sourceLineNo">123</span> }<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> * Register a static list of command completions that will never change. The list is obtained from the supplier<a name="line.126"></a>
|
||||
<span class="sourceLineNo">127</span> * immediately as part of this method call.<a name="line.127"></a>
|
||||
<span class="sourceLineNo">128</span> *<a name="line.128"></a>
|
||||
<span class="sourceLineNo">129</span> * @param id<a name="line.129"></a>
|
||||
<span class="sourceLineNo">130</span> * @param supplier<a name="line.130"></a>
|
||||
<span class="sourceLineNo">131</span> * @return<a name="line.131"></a>
|
||||
<span class="sourceLineNo">132</span> */<a name="line.132"></a>
|
||||
<span class="sourceLineNo">133</span> public CommandCompletionHandler registerStaticCompletion(String id, Supplier<Collection<String>> supplier) {<a name="line.133"></a>
|
||||
<span class="sourceLineNo">134</span> return registerStaticCompletion(id, supplier.get());<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> * Register a static list of command completions that will never change<a name="line.138"></a>
|
||||
<span class="sourceLineNo">139</span> *<a name="line.139"></a>
|
||||
<span class="sourceLineNo">140</span> * @param id<a name="line.140"></a>
|
||||
<span class="sourceLineNo">141</span> * @param completions<a name="line.141"></a>
|
||||
<span class="sourceLineNo">142</span> * @return<a name="line.142"></a>
|
||||
<span class="sourceLineNo">143</span> */<a name="line.143"></a>
|
||||
<span class="sourceLineNo">144</span> public CommandCompletionHandler registerStaticCompletion(String id, Collection<String> completions) {<a name="line.144"></a>
|
||||
<span class="sourceLineNo">145</span> return registerAsyncCompletion(id, x -> completions);<a name="line.145"></a>
|
||||
<span class="sourceLineNo">146</span> }<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> * @param id<a name="line.149"></a>
|
||||
<span class="sourceLineNo">150</span> * @param classes<a name="line.150"></a>
|
||||
<span class="sourceLineNo">151</span> * @return<a name="line.151"></a>
|
||||
<span class="sourceLineNo">152</span> * @deprecated Feature Not done yet<a name="line.152"></a>
|
||||
<span class="sourceLineNo">153</span> */<a name="line.153"></a>
|
||||
<span class="sourceLineNo">154</span> CommandCompletionHandler setDefaultCompletion(String id, Class... classes) {<a name="line.154"></a>
|
||||
<span class="sourceLineNo">155</span> // get completion with specified id<a name="line.155"></a>
|
||||
<span class="sourceLineNo">156</span> id = id.toLowerCase();<a name="line.156"></a>
|
||||
<span class="sourceLineNo">157</span> CommandCompletionHandler completion = completionMap.get(id);<a name="line.157"></a>
|
||||
<span class="sourceLineNo">158</span><a name="line.158"></a>
|
||||
<span class="sourceLineNo">159</span> if (completion == null) {<a name="line.159"></a>
|
||||
<span class="sourceLineNo">160</span> // Throw something because no completion with specified id<a name="line.160"></a>
|
||||
<span class="sourceLineNo">161</span> throw new IllegalStateException("Completion not registered for " + id);<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> for (Class clazz : classes) {<a name="line.164"></a>
|
||||
<span class="sourceLineNo">165</span> defaultCompletions.put(clazz, id);<a name="line.165"></a>
|
||||
<span class="sourceLineNo">090</span> * Use this anytime your handler does not need to access state that is not considered thread safe.<a name="line.90"></a>
|
||||
<span class="sourceLineNo">091</span> * <p><a name="line.91"></a>
|
||||
<span class="sourceLineNo">092</span> * Use context.isAsync() to determine if you are async or not.<a name="line.92"></a>
|
||||
<span class="sourceLineNo">093</span> *<a name="line.93"></a>
|
||||
<span class="sourceLineNo">094</span> * @param id<a name="line.94"></a>
|
||||
<span class="sourceLineNo">095</span> * @param handler<a name="line.95"></a>
|
||||
<span class="sourceLineNo">096</span> * @return<a name="line.96"></a>
|
||||
<span class="sourceLineNo">097</span> */<a name="line.97"></a>
|
||||
<span class="sourceLineNo">098</span> public CommandCompletionHandler registerAsyncCompletion(String id, AsyncCommandCompletionHandler<C> handler) {<a name="line.98"></a>
|
||||
<span class="sourceLineNo">099</span> return this.completionMap.put(prepareCompletionId(id), handler);<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> * Register a static list of command completions that will never change.<a name="line.103"></a>
|
||||
<span class="sourceLineNo">104</span> * Like @CommandCompletion, values are | (PIPE) separated.<a name="line.104"></a>
|
||||
<span class="sourceLineNo">105</span> * <p><a name="line.105"></a>
|
||||
<span class="sourceLineNo">106</span> * Example: foo|bar|baz<a name="line.106"></a>
|
||||
<span class="sourceLineNo">107</span> *<a name="line.107"></a>
|
||||
<span class="sourceLineNo">108</span> * @param id<a name="line.108"></a>
|
||||
<span class="sourceLineNo">109</span> * @param list<a name="line.109"></a>
|
||||
<span class="sourceLineNo">110</span> * @return<a name="line.110"></a>
|
||||
<span class="sourceLineNo">111</span> */<a name="line.111"></a>
|
||||
<span class="sourceLineNo">112</span> public CommandCompletionHandler registerStaticCompletion(String id, String list) {<a name="line.112"></a>
|
||||
<span class="sourceLineNo">113</span> return registerStaticCompletion(id, ACFPatterns.PIPE.split(list));<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> * Register a static list of command completions that will never change<a name="line.117"></a>
|
||||
<span class="sourceLineNo">118</span> *<a name="line.118"></a>
|
||||
<span class="sourceLineNo">119</span> * @param id<a name="line.119"></a>
|
||||
<span class="sourceLineNo">120</span> * @param completions<a name="line.120"></a>
|
||||
<span class="sourceLineNo">121</span> * @return<a name="line.121"></a>
|
||||
<span class="sourceLineNo">122</span> */<a name="line.122"></a>
|
||||
<span class="sourceLineNo">123</span> public CommandCompletionHandler registerStaticCompletion(String id, String[] completions) {<a name="line.123"></a>
|
||||
<span class="sourceLineNo">124</span> return registerStaticCompletion(id, Arrays.asList(completions));<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> * Register a static list of command completions that will never change. The list is obtained from the supplier<a name="line.128"></a>
|
||||
<span class="sourceLineNo">129</span> * immediately as part of this method call.<a name="line.129"></a>
|
||||
<span class="sourceLineNo">130</span> *<a name="line.130"></a>
|
||||
<span class="sourceLineNo">131</span> * @param id<a name="line.131"></a>
|
||||
<span class="sourceLineNo">132</span> * @param supplier<a name="line.132"></a>
|
||||
<span class="sourceLineNo">133</span> * @return<a name="line.133"></a>
|
||||
<span class="sourceLineNo">134</span> */<a name="line.134"></a>
|
||||
<span class="sourceLineNo">135</span> public CommandCompletionHandler registerStaticCompletion(String id, Supplier<Collection<String>> supplier) {<a name="line.135"></a>
|
||||
<span class="sourceLineNo">136</span> return registerStaticCompletion(id, supplier.get());<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> /**<a name="line.139"></a>
|
||||
<span class="sourceLineNo">140</span> * Register a static list of command completions that will never change<a name="line.140"></a>
|
||||
<span class="sourceLineNo">141</span> *<a name="line.141"></a>
|
||||
<span class="sourceLineNo">142</span> * @param id<a name="line.142"></a>
|
||||
<span class="sourceLineNo">143</span> * @param completions<a name="line.143"></a>
|
||||
<span class="sourceLineNo">144</span> * @return<a name="line.144"></a>
|
||||
<span class="sourceLineNo">145</span> */<a name="line.145"></a>
|
||||
<span class="sourceLineNo">146</span> public CommandCompletionHandler registerStaticCompletion(String id, Collection<String> completions) {<a name="line.146"></a>
|
||||
<span class="sourceLineNo">147</span> return registerAsyncCompletion(id, x -> completions);<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> * Registers a completion handler such as @players to default apply to all command parameters of the specified types<a name="line.151"></a>
|
||||
<span class="sourceLineNo">152</span> * <p><a name="line.152"></a>
|
||||
<span class="sourceLineNo">153</span> * This enables automatic completion support for parameters without manually defining it for custom objects<a name="line.153"></a>
|
||||
<span class="sourceLineNo">154</span> *<a name="line.154"></a>
|
||||
<span class="sourceLineNo">155</span> * @param id<a name="line.155"></a>
|
||||
<span class="sourceLineNo">156</span> * @param classes<a name="line.156"></a>
|
||||
<span class="sourceLineNo">157</span> */<a name="line.157"></a>
|
||||
<span class="sourceLineNo">158</span> public void setDefaultCompletion(String id, Class... classes) {<a name="line.158"></a>
|
||||
<span class="sourceLineNo">159</span> // get completion with specified id<a name="line.159"></a>
|
||||
<span class="sourceLineNo">160</span> id = prepareCompletionId(id);<a name="line.160"></a>
|
||||
<span class="sourceLineNo">161</span> CommandCompletionHandler completion = completionMap.get(id);<a name="line.161"></a>
|
||||
<span class="sourceLineNo">162</span><a name="line.162"></a>
|
||||
<span class="sourceLineNo">163</span> if (completion == null) {<a name="line.163"></a>
|
||||
<span class="sourceLineNo">164</span> // Throw something because no completion with specified id<a name="line.164"></a>
|
||||
<span class="sourceLineNo">165</span> throw new IllegalStateException("Completion not registered for " + id);<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> return completion;<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> @NotNull<a name="line.171"></a>
|
||||
<span class="sourceLineNo">172</span> List<String> of(RegisteredCommand cmd, CommandIssuer sender, String[] args, boolean isAsync) {<a name="line.172"></a>
|
||||
<span class="sourceLineNo">173</span> String[] completions = ACFPatterns.SPACE.split(cmd.complete);<a name="line.173"></a>
|
||||
<span class="sourceLineNo">174</span> final int argIndex = args.length - 1;<a name="line.174"></a>
|
||||
<span class="sourceLineNo">175</span><a name="line.175"></a>
|
||||
<span class="sourceLineNo">176</span> String input = args[argIndex];<a name="line.176"></a>
|
||||
<span class="sourceLineNo">168</span> for (Class clazz : classes) {<a name="line.168"></a>
|
||||
<span class="sourceLineNo">169</span> defaultCompletions.put(clazz, id);<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><a name="line.172"></a>
|
||||
<span class="sourceLineNo">173</span> @NotNull<a name="line.173"></a>
|
||||
<span class="sourceLineNo">174</span> private static String prepareCompletionId(String id) {<a name="line.174"></a>
|
||||
<span class="sourceLineNo">175</span> return (id.startsWith("@") ? "" : "@") + id.toLowerCase();<a name="line.175"></a>
|
||||
<span class="sourceLineNo">176</span> }<a name="line.176"></a>
|
||||
<span class="sourceLineNo">177</span><a name="line.177"></a>
|
||||
<span class="sourceLineNo">178</span> String completion = argIndex < completions.length ? completions[argIndex] : null;<a name="line.178"></a>
|
||||
<span class="sourceLineNo">179</span> if (completion == null && completions.length > 0) {<a name="line.179"></a>
|
||||
<span class="sourceLineNo">180</span> completion = completions[completions.length - 1];<a name="line.180"></a>
|
||||
<span class="sourceLineNo">181</span> }<a name="line.181"></a>
|
||||
<span class="sourceLineNo">182</span> if (completion == null) {<a name="line.182"></a>
|
||||
<span class="sourceLineNo">183</span> return Collections.singletonList(input);<a name="line.183"></a>
|
||||
<span class="sourceLineNo">184</span> }<a name="line.184"></a>
|
||||
<span class="sourceLineNo">185</span><a name="line.185"></a>
|
||||
<span class="sourceLineNo">186</span> return getCompletionValues(cmd, sender, completion, args, isAsync);<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> List<String> getCompletionValues(RegisteredCommand command, CommandIssuer sender, String completion, String[] args, boolean isAsync) {<a name="line.189"></a>
|
||||
<span class="sourceLineNo">190</span> completion = manager.getCommandReplacements().replace(completion);<a name="line.190"></a>
|
||||
<span class="sourceLineNo">191</span><a name="line.191"></a>
|
||||
<span class="sourceLineNo">192</span> List<String> allCompletions = new ArrayList<>();<a name="line.192"></a>
|
||||
<span class="sourceLineNo">193</span> String input = args.length > 0 ? args[args.length - 1] : "";<a name="line.193"></a>
|
||||
<span class="sourceLineNo">194</span><a name="line.194"></a>
|
||||
<span class="sourceLineNo">195</span> for (String value : ACFPatterns.PIPE.split(completion)) {<a name="line.195"></a>
|
||||
<span class="sourceLineNo">196</span> String[] complete = ACFPatterns.COLONEQUALS.split(value, 2);<a name="line.196"></a>
|
||||
<span class="sourceLineNo">197</span> CommandCompletionHandler handler = this.completionMap.get(complete[0].toLowerCase());<a name="line.197"></a>
|
||||
<span class="sourceLineNo">198</span> if (handler != null) {<a name="line.198"></a>
|
||||
<span class="sourceLineNo">199</span> if (isAsync && !(handler instanceof AsyncCommandCompletionHandler)) {<a name="line.199"></a>
|
||||
<span class="sourceLineNo">200</span> ACFUtil.sneaky(new SyncCompletionRequired());<a name="line.200"></a>
|
||||
<span class="sourceLineNo">201</span> return null;<a name="line.201"></a>
|
||||
<span class="sourceLineNo">202</span> }<a name="line.202"></a>
|
||||
<span class="sourceLineNo">203</span> String config = complete.length == 1 ? null : complete[1];<a name="line.203"></a>
|
||||
<span class="sourceLineNo">204</span> CommandCompletionContext context = manager.createCompletionContext(command, sender, input, config, args);<a name="line.204"></a>
|
||||
<span class="sourceLineNo">205</span><a name="line.205"></a>
|
||||
<span class="sourceLineNo">206</span> try {<a name="line.206"></a>
|
||||
<span class="sourceLineNo">207</span> //noinspection unchecked<a name="line.207"></a>
|
||||
<span class="sourceLineNo">208</span> Collection<String> completions = handler.getCompletions(context);<a name="line.208"></a>
|
||||
<span class="sourceLineNo">209</span> if (completions != null) {<a name="line.209"></a>
|
||||
<span class="sourceLineNo">210</span> allCompletions.addAll(completions);<a name="line.210"></a>
|
||||
<span class="sourceLineNo">211</span> continue;<a name="line.211"></a>
|
||||
<span class="sourceLineNo">212</span> }<a name="line.212"></a>
|
||||
<span class="sourceLineNo">213</span> //noinspection ConstantIfStatement,ConstantConditions<a name="line.213"></a>
|
||||
<span class="sourceLineNo">214</span> if (false) { // Hack to fool compiler. since its sneakily thrown.<a name="line.214"></a>
|
||||
<span class="sourceLineNo">215</span> throw new CommandCompletionTextLookupException();<a name="line.215"></a>
|
||||
<span class="sourceLineNo">216</span> }<a name="line.216"></a>
|
||||
<span class="sourceLineNo">217</span> } catch (CommandCompletionTextLookupException ignored) {<a name="line.217"></a>
|
||||
<span class="sourceLineNo">218</span> // This should only happen if some other feedback error occured.<a name="line.218"></a>
|
||||
<span class="sourceLineNo">219</span> } catch (Exception e) {<a name="line.219"></a>
|
||||
<span class="sourceLineNo">220</span> command.handleException(sender, Arrays.asList(args), e);<a name="line.220"></a>
|
||||
<span class="sourceLineNo">178</span> @NotNull<a name="line.178"></a>
|
||||
<span class="sourceLineNo">179</span> List<String> of(RegisteredCommand cmd, CommandIssuer sender, String[] args, boolean isAsync) {<a name="line.179"></a>
|
||||
<span class="sourceLineNo">180</span> String[] completions = ACFPatterns.SPACE.split(cmd.complete);<a name="line.180"></a>
|
||||
<span class="sourceLineNo">181</span> final int argIndex = args.length - 1;<a name="line.181"></a>
|
||||
<span class="sourceLineNo">182</span><a name="line.182"></a>
|
||||
<span class="sourceLineNo">183</span> String input = args[argIndex];<a name="line.183"></a>
|
||||
<span class="sourceLineNo">184</span><a name="line.184"></a>
|
||||
<span class="sourceLineNo">185</span> String completion = argIndex < completions.length ? completions[argIndex] : null;<a name="line.185"></a>
|
||||
<span class="sourceLineNo">186</span> if (completion == null || "*".equals(completion)) {<a name="line.186"></a>
|
||||
<span class="sourceLineNo">187</span> completion = findDefaultCompletion(cmd, args);<a name="line.187"></a>
|
||||
<span class="sourceLineNo">188</span> }<a name="line.188"></a>
|
||||
<span class="sourceLineNo">189</span><a name="line.189"></a>
|
||||
<span class="sourceLineNo">190</span> if (completion == null && completions.length > 0) {<a name="line.190"></a>
|
||||
<span class="sourceLineNo">191</span> String last = completions[completions.length - 1];<a name="line.191"></a>
|
||||
<span class="sourceLineNo">192</span> if (last.startsWith("repeat@")) {<a name="line.192"></a>
|
||||
<span class="sourceLineNo">193</span> completion = last;<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><a name="line.196"></a>
|
||||
<span class="sourceLineNo">197</span> if (completion == null) {<a name="line.197"></a>
|
||||
<span class="sourceLineNo">198</span> return Collections.singletonList(input);<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> return getCompletionValues(cmd, sender, completion, args, isAsync);<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> String findDefaultCompletion(RegisteredCommand cmd, String[] args) {<a name="line.204"></a>
|
||||
<span class="sourceLineNo">205</span> int i = 0;<a name="line.205"></a>
|
||||
<span class="sourceLineNo">206</span> for (CommandParameter param : cmd.parameters) {<a name="line.206"></a>
|
||||
<span class="sourceLineNo">207</span> if (param.canConsumeInput() && ++i == args.length) {<a name="line.207"></a>
|
||||
<span class="sourceLineNo">208</span> Class type = param.getType();<a name="line.208"></a>
|
||||
<span class="sourceLineNo">209</span> while (type != null) {<a name="line.209"></a>
|
||||
<span class="sourceLineNo">210</span> String completion = this.defaultCompletions.get(type);<a name="line.210"></a>
|
||||
<span class="sourceLineNo">211</span> if (completion != null) {<a name="line.211"></a>
|
||||
<span class="sourceLineNo">212</span> return completion;<a name="line.212"></a>
|
||||
<span class="sourceLineNo">213</span> }<a name="line.213"></a>
|
||||
<span class="sourceLineNo">214</span> type = type.getSuperclass();<a name="line.214"></a>
|
||||
<span class="sourceLineNo">215</span> }<a name="line.215"></a>
|
||||
<span class="sourceLineNo">216</span> if (param.getType().isEnum()) {<a name="line.216"></a>
|
||||
<span class="sourceLineNo">217</span> CommandOperationContext ctx = CommandManager.getCurrentCommandOperationContext();<a name="line.217"></a>
|
||||
<span class="sourceLineNo">218</span> //noinspection unchecked<a name="line.218"></a>
|
||||
<span class="sourceLineNo">219</span> ctx.enumCompletionValues = ACFUtil.enumNames((Class<? extends Enum<?>>) param.getType());<a name="line.219"></a>
|
||||
<span class="sourceLineNo">220</span> return DEFAULT_ENUM_ID;<a name="line.220"></a>
|
||||
<span class="sourceLineNo">221</span> }<a name="line.221"></a>
|
||||
<span class="sourceLineNo">222</span> // Something went wrong in lookup, fall back to input<a name="line.222"></a>
|
||||
<span class="sourceLineNo">223</span> return Collections.singletonList(input);<a name="line.223"></a>
|
||||
<span class="sourceLineNo">224</span> } else {<a name="line.224"></a>
|
||||
<span class="sourceLineNo">225</span> // Plaintext value<a name="line.225"></a>
|
||||
<span class="sourceLineNo">226</span> allCompletions.add(value);<a name="line.226"></a>
|
||||
<span class="sourceLineNo">227</span> }<a name="line.227"></a>
|
||||
<span class="sourceLineNo">228</span> }<a name="line.228"></a>
|
||||
<span class="sourceLineNo">229</span> return allCompletions;<a name="line.229"></a>
|
||||
<span class="sourceLineNo">230</span> }<a name="line.230"></a>
|
||||
<span class="sourceLineNo">231</span><a name="line.231"></a>
|
||||
<span class="sourceLineNo">232</span> public interface CommandCompletionHandler<C extends CommandCompletionContext> {<a name="line.232"></a>
|
||||
<span class="sourceLineNo">233</span> Collection<String> getCompletions(C context) throws InvalidCommandArgument;<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> public interface AsyncCommandCompletionHandler<C extends CommandCompletionContext> extends CommandCompletionHandler<C> {<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> public static class SyncCompletionRequired extends RuntimeException {<a name="line.239"></a>
|
||||
<span class="sourceLineNo">240</span> }<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">222</span> break;<a name="line.222"></a>
|
||||
<span class="sourceLineNo">223</span> }<a name="line.223"></a>
|
||||
<span class="sourceLineNo">224</span> }<a name="line.224"></a>
|
||||
<span class="sourceLineNo">225</span> return null;<a name="line.225"></a>
|
||||
<span class="sourceLineNo">226</span> }<a name="line.226"></a>
|
||||
<span class="sourceLineNo">227</span><a name="line.227"></a>
|
||||
<span class="sourceLineNo">228</span> List<String> getCompletionValues(RegisteredCommand command, CommandIssuer sender, String completion, String[] args, boolean isAsync) {<a name="line.228"></a>
|
||||
<span class="sourceLineNo">229</span> if (DEFAULT_ENUM_ID.equals(completion)) {<a name="line.229"></a>
|
||||
<span class="sourceLineNo">230</span> CommandOperationContext<?> ctx = CommandManager.getCurrentCommandOperationContext();<a name="line.230"></a>
|
||||
<span class="sourceLineNo">231</span> return ctx.enumCompletionValues;<a name="line.231"></a>
|
||||
<span class="sourceLineNo">232</span> }<a name="line.232"></a>
|
||||
<span class="sourceLineNo">233</span> if (completion.startsWith("repeat@")) {<a name="line.233"></a>
|
||||
<span class="sourceLineNo">234</span> completion = completion.substring(6);<a name="line.234"></a>
|
||||
<span class="sourceLineNo">235</span> }<a name="line.235"></a>
|
||||
<span class="sourceLineNo">236</span> completion = manager.getCommandReplacements().replace(completion);<a name="line.236"></a>
|
||||
<span class="sourceLineNo">237</span><a name="line.237"></a>
|
||||
<span class="sourceLineNo">238</span> List<String> allCompletions = new ArrayList<>();<a name="line.238"></a>
|
||||
<span class="sourceLineNo">239</span> String input = args.length > 0 ? args[args.length - 1] : "";<a name="line.239"></a>
|
||||
<span class="sourceLineNo">240</span><a name="line.240"></a>
|
||||
<span class="sourceLineNo">241</span> for (String value : ACFPatterns.PIPE.split(completion)) {<a name="line.241"></a>
|
||||
<span class="sourceLineNo">242</span> String[] complete = ACFPatterns.COLONEQUALS.split(value, 2);<a name="line.242"></a>
|
||||
<span class="sourceLineNo">243</span> CommandCompletionHandler handler = this.completionMap.get(complete[0].toLowerCase());<a name="line.243"></a>
|
||||
<span class="sourceLineNo">244</span> if (handler != null) {<a name="line.244"></a>
|
||||
<span class="sourceLineNo">245</span> if (isAsync && !(handler instanceof AsyncCommandCompletionHandler)) {<a name="line.245"></a>
|
||||
<span class="sourceLineNo">246</span> ACFUtil.sneaky(new SyncCompletionRequired());<a name="line.246"></a>
|
||||
<span class="sourceLineNo">247</span> return null;<a name="line.247"></a>
|
||||
<span class="sourceLineNo">248</span> }<a name="line.248"></a>
|
||||
<span class="sourceLineNo">249</span> String config = complete.length == 1 ? null : complete[1];<a name="line.249"></a>
|
||||
<span class="sourceLineNo">250</span> CommandCompletionContext context = manager.createCompletionContext(command, sender, input, config, args);<a name="line.250"></a>
|
||||
<span class="sourceLineNo">251</span><a name="line.251"></a>
|
||||
<span class="sourceLineNo">252</span> try {<a name="line.252"></a>
|
||||
<span class="sourceLineNo">253</span> //noinspection unchecked<a name="line.253"></a>
|
||||
<span class="sourceLineNo">254</span> Collection<String> completions = handler.getCompletions(context);<a name="line.254"></a>
|
||||
<span class="sourceLineNo">255</span> if (completions != null) {<a name="line.255"></a>
|
||||
<span class="sourceLineNo">256</span> allCompletions.addAll(completions);<a name="line.256"></a>
|
||||
<span class="sourceLineNo">257</span> continue;<a name="line.257"></a>
|
||||
<span class="sourceLineNo">258</span> }<a name="line.258"></a>
|
||||
<span class="sourceLineNo">259</span> //noinspection ConstantIfStatement,ConstantConditions<a name="line.259"></a>
|
||||
<span class="sourceLineNo">260</span> if (false) { // Hack to fool compiler. since its sneakily thrown.<a name="line.260"></a>
|
||||
<span class="sourceLineNo">261</span> throw new CommandCompletionTextLookupException();<a name="line.261"></a>
|
||||
<span class="sourceLineNo">262</span> }<a name="line.262"></a>
|
||||
<span class="sourceLineNo">263</span> } catch (CommandCompletionTextLookupException ignored) {<a name="line.263"></a>
|
||||
<span class="sourceLineNo">264</span> // This should only happen if some other feedback error occured.<a name="line.264"></a>
|
||||
<span class="sourceLineNo">265</span> } catch (Exception e) {<a name="line.265"></a>
|
||||
<span class="sourceLineNo">266</span> command.handleException(sender, Arrays.asList(args), e);<a name="line.266"></a>
|
||||
<span class="sourceLineNo">267</span> }<a name="line.267"></a>
|
||||
<span class="sourceLineNo">268</span> // Something went wrong in lookup, fall back to input<a name="line.268"></a>
|
||||
<span class="sourceLineNo">269</span> return Collections.singletonList(input);<a name="line.269"></a>
|
||||
<span class="sourceLineNo">270</span> } else {<a name="line.270"></a>
|
||||
<span class="sourceLineNo">271</span> // Plaintext value<a name="line.271"></a>
|
||||
<span class="sourceLineNo">272</span> allCompletions.add(value);<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> return allCompletions;<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 interface CommandCompletionHandler<C extends CommandCompletionContext> {<a name="line.278"></a>
|
||||
<span class="sourceLineNo">279</span> Collection<String> getCompletions(C context) throws InvalidCommandArgument;<a name="line.279"></a>
|
||||
<span class="sourceLineNo">280</span> }<a name="line.280"></a>
|
||||
<span class="sourceLineNo">281</span><a name="line.281"></a>
|
||||
<span class="sourceLineNo">282</span> public interface AsyncCommandCompletionHandler<C extends CommandCompletionContext> extends CommandCompletionHandler<C> {<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> public static class SyncCompletionRequired extends RuntimeException {<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>
|
||||
|
||||
|
||||
|
||||
|
||||
+242
-196
@@ -47,207 +47,253 @@
|
||||
<span class="sourceLineNo">039</span><a name="line.39"></a>
|
||||
<span class="sourceLineNo">040</span>@SuppressWarnings({"WeakerAccess", "UnusedReturnValue"})<a name="line.40"></a>
|
||||
<span class="sourceLineNo">041</span>public class CommandCompletions<C extends CommandCompletionContext> {<a name="line.41"></a>
|
||||
<span class="sourceLineNo">042</span> private final CommandManager manager;<a name="line.42"></a>
|
||||
<span class="sourceLineNo">043</span> private Map<String, CommandCompletionHandler> completionMap = new HashMap<>();<a name="line.43"></a>
|
||||
<span class="sourceLineNo">044</span> private Map<Class, String> defaultCompletions = new HashMap<>();<a name="line.44"></a>
|
||||
<span class="sourceLineNo">045</span><a name="line.45"></a>
|
||||
<span class="sourceLineNo">046</span> public CommandCompletions(CommandManager manager) {<a name="line.46"></a>
|
||||
<span class="sourceLineNo">047</span> this.manager = manager;<a name="line.47"></a>
|
||||
<span class="sourceLineNo">048</span> registerAsyncCompletion("nothing", c -> Collections.emptyList());<a name="line.48"></a>
|
||||
<span class="sourceLineNo">049</span> registerAsyncCompletion("range", (c) -> {<a name="line.49"></a>
|
||||
<span class="sourceLineNo">050</span> String config = c.getConfig();<a name="line.50"></a>
|
||||
<span class="sourceLineNo">051</span> if (config == null) {<a name="line.51"></a>
|
||||
<span class="sourceLineNo">052</span> return Collections.emptyList();<a name="line.52"></a>
|
||||
<span class="sourceLineNo">053</span> }<a name="line.53"></a>
|
||||
<span class="sourceLineNo">054</span> final String[] ranges = ACFPatterns.DASH.split(config);<a name="line.54"></a>
|
||||
<span class="sourceLineNo">055</span> int start;<a name="line.55"></a>
|
||||
<span class="sourceLineNo">056</span> int end;<a name="line.56"></a>
|
||||
<span class="sourceLineNo">057</span> if (ranges.length != 2) {<a name="line.57"></a>
|
||||
<span class="sourceLineNo">058</span> start = 0;<a name="line.58"></a>
|
||||
<span class="sourceLineNo">059</span> end = ACFUtil.parseInt(ranges[0], 0);<a name="line.59"></a>
|
||||
<span class="sourceLineNo">060</span> } else {<a name="line.60"></a>
|
||||
<span class="sourceLineNo">061</span> start = ACFUtil.parseInt(ranges[0], 0);<a name="line.61"></a>
|
||||
<span class="sourceLineNo">062</span> end = ACFUtil.parseInt(ranges[1], 0);<a name="line.62"></a>
|
||||
<span class="sourceLineNo">063</span> }<a name="line.63"></a>
|
||||
<span class="sourceLineNo">064</span> return IntStream.rangeClosed(start, end).mapToObj(Integer::toString).collect(Collectors.toList());<a name="line.64"></a>
|
||||
<span class="sourceLineNo">065</span> });<a name="line.65"></a>
|
||||
<span class="sourceLineNo">066</span> List<String> timeunits = Arrays.asList("minutes", "hours", "days", "weeks", "months", "years");<a name="line.66"></a>
|
||||
<span class="sourceLineNo">067</span> registerAsyncCompletion("timeunits", (c) -> timeunits);<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> * Registr a completion handler to provide command completions based on the user input.<a name="line.71"></a>
|
||||
<span class="sourceLineNo">072</span> *<a name="line.72"></a>
|
||||
<span class="sourceLineNo">073</span> * @param id<a name="line.73"></a>
|
||||
<span class="sourceLineNo">074</span> * @param handler<a name="line.74"></a>
|
||||
<span class="sourceLineNo">075</span> * @return<a name="line.75"></a>
|
||||
<span class="sourceLineNo">076</span> */<a name="line.76"></a>
|
||||
<span class="sourceLineNo">077</span> public CommandCompletionHandler registerCompletion(String id, CommandCompletionHandler<C> handler) {<a name="line.77"></a>
|
||||
<span class="sourceLineNo">078</span> return this.completionMap.put("@" + id.toLowerCase(), handler);<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> /**<a name="line.81"></a>
|
||||
<span class="sourceLineNo">082</span> * Registr a completion handler to provide command completions based on the user input.<a name="line.82"></a>
|
||||
<span class="sourceLineNo">083</span> * This handler is declared to be safe to be executed asynchronously.<a name="line.83"></a>
|
||||
<span class="sourceLineNo">084</span> * <p><a name="line.84"></a>
|
||||
<span class="sourceLineNo">085</span> * Not all platforms support this, so if the platform does not support asynchronous execution,<a name="line.85"></a>
|
||||
<span class="sourceLineNo">086</span> * your handler will be executed on the main thread.<a name="line.86"></a>
|
||||
<span class="sourceLineNo">087</span> * <p><a name="line.87"></a>
|
||||
<span class="sourceLineNo">088</span> * Use this anytime your handler does not need to access state that is not considered thread safe.<a name="line.88"></a>
|
||||
<span class="sourceLineNo">042</span> private static final String DEFAULT_ENUM_ID = "@__defaultenum__";<a name="line.42"></a>
|
||||
<span class="sourceLineNo">043</span> private final CommandManager manager;<a name="line.43"></a>
|
||||
<span class="sourceLineNo">044</span> // TODO: use a CompletionProvider that can return a delegated Id or provide values such as enum support<a name="line.44"></a>
|
||||
<span class="sourceLineNo">045</span> private Map<String, CommandCompletionHandler> completionMap = new HashMap<>();<a name="line.45"></a>
|
||||
<span class="sourceLineNo">046</span> private Map<Class, String> defaultCompletions = new HashMap<>();<a name="line.46"></a>
|
||||
<span class="sourceLineNo">047</span><a name="line.47"></a>
|
||||
<span class="sourceLineNo">048</span> public CommandCompletions(CommandManager manager) {<a name="line.48"></a>
|
||||
<span class="sourceLineNo">049</span> this.manager = manager;<a name="line.49"></a>
|
||||
<span class="sourceLineNo">050</span> registerAsyncCompletion("nothing", c -> Collections.emptyList());<a name="line.50"></a>
|
||||
<span class="sourceLineNo">051</span> registerAsyncCompletion("range", (c) -> {<a name="line.51"></a>
|
||||
<span class="sourceLineNo">052</span> String config = c.getConfig();<a name="line.52"></a>
|
||||
<span class="sourceLineNo">053</span> if (config == null) {<a name="line.53"></a>
|
||||
<span class="sourceLineNo">054</span> return Collections.emptyList();<a name="line.54"></a>
|
||||
<span class="sourceLineNo">055</span> }<a name="line.55"></a>
|
||||
<span class="sourceLineNo">056</span> final String[] ranges = ACFPatterns.DASH.split(config);<a name="line.56"></a>
|
||||
<span class="sourceLineNo">057</span> int start;<a name="line.57"></a>
|
||||
<span class="sourceLineNo">058</span> int end;<a name="line.58"></a>
|
||||
<span class="sourceLineNo">059</span> if (ranges.length != 2) {<a name="line.59"></a>
|
||||
<span class="sourceLineNo">060</span> start = 0;<a name="line.60"></a>
|
||||
<span class="sourceLineNo">061</span> end = ACFUtil.parseInt(ranges[0], 0);<a name="line.61"></a>
|
||||
<span class="sourceLineNo">062</span> } else {<a name="line.62"></a>
|
||||
<span class="sourceLineNo">063</span> start = ACFUtil.parseInt(ranges[0], 0);<a name="line.63"></a>
|
||||
<span class="sourceLineNo">064</span> end = ACFUtil.parseInt(ranges[1], 0);<a name="line.64"></a>
|
||||
<span class="sourceLineNo">065</span> }<a name="line.65"></a>
|
||||
<span class="sourceLineNo">066</span> return IntStream.rangeClosed(start, end).mapToObj(Integer::toString).collect(Collectors.toList());<a name="line.66"></a>
|
||||
<span class="sourceLineNo">067</span> });<a name="line.67"></a>
|
||||
<span class="sourceLineNo">068</span> List<String> timeunits = Arrays.asList("minutes", "hours", "days", "weeks", "months", "years");<a name="line.68"></a>
|
||||
<span class="sourceLineNo">069</span> registerAsyncCompletion("timeunits", (c) -> timeunits);<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> * Registr a completion handler to provide command completions based on the user input.<a name="line.73"></a>
|
||||
<span class="sourceLineNo">074</span> *<a name="line.74"></a>
|
||||
<span class="sourceLineNo">075</span> * @param id<a name="line.75"></a>
|
||||
<span class="sourceLineNo">076</span> * @param handler<a name="line.76"></a>
|
||||
<span class="sourceLineNo">077</span> * @return<a name="line.77"></a>
|
||||
<span class="sourceLineNo">078</span> */<a name="line.78"></a>
|
||||
<span class="sourceLineNo">079</span> public CommandCompletionHandler registerCompletion(String id, CommandCompletionHandler<C> handler) {<a name="line.79"></a>
|
||||
<span class="sourceLineNo">080</span> return this.completionMap.put(prepareCompletionId(id), handler);<a name="line.80"></a>
|
||||
<span class="sourceLineNo">081</span> }<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> * Registr a completion handler to provide command completions based on the user input.<a name="line.84"></a>
|
||||
<span class="sourceLineNo">085</span> * This handler is declared to be safe to be executed asynchronously.<a name="line.85"></a>
|
||||
<span class="sourceLineNo">086</span> * <p><a name="line.86"></a>
|
||||
<span class="sourceLineNo">087</span> * Not all platforms support this, so if the platform does not support asynchronous execution,<a name="line.87"></a>
|
||||
<span class="sourceLineNo">088</span> * your handler will be executed on the main thread.<a name="line.88"></a>
|
||||
<span class="sourceLineNo">089</span> * <p><a name="line.89"></a>
|
||||
<span class="sourceLineNo">090</span> * Use context.isAsync() to determine if you are async or not.<a name="line.90"></a>
|
||||
<span class="sourceLineNo">091</span> *<a name="line.91"></a>
|
||||
<span class="sourceLineNo">092</span> * @param id<a name="line.92"></a>
|
||||
<span class="sourceLineNo">093</span> * @param handler<a name="line.93"></a>
|
||||
<span class="sourceLineNo">094</span> * @return<a name="line.94"></a>
|
||||
<span class="sourceLineNo">095</span> */<a name="line.95"></a>
|
||||
<span class="sourceLineNo">096</span> public CommandCompletionHandler registerAsyncCompletion(String id, AsyncCommandCompletionHandler<C> handler) {<a name="line.96"></a>
|
||||
<span class="sourceLineNo">097</span> return this.completionMap.put("@" + id.toLowerCase(), handler);<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> * Register a static list of command completions that will never change.<a name="line.101"></a>
|
||||
<span class="sourceLineNo">102</span> * Like @CommandCompletion, values are | (PIPE) separated.<a name="line.102"></a>
|
||||
<span class="sourceLineNo">103</span> * <p><a name="line.103"></a>
|
||||
<span class="sourceLineNo">104</span> * Example: foo|bar|baz<a name="line.104"></a>
|
||||
<span class="sourceLineNo">105</span> *<a name="line.105"></a>
|
||||
<span class="sourceLineNo">106</span> * @param id<a name="line.106"></a>
|
||||
<span class="sourceLineNo">107</span> * @param list<a name="line.107"></a>
|
||||
<span class="sourceLineNo">108</span> * @return<a name="line.108"></a>
|
||||
<span class="sourceLineNo">109</span> */<a name="line.109"></a>
|
||||
<span class="sourceLineNo">110</span> public CommandCompletionHandler registerStaticCompletion(String id, String list) {<a name="line.110"></a>
|
||||
<span class="sourceLineNo">111</span> return registerStaticCompletion(id, ACFPatterns.PIPE.split(list));<a name="line.111"></a>
|
||||
<span class="sourceLineNo">112</span> }<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> * Register a static list of command completions that will never change<a name="line.115"></a>
|
||||
<span class="sourceLineNo">116</span> *<a name="line.116"></a>
|
||||
<span class="sourceLineNo">117</span> * @param id<a name="line.117"></a>
|
||||
<span class="sourceLineNo">118</span> * @param completions<a name="line.118"></a>
|
||||
<span class="sourceLineNo">119</span> * @return<a name="line.119"></a>
|
||||
<span class="sourceLineNo">120</span> */<a name="line.120"></a>
|
||||
<span class="sourceLineNo">121</span> public CommandCompletionHandler registerStaticCompletion(String id, String[] completions) {<a name="line.121"></a>
|
||||
<span class="sourceLineNo">122</span> return registerStaticCompletion(id, Arrays.asList(completions));<a name="line.122"></a>
|
||||
<span class="sourceLineNo">123</span> }<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> * Register a static list of command completions that will never change. The list is obtained from the supplier<a name="line.126"></a>
|
||||
<span class="sourceLineNo">127</span> * immediately as part of this method call.<a name="line.127"></a>
|
||||
<span class="sourceLineNo">128</span> *<a name="line.128"></a>
|
||||
<span class="sourceLineNo">129</span> * @param id<a name="line.129"></a>
|
||||
<span class="sourceLineNo">130</span> * @param supplier<a name="line.130"></a>
|
||||
<span class="sourceLineNo">131</span> * @return<a name="line.131"></a>
|
||||
<span class="sourceLineNo">132</span> */<a name="line.132"></a>
|
||||
<span class="sourceLineNo">133</span> public CommandCompletionHandler registerStaticCompletion(String id, Supplier<Collection<String>> supplier) {<a name="line.133"></a>
|
||||
<span class="sourceLineNo">134</span> return registerStaticCompletion(id, supplier.get());<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> * Register a static list of command completions that will never change<a name="line.138"></a>
|
||||
<span class="sourceLineNo">139</span> *<a name="line.139"></a>
|
||||
<span class="sourceLineNo">140</span> * @param id<a name="line.140"></a>
|
||||
<span class="sourceLineNo">141</span> * @param completions<a name="line.141"></a>
|
||||
<span class="sourceLineNo">142</span> * @return<a name="line.142"></a>
|
||||
<span class="sourceLineNo">143</span> */<a name="line.143"></a>
|
||||
<span class="sourceLineNo">144</span> public CommandCompletionHandler registerStaticCompletion(String id, Collection<String> completions) {<a name="line.144"></a>
|
||||
<span class="sourceLineNo">145</span> return registerAsyncCompletion(id, x -> completions);<a name="line.145"></a>
|
||||
<span class="sourceLineNo">146</span> }<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> * @param id<a name="line.149"></a>
|
||||
<span class="sourceLineNo">150</span> * @param classes<a name="line.150"></a>
|
||||
<span class="sourceLineNo">151</span> * @return<a name="line.151"></a>
|
||||
<span class="sourceLineNo">152</span> * @deprecated Feature Not done yet<a name="line.152"></a>
|
||||
<span class="sourceLineNo">153</span> */<a name="line.153"></a>
|
||||
<span class="sourceLineNo">154</span> CommandCompletionHandler setDefaultCompletion(String id, Class... classes) {<a name="line.154"></a>
|
||||
<span class="sourceLineNo">155</span> // get completion with specified id<a name="line.155"></a>
|
||||
<span class="sourceLineNo">156</span> id = id.toLowerCase();<a name="line.156"></a>
|
||||
<span class="sourceLineNo">157</span> CommandCompletionHandler completion = completionMap.get(id);<a name="line.157"></a>
|
||||
<span class="sourceLineNo">158</span><a name="line.158"></a>
|
||||
<span class="sourceLineNo">159</span> if (completion == null) {<a name="line.159"></a>
|
||||
<span class="sourceLineNo">160</span> // Throw something because no completion with specified id<a name="line.160"></a>
|
||||
<span class="sourceLineNo">161</span> throw new IllegalStateException("Completion not registered for " + id);<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> for (Class clazz : classes) {<a name="line.164"></a>
|
||||
<span class="sourceLineNo">165</span> defaultCompletions.put(clazz, id);<a name="line.165"></a>
|
||||
<span class="sourceLineNo">090</span> * Use this anytime your handler does not need to access state that is not considered thread safe.<a name="line.90"></a>
|
||||
<span class="sourceLineNo">091</span> * <p><a name="line.91"></a>
|
||||
<span class="sourceLineNo">092</span> * Use context.isAsync() to determine if you are async or not.<a name="line.92"></a>
|
||||
<span class="sourceLineNo">093</span> *<a name="line.93"></a>
|
||||
<span class="sourceLineNo">094</span> * @param id<a name="line.94"></a>
|
||||
<span class="sourceLineNo">095</span> * @param handler<a name="line.95"></a>
|
||||
<span class="sourceLineNo">096</span> * @return<a name="line.96"></a>
|
||||
<span class="sourceLineNo">097</span> */<a name="line.97"></a>
|
||||
<span class="sourceLineNo">098</span> public CommandCompletionHandler registerAsyncCompletion(String id, AsyncCommandCompletionHandler<C> handler) {<a name="line.98"></a>
|
||||
<span class="sourceLineNo">099</span> return this.completionMap.put(prepareCompletionId(id), handler);<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> * Register a static list of command completions that will never change.<a name="line.103"></a>
|
||||
<span class="sourceLineNo">104</span> * Like @CommandCompletion, values are | (PIPE) separated.<a name="line.104"></a>
|
||||
<span class="sourceLineNo">105</span> * <p><a name="line.105"></a>
|
||||
<span class="sourceLineNo">106</span> * Example: foo|bar|baz<a name="line.106"></a>
|
||||
<span class="sourceLineNo">107</span> *<a name="line.107"></a>
|
||||
<span class="sourceLineNo">108</span> * @param id<a name="line.108"></a>
|
||||
<span class="sourceLineNo">109</span> * @param list<a name="line.109"></a>
|
||||
<span class="sourceLineNo">110</span> * @return<a name="line.110"></a>
|
||||
<span class="sourceLineNo">111</span> */<a name="line.111"></a>
|
||||
<span class="sourceLineNo">112</span> public CommandCompletionHandler registerStaticCompletion(String id, String list) {<a name="line.112"></a>
|
||||
<span class="sourceLineNo">113</span> return registerStaticCompletion(id, ACFPatterns.PIPE.split(list));<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> * Register a static list of command completions that will never change<a name="line.117"></a>
|
||||
<span class="sourceLineNo">118</span> *<a name="line.118"></a>
|
||||
<span class="sourceLineNo">119</span> * @param id<a name="line.119"></a>
|
||||
<span class="sourceLineNo">120</span> * @param completions<a name="line.120"></a>
|
||||
<span class="sourceLineNo">121</span> * @return<a name="line.121"></a>
|
||||
<span class="sourceLineNo">122</span> */<a name="line.122"></a>
|
||||
<span class="sourceLineNo">123</span> public CommandCompletionHandler registerStaticCompletion(String id, String[] completions) {<a name="line.123"></a>
|
||||
<span class="sourceLineNo">124</span> return registerStaticCompletion(id, Arrays.asList(completions));<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> * Register a static list of command completions that will never change. The list is obtained from the supplier<a name="line.128"></a>
|
||||
<span class="sourceLineNo">129</span> * immediately as part of this method call.<a name="line.129"></a>
|
||||
<span class="sourceLineNo">130</span> *<a name="line.130"></a>
|
||||
<span class="sourceLineNo">131</span> * @param id<a name="line.131"></a>
|
||||
<span class="sourceLineNo">132</span> * @param supplier<a name="line.132"></a>
|
||||
<span class="sourceLineNo">133</span> * @return<a name="line.133"></a>
|
||||
<span class="sourceLineNo">134</span> */<a name="line.134"></a>
|
||||
<span class="sourceLineNo">135</span> public CommandCompletionHandler registerStaticCompletion(String id, Supplier<Collection<String>> supplier) {<a name="line.135"></a>
|
||||
<span class="sourceLineNo">136</span> return registerStaticCompletion(id, supplier.get());<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> /**<a name="line.139"></a>
|
||||
<span class="sourceLineNo">140</span> * Register a static list of command completions that will never change<a name="line.140"></a>
|
||||
<span class="sourceLineNo">141</span> *<a name="line.141"></a>
|
||||
<span class="sourceLineNo">142</span> * @param id<a name="line.142"></a>
|
||||
<span class="sourceLineNo">143</span> * @param completions<a name="line.143"></a>
|
||||
<span class="sourceLineNo">144</span> * @return<a name="line.144"></a>
|
||||
<span class="sourceLineNo">145</span> */<a name="line.145"></a>
|
||||
<span class="sourceLineNo">146</span> public CommandCompletionHandler registerStaticCompletion(String id, Collection<String> completions) {<a name="line.146"></a>
|
||||
<span class="sourceLineNo">147</span> return registerAsyncCompletion(id, x -> completions);<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> * Registers a completion handler such as @players to default apply to all command parameters of the specified types<a name="line.151"></a>
|
||||
<span class="sourceLineNo">152</span> * <p><a name="line.152"></a>
|
||||
<span class="sourceLineNo">153</span> * This enables automatic completion support for parameters without manually defining it for custom objects<a name="line.153"></a>
|
||||
<span class="sourceLineNo">154</span> *<a name="line.154"></a>
|
||||
<span class="sourceLineNo">155</span> * @param id<a name="line.155"></a>
|
||||
<span class="sourceLineNo">156</span> * @param classes<a name="line.156"></a>
|
||||
<span class="sourceLineNo">157</span> */<a name="line.157"></a>
|
||||
<span class="sourceLineNo">158</span> public void setDefaultCompletion(String id, Class... classes) {<a name="line.158"></a>
|
||||
<span class="sourceLineNo">159</span> // get completion with specified id<a name="line.159"></a>
|
||||
<span class="sourceLineNo">160</span> id = prepareCompletionId(id);<a name="line.160"></a>
|
||||
<span class="sourceLineNo">161</span> CommandCompletionHandler completion = completionMap.get(id);<a name="line.161"></a>
|
||||
<span class="sourceLineNo">162</span><a name="line.162"></a>
|
||||
<span class="sourceLineNo">163</span> if (completion == null) {<a name="line.163"></a>
|
||||
<span class="sourceLineNo">164</span> // Throw something because no completion with specified id<a name="line.164"></a>
|
||||
<span class="sourceLineNo">165</span> throw new IllegalStateException("Completion not registered for " + id);<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> return completion;<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> @NotNull<a name="line.171"></a>
|
||||
<span class="sourceLineNo">172</span> List<String> of(RegisteredCommand cmd, CommandIssuer sender, String[] args, boolean isAsync) {<a name="line.172"></a>
|
||||
<span class="sourceLineNo">173</span> String[] completions = ACFPatterns.SPACE.split(cmd.complete);<a name="line.173"></a>
|
||||
<span class="sourceLineNo">174</span> final int argIndex = args.length - 1;<a name="line.174"></a>
|
||||
<span class="sourceLineNo">175</span><a name="line.175"></a>
|
||||
<span class="sourceLineNo">176</span> String input = args[argIndex];<a name="line.176"></a>
|
||||
<span class="sourceLineNo">168</span> for (Class clazz : classes) {<a name="line.168"></a>
|
||||
<span class="sourceLineNo">169</span> defaultCompletions.put(clazz, id);<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><a name="line.172"></a>
|
||||
<span class="sourceLineNo">173</span> @NotNull<a name="line.173"></a>
|
||||
<span class="sourceLineNo">174</span> private static String prepareCompletionId(String id) {<a name="line.174"></a>
|
||||
<span class="sourceLineNo">175</span> return (id.startsWith("@") ? "" : "@") + id.toLowerCase();<a name="line.175"></a>
|
||||
<span class="sourceLineNo">176</span> }<a name="line.176"></a>
|
||||
<span class="sourceLineNo">177</span><a name="line.177"></a>
|
||||
<span class="sourceLineNo">178</span> String completion = argIndex < completions.length ? completions[argIndex] : null;<a name="line.178"></a>
|
||||
<span class="sourceLineNo">179</span> if (completion == null && completions.length > 0) {<a name="line.179"></a>
|
||||
<span class="sourceLineNo">180</span> completion = completions[completions.length - 1];<a name="line.180"></a>
|
||||
<span class="sourceLineNo">181</span> }<a name="line.181"></a>
|
||||
<span class="sourceLineNo">182</span> if (completion == null) {<a name="line.182"></a>
|
||||
<span class="sourceLineNo">183</span> return Collections.singletonList(input);<a name="line.183"></a>
|
||||
<span class="sourceLineNo">184</span> }<a name="line.184"></a>
|
||||
<span class="sourceLineNo">185</span><a name="line.185"></a>
|
||||
<span class="sourceLineNo">186</span> return getCompletionValues(cmd, sender, completion, args, isAsync);<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> List<String> getCompletionValues(RegisteredCommand command, CommandIssuer sender, String completion, String[] args, boolean isAsync) {<a name="line.189"></a>
|
||||
<span class="sourceLineNo">190</span> completion = manager.getCommandReplacements().replace(completion);<a name="line.190"></a>
|
||||
<span class="sourceLineNo">191</span><a name="line.191"></a>
|
||||
<span class="sourceLineNo">192</span> List<String> allCompletions = new ArrayList<>();<a name="line.192"></a>
|
||||
<span class="sourceLineNo">193</span> String input = args.length > 0 ? args[args.length - 1] : "";<a name="line.193"></a>
|
||||
<span class="sourceLineNo">194</span><a name="line.194"></a>
|
||||
<span class="sourceLineNo">195</span> for (String value : ACFPatterns.PIPE.split(completion)) {<a name="line.195"></a>
|
||||
<span class="sourceLineNo">196</span> String[] complete = ACFPatterns.COLONEQUALS.split(value, 2);<a name="line.196"></a>
|
||||
<span class="sourceLineNo">197</span> CommandCompletionHandler handler = this.completionMap.get(complete[0].toLowerCase());<a name="line.197"></a>
|
||||
<span class="sourceLineNo">198</span> if (handler != null) {<a name="line.198"></a>
|
||||
<span class="sourceLineNo">199</span> if (isAsync && !(handler instanceof AsyncCommandCompletionHandler)) {<a name="line.199"></a>
|
||||
<span class="sourceLineNo">200</span> ACFUtil.sneaky(new SyncCompletionRequired());<a name="line.200"></a>
|
||||
<span class="sourceLineNo">201</span> return null;<a name="line.201"></a>
|
||||
<span class="sourceLineNo">202</span> }<a name="line.202"></a>
|
||||
<span class="sourceLineNo">203</span> String config = complete.length == 1 ? null : complete[1];<a name="line.203"></a>
|
||||
<span class="sourceLineNo">204</span> CommandCompletionContext context = manager.createCompletionContext(command, sender, input, config, args);<a name="line.204"></a>
|
||||
<span class="sourceLineNo">205</span><a name="line.205"></a>
|
||||
<span class="sourceLineNo">206</span> try {<a name="line.206"></a>
|
||||
<span class="sourceLineNo">207</span> //noinspection unchecked<a name="line.207"></a>
|
||||
<span class="sourceLineNo">208</span> Collection<String> completions = handler.getCompletions(context);<a name="line.208"></a>
|
||||
<span class="sourceLineNo">209</span> if (completions != null) {<a name="line.209"></a>
|
||||
<span class="sourceLineNo">210</span> allCompletions.addAll(completions);<a name="line.210"></a>
|
||||
<span class="sourceLineNo">211</span> continue;<a name="line.211"></a>
|
||||
<span class="sourceLineNo">212</span> }<a name="line.212"></a>
|
||||
<span class="sourceLineNo">213</span> //noinspection ConstantIfStatement,ConstantConditions<a name="line.213"></a>
|
||||
<span class="sourceLineNo">214</span> if (false) { // Hack to fool compiler. since its sneakily thrown.<a name="line.214"></a>
|
||||
<span class="sourceLineNo">215</span> throw new CommandCompletionTextLookupException();<a name="line.215"></a>
|
||||
<span class="sourceLineNo">216</span> }<a name="line.216"></a>
|
||||
<span class="sourceLineNo">217</span> } catch (CommandCompletionTextLookupException ignored) {<a name="line.217"></a>
|
||||
<span class="sourceLineNo">218</span> // This should only happen if some other feedback error occured.<a name="line.218"></a>
|
||||
<span class="sourceLineNo">219</span> } catch (Exception e) {<a name="line.219"></a>
|
||||
<span class="sourceLineNo">220</span> command.handleException(sender, Arrays.asList(args), e);<a name="line.220"></a>
|
||||
<span class="sourceLineNo">178</span> @NotNull<a name="line.178"></a>
|
||||
<span class="sourceLineNo">179</span> List<String> of(RegisteredCommand cmd, CommandIssuer sender, String[] args, boolean isAsync) {<a name="line.179"></a>
|
||||
<span class="sourceLineNo">180</span> String[] completions = ACFPatterns.SPACE.split(cmd.complete);<a name="line.180"></a>
|
||||
<span class="sourceLineNo">181</span> final int argIndex = args.length - 1;<a name="line.181"></a>
|
||||
<span class="sourceLineNo">182</span><a name="line.182"></a>
|
||||
<span class="sourceLineNo">183</span> String input = args[argIndex];<a name="line.183"></a>
|
||||
<span class="sourceLineNo">184</span><a name="line.184"></a>
|
||||
<span class="sourceLineNo">185</span> String completion = argIndex < completions.length ? completions[argIndex] : null;<a name="line.185"></a>
|
||||
<span class="sourceLineNo">186</span> if (completion == null || "*".equals(completion)) {<a name="line.186"></a>
|
||||
<span class="sourceLineNo">187</span> completion = findDefaultCompletion(cmd, args);<a name="line.187"></a>
|
||||
<span class="sourceLineNo">188</span> }<a name="line.188"></a>
|
||||
<span class="sourceLineNo">189</span><a name="line.189"></a>
|
||||
<span class="sourceLineNo">190</span> if (completion == null && completions.length > 0) {<a name="line.190"></a>
|
||||
<span class="sourceLineNo">191</span> String last = completions[completions.length - 1];<a name="line.191"></a>
|
||||
<span class="sourceLineNo">192</span> if (last.startsWith("repeat@")) {<a name="line.192"></a>
|
||||
<span class="sourceLineNo">193</span> completion = last;<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><a name="line.196"></a>
|
||||
<span class="sourceLineNo">197</span> if (completion == null) {<a name="line.197"></a>
|
||||
<span class="sourceLineNo">198</span> return Collections.singletonList(input);<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> return getCompletionValues(cmd, sender, completion, args, isAsync);<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> String findDefaultCompletion(RegisteredCommand cmd, String[] args) {<a name="line.204"></a>
|
||||
<span class="sourceLineNo">205</span> int i = 0;<a name="line.205"></a>
|
||||
<span class="sourceLineNo">206</span> for (CommandParameter param : cmd.parameters) {<a name="line.206"></a>
|
||||
<span class="sourceLineNo">207</span> if (param.canConsumeInput() && ++i == args.length) {<a name="line.207"></a>
|
||||
<span class="sourceLineNo">208</span> Class type = param.getType();<a name="line.208"></a>
|
||||
<span class="sourceLineNo">209</span> while (type != null) {<a name="line.209"></a>
|
||||
<span class="sourceLineNo">210</span> String completion = this.defaultCompletions.get(type);<a name="line.210"></a>
|
||||
<span class="sourceLineNo">211</span> if (completion != null) {<a name="line.211"></a>
|
||||
<span class="sourceLineNo">212</span> return completion;<a name="line.212"></a>
|
||||
<span class="sourceLineNo">213</span> }<a name="line.213"></a>
|
||||
<span class="sourceLineNo">214</span> type = type.getSuperclass();<a name="line.214"></a>
|
||||
<span class="sourceLineNo">215</span> }<a name="line.215"></a>
|
||||
<span class="sourceLineNo">216</span> if (param.getType().isEnum()) {<a name="line.216"></a>
|
||||
<span class="sourceLineNo">217</span> CommandOperationContext ctx = CommandManager.getCurrentCommandOperationContext();<a name="line.217"></a>
|
||||
<span class="sourceLineNo">218</span> //noinspection unchecked<a name="line.218"></a>
|
||||
<span class="sourceLineNo">219</span> ctx.enumCompletionValues = ACFUtil.enumNames((Class<? extends Enum<?>>) param.getType());<a name="line.219"></a>
|
||||
<span class="sourceLineNo">220</span> return DEFAULT_ENUM_ID;<a name="line.220"></a>
|
||||
<span class="sourceLineNo">221</span> }<a name="line.221"></a>
|
||||
<span class="sourceLineNo">222</span> // Something went wrong in lookup, fall back to input<a name="line.222"></a>
|
||||
<span class="sourceLineNo">223</span> return Collections.singletonList(input);<a name="line.223"></a>
|
||||
<span class="sourceLineNo">224</span> } else {<a name="line.224"></a>
|
||||
<span class="sourceLineNo">225</span> // Plaintext value<a name="line.225"></a>
|
||||
<span class="sourceLineNo">226</span> allCompletions.add(value);<a name="line.226"></a>
|
||||
<span class="sourceLineNo">227</span> }<a name="line.227"></a>
|
||||
<span class="sourceLineNo">228</span> }<a name="line.228"></a>
|
||||
<span class="sourceLineNo">229</span> return allCompletions;<a name="line.229"></a>
|
||||
<span class="sourceLineNo">230</span> }<a name="line.230"></a>
|
||||
<span class="sourceLineNo">231</span><a name="line.231"></a>
|
||||
<span class="sourceLineNo">232</span> public interface CommandCompletionHandler<C extends CommandCompletionContext> {<a name="line.232"></a>
|
||||
<span class="sourceLineNo">233</span> Collection<String> getCompletions(C context) throws InvalidCommandArgument;<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> public interface AsyncCommandCompletionHandler<C extends CommandCompletionContext> extends CommandCompletionHandler<C> {<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> public static class SyncCompletionRequired extends RuntimeException {<a name="line.239"></a>
|
||||
<span class="sourceLineNo">240</span> }<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">222</span> break;<a name="line.222"></a>
|
||||
<span class="sourceLineNo">223</span> }<a name="line.223"></a>
|
||||
<span class="sourceLineNo">224</span> }<a name="line.224"></a>
|
||||
<span class="sourceLineNo">225</span> return null;<a name="line.225"></a>
|
||||
<span class="sourceLineNo">226</span> }<a name="line.226"></a>
|
||||
<span class="sourceLineNo">227</span><a name="line.227"></a>
|
||||
<span class="sourceLineNo">228</span> List<String> getCompletionValues(RegisteredCommand command, CommandIssuer sender, String completion, String[] args, boolean isAsync) {<a name="line.228"></a>
|
||||
<span class="sourceLineNo">229</span> if (DEFAULT_ENUM_ID.equals(completion)) {<a name="line.229"></a>
|
||||
<span class="sourceLineNo">230</span> CommandOperationContext<?> ctx = CommandManager.getCurrentCommandOperationContext();<a name="line.230"></a>
|
||||
<span class="sourceLineNo">231</span> return ctx.enumCompletionValues;<a name="line.231"></a>
|
||||
<span class="sourceLineNo">232</span> }<a name="line.232"></a>
|
||||
<span class="sourceLineNo">233</span> if (completion.startsWith("repeat@")) {<a name="line.233"></a>
|
||||
<span class="sourceLineNo">234</span> completion = completion.substring(6);<a name="line.234"></a>
|
||||
<span class="sourceLineNo">235</span> }<a name="line.235"></a>
|
||||
<span class="sourceLineNo">236</span> completion = manager.getCommandReplacements().replace(completion);<a name="line.236"></a>
|
||||
<span class="sourceLineNo">237</span><a name="line.237"></a>
|
||||
<span class="sourceLineNo">238</span> List<String> allCompletions = new ArrayList<>();<a name="line.238"></a>
|
||||
<span class="sourceLineNo">239</span> String input = args.length > 0 ? args[args.length - 1] : "";<a name="line.239"></a>
|
||||
<span class="sourceLineNo">240</span><a name="line.240"></a>
|
||||
<span class="sourceLineNo">241</span> for (String value : ACFPatterns.PIPE.split(completion)) {<a name="line.241"></a>
|
||||
<span class="sourceLineNo">242</span> String[] complete = ACFPatterns.COLONEQUALS.split(value, 2);<a name="line.242"></a>
|
||||
<span class="sourceLineNo">243</span> CommandCompletionHandler handler = this.completionMap.get(complete[0].toLowerCase());<a name="line.243"></a>
|
||||
<span class="sourceLineNo">244</span> if (handler != null) {<a name="line.244"></a>
|
||||
<span class="sourceLineNo">245</span> if (isAsync && !(handler instanceof AsyncCommandCompletionHandler)) {<a name="line.245"></a>
|
||||
<span class="sourceLineNo">246</span> ACFUtil.sneaky(new SyncCompletionRequired());<a name="line.246"></a>
|
||||
<span class="sourceLineNo">247</span> return null;<a name="line.247"></a>
|
||||
<span class="sourceLineNo">248</span> }<a name="line.248"></a>
|
||||
<span class="sourceLineNo">249</span> String config = complete.length == 1 ? null : complete[1];<a name="line.249"></a>
|
||||
<span class="sourceLineNo">250</span> CommandCompletionContext context = manager.createCompletionContext(command, sender, input, config, args);<a name="line.250"></a>
|
||||
<span class="sourceLineNo">251</span><a name="line.251"></a>
|
||||
<span class="sourceLineNo">252</span> try {<a name="line.252"></a>
|
||||
<span class="sourceLineNo">253</span> //noinspection unchecked<a name="line.253"></a>
|
||||
<span class="sourceLineNo">254</span> Collection<String> completions = handler.getCompletions(context);<a name="line.254"></a>
|
||||
<span class="sourceLineNo">255</span> if (completions != null) {<a name="line.255"></a>
|
||||
<span class="sourceLineNo">256</span> allCompletions.addAll(completions);<a name="line.256"></a>
|
||||
<span class="sourceLineNo">257</span> continue;<a name="line.257"></a>
|
||||
<span class="sourceLineNo">258</span> }<a name="line.258"></a>
|
||||
<span class="sourceLineNo">259</span> //noinspection ConstantIfStatement,ConstantConditions<a name="line.259"></a>
|
||||
<span class="sourceLineNo">260</span> if (false) { // Hack to fool compiler. since its sneakily thrown.<a name="line.260"></a>
|
||||
<span class="sourceLineNo">261</span> throw new CommandCompletionTextLookupException();<a name="line.261"></a>
|
||||
<span class="sourceLineNo">262</span> }<a name="line.262"></a>
|
||||
<span class="sourceLineNo">263</span> } catch (CommandCompletionTextLookupException ignored) {<a name="line.263"></a>
|
||||
<span class="sourceLineNo">264</span> // This should only happen if some other feedback error occured.<a name="line.264"></a>
|
||||
<span class="sourceLineNo">265</span> } catch (Exception e) {<a name="line.265"></a>
|
||||
<span class="sourceLineNo">266</span> command.handleException(sender, Arrays.asList(args), e);<a name="line.266"></a>
|
||||
<span class="sourceLineNo">267</span> }<a name="line.267"></a>
|
||||
<span class="sourceLineNo">268</span> // Something went wrong in lookup, fall back to input<a name="line.268"></a>
|
||||
<span class="sourceLineNo">269</span> return Collections.singletonList(input);<a name="line.269"></a>
|
||||
<span class="sourceLineNo">270</span> } else {<a name="line.270"></a>
|
||||
<span class="sourceLineNo">271</span> // Plaintext value<a name="line.271"></a>
|
||||
<span class="sourceLineNo">272</span> allCompletions.add(value);<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> return allCompletions;<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 interface CommandCompletionHandler<C extends CommandCompletionContext> {<a name="line.278"></a>
|
||||
<span class="sourceLineNo">279</span> Collection<String> getCompletions(C context) throws InvalidCommandArgument;<a name="line.279"></a>
|
||||
<span class="sourceLineNo">280</span> }<a name="line.280"></a>
|
||||
<span class="sourceLineNo">281</span><a name="line.281"></a>
|
||||
<span class="sourceLineNo">282</span> public interface AsyncCommandCompletionHandler<C extends CommandCompletionContext> extends CommandCompletionHandler<C> {<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> public static class SyncCompletionRequired extends RuntimeException {<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>
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -47,207 +47,253 @@
|
||||
<span class="sourceLineNo">039</span><a name="line.39"></a>
|
||||
<span class="sourceLineNo">040</span>@SuppressWarnings({"WeakerAccess", "UnusedReturnValue"})<a name="line.40"></a>
|
||||
<span class="sourceLineNo">041</span>public class CommandCompletions<C extends CommandCompletionContext> {<a name="line.41"></a>
|
||||
<span class="sourceLineNo">042</span> private final CommandManager manager;<a name="line.42"></a>
|
||||
<span class="sourceLineNo">043</span> private Map<String, CommandCompletionHandler> completionMap = new HashMap<>();<a name="line.43"></a>
|
||||
<span class="sourceLineNo">044</span> private Map<Class, String> defaultCompletions = new HashMap<>();<a name="line.44"></a>
|
||||
<span class="sourceLineNo">045</span><a name="line.45"></a>
|
||||
<span class="sourceLineNo">046</span> public CommandCompletions(CommandManager manager) {<a name="line.46"></a>
|
||||
<span class="sourceLineNo">047</span> this.manager = manager;<a name="line.47"></a>
|
||||
<span class="sourceLineNo">048</span> registerAsyncCompletion("nothing", c -> Collections.emptyList());<a name="line.48"></a>
|
||||
<span class="sourceLineNo">049</span> registerAsyncCompletion("range", (c) -> {<a name="line.49"></a>
|
||||
<span class="sourceLineNo">050</span> String config = c.getConfig();<a name="line.50"></a>
|
||||
<span class="sourceLineNo">051</span> if (config == null) {<a name="line.51"></a>
|
||||
<span class="sourceLineNo">052</span> return Collections.emptyList();<a name="line.52"></a>
|
||||
<span class="sourceLineNo">053</span> }<a name="line.53"></a>
|
||||
<span class="sourceLineNo">054</span> final String[] ranges = ACFPatterns.DASH.split(config);<a name="line.54"></a>
|
||||
<span class="sourceLineNo">055</span> int start;<a name="line.55"></a>
|
||||
<span class="sourceLineNo">056</span> int end;<a name="line.56"></a>
|
||||
<span class="sourceLineNo">057</span> if (ranges.length != 2) {<a name="line.57"></a>
|
||||
<span class="sourceLineNo">058</span> start = 0;<a name="line.58"></a>
|
||||
<span class="sourceLineNo">059</span> end = ACFUtil.parseInt(ranges[0], 0);<a name="line.59"></a>
|
||||
<span class="sourceLineNo">060</span> } else {<a name="line.60"></a>
|
||||
<span class="sourceLineNo">061</span> start = ACFUtil.parseInt(ranges[0], 0);<a name="line.61"></a>
|
||||
<span class="sourceLineNo">062</span> end = ACFUtil.parseInt(ranges[1], 0);<a name="line.62"></a>
|
||||
<span class="sourceLineNo">063</span> }<a name="line.63"></a>
|
||||
<span class="sourceLineNo">064</span> return IntStream.rangeClosed(start, end).mapToObj(Integer::toString).collect(Collectors.toList());<a name="line.64"></a>
|
||||
<span class="sourceLineNo">065</span> });<a name="line.65"></a>
|
||||
<span class="sourceLineNo">066</span> List<String> timeunits = Arrays.asList("minutes", "hours", "days", "weeks", "months", "years");<a name="line.66"></a>
|
||||
<span class="sourceLineNo">067</span> registerAsyncCompletion("timeunits", (c) -> timeunits);<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> * Registr a completion handler to provide command completions based on the user input.<a name="line.71"></a>
|
||||
<span class="sourceLineNo">072</span> *<a name="line.72"></a>
|
||||
<span class="sourceLineNo">073</span> * @param id<a name="line.73"></a>
|
||||
<span class="sourceLineNo">074</span> * @param handler<a name="line.74"></a>
|
||||
<span class="sourceLineNo">075</span> * @return<a name="line.75"></a>
|
||||
<span class="sourceLineNo">076</span> */<a name="line.76"></a>
|
||||
<span class="sourceLineNo">077</span> public CommandCompletionHandler registerCompletion(String id, CommandCompletionHandler<C> handler) {<a name="line.77"></a>
|
||||
<span class="sourceLineNo">078</span> return this.completionMap.put("@" + id.toLowerCase(), handler);<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> /**<a name="line.81"></a>
|
||||
<span class="sourceLineNo">082</span> * Registr a completion handler to provide command completions based on the user input.<a name="line.82"></a>
|
||||
<span class="sourceLineNo">083</span> * This handler is declared to be safe to be executed asynchronously.<a name="line.83"></a>
|
||||
<span class="sourceLineNo">084</span> * <p><a name="line.84"></a>
|
||||
<span class="sourceLineNo">085</span> * Not all platforms support this, so if the platform does not support asynchronous execution,<a name="line.85"></a>
|
||||
<span class="sourceLineNo">086</span> * your handler will be executed on the main thread.<a name="line.86"></a>
|
||||
<span class="sourceLineNo">087</span> * <p><a name="line.87"></a>
|
||||
<span class="sourceLineNo">088</span> * Use this anytime your handler does not need to access state that is not considered thread safe.<a name="line.88"></a>
|
||||
<span class="sourceLineNo">042</span> private static final String DEFAULT_ENUM_ID = "@__defaultenum__";<a name="line.42"></a>
|
||||
<span class="sourceLineNo">043</span> private final CommandManager manager;<a name="line.43"></a>
|
||||
<span class="sourceLineNo">044</span> // TODO: use a CompletionProvider that can return a delegated Id or provide values such as enum support<a name="line.44"></a>
|
||||
<span class="sourceLineNo">045</span> private Map<String, CommandCompletionHandler> completionMap = new HashMap<>();<a name="line.45"></a>
|
||||
<span class="sourceLineNo">046</span> private Map<Class, String> defaultCompletions = new HashMap<>();<a name="line.46"></a>
|
||||
<span class="sourceLineNo">047</span><a name="line.47"></a>
|
||||
<span class="sourceLineNo">048</span> public CommandCompletions(CommandManager manager) {<a name="line.48"></a>
|
||||
<span class="sourceLineNo">049</span> this.manager = manager;<a name="line.49"></a>
|
||||
<span class="sourceLineNo">050</span> registerAsyncCompletion("nothing", c -> Collections.emptyList());<a name="line.50"></a>
|
||||
<span class="sourceLineNo">051</span> registerAsyncCompletion("range", (c) -> {<a name="line.51"></a>
|
||||
<span class="sourceLineNo">052</span> String config = c.getConfig();<a name="line.52"></a>
|
||||
<span class="sourceLineNo">053</span> if (config == null) {<a name="line.53"></a>
|
||||
<span class="sourceLineNo">054</span> return Collections.emptyList();<a name="line.54"></a>
|
||||
<span class="sourceLineNo">055</span> }<a name="line.55"></a>
|
||||
<span class="sourceLineNo">056</span> final String[] ranges = ACFPatterns.DASH.split(config);<a name="line.56"></a>
|
||||
<span class="sourceLineNo">057</span> int start;<a name="line.57"></a>
|
||||
<span class="sourceLineNo">058</span> int end;<a name="line.58"></a>
|
||||
<span class="sourceLineNo">059</span> if (ranges.length != 2) {<a name="line.59"></a>
|
||||
<span class="sourceLineNo">060</span> start = 0;<a name="line.60"></a>
|
||||
<span class="sourceLineNo">061</span> end = ACFUtil.parseInt(ranges[0], 0);<a name="line.61"></a>
|
||||
<span class="sourceLineNo">062</span> } else {<a name="line.62"></a>
|
||||
<span class="sourceLineNo">063</span> start = ACFUtil.parseInt(ranges[0], 0);<a name="line.63"></a>
|
||||
<span class="sourceLineNo">064</span> end = ACFUtil.parseInt(ranges[1], 0);<a name="line.64"></a>
|
||||
<span class="sourceLineNo">065</span> }<a name="line.65"></a>
|
||||
<span class="sourceLineNo">066</span> return IntStream.rangeClosed(start, end).mapToObj(Integer::toString).collect(Collectors.toList());<a name="line.66"></a>
|
||||
<span class="sourceLineNo">067</span> });<a name="line.67"></a>
|
||||
<span class="sourceLineNo">068</span> List<String> timeunits = Arrays.asList("minutes", "hours", "days", "weeks", "months", "years");<a name="line.68"></a>
|
||||
<span class="sourceLineNo">069</span> registerAsyncCompletion("timeunits", (c) -> timeunits);<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> * Registr a completion handler to provide command completions based on the user input.<a name="line.73"></a>
|
||||
<span class="sourceLineNo">074</span> *<a name="line.74"></a>
|
||||
<span class="sourceLineNo">075</span> * @param id<a name="line.75"></a>
|
||||
<span class="sourceLineNo">076</span> * @param handler<a name="line.76"></a>
|
||||
<span class="sourceLineNo">077</span> * @return<a name="line.77"></a>
|
||||
<span class="sourceLineNo">078</span> */<a name="line.78"></a>
|
||||
<span class="sourceLineNo">079</span> public CommandCompletionHandler registerCompletion(String id, CommandCompletionHandler<C> handler) {<a name="line.79"></a>
|
||||
<span class="sourceLineNo">080</span> return this.completionMap.put(prepareCompletionId(id), handler);<a name="line.80"></a>
|
||||
<span class="sourceLineNo">081</span> }<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> * Registr a completion handler to provide command completions based on the user input.<a name="line.84"></a>
|
||||
<span class="sourceLineNo">085</span> * This handler is declared to be safe to be executed asynchronously.<a name="line.85"></a>
|
||||
<span class="sourceLineNo">086</span> * <p><a name="line.86"></a>
|
||||
<span class="sourceLineNo">087</span> * Not all platforms support this, so if the platform does not support asynchronous execution,<a name="line.87"></a>
|
||||
<span class="sourceLineNo">088</span> * your handler will be executed on the main thread.<a name="line.88"></a>
|
||||
<span class="sourceLineNo">089</span> * <p><a name="line.89"></a>
|
||||
<span class="sourceLineNo">090</span> * Use context.isAsync() to determine if you are async or not.<a name="line.90"></a>
|
||||
<span class="sourceLineNo">091</span> *<a name="line.91"></a>
|
||||
<span class="sourceLineNo">092</span> * @param id<a name="line.92"></a>
|
||||
<span class="sourceLineNo">093</span> * @param handler<a name="line.93"></a>
|
||||
<span class="sourceLineNo">094</span> * @return<a name="line.94"></a>
|
||||
<span class="sourceLineNo">095</span> */<a name="line.95"></a>
|
||||
<span class="sourceLineNo">096</span> public CommandCompletionHandler registerAsyncCompletion(String id, AsyncCommandCompletionHandler<C> handler) {<a name="line.96"></a>
|
||||
<span class="sourceLineNo">097</span> return this.completionMap.put("@" + id.toLowerCase(), handler);<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> * Register a static list of command completions that will never change.<a name="line.101"></a>
|
||||
<span class="sourceLineNo">102</span> * Like @CommandCompletion, values are | (PIPE) separated.<a name="line.102"></a>
|
||||
<span class="sourceLineNo">103</span> * <p><a name="line.103"></a>
|
||||
<span class="sourceLineNo">104</span> * Example: foo|bar|baz<a name="line.104"></a>
|
||||
<span class="sourceLineNo">105</span> *<a name="line.105"></a>
|
||||
<span class="sourceLineNo">106</span> * @param id<a name="line.106"></a>
|
||||
<span class="sourceLineNo">107</span> * @param list<a name="line.107"></a>
|
||||
<span class="sourceLineNo">108</span> * @return<a name="line.108"></a>
|
||||
<span class="sourceLineNo">109</span> */<a name="line.109"></a>
|
||||
<span class="sourceLineNo">110</span> public CommandCompletionHandler registerStaticCompletion(String id, String list) {<a name="line.110"></a>
|
||||
<span class="sourceLineNo">111</span> return registerStaticCompletion(id, ACFPatterns.PIPE.split(list));<a name="line.111"></a>
|
||||
<span class="sourceLineNo">112</span> }<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> * Register a static list of command completions that will never change<a name="line.115"></a>
|
||||
<span class="sourceLineNo">116</span> *<a name="line.116"></a>
|
||||
<span class="sourceLineNo">117</span> * @param id<a name="line.117"></a>
|
||||
<span class="sourceLineNo">118</span> * @param completions<a name="line.118"></a>
|
||||
<span class="sourceLineNo">119</span> * @return<a name="line.119"></a>
|
||||
<span class="sourceLineNo">120</span> */<a name="line.120"></a>
|
||||
<span class="sourceLineNo">121</span> public CommandCompletionHandler registerStaticCompletion(String id, String[] completions) {<a name="line.121"></a>
|
||||
<span class="sourceLineNo">122</span> return registerStaticCompletion(id, Arrays.asList(completions));<a name="line.122"></a>
|
||||
<span class="sourceLineNo">123</span> }<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> * Register a static list of command completions that will never change. The list is obtained from the supplier<a name="line.126"></a>
|
||||
<span class="sourceLineNo">127</span> * immediately as part of this method call.<a name="line.127"></a>
|
||||
<span class="sourceLineNo">128</span> *<a name="line.128"></a>
|
||||
<span class="sourceLineNo">129</span> * @param id<a name="line.129"></a>
|
||||
<span class="sourceLineNo">130</span> * @param supplier<a name="line.130"></a>
|
||||
<span class="sourceLineNo">131</span> * @return<a name="line.131"></a>
|
||||
<span class="sourceLineNo">132</span> */<a name="line.132"></a>
|
||||
<span class="sourceLineNo">133</span> public CommandCompletionHandler registerStaticCompletion(String id, Supplier<Collection<String>> supplier) {<a name="line.133"></a>
|
||||
<span class="sourceLineNo">134</span> return registerStaticCompletion(id, supplier.get());<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> * Register a static list of command completions that will never change<a name="line.138"></a>
|
||||
<span class="sourceLineNo">139</span> *<a name="line.139"></a>
|
||||
<span class="sourceLineNo">140</span> * @param id<a name="line.140"></a>
|
||||
<span class="sourceLineNo">141</span> * @param completions<a name="line.141"></a>
|
||||
<span class="sourceLineNo">142</span> * @return<a name="line.142"></a>
|
||||
<span class="sourceLineNo">143</span> */<a name="line.143"></a>
|
||||
<span class="sourceLineNo">144</span> public CommandCompletionHandler registerStaticCompletion(String id, Collection<String> completions) {<a name="line.144"></a>
|
||||
<span class="sourceLineNo">145</span> return registerAsyncCompletion(id, x -> completions);<a name="line.145"></a>
|
||||
<span class="sourceLineNo">146</span> }<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> * @param id<a name="line.149"></a>
|
||||
<span class="sourceLineNo">150</span> * @param classes<a name="line.150"></a>
|
||||
<span class="sourceLineNo">151</span> * @return<a name="line.151"></a>
|
||||
<span class="sourceLineNo">152</span> * @deprecated Feature Not done yet<a name="line.152"></a>
|
||||
<span class="sourceLineNo">153</span> */<a name="line.153"></a>
|
||||
<span class="sourceLineNo">154</span> CommandCompletionHandler setDefaultCompletion(String id, Class... classes) {<a name="line.154"></a>
|
||||
<span class="sourceLineNo">155</span> // get completion with specified id<a name="line.155"></a>
|
||||
<span class="sourceLineNo">156</span> id = id.toLowerCase();<a name="line.156"></a>
|
||||
<span class="sourceLineNo">157</span> CommandCompletionHandler completion = completionMap.get(id);<a name="line.157"></a>
|
||||
<span class="sourceLineNo">158</span><a name="line.158"></a>
|
||||
<span class="sourceLineNo">159</span> if (completion == null) {<a name="line.159"></a>
|
||||
<span class="sourceLineNo">160</span> // Throw something because no completion with specified id<a name="line.160"></a>
|
||||
<span class="sourceLineNo">161</span> throw new IllegalStateException("Completion not registered for " + id);<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> for (Class clazz : classes) {<a name="line.164"></a>
|
||||
<span class="sourceLineNo">165</span> defaultCompletions.put(clazz, id);<a name="line.165"></a>
|
||||
<span class="sourceLineNo">090</span> * Use this anytime your handler does not need to access state that is not considered thread safe.<a name="line.90"></a>
|
||||
<span class="sourceLineNo">091</span> * <p><a name="line.91"></a>
|
||||
<span class="sourceLineNo">092</span> * Use context.isAsync() to determine if you are async or not.<a name="line.92"></a>
|
||||
<span class="sourceLineNo">093</span> *<a name="line.93"></a>
|
||||
<span class="sourceLineNo">094</span> * @param id<a name="line.94"></a>
|
||||
<span class="sourceLineNo">095</span> * @param handler<a name="line.95"></a>
|
||||
<span class="sourceLineNo">096</span> * @return<a name="line.96"></a>
|
||||
<span class="sourceLineNo">097</span> */<a name="line.97"></a>
|
||||
<span class="sourceLineNo">098</span> public CommandCompletionHandler registerAsyncCompletion(String id, AsyncCommandCompletionHandler<C> handler) {<a name="line.98"></a>
|
||||
<span class="sourceLineNo">099</span> return this.completionMap.put(prepareCompletionId(id), handler);<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> * Register a static list of command completions that will never change.<a name="line.103"></a>
|
||||
<span class="sourceLineNo">104</span> * Like @CommandCompletion, values are | (PIPE) separated.<a name="line.104"></a>
|
||||
<span class="sourceLineNo">105</span> * <p><a name="line.105"></a>
|
||||
<span class="sourceLineNo">106</span> * Example: foo|bar|baz<a name="line.106"></a>
|
||||
<span class="sourceLineNo">107</span> *<a name="line.107"></a>
|
||||
<span class="sourceLineNo">108</span> * @param id<a name="line.108"></a>
|
||||
<span class="sourceLineNo">109</span> * @param list<a name="line.109"></a>
|
||||
<span class="sourceLineNo">110</span> * @return<a name="line.110"></a>
|
||||
<span class="sourceLineNo">111</span> */<a name="line.111"></a>
|
||||
<span class="sourceLineNo">112</span> public CommandCompletionHandler registerStaticCompletion(String id, String list) {<a name="line.112"></a>
|
||||
<span class="sourceLineNo">113</span> return registerStaticCompletion(id, ACFPatterns.PIPE.split(list));<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> * Register a static list of command completions that will never change<a name="line.117"></a>
|
||||
<span class="sourceLineNo">118</span> *<a name="line.118"></a>
|
||||
<span class="sourceLineNo">119</span> * @param id<a name="line.119"></a>
|
||||
<span class="sourceLineNo">120</span> * @param completions<a name="line.120"></a>
|
||||
<span class="sourceLineNo">121</span> * @return<a name="line.121"></a>
|
||||
<span class="sourceLineNo">122</span> */<a name="line.122"></a>
|
||||
<span class="sourceLineNo">123</span> public CommandCompletionHandler registerStaticCompletion(String id, String[] completions) {<a name="line.123"></a>
|
||||
<span class="sourceLineNo">124</span> return registerStaticCompletion(id, Arrays.asList(completions));<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> * Register a static list of command completions that will never change. The list is obtained from the supplier<a name="line.128"></a>
|
||||
<span class="sourceLineNo">129</span> * immediately as part of this method call.<a name="line.129"></a>
|
||||
<span class="sourceLineNo">130</span> *<a name="line.130"></a>
|
||||
<span class="sourceLineNo">131</span> * @param id<a name="line.131"></a>
|
||||
<span class="sourceLineNo">132</span> * @param supplier<a name="line.132"></a>
|
||||
<span class="sourceLineNo">133</span> * @return<a name="line.133"></a>
|
||||
<span class="sourceLineNo">134</span> */<a name="line.134"></a>
|
||||
<span class="sourceLineNo">135</span> public CommandCompletionHandler registerStaticCompletion(String id, Supplier<Collection<String>> supplier) {<a name="line.135"></a>
|
||||
<span class="sourceLineNo">136</span> return registerStaticCompletion(id, supplier.get());<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> /**<a name="line.139"></a>
|
||||
<span class="sourceLineNo">140</span> * Register a static list of command completions that will never change<a name="line.140"></a>
|
||||
<span class="sourceLineNo">141</span> *<a name="line.141"></a>
|
||||
<span class="sourceLineNo">142</span> * @param id<a name="line.142"></a>
|
||||
<span class="sourceLineNo">143</span> * @param completions<a name="line.143"></a>
|
||||
<span class="sourceLineNo">144</span> * @return<a name="line.144"></a>
|
||||
<span class="sourceLineNo">145</span> */<a name="line.145"></a>
|
||||
<span class="sourceLineNo">146</span> public CommandCompletionHandler registerStaticCompletion(String id, Collection<String> completions) {<a name="line.146"></a>
|
||||
<span class="sourceLineNo">147</span> return registerAsyncCompletion(id, x -> completions);<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> * Registers a completion handler such as @players to default apply to all command parameters of the specified types<a name="line.151"></a>
|
||||
<span class="sourceLineNo">152</span> * <p><a name="line.152"></a>
|
||||
<span class="sourceLineNo">153</span> * This enables automatic completion support for parameters without manually defining it for custom objects<a name="line.153"></a>
|
||||
<span class="sourceLineNo">154</span> *<a name="line.154"></a>
|
||||
<span class="sourceLineNo">155</span> * @param id<a name="line.155"></a>
|
||||
<span class="sourceLineNo">156</span> * @param classes<a name="line.156"></a>
|
||||
<span class="sourceLineNo">157</span> */<a name="line.157"></a>
|
||||
<span class="sourceLineNo">158</span> public void setDefaultCompletion(String id, Class... classes) {<a name="line.158"></a>
|
||||
<span class="sourceLineNo">159</span> // get completion with specified id<a name="line.159"></a>
|
||||
<span class="sourceLineNo">160</span> id = prepareCompletionId(id);<a name="line.160"></a>
|
||||
<span class="sourceLineNo">161</span> CommandCompletionHandler completion = completionMap.get(id);<a name="line.161"></a>
|
||||
<span class="sourceLineNo">162</span><a name="line.162"></a>
|
||||
<span class="sourceLineNo">163</span> if (completion == null) {<a name="line.163"></a>
|
||||
<span class="sourceLineNo">164</span> // Throw something because no completion with specified id<a name="line.164"></a>
|
||||
<span class="sourceLineNo">165</span> throw new IllegalStateException("Completion not registered for " + id);<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> return completion;<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> @NotNull<a name="line.171"></a>
|
||||
<span class="sourceLineNo">172</span> List<String> of(RegisteredCommand cmd, CommandIssuer sender, String[] args, boolean isAsync) {<a name="line.172"></a>
|
||||
<span class="sourceLineNo">173</span> String[] completions = ACFPatterns.SPACE.split(cmd.complete);<a name="line.173"></a>
|
||||
<span class="sourceLineNo">174</span> final int argIndex = args.length - 1;<a name="line.174"></a>
|
||||
<span class="sourceLineNo">175</span><a name="line.175"></a>
|
||||
<span class="sourceLineNo">176</span> String input = args[argIndex];<a name="line.176"></a>
|
||||
<span class="sourceLineNo">168</span> for (Class clazz : classes) {<a name="line.168"></a>
|
||||
<span class="sourceLineNo">169</span> defaultCompletions.put(clazz, id);<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><a name="line.172"></a>
|
||||
<span class="sourceLineNo">173</span> @NotNull<a name="line.173"></a>
|
||||
<span class="sourceLineNo">174</span> private static String prepareCompletionId(String id) {<a name="line.174"></a>
|
||||
<span class="sourceLineNo">175</span> return (id.startsWith("@") ? "" : "@") + id.toLowerCase();<a name="line.175"></a>
|
||||
<span class="sourceLineNo">176</span> }<a name="line.176"></a>
|
||||
<span class="sourceLineNo">177</span><a name="line.177"></a>
|
||||
<span class="sourceLineNo">178</span> String completion = argIndex < completions.length ? completions[argIndex] : null;<a name="line.178"></a>
|
||||
<span class="sourceLineNo">179</span> if (completion == null && completions.length > 0) {<a name="line.179"></a>
|
||||
<span class="sourceLineNo">180</span> completion = completions[completions.length - 1];<a name="line.180"></a>
|
||||
<span class="sourceLineNo">181</span> }<a name="line.181"></a>
|
||||
<span class="sourceLineNo">182</span> if (completion == null) {<a name="line.182"></a>
|
||||
<span class="sourceLineNo">183</span> return Collections.singletonList(input);<a name="line.183"></a>
|
||||
<span class="sourceLineNo">184</span> }<a name="line.184"></a>
|
||||
<span class="sourceLineNo">185</span><a name="line.185"></a>
|
||||
<span class="sourceLineNo">186</span> return getCompletionValues(cmd, sender, completion, args, isAsync);<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> List<String> getCompletionValues(RegisteredCommand command, CommandIssuer sender, String completion, String[] args, boolean isAsync) {<a name="line.189"></a>
|
||||
<span class="sourceLineNo">190</span> completion = manager.getCommandReplacements().replace(completion);<a name="line.190"></a>
|
||||
<span class="sourceLineNo">191</span><a name="line.191"></a>
|
||||
<span class="sourceLineNo">192</span> List<String> allCompletions = new ArrayList<>();<a name="line.192"></a>
|
||||
<span class="sourceLineNo">193</span> String input = args.length > 0 ? args[args.length - 1] : "";<a name="line.193"></a>
|
||||
<span class="sourceLineNo">194</span><a name="line.194"></a>
|
||||
<span class="sourceLineNo">195</span> for (String value : ACFPatterns.PIPE.split(completion)) {<a name="line.195"></a>
|
||||
<span class="sourceLineNo">196</span> String[] complete = ACFPatterns.COLONEQUALS.split(value, 2);<a name="line.196"></a>
|
||||
<span class="sourceLineNo">197</span> CommandCompletionHandler handler = this.completionMap.get(complete[0].toLowerCase());<a name="line.197"></a>
|
||||
<span class="sourceLineNo">198</span> if (handler != null) {<a name="line.198"></a>
|
||||
<span class="sourceLineNo">199</span> if (isAsync && !(handler instanceof AsyncCommandCompletionHandler)) {<a name="line.199"></a>
|
||||
<span class="sourceLineNo">200</span> ACFUtil.sneaky(new SyncCompletionRequired());<a name="line.200"></a>
|
||||
<span class="sourceLineNo">201</span> return null;<a name="line.201"></a>
|
||||
<span class="sourceLineNo">202</span> }<a name="line.202"></a>
|
||||
<span class="sourceLineNo">203</span> String config = complete.length == 1 ? null : complete[1];<a name="line.203"></a>
|
||||
<span class="sourceLineNo">204</span> CommandCompletionContext context = manager.createCompletionContext(command, sender, input, config, args);<a name="line.204"></a>
|
||||
<span class="sourceLineNo">205</span><a name="line.205"></a>
|
||||
<span class="sourceLineNo">206</span> try {<a name="line.206"></a>
|
||||
<span class="sourceLineNo">207</span> //noinspection unchecked<a name="line.207"></a>
|
||||
<span class="sourceLineNo">208</span> Collection<String> completions = handler.getCompletions(context);<a name="line.208"></a>
|
||||
<span class="sourceLineNo">209</span> if (completions != null) {<a name="line.209"></a>
|
||||
<span class="sourceLineNo">210</span> allCompletions.addAll(completions);<a name="line.210"></a>
|
||||
<span class="sourceLineNo">211</span> continue;<a name="line.211"></a>
|
||||
<span class="sourceLineNo">212</span> }<a name="line.212"></a>
|
||||
<span class="sourceLineNo">213</span> //noinspection ConstantIfStatement,ConstantConditions<a name="line.213"></a>
|
||||
<span class="sourceLineNo">214</span> if (false) { // Hack to fool compiler. since its sneakily thrown.<a name="line.214"></a>
|
||||
<span class="sourceLineNo">215</span> throw new CommandCompletionTextLookupException();<a name="line.215"></a>
|
||||
<span class="sourceLineNo">216</span> }<a name="line.216"></a>
|
||||
<span class="sourceLineNo">217</span> } catch (CommandCompletionTextLookupException ignored) {<a name="line.217"></a>
|
||||
<span class="sourceLineNo">218</span> // This should only happen if some other feedback error occured.<a name="line.218"></a>
|
||||
<span class="sourceLineNo">219</span> } catch (Exception e) {<a name="line.219"></a>
|
||||
<span class="sourceLineNo">220</span> command.handleException(sender, Arrays.asList(args), e);<a name="line.220"></a>
|
||||
<span class="sourceLineNo">178</span> @NotNull<a name="line.178"></a>
|
||||
<span class="sourceLineNo">179</span> List<String> of(RegisteredCommand cmd, CommandIssuer sender, String[] args, boolean isAsync) {<a name="line.179"></a>
|
||||
<span class="sourceLineNo">180</span> String[] completions = ACFPatterns.SPACE.split(cmd.complete);<a name="line.180"></a>
|
||||
<span class="sourceLineNo">181</span> final int argIndex = args.length - 1;<a name="line.181"></a>
|
||||
<span class="sourceLineNo">182</span><a name="line.182"></a>
|
||||
<span class="sourceLineNo">183</span> String input = args[argIndex];<a name="line.183"></a>
|
||||
<span class="sourceLineNo">184</span><a name="line.184"></a>
|
||||
<span class="sourceLineNo">185</span> String completion = argIndex < completions.length ? completions[argIndex] : null;<a name="line.185"></a>
|
||||
<span class="sourceLineNo">186</span> if (completion == null || "*".equals(completion)) {<a name="line.186"></a>
|
||||
<span class="sourceLineNo">187</span> completion = findDefaultCompletion(cmd, args);<a name="line.187"></a>
|
||||
<span class="sourceLineNo">188</span> }<a name="line.188"></a>
|
||||
<span class="sourceLineNo">189</span><a name="line.189"></a>
|
||||
<span class="sourceLineNo">190</span> if (completion == null && completions.length > 0) {<a name="line.190"></a>
|
||||
<span class="sourceLineNo">191</span> String last = completions[completions.length - 1];<a name="line.191"></a>
|
||||
<span class="sourceLineNo">192</span> if (last.startsWith("repeat@")) {<a name="line.192"></a>
|
||||
<span class="sourceLineNo">193</span> completion = last;<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><a name="line.196"></a>
|
||||
<span class="sourceLineNo">197</span> if (completion == null) {<a name="line.197"></a>
|
||||
<span class="sourceLineNo">198</span> return Collections.singletonList(input);<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> return getCompletionValues(cmd, sender, completion, args, isAsync);<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> String findDefaultCompletion(RegisteredCommand cmd, String[] args) {<a name="line.204"></a>
|
||||
<span class="sourceLineNo">205</span> int i = 0;<a name="line.205"></a>
|
||||
<span class="sourceLineNo">206</span> for (CommandParameter param : cmd.parameters) {<a name="line.206"></a>
|
||||
<span class="sourceLineNo">207</span> if (param.canConsumeInput() && ++i == args.length) {<a name="line.207"></a>
|
||||
<span class="sourceLineNo">208</span> Class type = param.getType();<a name="line.208"></a>
|
||||
<span class="sourceLineNo">209</span> while (type != null) {<a name="line.209"></a>
|
||||
<span class="sourceLineNo">210</span> String completion = this.defaultCompletions.get(type);<a name="line.210"></a>
|
||||
<span class="sourceLineNo">211</span> if (completion != null) {<a name="line.211"></a>
|
||||
<span class="sourceLineNo">212</span> return completion;<a name="line.212"></a>
|
||||
<span class="sourceLineNo">213</span> }<a name="line.213"></a>
|
||||
<span class="sourceLineNo">214</span> type = type.getSuperclass();<a name="line.214"></a>
|
||||
<span class="sourceLineNo">215</span> }<a name="line.215"></a>
|
||||
<span class="sourceLineNo">216</span> if (param.getType().isEnum()) {<a name="line.216"></a>
|
||||
<span class="sourceLineNo">217</span> CommandOperationContext ctx = CommandManager.getCurrentCommandOperationContext();<a name="line.217"></a>
|
||||
<span class="sourceLineNo">218</span> //noinspection unchecked<a name="line.218"></a>
|
||||
<span class="sourceLineNo">219</span> ctx.enumCompletionValues = ACFUtil.enumNames((Class<? extends Enum<?>>) param.getType());<a name="line.219"></a>
|
||||
<span class="sourceLineNo">220</span> return DEFAULT_ENUM_ID;<a name="line.220"></a>
|
||||
<span class="sourceLineNo">221</span> }<a name="line.221"></a>
|
||||
<span class="sourceLineNo">222</span> // Something went wrong in lookup, fall back to input<a name="line.222"></a>
|
||||
<span class="sourceLineNo">223</span> return Collections.singletonList(input);<a name="line.223"></a>
|
||||
<span class="sourceLineNo">224</span> } else {<a name="line.224"></a>
|
||||
<span class="sourceLineNo">225</span> // Plaintext value<a name="line.225"></a>
|
||||
<span class="sourceLineNo">226</span> allCompletions.add(value);<a name="line.226"></a>
|
||||
<span class="sourceLineNo">227</span> }<a name="line.227"></a>
|
||||
<span class="sourceLineNo">228</span> }<a name="line.228"></a>
|
||||
<span class="sourceLineNo">229</span> return allCompletions;<a name="line.229"></a>
|
||||
<span class="sourceLineNo">230</span> }<a name="line.230"></a>
|
||||
<span class="sourceLineNo">231</span><a name="line.231"></a>
|
||||
<span class="sourceLineNo">232</span> public interface CommandCompletionHandler<C extends CommandCompletionContext> {<a name="line.232"></a>
|
||||
<span class="sourceLineNo">233</span> Collection<String> getCompletions(C context) throws InvalidCommandArgument;<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> public interface AsyncCommandCompletionHandler<C extends CommandCompletionContext> extends CommandCompletionHandler<C> {<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> public static class SyncCompletionRequired extends RuntimeException {<a name="line.239"></a>
|
||||
<span class="sourceLineNo">240</span> }<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">222</span> break;<a name="line.222"></a>
|
||||
<span class="sourceLineNo">223</span> }<a name="line.223"></a>
|
||||
<span class="sourceLineNo">224</span> }<a name="line.224"></a>
|
||||
<span class="sourceLineNo">225</span> return null;<a name="line.225"></a>
|
||||
<span class="sourceLineNo">226</span> }<a name="line.226"></a>
|
||||
<span class="sourceLineNo">227</span><a name="line.227"></a>
|
||||
<span class="sourceLineNo">228</span> List<String> getCompletionValues(RegisteredCommand command, CommandIssuer sender, String completion, String[] args, boolean isAsync) {<a name="line.228"></a>
|
||||
<span class="sourceLineNo">229</span> if (DEFAULT_ENUM_ID.equals(completion)) {<a name="line.229"></a>
|
||||
<span class="sourceLineNo">230</span> CommandOperationContext<?> ctx = CommandManager.getCurrentCommandOperationContext();<a name="line.230"></a>
|
||||
<span class="sourceLineNo">231</span> return ctx.enumCompletionValues;<a name="line.231"></a>
|
||||
<span class="sourceLineNo">232</span> }<a name="line.232"></a>
|
||||
<span class="sourceLineNo">233</span> if (completion.startsWith("repeat@")) {<a name="line.233"></a>
|
||||
<span class="sourceLineNo">234</span> completion = completion.substring(6);<a name="line.234"></a>
|
||||
<span class="sourceLineNo">235</span> }<a name="line.235"></a>
|
||||
<span class="sourceLineNo">236</span> completion = manager.getCommandReplacements().replace(completion);<a name="line.236"></a>
|
||||
<span class="sourceLineNo">237</span><a name="line.237"></a>
|
||||
<span class="sourceLineNo">238</span> List<String> allCompletions = new ArrayList<>();<a name="line.238"></a>
|
||||
<span class="sourceLineNo">239</span> String input = args.length > 0 ? args[args.length - 1] : "";<a name="line.239"></a>
|
||||
<span class="sourceLineNo">240</span><a name="line.240"></a>
|
||||
<span class="sourceLineNo">241</span> for (String value : ACFPatterns.PIPE.split(completion)) {<a name="line.241"></a>
|
||||
<span class="sourceLineNo">242</span> String[] complete = ACFPatterns.COLONEQUALS.split(value, 2);<a name="line.242"></a>
|
||||
<span class="sourceLineNo">243</span> CommandCompletionHandler handler = this.completionMap.get(complete[0].toLowerCase());<a name="line.243"></a>
|
||||
<span class="sourceLineNo">244</span> if (handler != null) {<a name="line.244"></a>
|
||||
<span class="sourceLineNo">245</span> if (isAsync && !(handler instanceof AsyncCommandCompletionHandler)) {<a name="line.245"></a>
|
||||
<span class="sourceLineNo">246</span> ACFUtil.sneaky(new SyncCompletionRequired());<a name="line.246"></a>
|
||||
<span class="sourceLineNo">247</span> return null;<a name="line.247"></a>
|
||||
<span class="sourceLineNo">248</span> }<a name="line.248"></a>
|
||||
<span class="sourceLineNo">249</span> String config = complete.length == 1 ? null : complete[1];<a name="line.249"></a>
|
||||
<span class="sourceLineNo">250</span> CommandCompletionContext context = manager.createCompletionContext(command, sender, input, config, args);<a name="line.250"></a>
|
||||
<span class="sourceLineNo">251</span><a name="line.251"></a>
|
||||
<span class="sourceLineNo">252</span> try {<a name="line.252"></a>
|
||||
<span class="sourceLineNo">253</span> //noinspection unchecked<a name="line.253"></a>
|
||||
<span class="sourceLineNo">254</span> Collection<String> completions = handler.getCompletions(context);<a name="line.254"></a>
|
||||
<span class="sourceLineNo">255</span> if (completions != null) {<a name="line.255"></a>
|
||||
<span class="sourceLineNo">256</span> allCompletions.addAll(completions);<a name="line.256"></a>
|
||||
<span class="sourceLineNo">257</span> continue;<a name="line.257"></a>
|
||||
<span class="sourceLineNo">258</span> }<a name="line.258"></a>
|
||||
<span class="sourceLineNo">259</span> //noinspection ConstantIfStatement,ConstantConditions<a name="line.259"></a>
|
||||
<span class="sourceLineNo">260</span> if (false) { // Hack to fool compiler. since its sneakily thrown.<a name="line.260"></a>
|
||||
<span class="sourceLineNo">261</span> throw new CommandCompletionTextLookupException();<a name="line.261"></a>
|
||||
<span class="sourceLineNo">262</span> }<a name="line.262"></a>
|
||||
<span class="sourceLineNo">263</span> } catch (CommandCompletionTextLookupException ignored) {<a name="line.263"></a>
|
||||
<span class="sourceLineNo">264</span> // This should only happen if some other feedback error occured.<a name="line.264"></a>
|
||||
<span class="sourceLineNo">265</span> } catch (Exception e) {<a name="line.265"></a>
|
||||
<span class="sourceLineNo">266</span> command.handleException(sender, Arrays.asList(args), e);<a name="line.266"></a>
|
||||
<span class="sourceLineNo">267</span> }<a name="line.267"></a>
|
||||
<span class="sourceLineNo">268</span> // Something went wrong in lookup, fall back to input<a name="line.268"></a>
|
||||
<span class="sourceLineNo">269</span> return Collections.singletonList(input);<a name="line.269"></a>
|
||||
<span class="sourceLineNo">270</span> } else {<a name="line.270"></a>
|
||||
<span class="sourceLineNo">271</span> // Plaintext value<a name="line.271"></a>
|
||||
<span class="sourceLineNo">272</span> allCompletions.add(value);<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> return allCompletions;<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 interface CommandCompletionHandler<C extends CommandCompletionContext> {<a name="line.278"></a>
|
||||
<span class="sourceLineNo">279</span> Collection<String> getCompletions(C context) throws InvalidCommandArgument;<a name="line.279"></a>
|
||||
<span class="sourceLineNo">280</span> }<a name="line.280"></a>
|
||||
<span class="sourceLineNo">281</span><a name="line.281"></a>
|
||||
<span class="sourceLineNo">282</span> public interface AsyncCommandCompletionHandler<C extends CommandCompletionContext> extends CommandCompletionHandler<C> {<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> public static class SyncCompletionRequired extends RuntimeException {<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>
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -213,7 +213,7 @@
|
||||
<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">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>
|
||||
|
||||
@@ -35,80 +35,80 @@
|
||||
<span class="sourceLineNo">027</span>import java.lang.reflect.Parameter;<a name="line.27"></a>
|
||||
<span class="sourceLineNo">028</span>import java.util.List;<a name="line.28"></a>
|
||||
<span class="sourceLineNo">029</span>import java.util.Map;<a name="line.29"></a>
|
||||
<span class="sourceLineNo">030</span><a name="line.30"></a>
|
||||
<span class="sourceLineNo">031</span>@SuppressWarnings({"WeakerAccess"})<a name="line.31"></a>
|
||||
<span class="sourceLineNo">032</span>public class CommandExecutionContext <CEC extends CommandExecutionContext, I extends CommandIssuer> {<a name="line.32"></a>
|
||||
<span class="sourceLineNo">033</span> private final RegisteredCommand cmd;<a name="line.33"></a>
|
||||
<span class="sourceLineNo">034</span> private final CommandParameter param;<a name="line.34"></a>
|
||||
<span class="sourceLineNo">035</span> protected final I issuer;<a name="line.35"></a>
|
||||
<span class="sourceLineNo">036</span> private final List<String> args;<a name="line.36"></a>
|
||||
<span class="sourceLineNo">037</span> private final int index;<a name="line.37"></a>
|
||||
<span class="sourceLineNo">038</span> private final Map<String, Object> passedArgs;<a name="line.38"></a>
|
||||
<span class="sourceLineNo">039</span> private final Map<String, String> flags;<a name="line.39"></a>
|
||||
<span class="sourceLineNo">040</span> private final CommandManager manager;<a name="line.40"></a>
|
||||
<span class="sourceLineNo">041</span><a name="line.41"></a>
|
||||
<span class="sourceLineNo">042</span> CommandExecutionContext(RegisteredCommand cmd, CommandParameter param, I sender, List<String> args,<a name="line.42"></a>
|
||||
<span class="sourceLineNo">043</span> int index, Map<String, Object> passedArgs) {<a name="line.43"></a>
|
||||
<span class="sourceLineNo">044</span> this.cmd = cmd;<a name="line.44"></a>
|
||||
<span class="sourceLineNo">045</span> this.manager = cmd.scope.manager;<a name="line.45"></a>
|
||||
<span class="sourceLineNo">046</span> this.param = param;<a name="line.46"></a>
|
||||
<span class="sourceLineNo">047</span> this.issuer = sender;<a name="line.47"></a>
|
||||
<span class="sourceLineNo">048</span> this.args = args;<a name="line.48"></a>
|
||||
<span class="sourceLineNo">049</span> this.index = index;<a name="line.49"></a>
|
||||
<span class="sourceLineNo">050</span> this.passedArgs = passedArgs;<a name="line.50"></a>
|
||||
<span class="sourceLineNo">051</span> this.flags = param.getFlags();<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 String popFirstArg() {<a name="line.55"></a>
|
||||
<span class="sourceLineNo">056</span> return !args.isEmpty() ? args.remove(0) : null;<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 String popLastArg() {<a name="line.59"></a>
|
||||
<span class="sourceLineNo">060</span> return !args.isEmpty() ? args.remove(args.size() - 1) : null;<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 String getFirstArg() {<a name="line.63"></a>
|
||||
<span class="sourceLineNo">064</span> return !args.isEmpty() ? args.get(0) : null;<a name="line.64"></a>
|
||||
<span class="sourceLineNo">065</span> }<a name="line.65"></a>
|
||||
<span class="sourceLineNo">066</span><a name="line.66"></a>
|
||||
<span class="sourceLineNo">067</span> public String getLastArg() {<a name="line.67"></a>
|
||||
<span class="sourceLineNo">068</span> return !args.isEmpty() ? args.get(args.size() - 1) : null;<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 boolean isLastArg() {<a name="line.71"></a>
|
||||
<span class="sourceLineNo">072</span> return cmd.parameters.length -1 == index;<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 int getNumParams() {<a name="line.75"></a>
|
||||
<span class="sourceLineNo">076</span> return cmd.parameters.length;<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> public boolean canOverridePlayerContext() {<a name="line.79"></a>
|
||||
<span class="sourceLineNo">080</span> return cmd.requiredResolvers >= args.size();<a name="line.80"></a>
|
||||
<span class="sourceLineNo">081</span> }<a name="line.81"></a>
|
||||
<span class="sourceLineNo">082</span><a name="line.82"></a>
|
||||
<span class="sourceLineNo">083</span> public Object getResolvedArg(String arg) {<a name="line.83"></a>
|
||||
<span class="sourceLineNo">084</span> return passedArgs.get(arg);<a name="line.84"></a>
|
||||
<span class="sourceLineNo">085</span> }<a name="line.85"></a>
|
||||
<span class="sourceLineNo">086</span><a name="line.86"></a>
|
||||
<span class="sourceLineNo">087</span> public Object getResolvedArg(Class<?>... classes) {<a name="line.87"></a>
|
||||
<span class="sourceLineNo">088</span> for (Class<?> clazz : classes) {<a name="line.88"></a>
|
||||
<span class="sourceLineNo">089</span> for (Object passedArg : passedArgs.values()) {<a name="line.89"></a>
|
||||
<span class="sourceLineNo">090</span> if (clazz.isInstance(passedArg)) {<a name="line.90"></a>
|
||||
<span class="sourceLineNo">091</span> return passedArg;<a name="line.91"></a>
|
||||
<span class="sourceLineNo">092</span> }<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><a name="line.95"></a>
|
||||
<span class="sourceLineNo">096</span> return null;<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 <T> T getResolvedArg(String key, Class<?>... classes) {<a name="line.99"></a>
|
||||
<span class="sourceLineNo">100</span> final Object o = passedArgs.get(key);<a name="line.100"></a>
|
||||
<span class="sourceLineNo">101</span> for (Class<?> clazz : classes) {<a name="line.101"></a>
|
||||
<span class="sourceLineNo">102</span> if (clazz.isInstance(o)) {<a name="line.102"></a>
|
||||
<span class="sourceLineNo">103</span> //noinspection unchecked<a name="line.103"></a>
|
||||
<span class="sourceLineNo">030</span>import java.util.Set;<a name="line.30"></a>
|
||||
<span class="sourceLineNo">031</span><a name="line.31"></a>
|
||||
<span class="sourceLineNo">032</span>@SuppressWarnings({"WeakerAccess", "unchecked"})<a name="line.32"></a>
|
||||
<span class="sourceLineNo">033</span>public class CommandExecutionContext<CEC extends CommandExecutionContext, I extends CommandIssuer> {<a name="line.33"></a>
|
||||
<span class="sourceLineNo">034</span> private final RegisteredCommand cmd;<a name="line.34"></a>
|
||||
<span class="sourceLineNo">035</span> private final CommandParameter param;<a name="line.35"></a>
|
||||
<span class="sourceLineNo">036</span> protected final I issuer;<a name="line.36"></a>
|
||||
<span class="sourceLineNo">037</span> private final List<String> args;<a name="line.37"></a>
|
||||
<span class="sourceLineNo">038</span> private final int index;<a name="line.38"></a>
|
||||
<span class="sourceLineNo">039</span> private final Map<String, Object> passedArgs;<a name="line.39"></a>
|
||||
<span class="sourceLineNo">040</span> private final Map<String, String> flags;<a name="line.40"></a>
|
||||
<span class="sourceLineNo">041</span> private final CommandManager manager;<a name="line.41"></a>
|
||||
<span class="sourceLineNo">042</span><a name="line.42"></a>
|
||||
<span class="sourceLineNo">043</span> CommandExecutionContext(RegisteredCommand cmd, CommandParameter param, I sender, List<String> args,<a name="line.43"></a>
|
||||
<span class="sourceLineNo">044</span> int index, Map<String, Object> passedArgs) {<a name="line.44"></a>
|
||||
<span class="sourceLineNo">045</span> this.cmd = cmd;<a name="line.45"></a>
|
||||
<span class="sourceLineNo">046</span> this.manager = cmd.scope.manager;<a name="line.46"></a>
|
||||
<span class="sourceLineNo">047</span> this.param = param;<a name="line.47"></a>
|
||||
<span class="sourceLineNo">048</span> this.issuer = sender;<a name="line.48"></a>
|
||||
<span class="sourceLineNo">049</span> this.args = args;<a name="line.49"></a>
|
||||
<span class="sourceLineNo">050</span> this.index = index;<a name="line.50"></a>
|
||||
<span class="sourceLineNo">051</span> this.passedArgs = passedArgs;<a name="line.51"></a>
|
||||
<span class="sourceLineNo">052</span> this.flags = param.getFlags();<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> public String popFirstArg() {<a name="line.56"></a>
|
||||
<span class="sourceLineNo">057</span> return !args.isEmpty() ? args.remove(0) : null;<a name="line.57"></a>
|
||||
<span class="sourceLineNo">058</span> }<a name="line.58"></a>
|
||||
<span class="sourceLineNo">059</span><a name="line.59"></a>
|
||||
<span class="sourceLineNo">060</span> public String popLastArg() {<a name="line.60"></a>
|
||||
<span class="sourceLineNo">061</span> return !args.isEmpty() ? args.remove(args.size() - 1) : null;<a name="line.61"></a>
|
||||
<span class="sourceLineNo">062</span> }<a name="line.62"></a>
|
||||
<span class="sourceLineNo">063</span><a name="line.63"></a>
|
||||
<span class="sourceLineNo">064</span> public String getFirstArg() {<a name="line.64"></a>
|
||||
<span class="sourceLineNo">065</span> return !args.isEmpty() ? args.get(0) : null;<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> public String getLastArg() {<a name="line.68"></a>
|
||||
<span class="sourceLineNo">069</span> return !args.isEmpty() ? args.get(args.size() - 1) : null;<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> public boolean isLastArg() {<a name="line.72"></a>
|
||||
<span class="sourceLineNo">073</span> return cmd.parameters.length - 1 == index;<a name="line.73"></a>
|
||||
<span class="sourceLineNo">074</span> }<a name="line.74"></a>
|
||||
<span class="sourceLineNo">075</span><a name="line.75"></a>
|
||||
<span class="sourceLineNo">076</span> public int getNumParams() {<a name="line.76"></a>
|
||||
<span class="sourceLineNo">077</span> return cmd.parameters.length;<a name="line.77"></a>
|
||||
<span class="sourceLineNo">078</span> }<a name="line.78"></a>
|
||||
<span class="sourceLineNo">079</span><a name="line.79"></a>
|
||||
<span class="sourceLineNo">080</span> public boolean canOverridePlayerContext() {<a name="line.80"></a>
|
||||
<span class="sourceLineNo">081</span> return cmd.requiredResolvers >= args.size();<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> public Object getResolvedArg(String arg) {<a name="line.84"></a>
|
||||
<span class="sourceLineNo">085</span> return passedArgs.get(arg);<a name="line.85"></a>
|
||||
<span class="sourceLineNo">086</span> }<a name="line.86"></a>
|
||||
<span class="sourceLineNo">087</span><a name="line.87"></a>
|
||||
<span class="sourceLineNo">088</span> public Object getResolvedArg(Class<?>... classes) {<a name="line.88"></a>
|
||||
<span class="sourceLineNo">089</span> for (Class<?> clazz : classes) {<a name="line.89"></a>
|
||||
<span class="sourceLineNo">090</span> for (Object passedArg : passedArgs.values()) {<a name="line.90"></a>
|
||||
<span class="sourceLineNo">091</span> if (clazz.isInstance(passedArg)) {<a name="line.91"></a>
|
||||
<span class="sourceLineNo">092</span> return passedArg;<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> }<a name="line.95"></a>
|
||||
<span class="sourceLineNo">096</span><a name="line.96"></a>
|
||||
<span class="sourceLineNo">097</span> return null;<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 <T> T getResolvedArg(String key, Class<?>... classes) {<a name="line.100"></a>
|
||||
<span class="sourceLineNo">101</span> final Object o = passedArgs.get(key);<a name="line.101"></a>
|
||||
<span class="sourceLineNo">102</span> for (Class<?> clazz : classes) {<a name="line.102"></a>
|
||||
<span class="sourceLineNo">103</span> if (clazz.isInstance(o)) {<a name="line.103"></a>
|
||||
<span class="sourceLineNo">104</span> return (T) o;<a name="line.104"></a>
|
||||
<span class="sourceLineNo">105</span> }<a name="line.105"></a>
|
||||
<span class="sourceLineNo">106</span> }<a name="line.106"></a>
|
||||
@@ -116,128 +116,134 @@
|
||||
<span class="sourceLineNo">108</span> return null;<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">111</span> public boolean isOptional() {<a name="line.111"></a>
|
||||
<span class="sourceLineNo">112</span> return param.isOptional();<a name="line.112"></a>
|
||||
<span class="sourceLineNo">111</span> public Set<String> getParameterPermissions() {<a name="line.111"></a>
|
||||
<span class="sourceLineNo">112</span> return param.getRequiredPermissions();<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> public boolean hasFlag(String flag) {<a name="line.115"></a>
|
||||
<span class="sourceLineNo">116</span> return flags.containsKey(flag);<a name="line.116"></a>
|
||||
<span class="sourceLineNo">115</span> public boolean isOptional() {<a name="line.115"></a>
|
||||
<span class="sourceLineNo">116</span> return param.isOptional();<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 String getFlagValue(String flag, String def) {<a name="line.119"></a>
|
||||
<span class="sourceLineNo">120</span> return flags.getOrDefault(flag, def);<a name="line.120"></a>
|
||||
<span class="sourceLineNo">119</span> public boolean hasFlag(String flag) {<a name="line.119"></a>
|
||||
<span class="sourceLineNo">120</span> return flags.containsKey(flag);<a name="line.120"></a>
|
||||
<span class="sourceLineNo">121</span> }<a name="line.121"></a>
|
||||
<span class="sourceLineNo">122</span><a name="line.122"></a>
|
||||
<span class="sourceLineNo">123</span> public Integer getFlagValue(String flag, Integer def) {<a name="line.123"></a>
|
||||
<span class="sourceLineNo">124</span> return ACFUtil.parseInt(this.flags.get(flag), def);<a name="line.124"></a>
|
||||
<span class="sourceLineNo">123</span> public String getFlagValue(String flag, String def) {<a name="line.123"></a>
|
||||
<span class="sourceLineNo">124</span> return flags.getOrDefault(flag, def);<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> public Long getFlagValue(String flag, Long def) {<a name="line.127"></a>
|
||||
<span class="sourceLineNo">128</span> return ACFUtil.parseLong(this.flags.get(flag), def);<a name="line.128"></a>
|
||||
<span class="sourceLineNo">127</span> public Integer getFlagValue(String flag, Integer def) {<a name="line.127"></a>
|
||||
<span class="sourceLineNo">128</span> return ACFUtil.parseInt(this.flags.get(flag), def);<a name="line.128"></a>
|
||||
<span class="sourceLineNo">129</span> }<a name="line.129"></a>
|
||||
<span class="sourceLineNo">130</span><a name="line.130"></a>
|
||||
<span class="sourceLineNo">131</span> public Float getFlagValue(String flag, Float def) {<a name="line.131"></a>
|
||||
<span class="sourceLineNo">132</span> return ACFUtil.parseFloat(this.flags.get(flag), def);<a name="line.132"></a>
|
||||
<span class="sourceLineNo">131</span> public Long getFlagValue(String flag, Long def) {<a name="line.131"></a>
|
||||
<span class="sourceLineNo">132</span> return ACFUtil.parseLong(this.flags.get(flag), def);<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> public Double getFlagValue(String flag, Double def) {<a name="line.135"></a>
|
||||
<span class="sourceLineNo">136</span> return ACFUtil.parseDouble(this.flags.get(flag), def);<a name="line.136"></a>
|
||||
<span class="sourceLineNo">135</span> public Float getFlagValue(String flag, Float def) {<a name="line.135"></a>
|
||||
<span class="sourceLineNo">136</span> return ACFUtil.parseFloat(this.flags.get(flag), def);<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> public Integer getIntFlagValue(String flag, Number def) {<a name="line.139"></a>
|
||||
<span class="sourceLineNo">140</span> return ACFUtil.parseInt(this.flags.get(flag), def != null ? def.intValue() : null);<a name="line.140"></a>
|
||||
<span class="sourceLineNo">139</span> public Double getFlagValue(String flag, Double def) {<a name="line.139"></a>
|
||||
<span class="sourceLineNo">140</span> return ACFUtil.parseDouble(this.flags.get(flag), def);<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> public Long getLongFlagValue(String flag, Number def) {<a name="line.143"></a>
|
||||
<span class="sourceLineNo">144</span> return ACFUtil.parseLong(this.flags.get(flag), def != null ? def.longValue() : null);<a name="line.144"></a>
|
||||
<span class="sourceLineNo">143</span> public Integer getIntFlagValue(String flag, Number def) {<a name="line.143"></a>
|
||||
<span class="sourceLineNo">144</span> return ACFUtil.parseInt(this.flags.get(flag), def != null ? def.intValue() : null);<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> public Float getFloatFlagValue(String flag, Number def) {<a name="line.147"></a>
|
||||
<span class="sourceLineNo">148</span> return ACFUtil.parseFloat(this.flags.get(flag), def != null ? def.floatValue() : null);<a name="line.148"></a>
|
||||
<span class="sourceLineNo">147</span> public Long getLongFlagValue(String flag, Number def) {<a name="line.147"></a>
|
||||
<span class="sourceLineNo">148</span> return ACFUtil.parseLong(this.flags.get(flag), def != null ? def.longValue() : null);<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> public Double getDoubleFlagValue(String flag, Number def) {<a name="line.151"></a>
|
||||
<span class="sourceLineNo">152</span> return ACFUtil.parseDouble(this.flags.get(flag), def != null ? def.doubleValue() : null);<a name="line.152"></a>
|
||||
<span class="sourceLineNo">151</span> public Float getFloatFlagValue(String flag, Number def) {<a name="line.151"></a>
|
||||
<span class="sourceLineNo">152</span> return ACFUtil.parseFloat(this.flags.get(flag), def != null ? def.floatValue() : null);<a name="line.152"></a>
|
||||
<span class="sourceLineNo">153</span> }<a name="line.153"></a>
|
||||
<span class="sourceLineNo">154</span><a name="line.154"></a>
|
||||
<span class="sourceLineNo">155</span> public Boolean getBooleanFlagValue(String flag) {<a name="line.155"></a>
|
||||
<span class="sourceLineNo">156</span> return getBooleanFlagValue(flag, false);<a name="line.156"></a>
|
||||
<span class="sourceLineNo">155</span> public Double getDoubleFlagValue(String flag, Number def) {<a name="line.155"></a>
|
||||
<span class="sourceLineNo">156</span> return ACFUtil.parseDouble(this.flags.get(flag), def != null ? def.doubleValue() : null);<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 Boolean getBooleanFlagValue(String flag, Boolean def) {<a name="line.159"></a>
|
||||
<span class="sourceLineNo">160</span> String val = this.flags.get(flag);<a name="line.160"></a>
|
||||
<span class="sourceLineNo">161</span> if (val == null) {<a name="line.161"></a>
|
||||
<span class="sourceLineNo">162</span> return def;<a name="line.162"></a>
|
||||
<span class="sourceLineNo">163</span> }<a name="line.163"></a>
|
||||
<span class="sourceLineNo">164</span> return ACFUtil.isTruthy(val);<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">167</span> public Double getFlagValue(String flag, Number def) {<a name="line.167"></a>
|
||||
<span class="sourceLineNo">168</span> return ACFUtil.parseDouble(this.flags.get(flag), def != null ? def.doubleValue() : null);<a name="line.168"></a>
|
||||
<span class="sourceLineNo">159</span> public Boolean getBooleanFlagValue(String flag) {<a name="line.159"></a>
|
||||
<span class="sourceLineNo">160</span> return getBooleanFlagValue(flag, false);<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> public Boolean getBooleanFlagValue(String flag, Boolean def) {<a name="line.163"></a>
|
||||
<span class="sourceLineNo">164</span> String val = this.flags.get(flag);<a name="line.164"></a>
|
||||
<span class="sourceLineNo">165</span> if (val == null) {<a name="line.165"></a>
|
||||
<span class="sourceLineNo">166</span> return def;<a name="line.166"></a>
|
||||
<span class="sourceLineNo">167</span> }<a name="line.167"></a>
|
||||
<span class="sourceLineNo">168</span> return ACFUtil.isTruthy(val);<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> /**<a name="line.171"></a>
|
||||
<span class="sourceLineNo">172</span> * This method will not support annotation processors!! use getAnnotationValue or hasAnnotation<a name="line.172"></a>
|
||||
<span class="sourceLineNo">173</span> * @deprecated Use {@link #getAnnotationValue(Class)}<a name="line.173"></a>
|
||||
<span class="sourceLineNo">174</span> */<a name="line.174"></a>
|
||||
<span class="sourceLineNo">175</span> @Deprecated<a name="line.175"></a>
|
||||
<span class="sourceLineNo">176</span> public <T extends Annotation> T getAnnotation(Class<T> cls) {<a name="line.176"></a>
|
||||
<span class="sourceLineNo">177</span> return param.getParameter().getAnnotation(cls);<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> public <T extends Annotation> String getAnnotationValue(Class<T> cls) {<a name="line.180"></a>
|
||||
<span class="sourceLineNo">181</span> return manager.getAnnotations().getAnnotationValue(param.getParameter(), cls);<a name="line.181"></a>
|
||||
<span class="sourceLineNo">182</span> }<a name="line.182"></a>
|
||||
<span class="sourceLineNo">183</span><a name="line.183"></a>
|
||||
<span class="sourceLineNo">184</span> public <T extends Annotation> String getAnnotationValue(Class<T> cls, int options) {<a name="line.184"></a>
|
||||
<span class="sourceLineNo">185</span> return manager.getAnnotations().getAnnotationValue(param.getParameter(), cls, options);<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> public <T extends Annotation> boolean hasAnnotation(Class<T> cls) {<a name="line.188"></a>
|
||||
<span class="sourceLineNo">189</span> return manager.getAnnotations().hasAnnotation(param.getParameter(), cls);<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> public RegisteredCommand getCmd() {<a name="line.192"></a>
|
||||
<span class="sourceLineNo">193</span> return this.cmd;<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> @UnstableAPI<a name="line.196"></a>
|
||||
<span class="sourceLineNo">197</span> CommandParameter getCommandParameter() {<a name="line.197"></a>
|
||||
<span class="sourceLineNo">198</span> return this.param;<a name="line.198"></a>
|
||||
<span class="sourceLineNo">171</span> public Double getFlagValue(String flag, Number def) {<a name="line.171"></a>
|
||||
<span class="sourceLineNo">172</span> return ACFUtil.parseDouble(this.flags.get(flag), def != null ? def.doubleValue() : null);<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> /**<a name="line.175"></a>
|
||||
<span class="sourceLineNo">176</span> * This method will not support annotation processors!! use getAnnotationValue or hasAnnotation<a name="line.176"></a>
|
||||
<span class="sourceLineNo">177</span> *<a name="line.177"></a>
|
||||
<span class="sourceLineNo">178</span> * @deprecated Use {@link #getAnnotationValue(Class)}<a name="line.178"></a>
|
||||
<span class="sourceLineNo">179</span> */<a name="line.179"></a>
|
||||
<span class="sourceLineNo">180</span> @Deprecated<a name="line.180"></a>
|
||||
<span class="sourceLineNo">181</span> public <T extends Annotation> T getAnnotation(Class<T> cls) {<a name="line.181"></a>
|
||||
<span class="sourceLineNo">182</span> return param.getParameter().getAnnotation(cls);<a name="line.182"></a>
|
||||
<span class="sourceLineNo">183</span> }<a name="line.183"></a>
|
||||
<span class="sourceLineNo">184</span><a name="line.184"></a>
|
||||
<span class="sourceLineNo">185</span> public <T extends Annotation> String getAnnotationValue(Class<T> cls) {<a name="line.185"></a>
|
||||
<span class="sourceLineNo">186</span> return manager.getAnnotations().getAnnotationValue(param.getParameter(), cls);<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> public <T extends Annotation> String getAnnotationValue(Class<T> cls, int options) {<a name="line.189"></a>
|
||||
<span class="sourceLineNo">190</span> return manager.getAnnotations().getAnnotationValue(param.getParameter(), cls, options);<a name="line.190"></a>
|
||||
<span class="sourceLineNo">191</span> }<a name="line.191"></a>
|
||||
<span class="sourceLineNo">192</span><a name="line.192"></a>
|
||||
<span class="sourceLineNo">193</span> public <T extends Annotation> boolean hasAnnotation(Class<T> cls) {<a name="line.193"></a>
|
||||
<span class="sourceLineNo">194</span> return manager.getAnnotations().hasAnnotation(param.getParameter(), cls);<a name="line.194"></a>
|
||||
<span class="sourceLineNo">195</span> }<a name="line.195"></a>
|
||||
<span class="sourceLineNo">196</span><a name="line.196"></a>
|
||||
<span class="sourceLineNo">197</span> public RegisteredCommand getCmd() {<a name="line.197"></a>
|
||||
<span class="sourceLineNo">198</span> return this.cmd;<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> @Deprecated<a name="line.201"></a>
|
||||
<span class="sourceLineNo">202</span> public Parameter getParam() {<a name="line.202"></a>
|
||||
<span class="sourceLineNo">203</span> return this.param.getParameter();<a name="line.203"></a>
|
||||
<span class="sourceLineNo">201</span> @UnstableAPI<a name="line.201"></a>
|
||||
<span class="sourceLineNo">202</span> CommandParameter getCommandParameter() {<a name="line.202"></a>
|
||||
<span class="sourceLineNo">203</span> return this.param;<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> public I getIssuer() {<a name="line.206"></a>
|
||||
<span class="sourceLineNo">207</span> return this.issuer;<a name="line.207"></a>
|
||||
<span class="sourceLineNo">208</span> }<a name="line.208"></a>
|
||||
<span class="sourceLineNo">209</span><a name="line.209"></a>
|
||||
<span class="sourceLineNo">210</span> public List<String> getArgs() {<a name="line.210"></a>
|
||||
<span class="sourceLineNo">211</span> return this.args;<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> public int getIndex() {<a name="line.214"></a>
|
||||
<span class="sourceLineNo">215</span> return this.index;<a name="line.215"></a>
|
||||
<span class="sourceLineNo">216</span> }<a name="line.216"></a>
|
||||
<span class="sourceLineNo">217</span><a name="line.217"></a>
|
||||
<span class="sourceLineNo">218</span> public Map<String, Object> getPassedArgs() {<a name="line.218"></a>
|
||||
<span class="sourceLineNo">219</span> return this.passedArgs;<a name="line.219"></a>
|
||||
<span class="sourceLineNo">220</span> }<a name="line.220"></a>
|
||||
<span class="sourceLineNo">221</span><a name="line.221"></a>
|
||||
<span class="sourceLineNo">222</span> public Map<String, String> getFlags() {<a name="line.222"></a>
|
||||
<span class="sourceLineNo">223</span> return this.flags;<a name="line.223"></a>
|
||||
<span class="sourceLineNo">224</span> }<a name="line.224"></a>
|
||||
<span class="sourceLineNo">225</span><a name="line.225"></a>
|
||||
<span class="sourceLineNo">226</span> public String joinArgs() {<a name="line.226"></a>
|
||||
<span class="sourceLineNo">227</span> return ACFUtil.join(args, " ");<a name="line.227"></a>
|
||||
<span class="sourceLineNo">228</span> }<a name="line.228"></a>
|
||||
<span class="sourceLineNo">229</span> public String joinArgs(String sep) {<a name="line.229"></a>
|
||||
<span class="sourceLineNo">230</span> return ACFUtil.join(args, sep);<a name="line.230"></a>
|
||||
<span class="sourceLineNo">231</span> }<a name="line.231"></a>
|
||||
<span class="sourceLineNo">232</span>}<a name="line.232"></a>
|
||||
<span class="sourceLineNo">206</span> @Deprecated<a name="line.206"></a>
|
||||
<span class="sourceLineNo">207</span> public Parameter getParam() {<a name="line.207"></a>
|
||||
<span class="sourceLineNo">208</span> return this.param.getParameter();<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 I getIssuer() {<a name="line.211"></a>
|
||||
<span class="sourceLineNo">212</span> return this.issuer;<a name="line.212"></a>
|
||||
<span class="sourceLineNo">213</span> }<a name="line.213"></a>
|
||||
<span class="sourceLineNo">214</span><a name="line.214"></a>
|
||||
<span class="sourceLineNo">215</span> public List<String> getArgs() {<a name="line.215"></a>
|
||||
<span class="sourceLineNo">216</span> return this.args;<a name="line.216"></a>
|
||||
<span class="sourceLineNo">217</span> }<a name="line.217"></a>
|
||||
<span class="sourceLineNo">218</span><a name="line.218"></a>
|
||||
<span class="sourceLineNo">219</span> public int getIndex() {<a name="line.219"></a>
|
||||
<span class="sourceLineNo">220</span> return this.index;<a name="line.220"></a>
|
||||
<span class="sourceLineNo">221</span> }<a name="line.221"></a>
|
||||
<span class="sourceLineNo">222</span><a name="line.222"></a>
|
||||
<span class="sourceLineNo">223</span> public Map<String, Object> getPassedArgs() {<a name="line.223"></a>
|
||||
<span class="sourceLineNo">224</span> return this.passedArgs;<a name="line.224"></a>
|
||||
<span class="sourceLineNo">225</span> }<a name="line.225"></a>
|
||||
<span class="sourceLineNo">226</span><a name="line.226"></a>
|
||||
<span class="sourceLineNo">227</span> public Map<String, String> getFlags() {<a name="line.227"></a>
|
||||
<span class="sourceLineNo">228</span> return this.flags;<a name="line.228"></a>
|
||||
<span class="sourceLineNo">229</span> }<a name="line.229"></a>
|
||||
<span class="sourceLineNo">230</span><a name="line.230"></a>
|
||||
<span class="sourceLineNo">231</span> public String joinArgs() {<a name="line.231"></a>
|
||||
<span class="sourceLineNo">232</span> return ACFUtil.join(args, " ");<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> public String joinArgs(String sep) {<a name="line.235"></a>
|
||||
<span class="sourceLineNo">236</span> return ACFUtil.join(args, sep);<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>
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -56,14 +56,14 @@
|
||||
<span class="sourceLineNo">048</span><a name="line.48"></a>
|
||||
<span class="sourceLineNo">049</span><a name="line.49"></a>
|
||||
<span class="sourceLineNo">050</span>@SuppressWarnings("WeakerAccess")<a name="line.50"></a>
|
||||
<span class="sourceLineNo">051</span>public abstract class CommandManager <<a name="line.51"></a>
|
||||
<span class="sourceLineNo">051</span>public abstract class CommandManager<<a name="line.51"></a>
|
||||
<span class="sourceLineNo">052</span> IT,<a name="line.52"></a>
|
||||
<span class="sourceLineNo">053</span> I extends CommandIssuer,<a name="line.53"></a>
|
||||
<span class="sourceLineNo">054</span> FT,<a name="line.54"></a>
|
||||
<span class="sourceLineNo">055</span> MF extends MessageFormatter<FT>,<a name="line.55"></a>
|
||||
<span class="sourceLineNo">056</span> CEC extends CommandExecutionContext<CEC, I>,<a name="line.56"></a>
|
||||
<span class="sourceLineNo">057</span> CC extends ConditionContext<I><a name="line.57"></a>
|
||||
<span class="sourceLineNo">058</span> > {<a name="line.58"></a>
|
||||
<span class="sourceLineNo">058</span> > {<a name="line.58"></a>
|
||||
<span class="sourceLineNo">059</span><a name="line.59"></a>
|
||||
<span class="sourceLineNo">060</span> /**<a name="line.60"></a>
|
||||
<span class="sourceLineNo">061</span> * This is a stack incase a command calls a command<a name="line.61"></a>
|
||||
@@ -121,7 +121,7 @@
|
||||
<span class="sourceLineNo">113</span> public void setFormat(MessageType type, FT... colors) {<a name="line.113"></a>
|
||||
<span class="sourceLineNo">114</span> MF format = getFormat(type);<a name="line.114"></a>
|
||||
<span class="sourceLineNo">115</span> for (int i = 1; i <= colors.length; i++) {<a name="line.115"></a>
|
||||
<span class="sourceLineNo">116</span> format.setColor(i, colors[i-1]);<a name="line.116"></a>
|
||||
<span class="sourceLineNo">116</span> format.setColor(i, colors[i - 1]);<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>
|
||||
@@ -144,402 +144,452 @@
|
||||
<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> * Gets the command contexts manager<a name="line.138"></a>
|
||||
<span class="sourceLineNo">139</span> * @return Command Contexts<a name="line.139"></a>
|
||||
<span class="sourceLineNo">140</span> */<a name="line.140"></a>
|
||||
<span class="sourceLineNo">141</span> public abstract CommandContexts<?> getCommandContexts();<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> * Gets the command completions manager<a name="line.144"></a>
|
||||
<span class="sourceLineNo">145</span> * @return Command Completions<a name="line.145"></a>
|
||||
<span class="sourceLineNo">146</span> */<a name="line.146"></a>
|
||||
<span class="sourceLineNo">147</span> public abstract CommandCompletions<?> getCommandCompletions();<a name="line.147"></a>
|
||||
<span class="sourceLineNo">148</span><a name="line.148"></a>
|
||||
<span class="sourceLineNo">149</span> /** @deprecated Unstable API */ @Deprecated @UnstableAPI<a name="line.149"></a>
|
||||
<span class="sourceLineNo">150</span> public CommandHelp generateCommandHelp(@NotNull String command) {<a name="line.150"></a>
|
||||
<span class="sourceLineNo">151</span> verifyUnstableAPI("help");<a name="line.151"></a>
|
||||
<span class="sourceLineNo">152</span> CommandOperationContext context = getCurrentCommandOperationContext();<a name="line.152"></a>
|
||||
<span class="sourceLineNo">153</span> if (context == null) {<a name="line.153"></a>
|
||||
<span class="sourceLineNo">154</span> throw new IllegalStateException("This method can only be called as part of a command execution.");<a name="line.154"></a>
|
||||
<span class="sourceLineNo">155</span> }<a name="line.155"></a>
|
||||
<span class="sourceLineNo">156</span> return generateCommandHelp(context.getCommandIssuer(), command);<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> /** @deprecated Unstable API */ @Deprecated @UnstableAPI<a name="line.159"></a>
|
||||
<span class="sourceLineNo">160</span> public CommandHelp generateCommandHelp(CommandIssuer issuer, @NotNull String command) {<a name="line.160"></a>
|
||||
<span class="sourceLineNo">161</span> verifyUnstableAPI("help");<a name="line.161"></a>
|
||||
<span class="sourceLineNo">162</span> return generateCommandHelp(issuer, obtainRootCommand(command));<a name="line.162"></a>
|
||||
<span class="sourceLineNo">139</span> *<a name="line.139"></a>
|
||||
<span class="sourceLineNo">140</span> * @return Command Contexts<a name="line.140"></a>
|
||||
<span class="sourceLineNo">141</span> */<a name="line.141"></a>
|
||||
<span class="sourceLineNo">142</span> public abstract CommandContexts<?> getCommandContexts();<a name="line.142"></a>
|
||||
<span class="sourceLineNo">143</span><a name="line.143"></a>
|
||||
<span class="sourceLineNo">144</span> /**<a name="line.144"></a>
|
||||
<span class="sourceLineNo">145</span> * Gets the command completions manager<a name="line.145"></a>
|
||||
<span class="sourceLineNo">146</span> *<a name="line.146"></a>
|
||||
<span class="sourceLineNo">147</span> * @return Command Completions<a name="line.147"></a>
|
||||
<span class="sourceLineNo">148</span> */<a name="line.148"></a>
|
||||
<span class="sourceLineNo">149</span> public abstract CommandCompletions<?> getCommandCompletions();<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> * @deprecated Unstable API<a name="line.152"></a>
|
||||
<span class="sourceLineNo">153</span> */<a name="line.153"></a>
|
||||
<span class="sourceLineNo">154</span> @Deprecated<a name="line.154"></a>
|
||||
<span class="sourceLineNo">155</span> @UnstableAPI<a name="line.155"></a>
|
||||
<span class="sourceLineNo">156</span> public CommandHelp generateCommandHelp(@NotNull String command) {<a name="line.156"></a>
|
||||
<span class="sourceLineNo">157</span> verifyUnstableAPI("help");<a name="line.157"></a>
|
||||
<span class="sourceLineNo">158</span> CommandOperationContext context = getCurrentCommandOperationContext();<a name="line.158"></a>
|
||||
<span class="sourceLineNo">159</span> if (context == null) {<a name="line.159"></a>
|
||||
<span class="sourceLineNo">160</span> throw new IllegalStateException("This method can only be called as part of a command execution.");<a name="line.160"></a>
|
||||
<span class="sourceLineNo">161</span> }<a name="line.161"></a>
|
||||
<span class="sourceLineNo">162</span> return generateCommandHelp(context.getCommandIssuer(), command);<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> /** @deprecated Unstable API */ @Deprecated @UnstableAPI<a name="line.165"></a>
|
||||
<span class="sourceLineNo">166</span> public CommandHelp generateCommandHelp() {<a name="line.166"></a>
|
||||
<span class="sourceLineNo">167</span> verifyUnstableAPI("help");<a name="line.167"></a>
|
||||
<span class="sourceLineNo">168</span> CommandOperationContext context = getCurrentCommandOperationContext();<a name="line.168"></a>
|
||||
<span class="sourceLineNo">169</span> if (context == null) {<a name="line.169"></a>
|
||||
<span class="sourceLineNo">170</span> throw new IllegalStateException("This method can only be called as part of a command execution.");<a name="line.170"></a>
|
||||
<span class="sourceLineNo">171</span> }<a name="line.171"></a>
|
||||
<span class="sourceLineNo">172</span> String commandLabel = context.getCommandLabel();<a name="line.172"></a>
|
||||
<span class="sourceLineNo">173</span> return generateCommandHelp(context.getCommandIssuer(), this.obtainRootCommand(commandLabel));<a name="line.173"></a>
|
||||
<span class="sourceLineNo">174</span> }<a name="line.174"></a>
|
||||
<span class="sourceLineNo">175</span><a name="line.175"></a>
|
||||
<span class="sourceLineNo">176</span> /** @deprecated Unstable API */ @Deprecated @UnstableAPI<a name="line.176"></a>
|
||||
<span class="sourceLineNo">177</span> public CommandHelp generateCommandHelp(CommandIssuer issuer, RootCommand rootCommand) {<a name="line.177"></a>
|
||||
<span class="sourceLineNo">178</span> verifyUnstableAPI("help");<a name="line.178"></a>
|
||||
<span class="sourceLineNo">179</span> return new CommandHelp(this, rootCommand, issuer);<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> /** @deprecated Unstable API */ @Deprecated @UnstableAPI<a name="line.182"></a>
|
||||
<span class="sourceLineNo">183</span> public int getDefaultHelpPerPage() {<a name="line.183"></a>
|
||||
<span class="sourceLineNo">184</span> verifyUnstableAPI("help");<a name="line.184"></a>
|
||||
<span class="sourceLineNo">185</span> return defaultHelpPerPage;<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> /** @deprecated Unstable API */ @Deprecated @UnstableAPI<a name="line.188"></a>
|
||||
<span class="sourceLineNo">189</span> public void setDefaultHelpPerPage(int defaultHelpPerPage) {<a name="line.189"></a>
|
||||
<span class="sourceLineNo">190</span> verifyUnstableAPI("help");<a name="line.190"></a>
|
||||
<span class="sourceLineNo">191</span> this.defaultHelpPerPage = defaultHelpPerPage;<a name="line.191"></a>
|
||||
<span class="sourceLineNo">192</span> }<a name="line.192"></a>
|
||||
<span class="sourceLineNo">193</span> /** @deprecated Unstable API */ @Deprecated @UnstableAPI<a name="line.193"></a>
|
||||
<span class="sourceLineNo">194</span> public void setHelpFormatter(CommandHelpFormatter helpFormatter) {<a name="line.194"></a>
|
||||
<span class="sourceLineNo">195</span> this.helpFormatter = helpFormatter;<a name="line.195"></a>
|
||||
<span class="sourceLineNo">196</span> }<a name="line.196"></a>
|
||||
<span class="sourceLineNo">197</span><a name="line.197"></a>
|
||||
<span class="sourceLineNo">198</span> /** @deprecated Unstable API */ @Deprecated @UnstableAPI<a name="line.198"></a>
|
||||
<span class="sourceLineNo">199</span> public CommandHelpFormatter getHelpFormatter() {<a name="line.199"></a>
|
||||
<span class="sourceLineNo">200</span> return helpFormatter;<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> CommandRouter getRouter() {<a name="line.203"></a>
|
||||
<span class="sourceLineNo">204</span> return router;<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">208</span> * Registers a command with ACF<a name="line.208"></a>
|
||||
<span class="sourceLineNo">209</span> *<a name="line.209"></a>
|
||||
<span class="sourceLineNo">210</span> * @param command The command to register<a name="line.210"></a>
|
||||
<span class="sourceLineNo">211</span> * @return boolean<a name="line.211"></a>
|
||||
<span class="sourceLineNo">165</span> /**<a name="line.165"></a>
|
||||
<span class="sourceLineNo">166</span> * @deprecated Unstable API<a name="line.166"></a>
|
||||
<span class="sourceLineNo">167</span> */<a name="line.167"></a>
|
||||
<span class="sourceLineNo">168</span> @Deprecated<a name="line.168"></a>
|
||||
<span class="sourceLineNo">169</span> @UnstableAPI<a name="line.169"></a>
|
||||
<span class="sourceLineNo">170</span> public CommandHelp generateCommandHelp(CommandIssuer issuer, @NotNull String command) {<a name="line.170"></a>
|
||||
<span class="sourceLineNo">171</span> verifyUnstableAPI("help");<a name="line.171"></a>
|
||||
<span class="sourceLineNo">172</span> return generateCommandHelp(issuer, obtainRootCommand(command));<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> /**<a name="line.175"></a>
|
||||
<span class="sourceLineNo">176</span> * @deprecated Unstable API<a name="line.176"></a>
|
||||
<span class="sourceLineNo">177</span> */<a name="line.177"></a>
|
||||
<span class="sourceLineNo">178</span> @Deprecated<a name="line.178"></a>
|
||||
<span class="sourceLineNo">179</span> @UnstableAPI<a name="line.179"></a>
|
||||
<span class="sourceLineNo">180</span> public CommandHelp generateCommandHelp() {<a name="line.180"></a>
|
||||
<span class="sourceLineNo">181</span> verifyUnstableAPI("help");<a name="line.181"></a>
|
||||
<span class="sourceLineNo">182</span> CommandOperationContext context = getCurrentCommandOperationContext();<a name="line.182"></a>
|
||||
<span class="sourceLineNo">183</span> if (context == null) {<a name="line.183"></a>
|
||||
<span class="sourceLineNo">184</span> throw new IllegalStateException("This method can only be called as part of a command execution.");<a name="line.184"></a>
|
||||
<span class="sourceLineNo">185</span> }<a name="line.185"></a>
|
||||
<span class="sourceLineNo">186</span> String commandLabel = context.getCommandLabel();<a name="line.186"></a>
|
||||
<span class="sourceLineNo">187</span> return generateCommandHelp(context.getCommandIssuer(), this.obtainRootCommand(commandLabel));<a name="line.187"></a>
|
||||
<span class="sourceLineNo">188</span> }<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> * @deprecated Unstable API<a name="line.191"></a>
|
||||
<span class="sourceLineNo">192</span> */<a name="line.192"></a>
|
||||
<span class="sourceLineNo">193</span> @Deprecated<a name="line.193"></a>
|
||||
<span class="sourceLineNo">194</span> @UnstableAPI<a name="line.194"></a>
|
||||
<span class="sourceLineNo">195</span> public CommandHelp generateCommandHelp(CommandIssuer issuer, RootCommand rootCommand) {<a name="line.195"></a>
|
||||
<span class="sourceLineNo">196</span> verifyUnstableAPI("help");<a name="line.196"></a>
|
||||
<span class="sourceLineNo">197</span> return new CommandHelp(this, rootCommand, issuer);<a name="line.197"></a>
|
||||
<span class="sourceLineNo">198</span> }<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> * @deprecated Unstable API<a name="line.201"></a>
|
||||
<span class="sourceLineNo">202</span> */<a name="line.202"></a>
|
||||
<span class="sourceLineNo">203</span> @Deprecated<a name="line.203"></a>
|
||||
<span class="sourceLineNo">204</span> @UnstableAPI<a name="line.204"></a>
|
||||
<span class="sourceLineNo">205</span> public int getDefaultHelpPerPage() {<a name="line.205"></a>
|
||||
<span class="sourceLineNo">206</span> verifyUnstableAPI("help");<a name="line.206"></a>
|
||||
<span class="sourceLineNo">207</span> return defaultHelpPerPage;<a name="line.207"></a>
|
||||
<span class="sourceLineNo">208</span> }<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> * @deprecated Unstable API<a name="line.211"></a>
|
||||
<span class="sourceLineNo">212</span> */<a name="line.212"></a>
|
||||
<span class="sourceLineNo">213</span> public abstract void registerCommand(BaseCommand command);<a name="line.213"></a>
|
||||
<span class="sourceLineNo">214</span> public abstract boolean hasRegisteredCommands();<a name="line.214"></a>
|
||||
<span class="sourceLineNo">215</span> public abstract boolean isCommandIssuer(Class<?> type);<a name="line.215"></a>
|
||||
<span class="sourceLineNo">216</span><a name="line.216"></a>
|
||||
<span class="sourceLineNo">217</span> // TODO: Change this to IT if we make a breaking change<a name="line.217"></a>
|
||||
<span class="sourceLineNo">218</span> public abstract I getCommandIssuer(Object issuer);<a name="line.218"></a>
|
||||
<span class="sourceLineNo">213</span> @Deprecated<a name="line.213"></a>
|
||||
<span class="sourceLineNo">214</span> @UnstableAPI<a name="line.214"></a>
|
||||
<span class="sourceLineNo">215</span> public void setDefaultHelpPerPage(int defaultHelpPerPage) {<a name="line.215"></a>
|
||||
<span class="sourceLineNo">216</span> verifyUnstableAPI("help");<a name="line.216"></a>
|
||||
<span class="sourceLineNo">217</span> this.defaultHelpPerPage = defaultHelpPerPage;<a name="line.217"></a>
|
||||
<span class="sourceLineNo">218</span> }<a name="line.218"></a>
|
||||
<span class="sourceLineNo">219</span><a name="line.219"></a>
|
||||
<span class="sourceLineNo">220</span> public abstract RootCommand createRootCommand(String cmd);<a name="line.220"></a>
|
||||
<span class="sourceLineNo">221</span><a name="line.221"></a>
|
||||
<span class="sourceLineNo">222</span> /**<a name="line.222"></a>
|
||||
<span class="sourceLineNo">223</span> * Returns a Locales Manager to add and modify language tables for your commands.<a name="line.223"></a>
|
||||
<span class="sourceLineNo">224</span> * @return<a name="line.224"></a>
|
||||
<span class="sourceLineNo">225</span> */<a name="line.225"></a>
|
||||
<span class="sourceLineNo">226</span> public abstract Locales getLocales();<a name="line.226"></a>
|
||||
<span class="sourceLineNo">227</span><a name="line.227"></a>
|
||||
<span class="sourceLineNo">228</span> public boolean usingPerIssuerLocale() {<a name="line.228"></a>
|
||||
<span class="sourceLineNo">229</span> return usePerIssuerLocale;<a name="line.229"></a>
|
||||
<span class="sourceLineNo">230</span> }<a name="line.230"></a>
|
||||
<span class="sourceLineNo">231</span><a name="line.231"></a>
|
||||
<span class="sourceLineNo">232</span> public boolean usePerIssuerLocale(boolean setting) {<a name="line.232"></a>
|
||||
<span class="sourceLineNo">233</span> boolean old = usePerIssuerLocale;<a name="line.233"></a>
|
||||
<span class="sourceLineNo">234</span> usePerIssuerLocale = setting;<a name="line.234"></a>
|
||||
<span class="sourceLineNo">235</span> return old;<a name="line.235"></a>
|
||||
<span class="sourceLineNo">220</span> /**<a name="line.220"></a>
|
||||
<span class="sourceLineNo">221</span> * @deprecated Unstable API<a name="line.221"></a>
|
||||
<span class="sourceLineNo">222</span> */<a name="line.222"></a>
|
||||
<span class="sourceLineNo">223</span> @Deprecated<a name="line.223"></a>
|
||||
<span class="sourceLineNo">224</span> @UnstableAPI<a name="line.224"></a>
|
||||
<span class="sourceLineNo">225</span> public void setHelpFormatter(CommandHelpFormatter helpFormatter) {<a name="line.225"></a>
|
||||
<span class="sourceLineNo">226</span> this.helpFormatter = helpFormatter;<a name="line.226"></a>
|
||||
<span class="sourceLineNo">227</span> }<a name="line.227"></a>
|
||||
<span class="sourceLineNo">228</span><a name="line.228"></a>
|
||||
<span class="sourceLineNo">229</span> /**<a name="line.229"></a>
|
||||
<span class="sourceLineNo">230</span> * @deprecated Unstable API<a name="line.230"></a>
|
||||
<span class="sourceLineNo">231</span> */<a name="line.231"></a>
|
||||
<span class="sourceLineNo">232</span> @Deprecated<a name="line.232"></a>
|
||||
<span class="sourceLineNo">233</span> @UnstableAPI<a name="line.233"></a>
|
||||
<span class="sourceLineNo">234</span> public CommandHelpFormatter getHelpFormatter() {<a name="line.234"></a>
|
||||
<span class="sourceLineNo">235</span> return helpFormatter;<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> public ConditionContext createConditionContext(CommandIssuer issuer, String config) {<a name="line.238"></a>
|
||||
<span class="sourceLineNo">239</span> //noinspection unchecked<a name="line.239"></a>
|
||||
<span class="sourceLineNo">240</span> return new ConditionContext(issuer, config);<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> public abstract CommandExecutionContext createCommandContext(RegisteredCommand command, CommandParameter parameter, CommandIssuer sender, List<String> args, int i, Map<String, Object> passedArgs);<a name="line.243"></a>
|
||||
<span class="sourceLineNo">244</span><a name="line.244"></a>
|
||||
<span class="sourceLineNo">245</span> public abstract CommandCompletionContext createCompletionContext(RegisteredCommand command, CommandIssuer sender, String input, String config, String[] args);<a name="line.245"></a>
|
||||
<span class="sourceLineNo">246</span><a name="line.246"></a>
|
||||
<span class="sourceLineNo">247</span> public abstract void log(final LogLevel level, final String message, final Throwable throwable);<a name="line.247"></a>
|
||||
<span class="sourceLineNo">248</span><a name="line.248"></a>
|
||||
<span class="sourceLineNo">249</span> public void log(final LogLevel level, final String message) {<a name="line.249"></a>
|
||||
<span class="sourceLineNo">250</span> log(level, message, null);<a name="line.250"></a>
|
||||
<span class="sourceLineNo">251</span> }<a name="line.251"></a>
|
||||
<span class="sourceLineNo">252</span><a name="line.252"></a>
|
||||
<span class="sourceLineNo">253</span> /**<a name="line.253"></a>
|
||||
<span class="sourceLineNo">254</span> * Lets you add custom string replacements that can be applied to annotation values,<a name="line.254"></a>
|
||||
<span class="sourceLineNo">255</span> * to reduce duplication/repetition of common values such as permission nodes and command prefixes.<a name="line.255"></a>
|
||||
<span class="sourceLineNo">256</span> *<a name="line.256"></a>
|
||||
<span class="sourceLineNo">257</span> * Any replacement registered starts with a %<a name="line.257"></a>
|
||||
<span class="sourceLineNo">258</span> *<a name="line.258"></a>
|
||||
<span class="sourceLineNo">259</span> * So for ex @CommandPermission("%staff")<a name="line.259"></a>
|
||||
<span class="sourceLineNo">260</span> * @return Replacements Manager<a name="line.260"></a>
|
||||
<span class="sourceLineNo">261</span> */<a name="line.261"></a>
|
||||
<span class="sourceLineNo">262</span> public CommandReplacements getCommandReplacements() {<a name="line.262"></a>
|
||||
<span class="sourceLineNo">263</span> return replacements;<a name="line.263"></a>
|
||||
<span class="sourceLineNo">264</span> }<a name="line.264"></a>
|
||||
<span class="sourceLineNo">238</span> CommandRouter getRouter() {<a name="line.238"></a>
|
||||
<span class="sourceLineNo">239</span> return router;<a name="line.239"></a>
|
||||
<span class="sourceLineNo">240</span> }<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> * Registers a command with ACF<a name="line.243"></a>
|
||||
<span class="sourceLineNo">244</span> *<a name="line.244"></a>
|
||||
<span class="sourceLineNo">245</span> * @param command The command to register<a name="line.245"></a>
|
||||
<span class="sourceLineNo">246</span> * @return boolean<a name="line.246"></a>
|
||||
<span class="sourceLineNo">247</span> */<a name="line.247"></a>
|
||||
<span class="sourceLineNo">248</span> public abstract void registerCommand(BaseCommand command);<a name="line.248"></a>
|
||||
<span class="sourceLineNo">249</span><a name="line.249"></a>
|
||||
<span class="sourceLineNo">250</span> public abstract boolean hasRegisteredCommands();<a name="line.250"></a>
|
||||
<span class="sourceLineNo">251</span><a name="line.251"></a>
|
||||
<span class="sourceLineNo">252</span> public abstract boolean isCommandIssuer(Class<?> type);<a name="line.252"></a>
|
||||
<span class="sourceLineNo">253</span><a name="line.253"></a>
|
||||
<span class="sourceLineNo">254</span> // TODO: Change this to IT if we make a breaking change<a name="line.254"></a>
|
||||
<span class="sourceLineNo">255</span> public abstract I getCommandIssuer(Object issuer);<a name="line.255"></a>
|
||||
<span class="sourceLineNo">256</span><a name="line.256"></a>
|
||||
<span class="sourceLineNo">257</span> public abstract RootCommand createRootCommand(String cmd);<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> * Returns a Locales Manager to add and modify language tables for your commands.<a name="line.260"></a>
|
||||
<span class="sourceLineNo">261</span> *<a name="line.261"></a>
|
||||
<span class="sourceLineNo">262</span> * @return<a name="line.262"></a>
|
||||
<span class="sourceLineNo">263</span> */<a name="line.263"></a>
|
||||
<span class="sourceLineNo">264</span> public abstract Locales getLocales();<a name="line.264"></a>
|
||||
<span class="sourceLineNo">265</span><a name="line.265"></a>
|
||||
<span class="sourceLineNo">266</span> public boolean hasPermission(CommandIssuer issuer, String permission) {<a name="line.266"></a>
|
||||
<span class="sourceLineNo">267</span> if (permission == null || permission.isEmpty()) {<a name="line.267"></a>
|
||||
<span class="sourceLineNo">268</span> return true;<a name="line.268"></a>
|
||||
<span class="sourceLineNo">269</span> }<a name="line.269"></a>
|
||||
<span class="sourceLineNo">270</span> for (String perm : ACFPatterns.COMMA.split(permission)) {<a name="line.270"></a>
|
||||
<span class="sourceLineNo">271</span> if (!perm.isEmpty() && !issuer.hasPermission(perm)) {<a name="line.271"></a>
|
||||
<span class="sourceLineNo">272</span> return false;<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> return true;<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 synchronized RootCommand getRootCommand(@NotNull String cmd) {<a name="line.278"></a>
|
||||
<span class="sourceLineNo">279</span> return rootCommands.get(ACFPatterns.SPACE.split(cmd.toLowerCase(), 2)[0]);<a name="line.279"></a>
|
||||
<span class="sourceLineNo">280</span> }<a name="line.280"></a>
|
||||
<span class="sourceLineNo">281</span><a name="line.281"></a>
|
||||
<span class="sourceLineNo">282</span> public synchronized RootCommand obtainRootCommand(@NotNull String cmd) {<a name="line.282"></a>
|
||||
<span class="sourceLineNo">283</span> return rootCommands.computeIfAbsent(ACFPatterns.SPACE.split(cmd.toLowerCase(), 2)[0], this::createRootCommand);<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> public abstract Collection<RootCommand> getRegisteredRootCommands();<a name="line.286"></a>
|
||||
<span class="sourceLineNo">287</span><a name="line.287"></a>
|
||||
<span class="sourceLineNo">288</span> public RegisteredCommand createRegisteredCommand(BaseCommand command, String cmdName, Method method, String prefSubCommand) {<a name="line.288"></a>
|
||||
<span class="sourceLineNo">289</span> return new RegisteredCommand(command, cmdName, method, prefSubCommand);<a name="line.289"></a>
|
||||
<span class="sourceLineNo">290</span> }<a name="line.290"></a>
|
||||
<span class="sourceLineNo">291</span><a name="line.291"></a>
|
||||
<span class="sourceLineNo">292</span> /**<a name="line.292"></a>
|
||||
<span class="sourceLineNo">293</span> * Sets the default {@link ExceptionHandler} that is called when an exception occurs while executing a command, if the command doesn't have it's own exception handler registered.<a name="line.293"></a>
|
||||
<span class="sourceLineNo">294</span> *<a name="line.294"></a>
|
||||
<span class="sourceLineNo">295</span> * @param exceptionHandler the handler that should handle uncaught exceptions. May not be null if logExceptions is false<a name="line.295"></a>
|
||||
<span class="sourceLineNo">296</span> */<a name="line.296"></a>
|
||||
<span class="sourceLineNo">297</span> public void setDefaultExceptionHandler(ExceptionHandler exceptionHandler) {<a name="line.297"></a>
|
||||
<span class="sourceLineNo">298</span> if (exceptionHandler == null && !this.logUnhandledExceptions) {<a name="line.298"></a>
|
||||
<span class="sourceLineNo">299</span> throw new IllegalArgumentException("You may not disable the default exception handler and have logging of unhandled exceptions disabled");<a name="line.299"></a>
|
||||
<span class="sourceLineNo">300</span> }<a name="line.300"></a>
|
||||
<span class="sourceLineNo">301</span> defaultExceptionHandler = exceptionHandler;<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> /**<a name="line.304"></a>
|
||||
<span class="sourceLineNo">305</span> * Sets the default {@link ExceptionHandler} that is called when an exception occurs while executing a command, if the command doesn't have it's own exception handler registered, and lets you control if ACF should also log the exception still.<a name="line.305"></a>
|
||||
<span class="sourceLineNo">306</span> * <p><a name="line.306"></a>
|
||||
<span class="sourceLineNo">307</span> * If you disable logging, you need to log it yourself in your handler.<a name="line.307"></a>
|
||||
<span class="sourceLineNo">308</span> *<a name="line.308"></a>
|
||||
<span class="sourceLineNo">309</span> * @param exceptionHandler the handler that should handle uncaught exceptions. May not be null if logExceptions is false<a name="line.309"></a>
|
||||
<span class="sourceLineNo">310</span> * @param logExceptions Whether or not to log exceptions.<a name="line.310"></a>
|
||||
<span class="sourceLineNo">311</span> */<a name="line.311"></a>
|
||||
<span class="sourceLineNo">312</span> public void setDefaultExceptionHandler(ExceptionHandler exceptionHandler, boolean logExceptions) {<a name="line.312"></a>
|
||||
<span class="sourceLineNo">313</span> if (exceptionHandler == null && !logExceptions) {<a name="line.313"></a>
|
||||
<span class="sourceLineNo">314</span> throw new IllegalArgumentException("You may not disable the default exception handler and have logging of unhandled exceptions disabled");<a name="line.314"></a>
|
||||
<span class="sourceLineNo">315</span> }<a name="line.315"></a>
|
||||
<span class="sourceLineNo">316</span> this.logUnhandledExceptions = logExceptions;<a name="line.316"></a>
|
||||
<span class="sourceLineNo">317</span> this.defaultExceptionHandler = exceptionHandler;<a name="line.317"></a>
|
||||
<span class="sourceLineNo">318</span> }<a name="line.318"></a>
|
||||
<span class="sourceLineNo">319</span><a name="line.319"></a>
|
||||
<span class="sourceLineNo">320</span> public boolean isLoggingUnhandledExceptions() {<a name="line.320"></a>
|
||||
<span class="sourceLineNo">321</span> return this.logUnhandledExceptions;<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> * Gets the current default exception handler, might be null.<a name="line.325"></a>
|
||||
<span class="sourceLineNo">326</span> *<a name="line.326"></a>
|
||||
<span class="sourceLineNo">327</span> * @return the default exception handler<a name="line.327"></a>
|
||||
<span class="sourceLineNo">328</span> */<a name="line.328"></a>
|
||||
<span class="sourceLineNo">329</span> public ExceptionHandler getDefaultExceptionHandler() {<a name="line.329"></a>
|
||||
<span class="sourceLineNo">330</span> return defaultExceptionHandler;<a name="line.330"></a>
|
||||
<span class="sourceLineNo">331</span> }<a name="line.331"></a>
|
||||
<span class="sourceLineNo">332</span><a name="line.332"></a>
|
||||
<span class="sourceLineNo">333</span> protected boolean handleUncaughtException(BaseCommand scope, RegisteredCommand registeredCommand, CommandIssuer sender, List<String> args, Throwable t) {<a name="line.333"></a>
|
||||
<span class="sourceLineNo">334</span> if (t instanceof InvocationTargetException && t.getCause() != null) {<a name="line.334"></a>
|
||||
<span class="sourceLineNo">335</span> t = t.getCause();<a name="line.335"></a>
|
||||
<span class="sourceLineNo">336</span> }<a name="line.336"></a>
|
||||
<span class="sourceLineNo">337</span> boolean result = false;<a name="line.337"></a>
|
||||
<span class="sourceLineNo">338</span> if (scope.getExceptionHandler() != null) {<a name="line.338"></a>
|
||||
<span class="sourceLineNo">339</span> result = scope.getExceptionHandler().execute(scope, registeredCommand, sender, args, t);<a name="line.339"></a>
|
||||
<span class="sourceLineNo">340</span> } else if (defaultExceptionHandler != null) {<a name="line.340"></a>
|
||||
<span class="sourceLineNo">341</span> result = defaultExceptionHandler.execute(scope, registeredCommand, sender, args, t);<a name="line.341"></a>
|
||||
<span class="sourceLineNo">342</span> }<a name="line.342"></a>
|
||||
<span class="sourceLineNo">343</span> return result;<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> public void sendMessage(IT issuerArg, MessageType type, MessageKeyProvider key, String... replacements) {<a name="line.346"></a>
|
||||
<span class="sourceLineNo">347</span> sendMessage(getCommandIssuer(issuerArg), type, key, replacements);<a name="line.347"></a>
|
||||
<span class="sourceLineNo">348</span> }<a name="line.348"></a>
|
||||
<span class="sourceLineNo">349</span><a name="line.349"></a>
|
||||
<span class="sourceLineNo">350</span> public void sendMessage(CommandIssuer issuer, MessageType type, MessageKeyProvider key, String... replacements) {<a name="line.350"></a>
|
||||
<span class="sourceLineNo">351</span> String message = formatMessage(issuer, type, key, replacements);<a name="line.351"></a>
|
||||
<span class="sourceLineNo">352</span><a name="line.352"></a>
|
||||
<span class="sourceLineNo">353</span> for (String msg : ACFPatterns.NEWLINE.split(message)) {<a name="line.353"></a>
|
||||
<span class="sourceLineNo">354</span> issuer.sendMessageInternal(ACFUtil.rtrim(msg));<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><a name="line.357"></a>
|
||||
<span class="sourceLineNo">358</span> public String formatMessage(CommandIssuer issuer, MessageType type, MessageKeyProvider key, String... replacements) {<a name="line.358"></a>
|
||||
<span class="sourceLineNo">359</span> String message = getLocales().getMessage(issuer, key.getMessageKey());<a name="line.359"></a>
|
||||
<span class="sourceLineNo">360</span> if (replacements.length > 0) {<a name="line.360"></a>
|
||||
<span class="sourceLineNo">361</span> message = ACFUtil.replaceStrings(message, replacements);<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> message = getCommandReplacements().replace(message);<a name="line.364"></a>
|
||||
<span class="sourceLineNo">365</span> message = getLocales().replaceI18NStrings(message);<a name="line.365"></a>
|
||||
<span class="sourceLineNo">366</span><a name="line.366"></a>
|
||||
<span class="sourceLineNo">367</span> MessageFormatter formatter = formatters.getOrDefault(type, defaultFormatter);<a name="line.367"></a>
|
||||
<span class="sourceLineNo">368</span> if (formatter != null) {<a name="line.368"></a>
|
||||
<span class="sourceLineNo">369</span> message = formatter.format(message);<a name="line.369"></a>
|
||||
<span class="sourceLineNo">370</span> }<a name="line.370"></a>
|
||||
<span class="sourceLineNo">371</span> return message;<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> public void onLocaleChange(IssuerLocaleChangedCallback<I> onChange) {<a name="line.374"></a>
|
||||
<span class="sourceLineNo">375</span> localeChangedCallbacks.add(onChange);<a name="line.375"></a>
|
||||
<span class="sourceLineNo">376</span> }<a name="line.376"></a>
|
||||
<span class="sourceLineNo">377</span><a name="line.377"></a>
|
||||
<span class="sourceLineNo">378</span> public void notifyLocaleChange(I issuer, Locale oldLocale, Locale newLocale) {<a name="line.378"></a>
|
||||
<span class="sourceLineNo">379</span> localeChangedCallbacks.forEach(cb -> {<a name="line.379"></a>
|
||||
<span class="sourceLineNo">380</span> try {<a name="line.380"></a>
|
||||
<span class="sourceLineNo">381</span> cb.onIssuerLocaleChange(issuer, oldLocale, newLocale);<a name="line.381"></a>
|
||||
<span class="sourceLineNo">382</span> } catch (Exception e) {<a name="line.382"></a>
|
||||
<span class="sourceLineNo">383</span> this.log(LogLevel.ERROR, "Error in notifyLocaleChange", e);<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> }<a name="line.386"></a>
|
||||
<span class="sourceLineNo">387</span><a name="line.387"></a>
|
||||
<span class="sourceLineNo">388</span> public Locale setIssuerLocale(IT issuer, Locale locale) {<a name="line.388"></a>
|
||||
<span class="sourceLineNo">389</span> I commandIssuer = getCommandIssuer(issuer);<a name="line.389"></a>
|
||||
<span class="sourceLineNo">390</span><a name="line.390"></a>
|
||||
<span class="sourceLineNo">391</span> Locale old = issuersLocale.put(commandIssuer.getUniqueId(), locale);<a name="line.391"></a>
|
||||
<span class="sourceLineNo">392</span> if (!Objects.equals(old, locale)) {<a name="line.392"></a>
|
||||
<span class="sourceLineNo">393</span> this.notifyLocaleChange(commandIssuer, old, locale);<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> return old;<a name="line.396"></a>
|
||||
<span class="sourceLineNo">397</span> }<a name="line.397"></a>
|
||||
<span class="sourceLineNo">398</span><a name="line.398"></a>
|
||||
<span class="sourceLineNo">399</span> public Locale getIssuerLocale(CommandIssuer issuer) {<a name="line.399"></a>
|
||||
<span class="sourceLineNo">400</span> if (usingPerIssuerLocale() && issuer != null) {<a name="line.400"></a>
|
||||
<span class="sourceLineNo">401</span> Locale locale = issuersLocale.get(issuer.getUniqueId());<a name="line.401"></a>
|
||||
<span class="sourceLineNo">402</span> if (locale != null) {<a name="line.402"></a>
|
||||
<span class="sourceLineNo">403</span> return locale;<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>
|
||||
<span class="sourceLineNo">406</span><a name="line.406"></a>
|
||||
<span class="sourceLineNo">407</span> return getLocales().getDefaultLocale();<a name="line.407"></a>
|
||||
<span class="sourceLineNo">408</span> }<a name="line.408"></a>
|
||||
<span class="sourceLineNo">409</span><a name="line.409"></a>
|
||||
<span class="sourceLineNo">410</span> CommandOperationContext<I> createCommandOperationContext(BaseCommand command, CommandIssuer issuer, String commandLabel, String[] args, boolean isAsync) {<a name="line.410"></a>
|
||||
<span class="sourceLineNo">411</span> //noinspection unchecked<a name="line.411"></a>
|
||||
<span class="sourceLineNo">412</span> return new CommandOperationContext<>(<a name="line.412"></a>
|
||||
<span class="sourceLineNo">413</span> this,<a name="line.413"></a>
|
||||
<span class="sourceLineNo">414</span> (I) issuer,<a name="line.414"></a>
|
||||
<span class="sourceLineNo">415</span> command,<a name="line.415"></a>
|
||||
<span class="sourceLineNo">416</span> commandLabel,<a name="line.416"></a>
|
||||
<span class="sourceLineNo">417</span> args,<a name="line.417"></a>
|
||||
<span class="sourceLineNo">418</span> isAsync<a name="line.418"></a>
|
||||
<span class="sourceLineNo">419</span> );<a name="line.419"></a>
|
||||
<span class="sourceLineNo">266</span> public boolean usingPerIssuerLocale() {<a name="line.266"></a>
|
||||
<span class="sourceLineNo">267</span> return usePerIssuerLocale;<a name="line.267"></a>
|
||||
<span class="sourceLineNo">268</span> }<a name="line.268"></a>
|
||||
<span class="sourceLineNo">269</span><a name="line.269"></a>
|
||||
<span class="sourceLineNo">270</span> public boolean usePerIssuerLocale(boolean setting) {<a name="line.270"></a>
|
||||
<span class="sourceLineNo">271</span> boolean old = usePerIssuerLocale;<a name="line.271"></a>
|
||||
<span class="sourceLineNo">272</span> usePerIssuerLocale = setting;<a name="line.272"></a>
|
||||
<span class="sourceLineNo">273</span> return old;<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 ConditionContext createConditionContext(CommandIssuer issuer, String config) {<a name="line.276"></a>
|
||||
<span class="sourceLineNo">277</span> //noinspection unchecked<a name="line.277"></a>
|
||||
<span class="sourceLineNo">278</span> return new ConditionContext(issuer, config);<a name="line.278"></a>
|
||||
<span class="sourceLineNo">279</span> }<a name="line.279"></a>
|
||||
<span class="sourceLineNo">280</span><a name="line.280"></a>
|
||||
<span class="sourceLineNo">281</span> public abstract CommandExecutionContext createCommandContext(RegisteredCommand command, CommandParameter parameter, CommandIssuer sender, List<String> args, int i, Map<String, Object> passedArgs);<a name="line.281"></a>
|
||||
<span class="sourceLineNo">282</span><a name="line.282"></a>
|
||||
<span class="sourceLineNo">283</span> public abstract CommandCompletionContext createCompletionContext(RegisteredCommand command, CommandIssuer sender, String input, String config, String[] args);<a name="line.283"></a>
|
||||
<span class="sourceLineNo">284</span><a name="line.284"></a>
|
||||
<span class="sourceLineNo">285</span> public abstract void log(final LogLevel level, final String message, final Throwable throwable);<a name="line.285"></a>
|
||||
<span class="sourceLineNo">286</span><a name="line.286"></a>
|
||||
<span class="sourceLineNo">287</span> public void log(final LogLevel level, final String message) {<a name="line.287"></a>
|
||||
<span class="sourceLineNo">288</span> log(level, message, null);<a name="line.288"></a>
|
||||
<span class="sourceLineNo">289</span> }<a name="line.289"></a>
|
||||
<span class="sourceLineNo">290</span><a name="line.290"></a>
|
||||
<span class="sourceLineNo">291</span> /**<a name="line.291"></a>
|
||||
<span class="sourceLineNo">292</span> * Lets you add custom string replacements that can be applied to annotation values,<a name="line.292"></a>
|
||||
<span class="sourceLineNo">293</span> * to reduce duplication/repetition of common values such as permission nodes and command prefixes.<a name="line.293"></a>
|
||||
<span class="sourceLineNo">294</span> * <p><a name="line.294"></a>
|
||||
<span class="sourceLineNo">295</span> * Any replacement registered starts with a %<a name="line.295"></a>
|
||||
<span class="sourceLineNo">296</span> * <p><a name="line.296"></a>
|
||||
<span class="sourceLineNo">297</span> * So for ex @CommandPermission("%staff")<a name="line.297"></a>
|
||||
<span class="sourceLineNo">298</span> *<a name="line.298"></a>
|
||||
<span class="sourceLineNo">299</span> * @return Replacements Manager<a name="line.299"></a>
|
||||
<span class="sourceLineNo">300</span> */<a name="line.300"></a>
|
||||
<span class="sourceLineNo">301</span> public CommandReplacements getCommandReplacements() {<a name="line.301"></a>
|
||||
<span class="sourceLineNo">302</span> return replacements;<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 boolean hasPermission(CommandIssuer issuer, Set<String> permissions) {<a name="line.305"></a>
|
||||
<span class="sourceLineNo">306</span> for (String permission : permissions) {<a name="line.306"></a>
|
||||
<span class="sourceLineNo">307</span> if (!hasPermission(issuer, permission)) {<a name="line.307"></a>
|
||||
<span class="sourceLineNo">308</span> return false;<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> return true;<a name="line.311"></a>
|
||||
<span class="sourceLineNo">312</span> }<a name="line.312"></a>
|
||||
<span class="sourceLineNo">313</span><a name="line.313"></a>
|
||||
<span class="sourceLineNo">314</span> public boolean hasPermission(CommandIssuer issuer, String permission) {<a name="line.314"></a>
|
||||
<span class="sourceLineNo">315</span> if (permission == null || permission.isEmpty()) {<a name="line.315"></a>
|
||||
<span class="sourceLineNo">316</span> return true;<a name="line.316"></a>
|
||||
<span class="sourceLineNo">317</span> }<a name="line.317"></a>
|
||||
<span class="sourceLineNo">318</span> for (String perm : ACFPatterns.COMMA.split(permission)) {<a name="line.318"></a>
|
||||
<span class="sourceLineNo">319</span> if (!perm.isEmpty() && !issuer.hasPermission(perm)) {<a name="line.319"></a>
|
||||
<span class="sourceLineNo">320</span> return false;<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> return true;<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> public synchronized RootCommand getRootCommand(@NotNull String cmd) {<a name="line.326"></a>
|
||||
<span class="sourceLineNo">327</span> return rootCommands.get(ACFPatterns.SPACE.split(cmd.toLowerCase(), 2)[0]);<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 synchronized RootCommand obtainRootCommand(@NotNull String cmd) {<a name="line.330"></a>
|
||||
<span class="sourceLineNo">331</span> return rootCommands.computeIfAbsent(ACFPatterns.SPACE.split(cmd.toLowerCase(), 2)[0], this::createRootCommand);<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> public abstract Collection<RootCommand> getRegisteredRootCommands();<a name="line.334"></a>
|
||||
<span class="sourceLineNo">335</span><a name="line.335"></a>
|
||||
<span class="sourceLineNo">336</span> public RegisteredCommand createRegisteredCommand(BaseCommand command, String cmdName, Method method, String prefSubCommand) {<a name="line.336"></a>
|
||||
<span class="sourceLineNo">337</span> return new RegisteredCommand(command, cmdName, method, prefSubCommand);<a name="line.337"></a>
|
||||
<span class="sourceLineNo">338</span> }<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> * Sets the default {@link ExceptionHandler} that is called when an exception occurs while executing a command, if the command doesn't have it's own exception handler registered.<a name="line.341"></a>
|
||||
<span class="sourceLineNo">342</span> *<a name="line.342"></a>
|
||||
<span class="sourceLineNo">343</span> * @param exceptionHandler the handler that should handle uncaught exceptions. May not be null if logExceptions is false<a name="line.343"></a>
|
||||
<span class="sourceLineNo">344</span> */<a name="line.344"></a>
|
||||
<span class="sourceLineNo">345</span> public void setDefaultExceptionHandler(ExceptionHandler exceptionHandler) {<a name="line.345"></a>
|
||||
<span class="sourceLineNo">346</span> if (exceptionHandler == null && !this.logUnhandledExceptions) {<a name="line.346"></a>
|
||||
<span class="sourceLineNo">347</span> throw new IllegalArgumentException("You may not disable the default exception handler and have logging of unhandled exceptions disabled");<a name="line.347"></a>
|
||||
<span class="sourceLineNo">348</span> }<a name="line.348"></a>
|
||||
<span class="sourceLineNo">349</span> defaultExceptionHandler = exceptionHandler;<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> /**<a name="line.352"></a>
|
||||
<span class="sourceLineNo">353</span> * Sets the default {@link ExceptionHandler} that is called when an exception occurs while executing a command, if the command doesn't have it's own exception handler registered, and lets you control if ACF should also log the exception still.<a name="line.353"></a>
|
||||
<span class="sourceLineNo">354</span> * <p><a name="line.354"></a>
|
||||
<span class="sourceLineNo">355</span> * If you disable logging, you need to log it yourself in your handler.<a name="line.355"></a>
|
||||
<span class="sourceLineNo">356</span> *<a name="line.356"></a>
|
||||
<span class="sourceLineNo">357</span> * @param exceptionHandler the handler that should handle uncaught exceptions. May not be null if logExceptions is false<a name="line.357"></a>
|
||||
<span class="sourceLineNo">358</span> * @param logExceptions Whether or not to log exceptions.<a name="line.358"></a>
|
||||
<span class="sourceLineNo">359</span> */<a name="line.359"></a>
|
||||
<span class="sourceLineNo">360</span> public void setDefaultExceptionHandler(ExceptionHandler exceptionHandler, boolean logExceptions) {<a name="line.360"></a>
|
||||
<span class="sourceLineNo">361</span> if (exceptionHandler == null && !logExceptions) {<a name="line.361"></a>
|
||||
<span class="sourceLineNo">362</span> throw new IllegalArgumentException("You may not disable the default exception handler and have logging of unhandled exceptions disabled");<a name="line.362"></a>
|
||||
<span class="sourceLineNo">363</span> }<a name="line.363"></a>
|
||||
<span class="sourceLineNo">364</span> this.logUnhandledExceptions = logExceptions;<a name="line.364"></a>
|
||||
<span class="sourceLineNo">365</span> this.defaultExceptionHandler = exceptionHandler;<a name="line.365"></a>
|
||||
<span class="sourceLineNo">366</span> }<a name="line.366"></a>
|
||||
<span class="sourceLineNo">367</span><a name="line.367"></a>
|
||||
<span class="sourceLineNo">368</span> public boolean isLoggingUnhandledExceptions() {<a name="line.368"></a>
|
||||
<span class="sourceLineNo">369</span> return this.logUnhandledExceptions;<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> * Gets the current default exception handler, might be null.<a name="line.373"></a>
|
||||
<span class="sourceLineNo">374</span> *<a name="line.374"></a>
|
||||
<span class="sourceLineNo">375</span> * @return the default exception handler<a name="line.375"></a>
|
||||
<span class="sourceLineNo">376</span> */<a name="line.376"></a>
|
||||
<span class="sourceLineNo">377</span> public ExceptionHandler getDefaultExceptionHandler() {<a name="line.377"></a>
|
||||
<span class="sourceLineNo">378</span> return defaultExceptionHandler;<a name="line.378"></a>
|
||||
<span class="sourceLineNo">379</span> }<a name="line.379"></a>
|
||||
<span class="sourceLineNo">380</span><a name="line.380"></a>
|
||||
<span class="sourceLineNo">381</span> protected boolean handleUncaughtException(BaseCommand scope, RegisteredCommand registeredCommand, CommandIssuer sender, List<String> args, Throwable t) {<a name="line.381"></a>
|
||||
<span class="sourceLineNo">382</span> if (t instanceof InvocationTargetException && t.getCause() != null) {<a name="line.382"></a>
|
||||
<span class="sourceLineNo">383</span> t = t.getCause();<a name="line.383"></a>
|
||||
<span class="sourceLineNo">384</span> }<a name="line.384"></a>
|
||||
<span class="sourceLineNo">385</span> boolean result = false;<a name="line.385"></a>
|
||||
<span class="sourceLineNo">386</span> if (scope.getExceptionHandler() != null) {<a name="line.386"></a>
|
||||
<span class="sourceLineNo">387</span> result = scope.getExceptionHandler().execute(scope, registeredCommand, sender, args, t);<a name="line.387"></a>
|
||||
<span class="sourceLineNo">388</span> } else if (defaultExceptionHandler != null) {<a name="line.388"></a>
|
||||
<span class="sourceLineNo">389</span> result = defaultExceptionHandler.execute(scope, registeredCommand, sender, args, t);<a name="line.389"></a>
|
||||
<span class="sourceLineNo">390</span> }<a name="line.390"></a>
|
||||
<span class="sourceLineNo">391</span> return result;<a name="line.391"></a>
|
||||
<span class="sourceLineNo">392</span> }<a name="line.392"></a>
|
||||
<span class="sourceLineNo">393</span><a name="line.393"></a>
|
||||
<span class="sourceLineNo">394</span> public void sendMessage(IT issuerArg, MessageType type, MessageKeyProvider key, String... replacements) {<a name="line.394"></a>
|
||||
<span class="sourceLineNo">395</span> sendMessage(getCommandIssuer(issuerArg), type, key, replacements);<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> public void sendMessage(CommandIssuer issuer, MessageType type, MessageKeyProvider key, String... replacements) {<a name="line.398"></a>
|
||||
<span class="sourceLineNo">399</span> String message = formatMessage(issuer, type, key, replacements);<a name="line.399"></a>
|
||||
<span class="sourceLineNo">400</span><a name="line.400"></a>
|
||||
<span class="sourceLineNo">401</span> for (String msg : ACFPatterns.NEWLINE.split(message)) {<a name="line.401"></a>
|
||||
<span class="sourceLineNo">402</span> issuer.sendMessageInternal(ACFUtil.rtrim(msg));<a name="line.402"></a>
|
||||
<span class="sourceLineNo">403</span> }<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>
|
||||
<span class="sourceLineNo">406</span> public String formatMessage(CommandIssuer issuer, MessageType type, MessageKeyProvider key, String... replacements) {<a name="line.406"></a>
|
||||
<span class="sourceLineNo">407</span> String message = getLocales().getMessage(issuer, key.getMessageKey());<a name="line.407"></a>
|
||||
<span class="sourceLineNo">408</span> if (replacements.length > 0) {<a name="line.408"></a>
|
||||
<span class="sourceLineNo">409</span> message = ACFUtil.replaceStrings(message, replacements);<a name="line.409"></a>
|
||||
<span class="sourceLineNo">410</span> }<a name="line.410"></a>
|
||||
<span class="sourceLineNo">411</span><a name="line.411"></a>
|
||||
<span class="sourceLineNo">412</span> message = getCommandReplacements().replace(message);<a name="line.412"></a>
|
||||
<span class="sourceLineNo">413</span> message = getLocales().replaceI18NStrings(message);<a name="line.413"></a>
|
||||
<span class="sourceLineNo">414</span><a name="line.414"></a>
|
||||
<span class="sourceLineNo">415</span> MessageFormatter formatter = formatters.getOrDefault(type, defaultFormatter);<a name="line.415"></a>
|
||||
<span class="sourceLineNo">416</span> if (formatter != null) {<a name="line.416"></a>
|
||||
<span class="sourceLineNo">417</span> message = formatter.format(message);<a name="line.417"></a>
|
||||
<span class="sourceLineNo">418</span> }<a name="line.418"></a>
|
||||
<span class="sourceLineNo">419</span> return message;<a name="line.419"></a>
|
||||
<span class="sourceLineNo">420</span> }<a name="line.420"></a>
|
||||
<span class="sourceLineNo">421</span><a name="line.421"></a>
|
||||
<span class="sourceLineNo">422</span> /**<a name="line.422"></a>
|
||||
<span class="sourceLineNo">423</span> * Gets a list of all currently supported languages for this manager.<a name="line.423"></a>
|
||||
<span class="sourceLineNo">424</span> * These locales will be automatically loaded from<a name="line.424"></a>
|
||||
<span class="sourceLineNo">425</span> * @return<a name="line.425"></a>
|
||||
<span class="sourceLineNo">426</span> */<a name="line.426"></a>
|
||||
<span class="sourceLineNo">427</span> public Set<Locale> getSupportedLanguages() {<a name="line.427"></a>
|
||||
<span class="sourceLineNo">428</span> return supportedLanguages;<a name="line.428"></a>
|
||||
<span class="sourceLineNo">429</span> }<a name="line.429"></a>
|
||||
<span class="sourceLineNo">430</span><a name="line.430"></a>
|
||||
<span class="sourceLineNo">431</span> /**<a name="line.431"></a>
|
||||
<span class="sourceLineNo">432</span> * Adds a new locale to the list of automatic Locales to load Message Bundles for.<a name="line.432"></a>
|
||||
<span class="sourceLineNo">433</span> * All bundles loaded under the previous supported languages will now automatically load for this new locale too.<a name="line.433"></a>
|
||||
<span class="sourceLineNo">434</span> *<a name="line.434"></a>
|
||||
<span class="sourceLineNo">435</span> * @param locale<a name="line.435"></a>
|
||||
<span class="sourceLineNo">436</span> */<a name="line.436"></a>
|
||||
<span class="sourceLineNo">437</span> public void addSupportedLanguage(Locale locale) {<a name="line.437"></a>
|
||||
<span class="sourceLineNo">438</span> supportedLanguages.add(locale);<a name="line.438"></a>
|
||||
<span class="sourceLineNo">439</span> getLocales().loadMissingBundles();<a name="line.439"></a>
|
||||
<span class="sourceLineNo">440</span> }<a name="line.440"></a>
|
||||
<span class="sourceLineNo">441</span><a name="line.441"></a>
|
||||
<span class="sourceLineNo">442</span> /**<a name="line.442"></a>
|
||||
<span class="sourceLineNo">443</span> * Registers an instance of a class to be registered as an injectable dependency.<br><a name="line.443"></a>
|
||||
<span class="sourceLineNo">444</span> * The command manager will attempt to inject all fields in a command class that are annotated with<a name="line.444"></a>
|
||||
<span class="sourceLineNo">445</span> * {@link co.aikar.commands.annotation.Dependency} with the provided instance.<a name="line.445"></a>
|
||||
<span class="sourceLineNo">446</span> *<a name="line.446"></a>
|
||||
<span class="sourceLineNo">447</span> * @param clazz the class the injector should look for when injecting<a name="line.447"></a>
|
||||
<span class="sourceLineNo">448</span> * @param instance the instance of the class that should be injected<a name="line.448"></a>
|
||||
<span class="sourceLineNo">449</span> * @throws IllegalStateException when there is already an instance for the provided class registered<a name="line.449"></a>
|
||||
<span class="sourceLineNo">450</span> */<a name="line.450"></a>
|
||||
<span class="sourceLineNo">451</span> public <T> void registerDependency(Class<? extends T> clazz, T instance){<a name="line.451"></a>
|
||||
<span class="sourceLineNo">452</span> registerDependency(clazz, clazz.getName(), instance);<a name="line.452"></a>
|
||||
<span class="sourceLineNo">453</span> }<a name="line.453"></a>
|
||||
<span class="sourceLineNo">422</span> public void onLocaleChange(IssuerLocaleChangedCallback<I> onChange) {<a name="line.422"></a>
|
||||
<span class="sourceLineNo">423</span> localeChangedCallbacks.add(onChange);<a name="line.423"></a>
|
||||
<span class="sourceLineNo">424</span> }<a name="line.424"></a>
|
||||
<span class="sourceLineNo">425</span><a name="line.425"></a>
|
||||
<span class="sourceLineNo">426</span> public void notifyLocaleChange(I issuer, Locale oldLocale, Locale newLocale) {<a name="line.426"></a>
|
||||
<span class="sourceLineNo">427</span> localeChangedCallbacks.forEach(cb -> {<a name="line.427"></a>
|
||||
<span class="sourceLineNo">428</span> try {<a name="line.428"></a>
|
||||
<span class="sourceLineNo">429</span> cb.onIssuerLocaleChange(issuer, oldLocale, newLocale);<a name="line.429"></a>
|
||||
<span class="sourceLineNo">430</span> } catch (Exception e) {<a name="line.430"></a>
|
||||
<span class="sourceLineNo">431</span> this.log(LogLevel.ERROR, "Error in notifyLocaleChange", e);<a name="line.431"></a>
|
||||
<span class="sourceLineNo">432</span> }<a name="line.432"></a>
|
||||
<span class="sourceLineNo">433</span> });<a name="line.433"></a>
|
||||
<span class="sourceLineNo">434</span> }<a name="line.434"></a>
|
||||
<span class="sourceLineNo">435</span><a name="line.435"></a>
|
||||
<span class="sourceLineNo">436</span> public Locale setIssuerLocale(IT issuer, Locale locale) {<a name="line.436"></a>
|
||||
<span class="sourceLineNo">437</span> I commandIssuer = getCommandIssuer(issuer);<a name="line.437"></a>
|
||||
<span class="sourceLineNo">438</span><a name="line.438"></a>
|
||||
<span class="sourceLineNo">439</span> Locale old = issuersLocale.put(commandIssuer.getUniqueId(), locale);<a name="line.439"></a>
|
||||
<span class="sourceLineNo">440</span> if (!Objects.equals(old, locale)) {<a name="line.440"></a>
|
||||
<span class="sourceLineNo">441</span> this.notifyLocaleChange(commandIssuer, old, locale);<a name="line.441"></a>
|
||||
<span class="sourceLineNo">442</span> }<a name="line.442"></a>
|
||||
<span class="sourceLineNo">443</span><a name="line.443"></a>
|
||||
<span class="sourceLineNo">444</span> return old;<a name="line.444"></a>
|
||||
<span class="sourceLineNo">445</span> }<a name="line.445"></a>
|
||||
<span class="sourceLineNo">446</span><a name="line.446"></a>
|
||||
<span class="sourceLineNo">447</span> public Locale getIssuerLocale(CommandIssuer issuer) {<a name="line.447"></a>
|
||||
<span class="sourceLineNo">448</span> if (usingPerIssuerLocale() && issuer != null) {<a name="line.448"></a>
|
||||
<span class="sourceLineNo">449</span> Locale locale = issuersLocale.get(issuer.getUniqueId());<a name="line.449"></a>
|
||||
<span class="sourceLineNo">450</span> if (locale != null) {<a name="line.450"></a>
|
||||
<span class="sourceLineNo">451</span> return locale;<a name="line.451"></a>
|
||||
<span class="sourceLineNo">452</span> }<a name="line.452"></a>
|
||||
<span class="sourceLineNo">453</span> }<a name="line.453"></a>
|
||||
<span class="sourceLineNo">454</span><a name="line.454"></a>
|
||||
<span class="sourceLineNo">455</span> /**<a name="line.455"></a>
|
||||
<span class="sourceLineNo">456</span> * Registers an instance of a class to be registered as an injectable dependency.<br><a name="line.456"></a>
|
||||
<span class="sourceLineNo">457</span> * The command manager will attempt to inject all fields in a command class that are annotated with<a name="line.457"></a>
|
||||
<span class="sourceLineNo">458</span> * {@link co.aikar.commands.annotation.Dependency} with the provided instance.<a name="line.458"></a>
|
||||
<span class="sourceLineNo">459</span> *<a name="line.459"></a>
|
||||
<span class="sourceLineNo">460</span> * @param clazz the class the injector should look for when injecting<a name="line.460"></a>
|
||||
<span class="sourceLineNo">461</span> * @param key the key which needs to be present if that<a name="line.461"></a>
|
||||
<span class="sourceLineNo">462</span> * @param instance the instance of the class that should be injected<a name="line.462"></a>
|
||||
<span class="sourceLineNo">463</span> * @throws IllegalStateException when there is already an instance for the provided class registered<a name="line.463"></a>
|
||||
<span class="sourceLineNo">464</span> */<a name="line.464"></a>
|
||||
<span class="sourceLineNo">465</span> public <T> void registerDependency(Class<? extends T> clazz, String key, T instance){<a name="line.465"></a>
|
||||
<span class="sourceLineNo">466</span> if (dependencies.containsKey(clazz, key)) {<a name="line.466"></a>
|
||||
<span class="sourceLineNo">467</span> throw new IllegalStateException("There is already an instance of " + clazz.getName() + " with the key " + key + " registered!");<a name="line.467"></a>
|
||||
<span class="sourceLineNo">468</span> }<a name="line.468"></a>
|
||||
<span class="sourceLineNo">455</span> return getLocales().getDefaultLocale();<a name="line.455"></a>
|
||||
<span class="sourceLineNo">456</span> }<a name="line.456"></a>
|
||||
<span class="sourceLineNo">457</span><a name="line.457"></a>
|
||||
<span class="sourceLineNo">458</span> CommandOperationContext<I> createCommandOperationContext(BaseCommand command, CommandIssuer issuer, String commandLabel, String[] args, boolean isAsync) {<a name="line.458"></a>
|
||||
<span class="sourceLineNo">459</span> //noinspection unchecked<a name="line.459"></a>
|
||||
<span class="sourceLineNo">460</span> return new CommandOperationContext<>(<a name="line.460"></a>
|
||||
<span class="sourceLineNo">461</span> this,<a name="line.461"></a>
|
||||
<span class="sourceLineNo">462</span> (I) issuer,<a name="line.462"></a>
|
||||
<span class="sourceLineNo">463</span> command,<a name="line.463"></a>
|
||||
<span class="sourceLineNo">464</span> commandLabel,<a name="line.464"></a>
|
||||
<span class="sourceLineNo">465</span> args,<a name="line.465"></a>
|
||||
<span class="sourceLineNo">466</span> isAsync<a name="line.466"></a>
|
||||
<span class="sourceLineNo">467</span> );<a name="line.467"></a>
|
||||
<span class="sourceLineNo">468</span> }<a name="line.468"></a>
|
||||
<span class="sourceLineNo">469</span><a name="line.469"></a>
|
||||
<span class="sourceLineNo">470</span> dependencies.put(clazz, key, instance);<a name="line.470"></a>
|
||||
<span class="sourceLineNo">471</span> }<a name="line.471"></a>
|
||||
<span class="sourceLineNo">472</span><a name="line.472"></a>
|
||||
<span class="sourceLineNo">473</span> /**<a name="line.473"></a>
|
||||
<span class="sourceLineNo">474</span> * Attempts to inject instances of classes registered with {@link CommandManager#registerDependency(Class, Object)}<a name="line.474"></a>
|
||||
<span class="sourceLineNo">475</span> * into all fields of the class and its superclasses that are marked with {@link Dependency}.<a name="line.475"></a>
|
||||
<span class="sourceLineNo">476</span> *<a name="line.476"></a>
|
||||
<span class="sourceLineNo">477</span> * @param baseCommand the instance which fields should be filled<a name="line.477"></a>
|
||||
<span class="sourceLineNo">478</span> */<a name="line.478"></a>
|
||||
<span class="sourceLineNo">479</span> void injectDependencies(BaseCommand baseCommand) {<a name="line.479"></a>
|
||||
<span class="sourceLineNo">480</span> Class clazz = baseCommand.getClass();<a name="line.480"></a>
|
||||
<span class="sourceLineNo">481</span> do {<a name="line.481"></a>
|
||||
<span class="sourceLineNo">482</span> for (Field field : clazz.getDeclaredFields()) {<a name="line.482"></a>
|
||||
<span class="sourceLineNo">483</span> if (annotations.hasAnnotation(field, Dependency.class)) {<a name="line.483"></a>
|
||||
<span class="sourceLineNo">484</span> String dependency = annotations.getAnnotationValue(field, Dependency.class);<a name="line.484"></a>
|
||||
<span class="sourceLineNo">485</span> String key = (key = dependency).isEmpty() ? field.getType().getName() : key;<a name="line.485"></a>
|
||||
<span class="sourceLineNo">486</span> Object object = dependencies.row(field.getType()).get(key);<a name="line.486"></a>
|
||||
<span class="sourceLineNo">487</span> if (object == null) {<a name="line.487"></a>
|
||||
<span class="sourceLineNo">488</span> throw new UnresolvedDependencyException("Could not find a registered instance of " +<a name="line.488"></a>
|
||||
<span class="sourceLineNo">489</span> field.getType().getName() + " with key " + key + " for field " + field.getName() +<a name="line.489"></a>
|
||||
<span class="sourceLineNo">490</span> " in class " + baseCommand.getClass().getName());<a name="line.490"></a>
|
||||
<span class="sourceLineNo">491</span> }<a name="line.491"></a>
|
||||
<span class="sourceLineNo">492</span><a name="line.492"></a>
|
||||
<span class="sourceLineNo">493</span> try {<a name="line.493"></a>
|
||||
<span class="sourceLineNo">494</span> boolean accessible = field.isAccessible();<a name="line.494"></a>
|
||||
<span class="sourceLineNo">495</span> if (!accessible) {<a name="line.495"></a>
|
||||
<span class="sourceLineNo">496</span> field.setAccessible(true);<a name="line.496"></a>
|
||||
<span class="sourceLineNo">497</span> }<a name="line.497"></a>
|
||||
<span class="sourceLineNo">498</span> field.set(baseCommand, object);<a name="line.498"></a>
|
||||
<span class="sourceLineNo">499</span> field.setAccessible(accessible);<a name="line.499"></a>
|
||||
<span class="sourceLineNo">500</span> } catch (IllegalAccessException e) {<a name="line.500"></a>
|
||||
<span class="sourceLineNo">501</span> e.printStackTrace(); //TODO should we print our own exception here to make a more descriptive error?<a name="line.501"></a>
|
||||
<span class="sourceLineNo">502</span> }<a name="line.502"></a>
|
||||
<span class="sourceLineNo">503</span> }<a name="line.503"></a>
|
||||
<span class="sourceLineNo">504</span> }<a name="line.504"></a>
|
||||
<span class="sourceLineNo">505</span> clazz = clazz.getSuperclass();<a name="line.505"></a>
|
||||
<span class="sourceLineNo">506</span> } while (!clazz.equals(BaseCommand.class));<a name="line.506"></a>
|
||||
<span class="sourceLineNo">507</span> }<a name="line.507"></a>
|
||||
<span class="sourceLineNo">508</span><a name="line.508"></a>
|
||||
<span class="sourceLineNo">509</span> /**<a name="line.509"></a>
|
||||
<span class="sourceLineNo">510</span> * @deprecated Use this with caution! If you enable and use Unstable API's, your next compile using ACF<a name="line.510"></a>
|
||||
<span class="sourceLineNo">511</span> * may require you to update your implementation to those unstable API's<a name="line.511"></a>
|
||||
<span class="sourceLineNo">512</span> */<a name="line.512"></a>
|
||||
<span class="sourceLineNo">513</span> @Deprecated<a name="line.513"></a>
|
||||
<span class="sourceLineNo">514</span> public void enableUnstableAPI(String api) {<a name="line.514"></a>
|
||||
<span class="sourceLineNo">515</span> unstableAPIs.add(api);<a name="line.515"></a>
|
||||
<span class="sourceLineNo">516</span> }<a name="line.516"></a>
|
||||
<span class="sourceLineNo">517</span> void verifyUnstableAPI(String api) {<a name="line.517"></a>
|
||||
<span class="sourceLineNo">518</span> if (!unstableAPIs.contains(api)) {<a name="line.518"></a>
|
||||
<span class="sourceLineNo">519</span> throw new IllegalStateException("Using an unstable API that has not been enabled ( " + api + "). See https://acfunstable.emc.gs");<a name="line.519"></a>
|
||||
<span class="sourceLineNo">520</span> }<a name="line.520"></a>
|
||||
<span class="sourceLineNo">521</span> }<a name="line.521"></a>
|
||||
<span class="sourceLineNo">522</span><a name="line.522"></a>
|
||||
<span class="sourceLineNo">523</span> boolean hasUnstableAPI(String api) {<a name="line.523"></a>
|
||||
<span class="sourceLineNo">524</span> return unstableAPIs.contains(api);<a name="line.524"></a>
|
||||
<span class="sourceLineNo">525</span> }<a name="line.525"></a>
|
||||
<span class="sourceLineNo">526</span><a name="line.526"></a>
|
||||
<span class="sourceLineNo">527</span> Annotations getAnnotations() {<a name="line.527"></a>
|
||||
<span class="sourceLineNo">528</span> return annotations;<a name="line.528"></a>
|
||||
<span class="sourceLineNo">529</span> }<a name="line.529"></a>
|
||||
<span class="sourceLineNo">530</span><a name="line.530"></a>
|
||||
<span class="sourceLineNo">531</span> public String getCommandPrefix(CommandIssuer issuer) {<a name="line.531"></a>
|
||||
<span class="sourceLineNo">532</span> return "";<a name="line.532"></a>
|
||||
<span class="sourceLineNo">533</span> }<a name="line.533"></a>
|
||||
<span class="sourceLineNo">534</span>}<a name="line.534"></a>
|
||||
<span class="sourceLineNo">470</span> /**<a name="line.470"></a>
|
||||
<span class="sourceLineNo">471</span> * Gets a list of all currently supported languages for this manager.<a name="line.471"></a>
|
||||
<span class="sourceLineNo">472</span> * These locales will be automatically loaded from<a name="line.472"></a>
|
||||
<span class="sourceLineNo">473</span> *<a name="line.473"></a>
|
||||
<span class="sourceLineNo">474</span> * @return<a name="line.474"></a>
|
||||
<span class="sourceLineNo">475</span> */<a name="line.475"></a>
|
||||
<span class="sourceLineNo">476</span> public Set<Locale> getSupportedLanguages() {<a name="line.476"></a>
|
||||
<span class="sourceLineNo">477</span> return supportedLanguages;<a name="line.477"></a>
|
||||
<span class="sourceLineNo">478</span> }<a name="line.478"></a>
|
||||
<span class="sourceLineNo">479</span><a name="line.479"></a>
|
||||
<span class="sourceLineNo">480</span> /**<a name="line.480"></a>
|
||||
<span class="sourceLineNo">481</span> * Adds a new locale to the list of automatic Locales to load Message Bundles for.<a name="line.481"></a>
|
||||
<span class="sourceLineNo">482</span> * All bundles loaded under the previous supported languages will now automatically load for this new locale too.<a name="line.482"></a>
|
||||
<span class="sourceLineNo">483</span> *<a name="line.483"></a>
|
||||
<span class="sourceLineNo">484</span> * @param locale<a name="line.484"></a>
|
||||
<span class="sourceLineNo">485</span> */<a name="line.485"></a>
|
||||
<span class="sourceLineNo">486</span> public void addSupportedLanguage(Locale locale) {<a name="line.486"></a>
|
||||
<span class="sourceLineNo">487</span> supportedLanguages.add(locale);<a name="line.487"></a>
|
||||
<span class="sourceLineNo">488</span> getLocales().loadMissingBundles();<a name="line.488"></a>
|
||||
<span class="sourceLineNo">489</span> }<a name="line.489"></a>
|
||||
<span class="sourceLineNo">490</span><a name="line.490"></a>
|
||||
<span class="sourceLineNo">491</span> /**<a name="line.491"></a>
|
||||
<span class="sourceLineNo">492</span> * Registers an instance of a class to be registered as an injectable dependency.<br><a name="line.492"></a>
|
||||
<span class="sourceLineNo">493</span> * The command manager will attempt to inject all fields in a command class that are annotated with<a name="line.493"></a>
|
||||
<span class="sourceLineNo">494</span> * {@link co.aikar.commands.annotation.Dependency} with the provided instance.<a name="line.494"></a>
|
||||
<span class="sourceLineNo">495</span> *<a name="line.495"></a>
|
||||
<span class="sourceLineNo">496</span> * @param clazz the class the injector should look for when injecting<a name="line.496"></a>
|
||||
<span class="sourceLineNo">497</span> * @param instance the instance of the class that should be injected<a name="line.497"></a>
|
||||
<span class="sourceLineNo">498</span> * @throws IllegalStateException when there is already an instance for the provided class registered<a name="line.498"></a>
|
||||
<span class="sourceLineNo">499</span> */<a name="line.499"></a>
|
||||
<span class="sourceLineNo">500</span> public <T> void registerDependency(Class<? extends T> clazz, T instance) {<a name="line.500"></a>
|
||||
<span class="sourceLineNo">501</span> registerDependency(clazz, clazz.getName(), instance);<a name="line.501"></a>
|
||||
<span class="sourceLineNo">502</span> }<a name="line.502"></a>
|
||||
<span class="sourceLineNo">503</span><a name="line.503"></a>
|
||||
<span class="sourceLineNo">504</span> /**<a name="line.504"></a>
|
||||
<span class="sourceLineNo">505</span> * Registers an instance of a class to be registered as an injectable dependency.<br><a name="line.505"></a>
|
||||
<span class="sourceLineNo">506</span> * The command manager will attempt to inject all fields in a command class that are annotated with<a name="line.506"></a>
|
||||
<span class="sourceLineNo">507</span> * {@link co.aikar.commands.annotation.Dependency} with the provided instance.<a name="line.507"></a>
|
||||
<span class="sourceLineNo">508</span> *<a name="line.508"></a>
|
||||
<span class="sourceLineNo">509</span> * @param clazz the class the injector should look for when injecting<a name="line.509"></a>
|
||||
<span class="sourceLineNo">510</span> * @param key the key which needs to be present if that<a name="line.510"></a>
|
||||
<span class="sourceLineNo">511</span> * @param instance the instance of the class that should be injected<a name="line.511"></a>
|
||||
<span class="sourceLineNo">512</span> * @throws IllegalStateException when there is already an instance for the provided class registered<a name="line.512"></a>
|
||||
<span class="sourceLineNo">513</span> */<a name="line.513"></a>
|
||||
<span class="sourceLineNo">514</span> public <T> void registerDependency(Class<? extends T> clazz, String key, T instance) {<a name="line.514"></a>
|
||||
<span class="sourceLineNo">515</span> if (dependencies.containsKey(clazz, key)) {<a name="line.515"></a>
|
||||
<span class="sourceLineNo">516</span> throw new IllegalStateException("There is already an instance of " + clazz.getName() + " with the key " + key + " registered!");<a name="line.516"></a>
|
||||
<span class="sourceLineNo">517</span> }<a name="line.517"></a>
|
||||
<span class="sourceLineNo">518</span><a name="line.518"></a>
|
||||
<span class="sourceLineNo">519</span> dependencies.put(clazz, key, instance);<a name="line.519"></a>
|
||||
<span class="sourceLineNo">520</span> }<a name="line.520"></a>
|
||||
<span class="sourceLineNo">521</span><a name="line.521"></a>
|
||||
<span class="sourceLineNo">522</span> /**<a name="line.522"></a>
|
||||
<span class="sourceLineNo">523</span> * Attempts to inject instances of classes registered with {@link CommandManager#registerDependency(Class, Object)}<a name="line.523"></a>
|
||||
<span class="sourceLineNo">524</span> * into all fields of the class and its superclasses that are marked with {@link Dependency}.<a name="line.524"></a>
|
||||
<span class="sourceLineNo">525</span> *<a name="line.525"></a>
|
||||
<span class="sourceLineNo">526</span> * @param baseCommand the instance which fields should be filled<a name="line.526"></a>
|
||||
<span class="sourceLineNo">527</span> */<a name="line.527"></a>
|
||||
<span class="sourceLineNo">528</span> void injectDependencies(BaseCommand baseCommand) {<a name="line.528"></a>
|
||||
<span class="sourceLineNo">529</span> Class clazz = baseCommand.getClass();<a name="line.529"></a>
|
||||
<span class="sourceLineNo">530</span> do {<a name="line.530"></a>
|
||||
<span class="sourceLineNo">531</span> for (Field field : clazz.getDeclaredFields()) {<a name="line.531"></a>
|
||||
<span class="sourceLineNo">532</span> if (annotations.hasAnnotation(field, Dependency.class)) {<a name="line.532"></a>
|
||||
<span class="sourceLineNo">533</span> String dependency = annotations.getAnnotationValue(field, Dependency.class);<a name="line.533"></a>
|
||||
<span class="sourceLineNo">534</span> String key = (key = dependency).isEmpty() ? field.getType().getName() : key;<a name="line.534"></a>
|
||||
<span class="sourceLineNo">535</span> Object object = dependencies.row(field.getType()).get(key);<a name="line.535"></a>
|
||||
<span class="sourceLineNo">536</span> if (object == null) {<a name="line.536"></a>
|
||||
<span class="sourceLineNo">537</span> throw new UnresolvedDependencyException("Could not find a registered instance of " +<a name="line.537"></a>
|
||||
<span class="sourceLineNo">538</span> field.getType().getName() + " with key " + key + " for field " + field.getName() +<a name="line.538"></a>
|
||||
<span class="sourceLineNo">539</span> " in class " + baseCommand.getClass().getName());<a name="line.539"></a>
|
||||
<span class="sourceLineNo">540</span> }<a name="line.540"></a>
|
||||
<span class="sourceLineNo">541</span><a name="line.541"></a>
|
||||
<span class="sourceLineNo">542</span> try {<a name="line.542"></a>
|
||||
<span class="sourceLineNo">543</span> boolean accessible = field.isAccessible();<a name="line.543"></a>
|
||||
<span class="sourceLineNo">544</span> if (!accessible) {<a name="line.544"></a>
|
||||
<span class="sourceLineNo">545</span> field.setAccessible(true);<a name="line.545"></a>
|
||||
<span class="sourceLineNo">546</span> }<a name="line.546"></a>
|
||||
<span class="sourceLineNo">547</span> field.set(baseCommand, object);<a name="line.547"></a>
|
||||
<span class="sourceLineNo">548</span> field.setAccessible(accessible);<a name="line.548"></a>
|
||||
<span class="sourceLineNo">549</span> } catch (IllegalAccessException e) {<a name="line.549"></a>
|
||||
<span class="sourceLineNo">550</span> e.printStackTrace(); //TODO should we print our own exception here to make a more descriptive error?<a name="line.550"></a>
|
||||
<span class="sourceLineNo">551</span> }<a name="line.551"></a>
|
||||
<span class="sourceLineNo">552</span> }<a name="line.552"></a>
|
||||
<span class="sourceLineNo">553</span> }<a name="line.553"></a>
|
||||
<span class="sourceLineNo">554</span> clazz = clazz.getSuperclass();<a name="line.554"></a>
|
||||
<span class="sourceLineNo">555</span> } while (!clazz.equals(BaseCommand.class));<a name="line.555"></a>
|
||||
<span class="sourceLineNo">556</span> }<a name="line.556"></a>
|
||||
<span class="sourceLineNo">557</span><a name="line.557"></a>
|
||||
<span class="sourceLineNo">558</span> /**<a name="line.558"></a>
|
||||
<span class="sourceLineNo">559</span> * @deprecated Use this with caution! If you enable and use Unstable API's, your next compile using ACF<a name="line.559"></a>
|
||||
<span class="sourceLineNo">560</span> * may require you to update your implementation to those unstable API's<a name="line.560"></a>
|
||||
<span class="sourceLineNo">561</span> */<a name="line.561"></a>
|
||||
<span class="sourceLineNo">562</span> @Deprecated<a name="line.562"></a>
|
||||
<span class="sourceLineNo">563</span> public void enableUnstableAPI(String api) {<a name="line.563"></a>
|
||||
<span class="sourceLineNo">564</span> unstableAPIs.add(api);<a name="line.564"></a>
|
||||
<span class="sourceLineNo">565</span> }<a name="line.565"></a>
|
||||
<span class="sourceLineNo">566</span><a name="line.566"></a>
|
||||
<span class="sourceLineNo">567</span> void verifyUnstableAPI(String api) {<a name="line.567"></a>
|
||||
<span class="sourceLineNo">568</span> if (!unstableAPIs.contains(api)) {<a name="line.568"></a>
|
||||
<span class="sourceLineNo">569</span> throw new IllegalStateException("Using an unstable API that has not been enabled ( " + api + "). See https://acfunstable.emc.gs");<a name="line.569"></a>
|
||||
<span class="sourceLineNo">570</span> }<a name="line.570"></a>
|
||||
<span class="sourceLineNo">571</span> }<a name="line.571"></a>
|
||||
<span class="sourceLineNo">572</span><a name="line.572"></a>
|
||||
<span class="sourceLineNo">573</span> boolean hasUnstableAPI(String api) {<a name="line.573"></a>
|
||||
<span class="sourceLineNo">574</span> return unstableAPIs.contains(api);<a name="line.574"></a>
|
||||
<span class="sourceLineNo">575</span> }<a name="line.575"></a>
|
||||
<span class="sourceLineNo">576</span><a name="line.576"></a>
|
||||
<span class="sourceLineNo">577</span> Annotations getAnnotations() {<a name="line.577"></a>
|
||||
<span class="sourceLineNo">578</span> return annotations;<a name="line.578"></a>
|
||||
<span class="sourceLineNo">579</span> }<a name="line.579"></a>
|
||||
<span class="sourceLineNo">580</span><a name="line.580"></a>
|
||||
<span class="sourceLineNo">581</span> public String getCommandPrefix(CommandIssuer issuer) {<a name="line.581"></a>
|
||||
<span class="sourceLineNo">582</span> return "";<a name="line.582"></a>
|
||||
<span class="sourceLineNo">583</span> }<a name="line.583"></a>
|
||||
<span class="sourceLineNo">584</span>}<a name="line.584"></a>
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -32,83 +32,86 @@
|
||||
<span class="sourceLineNo">024</span>package co.aikar.commands;<a name="line.24"></a>
|
||||
<span class="sourceLineNo">025</span><a name="line.25"></a>
|
||||
<span class="sourceLineNo">026</span>import java.lang.annotation.Annotation;<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> * Holds information about the currently executing command on this thread<a name="line.29"></a>
|
||||
<span class="sourceLineNo">030</span> */<a name="line.30"></a>
|
||||
<span class="sourceLineNo">031</span>public class CommandOperationContext <I extends CommandIssuer> {<a name="line.31"></a>
|
||||
<span class="sourceLineNo">032</span><a name="line.32"></a>
|
||||
<span class="sourceLineNo">033</span> private final CommandManager manager;<a name="line.33"></a>
|
||||
<span class="sourceLineNo">034</span> private final I issuer;<a name="line.34"></a>
|
||||
<span class="sourceLineNo">035</span> private final BaseCommand command;<a name="line.35"></a>
|
||||
<span class="sourceLineNo">036</span> private final String commandLabel;<a name="line.36"></a>
|
||||
<span class="sourceLineNo">037</span> private final String[] args;<a name="line.37"></a>
|
||||
<span class="sourceLineNo">038</span> private final boolean isAsync;<a name="line.38"></a>
|
||||
<span class="sourceLineNo">039</span> private RegisteredCommand registeredCommand;<a name="line.39"></a>
|
||||
<span class="sourceLineNo">040</span><a name="line.40"></a>
|
||||
<span class="sourceLineNo">041</span> CommandOperationContext(CommandManager manager, I issuer, BaseCommand command, String commandLabel, String[] args, boolean isAsync) {<a name="line.41"></a>
|
||||
<span class="sourceLineNo">042</span> this.manager = manager;<a name="line.42"></a>
|
||||
<span class="sourceLineNo">043</span> this.issuer = issuer;<a name="line.43"></a>
|
||||
<span class="sourceLineNo">044</span> this.command = command;<a name="line.44"></a>
|
||||
<span class="sourceLineNo">045</span> this.commandLabel = commandLabel;<a name="line.45"></a>
|
||||
<span class="sourceLineNo">046</span> this.args = args;<a name="line.46"></a>
|
||||
<span class="sourceLineNo">047</span> this.isAsync = isAsync;<a name="line.47"></a>
|
||||
<span class="sourceLineNo">048</span> }<a name="line.48"></a>
|
||||
<span class="sourceLineNo">049</span><a name="line.49"></a>
|
||||
<span class="sourceLineNo">050</span> public CommandManager getCommandManager() {<a name="line.50"></a>
|
||||
<span class="sourceLineNo">051</span> return manager;<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 I getCommandIssuer() {<a name="line.54"></a>
|
||||
<span class="sourceLineNo">055</span> return issuer;<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 BaseCommand getCommand() {<a name="line.58"></a>
|
||||
<span class="sourceLineNo">059</span> return command;<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 String getCommandLabel() {<a name="line.62"></a>
|
||||
<span class="sourceLineNo">063</span> return commandLabel;<a name="line.63"></a>
|
||||
<span class="sourceLineNo">064</span> }<a name="line.64"></a>
|
||||
<span class="sourceLineNo">065</span><a name="line.65"></a>
|
||||
<span class="sourceLineNo">066</span> public String[] getArgs() {<a name="line.66"></a>
|
||||
<span class="sourceLineNo">067</span> return args;<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 boolean isAsync() {<a name="line.70"></a>
|
||||
<span class="sourceLineNo">071</span> return isAsync;<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 void setRegisteredCommand(RegisteredCommand registeredCommand) {<a name="line.74"></a>
|
||||
<span class="sourceLineNo">075</span> this.registeredCommand = registeredCommand;<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 RegisteredCommand getRegisteredCommand() {<a name="line.78"></a>
|
||||
<span class="sourceLineNo">079</span> return registeredCommand;<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>
|
||||
<span class="sourceLineNo">082</span> /**<a name="line.82"></a>
|
||||
<span class="sourceLineNo">083</span> * This method will not support annotation processors!! use getAnnotationValue or hasAnnotation<a name="line.83"></a>
|
||||
<span class="sourceLineNo">084</span> * @deprecated Use {@link #getAnnotationValue(Class)}<a name="line.84"></a>
|
||||
<span class="sourceLineNo">085</span> */<a name="line.85"></a>
|
||||
<span class="sourceLineNo">086</span> @Deprecated<a name="line.86"></a>
|
||||
<span class="sourceLineNo">087</span> public <T extends Annotation> T getAnnotation(Class<T> anno) {<a name="line.87"></a>
|
||||
<span class="sourceLineNo">088</span> return registeredCommand.method.getAnnotation(anno);<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 <T extends Annotation> String getAnnotationValue(Class<T> cls) {<a name="line.91"></a>
|
||||
<span class="sourceLineNo">092</span> return manager.getAnnotations().getAnnotationValue(registeredCommand.method, cls);<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 <T extends Annotation> String getAnnotationValue(Class<T> cls, int options) {<a name="line.95"></a>
|
||||
<span class="sourceLineNo">096</span> return manager.getAnnotations().getAnnotationValue(registeredCommand.method, cls, options);<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 boolean hasAnnotation(Class<? extends Annotation> anno) {<a name="line.99"></a>
|
||||
<span class="sourceLineNo">100</span> return getAnnotation(anno) != null;<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">027</span>import java.util.List;<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> * Holds information about the currently executing command on this thread<a name="line.30"></a>
|
||||
<span class="sourceLineNo">031</span> */<a name="line.31"></a>
|
||||
<span class="sourceLineNo">032</span>public class CommandOperationContext<I extends CommandIssuer> {<a name="line.32"></a>
|
||||
<span class="sourceLineNo">033</span><a name="line.33"></a>
|
||||
<span class="sourceLineNo">034</span> private final CommandManager manager;<a name="line.34"></a>
|
||||
<span class="sourceLineNo">035</span> private final I issuer;<a name="line.35"></a>
|
||||
<span class="sourceLineNo">036</span> private final BaseCommand command;<a name="line.36"></a>
|
||||
<span class="sourceLineNo">037</span> private final String commandLabel;<a name="line.37"></a>
|
||||
<span class="sourceLineNo">038</span> private final String[] args;<a name="line.38"></a>
|
||||
<span class="sourceLineNo">039</span> private final boolean isAsync;<a name="line.39"></a>
|
||||
<span class="sourceLineNo">040</span> private RegisteredCommand registeredCommand;<a name="line.40"></a>
|
||||
<span class="sourceLineNo">041</span> List<String> enumCompletionValues;<a name="line.41"></a>
|
||||
<span class="sourceLineNo">042</span><a name="line.42"></a>
|
||||
<span class="sourceLineNo">043</span> CommandOperationContext(CommandManager manager, I issuer, BaseCommand command, String commandLabel, String[] args, boolean isAsync) {<a name="line.43"></a>
|
||||
<span class="sourceLineNo">044</span> this.manager = manager;<a name="line.44"></a>
|
||||
<span class="sourceLineNo">045</span> this.issuer = issuer;<a name="line.45"></a>
|
||||
<span class="sourceLineNo">046</span> this.command = command;<a name="line.46"></a>
|
||||
<span class="sourceLineNo">047</span> this.commandLabel = commandLabel;<a name="line.47"></a>
|
||||
<span class="sourceLineNo">048</span> this.args = args;<a name="line.48"></a>
|
||||
<span class="sourceLineNo">049</span> this.isAsync = isAsync;<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> public CommandManager getCommandManager() {<a name="line.52"></a>
|
||||
<span class="sourceLineNo">053</span> return manager;<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> public I getCommandIssuer() {<a name="line.56"></a>
|
||||
<span class="sourceLineNo">057</span> return issuer;<a name="line.57"></a>
|
||||
<span class="sourceLineNo">058</span> }<a name="line.58"></a>
|
||||
<span class="sourceLineNo">059</span><a name="line.59"></a>
|
||||
<span class="sourceLineNo">060</span> public BaseCommand getCommand() {<a name="line.60"></a>
|
||||
<span class="sourceLineNo">061</span> return command;<a name="line.61"></a>
|
||||
<span class="sourceLineNo">062</span> }<a name="line.62"></a>
|
||||
<span class="sourceLineNo">063</span><a name="line.63"></a>
|
||||
<span class="sourceLineNo">064</span> public String getCommandLabel() {<a name="line.64"></a>
|
||||
<span class="sourceLineNo">065</span> return commandLabel;<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> public String[] getArgs() {<a name="line.68"></a>
|
||||
<span class="sourceLineNo">069</span> return args;<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> public boolean isAsync() {<a name="line.72"></a>
|
||||
<span class="sourceLineNo">073</span> return isAsync;<a name="line.73"></a>
|
||||
<span class="sourceLineNo">074</span> }<a name="line.74"></a>
|
||||
<span class="sourceLineNo">075</span><a name="line.75"></a>
|
||||
<span class="sourceLineNo">076</span> public void setRegisteredCommand(RegisteredCommand registeredCommand) {<a name="line.76"></a>
|
||||
<span class="sourceLineNo">077</span> this.registeredCommand = registeredCommand;<a name="line.77"></a>
|
||||
<span class="sourceLineNo">078</span> }<a name="line.78"></a>
|
||||
<span class="sourceLineNo">079</span><a name="line.79"></a>
|
||||
<span class="sourceLineNo">080</span> public RegisteredCommand getRegisteredCommand() {<a name="line.80"></a>
|
||||
<span class="sourceLineNo">081</span> return registeredCommand;<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> /**<a name="line.84"></a>
|
||||
<span class="sourceLineNo">085</span> * This method will not support annotation processors!! use getAnnotationValue or hasAnnotation<a name="line.85"></a>
|
||||
<span class="sourceLineNo">086</span> *<a name="line.86"></a>
|
||||
<span class="sourceLineNo">087</span> * @deprecated Use {@link #getAnnotationValue(Class)}<a name="line.87"></a>
|
||||
<span class="sourceLineNo">088</span> */<a name="line.88"></a>
|
||||
<span class="sourceLineNo">089</span> @Deprecated<a name="line.89"></a>
|
||||
<span class="sourceLineNo">090</span> public <T extends Annotation> T getAnnotation(Class<T> anno) {<a name="line.90"></a>
|
||||
<span class="sourceLineNo">091</span> return registeredCommand.method.getAnnotation(anno);<a name="line.91"></a>
|
||||
<span class="sourceLineNo">092</span> }<a name="line.92"></a>
|
||||
<span class="sourceLineNo">093</span><a name="line.93"></a>
|
||||
<span class="sourceLineNo">094</span> public <T extends Annotation> String getAnnotationValue(Class<T> cls) {<a name="line.94"></a>
|
||||
<span class="sourceLineNo">095</span> return manager.getAnnotations().getAnnotationValue(registeredCommand.method, cls);<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> public <T extends Annotation> String getAnnotationValue(Class<T> cls, int options) {<a name="line.98"></a>
|
||||
<span class="sourceLineNo">099</span> return manager.getAnnotations().getAnnotationValue(registeredCommand.method, cls, options);<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> public boolean hasAnnotation(Class<? extends Annotation> anno) {<a name="line.102"></a>
|
||||
<span class="sourceLineNo">103</span> return getAnnotation(anno) != null;<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>}<a name="line.106"></a>
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -31,240 +31,259 @@
|
||||
<span class="sourceLineNo">023</span><a name="line.23"></a>
|
||||
<span class="sourceLineNo">024</span>package co.aikar.commands;<a name="line.24"></a>
|
||||
<span class="sourceLineNo">025</span><a name="line.25"></a>
|
||||
<span class="sourceLineNo">026</span>import co.aikar.commands.annotation.Conditions;<a name="line.26"></a>
|
||||
<span class="sourceLineNo">027</span>import co.aikar.commands.annotation.Default;<a name="line.27"></a>
|
||||
<span class="sourceLineNo">028</span>import co.aikar.commands.annotation.Description;<a name="line.28"></a>
|
||||
<span class="sourceLineNo">029</span>import co.aikar.commands.annotation.Flags;<a name="line.29"></a>
|
||||
<span class="sourceLineNo">030</span>import co.aikar.commands.annotation.Optional;<a name="line.30"></a>
|
||||
<span class="sourceLineNo">031</span>import co.aikar.commands.annotation.Single;<a name="line.31"></a>
|
||||
<span class="sourceLineNo">032</span>import co.aikar.commands.annotation.Syntax;<a name="line.32"></a>
|
||||
<span class="sourceLineNo">033</span>import co.aikar.commands.annotation.Values;<a name="line.33"></a>
|
||||
<span class="sourceLineNo">034</span>import co.aikar.commands.contexts.ContextResolver;<a name="line.34"></a>
|
||||
<span class="sourceLineNo">035</span>import co.aikar.commands.contexts.IssuerAwareContextResolver;<a name="line.35"></a>
|
||||
<span class="sourceLineNo">036</span>import co.aikar.commands.contexts.IssuerOnlyContextResolver;<a name="line.36"></a>
|
||||
<span class="sourceLineNo">037</span>import co.aikar.commands.contexts.OptionalContextResolver;<a name="line.37"></a>
|
||||
<span class="sourceLineNo">038</span><a name="line.38"></a>
|
||||
<span class="sourceLineNo">039</span>import java.lang.reflect.Parameter;<a name="line.39"></a>
|
||||
<span class="sourceLineNo">040</span>import java.util.HashMap;<a name="line.40"></a>
|
||||
<span class="sourceLineNo">041</span>import java.util.Map;<a name="line.41"></a>
|
||||
<span class="sourceLineNo">042</span><a name="line.42"></a>
|
||||
<span class="sourceLineNo">043</span>public class CommandParameter <CEC extends CommandExecutionContext<CEC, ? extends CommandIssuer>> {<a name="line.43"></a>
|
||||
<span class="sourceLineNo">044</span> private final Parameter parameter;<a name="line.44"></a>
|
||||
<span class="sourceLineNo">045</span> private final Class<?> type;<a name="line.45"></a>
|
||||
<span class="sourceLineNo">046</span> private final String name;<a name="line.46"></a>
|
||||
<span class="sourceLineNo">047</span> private final CommandManager manager;<a name="line.47"></a>
|
||||
<span class="sourceLineNo">048</span> private final int paramIndex;<a name="line.48"></a>
|
||||
<span class="sourceLineNo">049</span><a name="line.49"></a>
|
||||
<span class="sourceLineNo">050</span> private ContextResolver<?, CEC> resolver;<a name="line.50"></a>
|
||||
<span class="sourceLineNo">051</span> private boolean optional;<a name="line.51"></a>
|
||||
<span class="sourceLineNo">052</span> private String description;<a name="line.52"></a>
|
||||
<span class="sourceLineNo">053</span> private String defaultValue;<a name="line.53"></a>
|
||||
<span class="sourceLineNo">054</span> private String syntax;<a name="line.54"></a>
|
||||
<span class="sourceLineNo">055</span> private String conditions;<a name="line.55"></a>
|
||||
<span class="sourceLineNo">056</span> private boolean requiresInput;<a name="line.56"></a>
|
||||
<span class="sourceLineNo">057</span> private boolean commandIssuer;<a name="line.57"></a>
|
||||
<span class="sourceLineNo">058</span> private String[] values;<a name="line.58"></a>
|
||||
<span class="sourceLineNo">059</span> private Map<String, String> flags;<a name="line.59"></a>
|
||||
<span class="sourceLineNo">060</span> private boolean canConsumeInput;<a name="line.60"></a>
|
||||
<span class="sourceLineNo">061</span> private boolean optionalResolver;<a name="line.61"></a>
|
||||
<span class="sourceLineNo">062</span> boolean consumesRest;<a name="line.62"></a>
|
||||
<span class="sourceLineNo">063</span><a name="line.63"></a>
|
||||
<span class="sourceLineNo">064</span> public CommandParameter(RegisteredCommand<CEC> command, Parameter param, int paramIndex, boolean isLast) {<a name="line.64"></a>
|
||||
<span class="sourceLineNo">065</span> this.parameter = param;<a name="line.65"></a>
|
||||
<span class="sourceLineNo">066</span> this.type = param.getType();<a name="line.66"></a>
|
||||
<span class="sourceLineNo">067</span> this.name = param.getName(); // do we care for an annotation to supply name?<a name="line.67"></a>
|
||||
<span class="sourceLineNo">068</span> this.manager = command.manager;<a name="line.68"></a>
|
||||
<span class="sourceLineNo">069</span> this.paramIndex = paramIndex;<a name="line.69"></a>
|
||||
<span class="sourceLineNo">070</span> Annotations annotations = manager.getAnnotations();<a name="line.70"></a>
|
||||
<span class="sourceLineNo">071</span><a name="line.71"></a>
|
||||
<span class="sourceLineNo">072</span> this.defaultValue = annotations.getAnnotationValue(param, Default.class, Annotations.REPLACEMENTS | (type != String.class ? Annotations.NO_EMPTY : 0));<a name="line.72"></a>
|
||||
<span class="sourceLineNo">073</span> this.description = annotations.getAnnotationValue(param, Description.class, Annotations.REPLACEMENTS | Annotations.DEFAULT_EMPTY);<a name="line.73"></a>
|
||||
<span class="sourceLineNo">074</span> this.conditions = annotations.getAnnotationValue(param, Conditions.class, Annotations.REPLACEMENTS | Annotations.NO_EMPTY);<a name="line.74"></a>
|
||||
<span class="sourceLineNo">075</span><a name="line.75"></a>
|
||||
<span class="sourceLineNo">076</span> //noinspection unchecked<a name="line.76"></a>
|
||||
<span class="sourceLineNo">077</span> this.resolver = manager.getCommandContexts().getResolver(type);<a name="line.77"></a>
|
||||
<span class="sourceLineNo">078</span> if (this.resolver == null) {<a name="line.78"></a>
|
||||
<span class="sourceLineNo">079</span> ACFUtil.sneaky(new InvalidCommandContextException(<a name="line.79"></a>
|
||||
<span class="sourceLineNo">080</span> "Parameter " + type.getSimpleName() + " of " + command + " has no applicable context resolver"<a name="line.80"></a>
|
||||
<span class="sourceLineNo">081</span> ));<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> this.optional = annotations.hasAnnotation(param, Optional.class) || this.defaultValue != null || (isLast && type == String[].class);<a name="line.84"></a>
|
||||
<span class="sourceLineNo">085</span> this.optionalResolver = isOptionalResolver(resolver);<a name="line.85"></a>
|
||||
<span class="sourceLineNo">086</span> this.requiresInput = !this.optional && !this.optionalResolver;<a name="line.86"></a>
|
||||
<span class="sourceLineNo">087</span> //noinspection unchecked<a name="line.87"></a>
|
||||
<span class="sourceLineNo">088</span> this.commandIssuer = paramIndex == 0 && manager.isCommandIssuer(type);<a name="line.88"></a>
|
||||
<span class="sourceLineNo">089</span> this.canConsumeInput = !this.commandIssuer && !(resolver instanceof IssuerOnlyContextResolver);<a name="line.89"></a>
|
||||
<span class="sourceLineNo">090</span> this.consumesRest = (type == String.class && !annotations.hasAnnotation(param, Single.class)) || (isLast && type == String[].class);<a name="line.90"></a>
|
||||
<span class="sourceLineNo">091</span><a name="line.91"></a>
|
||||
<span class="sourceLineNo">092</span> this.values = annotations.getAnnotationValues(param, Values.class, Annotations.REPLACEMENTS | Annotations.NO_EMPTY);<a name="line.92"></a>
|
||||
<span class="sourceLineNo">093</span><a name="line.93"></a>
|
||||
<span class="sourceLineNo">094</span> this.syntax = null;<a name="line.94"></a>
|
||||
<span class="sourceLineNo">095</span> if (!commandIssuer) {<a name="line.95"></a>
|
||||
<span class="sourceLineNo">096</span> this.syntax = annotations.getAnnotationValue(param, Syntax.class);<a name="line.96"></a>
|
||||
<span class="sourceLineNo">097</span> if (syntax == null) {<a name="line.97"></a>
|
||||
<span class="sourceLineNo">098</span> if (!requiresInput && canConsumeInput) {<a name="line.98"></a>
|
||||
<span class="sourceLineNo">099</span> this.syntax = "[" + name + "]";<a name="line.99"></a>
|
||||
<span class="sourceLineNo">100</span> } else if (requiresInput) {<a name="line.100"></a>
|
||||
<span class="sourceLineNo">101</span> this.syntax = "<" + name + ">";<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><a name="line.105"></a>
|
||||
<span class="sourceLineNo">106</span> this.flags = new HashMap<>();<a name="line.106"></a>
|
||||
<span class="sourceLineNo">107</span> String flags = annotations.getAnnotationValue(param, Flags.class, Annotations.REPLACEMENTS | Annotations.NO_EMPTY);<a name="line.107"></a>
|
||||
<span class="sourceLineNo">108</span> if (flags != null) {<a name="line.108"></a>
|
||||
<span class="sourceLineNo">109</span> parseFlags(flags);<a name="line.109"></a>
|
||||
<span class="sourceLineNo">110</span> }<a name="line.110"></a>
|
||||
<span class="sourceLineNo">111</span> inheritContextFlags(command.scope);<a name="line.111"></a>
|
||||
<span class="sourceLineNo">112</span> }<a name="line.112"></a>
|
||||
<span class="sourceLineNo">113</span><a name="line.113"></a>
|
||||
<span class="sourceLineNo">114</span> private void inheritContextFlags(BaseCommand scope) {<a name="line.114"></a>
|
||||
<span class="sourceLineNo">115</span> if (!scope.contextFlags.isEmpty()) {<a name="line.115"></a>
|
||||
<span class="sourceLineNo">116</span> Class<?> pCls = this.type;<a name="line.116"></a>
|
||||
<span class="sourceLineNo">117</span> do {<a name="line.117"></a>
|
||||
<span class="sourceLineNo">118</span> parseFlags(scope.contextFlags.get(pCls));<a name="line.118"></a>
|
||||
<span class="sourceLineNo">119</span> } while ((pCls = pCls.getSuperclass()) != null);<a name="line.119"></a>
|
||||
<span class="sourceLineNo">120</span> }<a name="line.120"></a>
|
||||
<span class="sourceLineNo">121</span> if (scope.parentCommand != null) {<a name="line.121"></a>
|
||||
<span class="sourceLineNo">122</span> inheritContextFlags(scope.parentCommand);<a name="line.122"></a>
|
||||
<span class="sourceLineNo">123</span> }<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> private void parseFlags(String flags) {<a name="line.126"></a>
|
||||
<span class="sourceLineNo">127</span> if (flags != null) {<a name="line.127"></a>
|
||||
<span class="sourceLineNo">128</span> for (String s : ACFPatterns.COMMA.split(manager.getCommandReplacements().replace(flags))) {<a name="line.128"></a>
|
||||
<span class="sourceLineNo">129</span> String[] v = ACFPatterns.EQUALS.split(s, 2);<a name="line.129"></a>
|
||||
<span class="sourceLineNo">130</span> if (!this.flags.containsKey(v[0])) {<a name="line.130"></a>
|
||||
<span class="sourceLineNo">131</span> this.flags.put(v[0], v.length > 1 ? v[1] : null);<a name="line.131"></a>
|
||||
<span class="sourceLineNo">132</span> }<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> }<a name="line.135"></a>
|
||||
<span class="sourceLineNo">136</span><a name="line.136"></a>
|
||||
<span class="sourceLineNo">137</span> private boolean isOptionalResolver(ContextResolver<?, CEC> resolver) {<a name="line.137"></a>
|
||||
<span class="sourceLineNo">138</span> return resolver instanceof IssuerAwareContextResolver<a name="line.138"></a>
|
||||
<span class="sourceLineNo">139</span> || resolver instanceof IssuerOnlyContextResolver<a name="line.139"></a>
|
||||
<span class="sourceLineNo">140</span> || resolver instanceof OptionalContextResolver;<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><a name="line.143"></a>
|
||||
<span class="sourceLineNo">144</span> public Parameter getParameter() {<a name="line.144"></a>
|
||||
<span class="sourceLineNo">145</span> return parameter;<a name="line.145"></a>
|
||||
<span class="sourceLineNo">146</span> }<a name="line.146"></a>
|
||||
<span class="sourceLineNo">147</span><a name="line.147"></a>
|
||||
<span class="sourceLineNo">148</span> public Class<?> getType() {<a name="line.148"></a>
|
||||
<span class="sourceLineNo">149</span> return type;<a name="line.149"></a>
|
||||
<span class="sourceLineNo">026</span>import co.aikar.commands.annotation.CommandPermission;<a name="line.26"></a>
|
||||
<span class="sourceLineNo">027</span>import co.aikar.commands.annotation.Conditions;<a name="line.27"></a>
|
||||
<span class="sourceLineNo">028</span>import co.aikar.commands.annotation.Default;<a name="line.28"></a>
|
||||
<span class="sourceLineNo">029</span>import co.aikar.commands.annotation.Description;<a name="line.29"></a>
|
||||
<span class="sourceLineNo">030</span>import co.aikar.commands.annotation.Flags;<a name="line.30"></a>
|
||||
<span class="sourceLineNo">031</span>import co.aikar.commands.annotation.Optional;<a name="line.31"></a>
|
||||
<span class="sourceLineNo">032</span>import co.aikar.commands.annotation.Single;<a name="line.32"></a>
|
||||
<span class="sourceLineNo">033</span>import co.aikar.commands.annotation.Syntax;<a name="line.33"></a>
|
||||
<span class="sourceLineNo">034</span>import co.aikar.commands.annotation.Values;<a name="line.34"></a>
|
||||
<span class="sourceLineNo">035</span>import co.aikar.commands.contexts.ContextResolver;<a name="line.35"></a>
|
||||
<span class="sourceLineNo">036</span>import co.aikar.commands.contexts.IssuerAwareContextResolver;<a name="line.36"></a>
|
||||
<span class="sourceLineNo">037</span>import co.aikar.commands.contexts.IssuerOnlyContextResolver;<a name="line.37"></a>
|
||||
<span class="sourceLineNo">038</span>import co.aikar.commands.contexts.OptionalContextResolver;<a name="line.38"></a>
|
||||
<span class="sourceLineNo">039</span><a name="line.39"></a>
|
||||
<span class="sourceLineNo">040</span>import java.lang.reflect.Parameter;<a name="line.40"></a>
|
||||
<span class="sourceLineNo">041</span>import java.util.Arrays;<a name="line.41"></a>
|
||||
<span class="sourceLineNo">042</span>import java.util.HashMap;<a name="line.42"></a>
|
||||
<span class="sourceLineNo">043</span>import java.util.HashSet;<a name="line.43"></a>
|
||||
<span class="sourceLineNo">044</span>import java.util.Map;<a name="line.44"></a>
|
||||
<span class="sourceLineNo">045</span>import java.util.Set;<a name="line.45"></a>
|
||||
<span class="sourceLineNo">046</span><a name="line.46"></a>
|
||||
<span class="sourceLineNo">047</span>public class CommandParameter<CEC extends CommandExecutionContext<CEC, ? extends CommandIssuer>> {<a name="line.47"></a>
|
||||
<span class="sourceLineNo">048</span> private final Parameter parameter;<a name="line.48"></a>
|
||||
<span class="sourceLineNo">049</span> private final Class<?> type;<a name="line.49"></a>
|
||||
<span class="sourceLineNo">050</span> private final String name;<a name="line.50"></a>
|
||||
<span class="sourceLineNo">051</span> private final CommandManager manager;<a name="line.51"></a>
|
||||
<span class="sourceLineNo">052</span> private final int paramIndex;<a name="line.52"></a>
|
||||
<span class="sourceLineNo">053</span><a name="line.53"></a>
|
||||
<span class="sourceLineNo">054</span> private ContextResolver<?, CEC> resolver;<a name="line.54"></a>
|
||||
<span class="sourceLineNo">055</span> private boolean optional;<a name="line.55"></a>
|
||||
<span class="sourceLineNo">056</span> private Set<String> permissions = new HashSet<>();<a name="line.56"></a>
|
||||
<span class="sourceLineNo">057</span> private String permission;<a name="line.57"></a>
|
||||
<span class="sourceLineNo">058</span> private String description;<a name="line.58"></a>
|
||||
<span class="sourceLineNo">059</span> private String defaultValue;<a name="line.59"></a>
|
||||
<span class="sourceLineNo">060</span> private String syntax;<a name="line.60"></a>
|
||||
<span class="sourceLineNo">061</span> private String conditions;<a name="line.61"></a>
|
||||
<span class="sourceLineNo">062</span> private boolean requiresInput;<a name="line.62"></a>
|
||||
<span class="sourceLineNo">063</span> private boolean commandIssuer;<a name="line.63"></a>
|
||||
<span class="sourceLineNo">064</span> private String[] values;<a name="line.64"></a>
|
||||
<span class="sourceLineNo">065</span> private Map<String, String> flags;<a name="line.65"></a>
|
||||
<span class="sourceLineNo">066</span> private boolean canConsumeInput;<a name="line.66"></a>
|
||||
<span class="sourceLineNo">067</span> private boolean optionalResolver;<a name="line.67"></a>
|
||||
<span class="sourceLineNo">068</span> boolean consumesRest;<a name="line.68"></a>
|
||||
<span class="sourceLineNo">069</span><a name="line.69"></a>
|
||||
<span class="sourceLineNo">070</span> public CommandParameter(RegisteredCommand<CEC> command, Parameter param, int paramIndex, boolean isLast) {<a name="line.70"></a>
|
||||
<span class="sourceLineNo">071</span> this.parameter = param;<a name="line.71"></a>
|
||||
<span class="sourceLineNo">072</span> this.type = param.getType();<a name="line.72"></a>
|
||||
<span class="sourceLineNo">073</span> this.name = param.getName(); // do we care for an annotation to supply name?<a name="line.73"></a>
|
||||
<span class="sourceLineNo">074</span> this.manager = command.manager;<a name="line.74"></a>
|
||||
<span class="sourceLineNo">075</span> this.paramIndex = paramIndex;<a name="line.75"></a>
|
||||
<span class="sourceLineNo">076</span> Annotations annotations = manager.getAnnotations();<a name="line.76"></a>
|
||||
<span class="sourceLineNo">077</span><a name="line.77"></a>
|
||||
<span class="sourceLineNo">078</span> this.defaultValue = annotations.getAnnotationValue(param, Default.class, Annotations.REPLACEMENTS | (type != String.class ? Annotations.NO_EMPTY : 0));<a name="line.78"></a>
|
||||
<span class="sourceLineNo">079</span> this.description = annotations.getAnnotationValue(param, Description.class, Annotations.REPLACEMENTS | Annotations.DEFAULT_EMPTY);<a name="line.79"></a>
|
||||
<span class="sourceLineNo">080</span> this.conditions = annotations.getAnnotationValue(param, Conditions.class, Annotations.REPLACEMENTS | Annotations.NO_EMPTY);<a name="line.80"></a>
|
||||
<span class="sourceLineNo">081</span><a name="line.81"></a>
|
||||
<span class="sourceLineNo">082</span> //noinspection unchecked<a name="line.82"></a>
|
||||
<span class="sourceLineNo">083</span> this.resolver = manager.getCommandContexts().getResolver(type);<a name="line.83"></a>
|
||||
<span class="sourceLineNo">084</span> if (this.resolver == null) {<a name="line.84"></a>
|
||||
<span class="sourceLineNo">085</span> ACFUtil.sneaky(new InvalidCommandContextException(<a name="line.85"></a>
|
||||
<span class="sourceLineNo">086</span> "Parameter " + type.getSimpleName() + " of " + command + " has no applicable context resolver"<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><a name="line.89"></a>
|
||||
<span class="sourceLineNo">090</span> this.optional = annotations.hasAnnotation(param, Optional.class) || this.defaultValue != null || (isLast && type == String[].class);<a name="line.90"></a>
|
||||
<span class="sourceLineNo">091</span> this.permission = annotations.getAnnotationValue(param, CommandPermission.class, Annotations.REPLACEMENTS | Annotations.NO_EMPTY);<a name="line.91"></a>
|
||||
<span class="sourceLineNo">092</span> this.optionalResolver = isOptionalResolver(resolver);<a name="line.92"></a>
|
||||
<span class="sourceLineNo">093</span> this.requiresInput = !this.optional && !this.optionalResolver;<a name="line.93"></a>
|
||||
<span class="sourceLineNo">094</span> //noinspection unchecked<a name="line.94"></a>
|
||||
<span class="sourceLineNo">095</span> this.commandIssuer = paramIndex == 0 && manager.isCommandIssuer(type);<a name="line.95"></a>
|
||||
<span class="sourceLineNo">096</span> this.canConsumeInput = !this.commandIssuer && !(resolver instanceof IssuerOnlyContextResolver);<a name="line.96"></a>
|
||||
<span class="sourceLineNo">097</span> this.consumesRest = (type == String.class && !annotations.hasAnnotation(param, Single.class)) || (isLast && type == String[].class);<a name="line.97"></a>
|
||||
<span class="sourceLineNo">098</span><a name="line.98"></a>
|
||||
<span class="sourceLineNo">099</span> this.values = annotations.getAnnotationValues(param, Values.class, Annotations.REPLACEMENTS | Annotations.NO_EMPTY);<a name="line.99"></a>
|
||||
<span class="sourceLineNo">100</span><a name="line.100"></a>
|
||||
<span class="sourceLineNo">101</span> this.syntax = null;<a name="line.101"></a>
|
||||
<span class="sourceLineNo">102</span> if (!commandIssuer) {<a name="line.102"></a>
|
||||
<span class="sourceLineNo">103</span> this.syntax = annotations.getAnnotationValue(param, Syntax.class);<a name="line.103"></a>
|
||||
<span class="sourceLineNo">104</span> if (syntax == null) {<a name="line.104"></a>
|
||||
<span class="sourceLineNo">105</span> if (!requiresInput && canConsumeInput) {<a name="line.105"></a>
|
||||
<span class="sourceLineNo">106</span> this.syntax = "[" + name + "]";<a name="line.106"></a>
|
||||
<span class="sourceLineNo">107</span> } else if (requiresInput) {<a name="line.107"></a>
|
||||
<span class="sourceLineNo">108</span> this.syntax = "<" + name + ">";<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">111</span> }<a name="line.111"></a>
|
||||
<span class="sourceLineNo">112</span><a name="line.112"></a>
|
||||
<span class="sourceLineNo">113</span> this.flags = new HashMap<>();<a name="line.113"></a>
|
||||
<span class="sourceLineNo">114</span> String flags = annotations.getAnnotationValue(param, Flags.class, Annotations.REPLACEMENTS | Annotations.NO_EMPTY);<a name="line.114"></a>
|
||||
<span class="sourceLineNo">115</span> if (flags != null) {<a name="line.115"></a>
|
||||
<span class="sourceLineNo">116</span> parseFlags(flags);<a name="line.116"></a>
|
||||
<span class="sourceLineNo">117</span> }<a name="line.117"></a>
|
||||
<span class="sourceLineNo">118</span> inheritContextFlags(command.scope);<a name="line.118"></a>
|
||||
<span class="sourceLineNo">119</span> this.computePermissions();<a name="line.119"></a>
|
||||
<span class="sourceLineNo">120</span> }<a name="line.120"></a>
|
||||
<span class="sourceLineNo">121</span><a name="line.121"></a>
|
||||
<span class="sourceLineNo">122</span> private void inheritContextFlags(BaseCommand scope) {<a name="line.122"></a>
|
||||
<span class="sourceLineNo">123</span> if (!scope.contextFlags.isEmpty()) {<a name="line.123"></a>
|
||||
<span class="sourceLineNo">124</span> Class<?> pCls = this.type;<a name="line.124"></a>
|
||||
<span class="sourceLineNo">125</span> do {<a name="line.125"></a>
|
||||
<span class="sourceLineNo">126</span> parseFlags(scope.contextFlags.get(pCls));<a name="line.126"></a>
|
||||
<span class="sourceLineNo">127</span> } while ((pCls = pCls.getSuperclass()) != null);<a name="line.127"></a>
|
||||
<span class="sourceLineNo">128</span> }<a name="line.128"></a>
|
||||
<span class="sourceLineNo">129</span> if (scope.parentCommand != null) {<a name="line.129"></a>
|
||||
<span class="sourceLineNo">130</span> inheritContextFlags(scope.parentCommand);<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><a name="line.133"></a>
|
||||
<span class="sourceLineNo">134</span> private void parseFlags(String flags) {<a name="line.134"></a>
|
||||
<span class="sourceLineNo">135</span> if (flags != null) {<a name="line.135"></a>
|
||||
<span class="sourceLineNo">136</span> for (String s : ACFPatterns.COMMA.split(manager.getCommandReplacements().replace(flags))) {<a name="line.136"></a>
|
||||
<span class="sourceLineNo">137</span> String[] v = ACFPatterns.EQUALS.split(s, 2);<a name="line.137"></a>
|
||||
<span class="sourceLineNo">138</span> if (!this.flags.containsKey(v[0])) {<a name="line.138"></a>
|
||||
<span class="sourceLineNo">139</span> this.flags.put(v[0], v.length > 1 ? v[1] : null);<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> }<a name="line.143"></a>
|
||||
<span class="sourceLineNo">144</span><a name="line.144"></a>
|
||||
<span class="sourceLineNo">145</span> private void computePermissions() {<a name="line.145"></a>
|
||||
<span class="sourceLineNo">146</span> this.permissions.clear();<a name="line.146"></a>
|
||||
<span class="sourceLineNo">147</span> if (this.permission != null && !this.permission.isEmpty()) {<a name="line.147"></a>
|
||||
<span class="sourceLineNo">148</span> this.permissions.addAll(Arrays.asList(ACFPatterns.COMMA.split(this.permission)));<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><a name="line.151"></a>
|
||||
<span class="sourceLineNo">152</span> public String getName() {<a name="line.152"></a>
|
||||
<span class="sourceLineNo">153</span> return name;<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 CommandManager getManager() {<a name="line.156"></a>
|
||||
<span class="sourceLineNo">157</span> return manager;<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 int getParamIndex() {<a name="line.160"></a>
|
||||
<span class="sourceLineNo">161</span> return paramIndex;<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> public ContextResolver<?, CEC> getResolver() {<a name="line.164"></a>
|
||||
<span class="sourceLineNo">165</span> return resolver;<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 void setResolver(ContextResolver<?, CEC> resolver) {<a name="line.168"></a>
|
||||
<span class="sourceLineNo">169</span> this.resolver = resolver;<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 boolean isOptional() {<a name="line.172"></a>
|
||||
<span class="sourceLineNo">173</span> return optional;<a name="line.173"></a>
|
||||
<span class="sourceLineNo">174</span> }<a name="line.174"></a>
|
||||
<span class="sourceLineNo">175</span><a name="line.175"></a>
|
||||
<span class="sourceLineNo">176</span> public void setOptional(boolean optional) {<a name="line.176"></a>
|
||||
<span class="sourceLineNo">177</span> this.optional = optional;<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> public String getDescription() {<a name="line.180"></a>
|
||||
<span class="sourceLineNo">181</span> return description;<a name="line.181"></a>
|
||||
<span class="sourceLineNo">182</span> }<a name="line.182"></a>
|
||||
<span class="sourceLineNo">183</span><a name="line.183"></a>
|
||||
<span class="sourceLineNo">184</span> public void setDescription(String description) {<a name="line.184"></a>
|
||||
<span class="sourceLineNo">185</span> this.description = description;<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> public String getDefaultValue() {<a name="line.188"></a>
|
||||
<span class="sourceLineNo">189</span> return defaultValue;<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> public void setDefaultValue(String defaultValue) {<a name="line.192"></a>
|
||||
<span class="sourceLineNo">193</span> this.defaultValue = defaultValue;<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> public boolean isCommandIssuer() {<a name="line.196"></a>
|
||||
<span class="sourceLineNo">197</span> return commandIssuer;<a name="line.197"></a>
|
||||
<span class="sourceLineNo">198</span> }<a name="line.198"></a>
|
||||
<span class="sourceLineNo">199</span><a name="line.199"></a>
|
||||
<span class="sourceLineNo">200</span> public void setCommandIssuer(boolean commandIssuer) {<a name="line.200"></a>
|
||||
<span class="sourceLineNo">201</span> this.commandIssuer = commandIssuer;<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 String[] getValues() {<a name="line.204"></a>
|
||||
<span class="sourceLineNo">205</span> return values;<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> public void setValues(String[] values) {<a name="line.208"></a>
|
||||
<span class="sourceLineNo">209</span> this.values = values;<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 Map<String, String> getFlags() {<a name="line.212"></a>
|
||||
<span class="sourceLineNo">213</span> return flags;<a name="line.213"></a>
|
||||
<span class="sourceLineNo">214</span> }<a name="line.214"></a>
|
||||
<span class="sourceLineNo">215</span><a name="line.215"></a>
|
||||
<span class="sourceLineNo">216</span> public void setFlags(Map<String, String> flags) {<a name="line.216"></a>
|
||||
<span class="sourceLineNo">217</span> this.flags = flags;<a name="line.217"></a>
|
||||
<span class="sourceLineNo">218</span> }<a name="line.218"></a>
|
||||
<span class="sourceLineNo">219</span><a name="line.219"></a>
|
||||
<span class="sourceLineNo">220</span> public boolean canConsumeInput() {<a name="line.220"></a>
|
||||
<span class="sourceLineNo">221</span> return canConsumeInput;<a name="line.221"></a>
|
||||
<span class="sourceLineNo">222</span> }<a name="line.222"></a>
|
||||
<span class="sourceLineNo">223</span><a name="line.223"></a>
|
||||
<span class="sourceLineNo">224</span> public void setCanConsumeInput(boolean canConsumeInput) {<a name="line.224"></a>
|
||||
<span class="sourceLineNo">225</span> this.canConsumeInput = canConsumeInput;<a name="line.225"></a>
|
||||
<span class="sourceLineNo">226</span> }<a name="line.226"></a>
|
||||
<span class="sourceLineNo">227</span><a name="line.227"></a>
|
||||
<span class="sourceLineNo">228</span> public void setOptionalResolver(boolean optionalResolver) {<a name="line.228"></a>
|
||||
<span class="sourceLineNo">229</span> this.optionalResolver = optionalResolver;<a name="line.229"></a>
|
||||
<span class="sourceLineNo">230</span> }<a name="line.230"></a>
|
||||
<span class="sourceLineNo">231</span><a name="line.231"></a>
|
||||
<span class="sourceLineNo">232</span> public boolean isOptionalResolver() {<a name="line.232"></a>
|
||||
<span class="sourceLineNo">233</span> return optionalResolver;<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> public boolean requiresInput() {<a name="line.236"></a>
|
||||
<span class="sourceLineNo">237</span> return requiresInput;<a name="line.237"></a>
|
||||
<span class="sourceLineNo">238</span> }<a name="line.238"></a>
|
||||
<span class="sourceLineNo">239</span><a name="line.239"></a>
|
||||
<span class="sourceLineNo">240</span> public void setRequiresInput(boolean requiresInput) {<a name="line.240"></a>
|
||||
<span class="sourceLineNo">241</span> this.requiresInput = requiresInput;<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> public String getSyntax() {<a name="line.244"></a>
|
||||
<span class="sourceLineNo">245</span> return syntax;<a name="line.245"></a>
|
||||
<span class="sourceLineNo">246</span> }<a name="line.246"></a>
|
||||
<span class="sourceLineNo">247</span><a name="line.247"></a>
|
||||
<span class="sourceLineNo">248</span> public void setSyntax(String syntax) {<a name="line.248"></a>
|
||||
<span class="sourceLineNo">249</span> this.syntax = syntax;<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> public String getConditions() {<a name="line.252"></a>
|
||||
<span class="sourceLineNo">253</span> return conditions;<a name="line.253"></a>
|
||||
<span class="sourceLineNo">254</span> }<a name="line.254"></a>
|
||||
<span class="sourceLineNo">255</span><a name="line.255"></a>
|
||||
<span class="sourceLineNo">256</span> public void setConditions(String conditions) {<a name="line.256"></a>
|
||||
<span class="sourceLineNo">257</span> this.conditions = conditions;<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">152</span> private boolean isOptionalResolver(ContextResolver<?, CEC> resolver) {<a name="line.152"></a>
|
||||
<span class="sourceLineNo">153</span> return resolver instanceof IssuerAwareContextResolver<a name="line.153"></a>
|
||||
<span class="sourceLineNo">154</span> || resolver instanceof IssuerOnlyContextResolver<a name="line.154"></a>
|
||||
<span class="sourceLineNo">155</span> || resolver instanceof OptionalContextResolver;<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><a name="line.158"></a>
|
||||
<span class="sourceLineNo">159</span> public Parameter getParameter() {<a name="line.159"></a>
|
||||
<span class="sourceLineNo">160</span> return parameter;<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> public Class<?> getType() {<a name="line.163"></a>
|
||||
<span class="sourceLineNo">164</span> return type;<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">167</span> public String getName() {<a name="line.167"></a>
|
||||
<span class="sourceLineNo">168</span> return name;<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 CommandManager getManager() {<a name="line.171"></a>
|
||||
<span class="sourceLineNo">172</span> return manager;<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> public int getParamIndex() {<a name="line.175"></a>
|
||||
<span class="sourceLineNo">176</span> return paramIndex;<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> public ContextResolver<?, CEC> getResolver() {<a name="line.179"></a>
|
||||
<span class="sourceLineNo">180</span> return resolver;<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 void setResolver(ContextResolver<?, CEC> resolver) {<a name="line.183"></a>
|
||||
<span class="sourceLineNo">184</span> this.resolver = resolver;<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> public boolean isOptional() {<a name="line.187"></a>
|
||||
<span class="sourceLineNo">188</span> return optional;<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> public void setOptional(boolean optional) {<a name="line.191"></a>
|
||||
<span class="sourceLineNo">192</span> this.optional = optional;<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">195</span> public String getDescription() {<a name="line.195"></a>
|
||||
<span class="sourceLineNo">196</span> return description;<a name="line.196"></a>
|
||||
<span class="sourceLineNo">197</span> }<a name="line.197"></a>
|
||||
<span class="sourceLineNo">198</span><a name="line.198"></a>
|
||||
<span class="sourceLineNo">199</span> public void setDescription(String description) {<a name="line.199"></a>
|
||||
<span class="sourceLineNo">200</span> this.description = description;<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 String getDefaultValue() {<a name="line.203"></a>
|
||||
<span class="sourceLineNo">204</span> return defaultValue;<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> public void setDefaultValue(String defaultValue) {<a name="line.207"></a>
|
||||
<span class="sourceLineNo">208</span> this.defaultValue = defaultValue;<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 boolean isCommandIssuer() {<a name="line.211"></a>
|
||||
<span class="sourceLineNo">212</span> return commandIssuer;<a name="line.212"></a>
|
||||
<span class="sourceLineNo">213</span> }<a name="line.213"></a>
|
||||
<span class="sourceLineNo">214</span><a name="line.214"></a>
|
||||
<span class="sourceLineNo">215</span> public void setCommandIssuer(boolean commandIssuer) {<a name="line.215"></a>
|
||||
<span class="sourceLineNo">216</span> this.commandIssuer = commandIssuer;<a name="line.216"></a>
|
||||
<span class="sourceLineNo">217</span> }<a name="line.217"></a>
|
||||
<span class="sourceLineNo">218</span><a name="line.218"></a>
|
||||
<span class="sourceLineNo">219</span> public String[] getValues() {<a name="line.219"></a>
|
||||
<span class="sourceLineNo">220</span> return values;<a name="line.220"></a>
|
||||
<span class="sourceLineNo">221</span> }<a name="line.221"></a>
|
||||
<span class="sourceLineNo">222</span><a name="line.222"></a>
|
||||
<span class="sourceLineNo">223</span> public void setValues(String[] values) {<a name="line.223"></a>
|
||||
<span class="sourceLineNo">224</span> this.values = values;<a name="line.224"></a>
|
||||
<span class="sourceLineNo">225</span> }<a name="line.225"></a>
|
||||
<span class="sourceLineNo">226</span><a name="line.226"></a>
|
||||
<span class="sourceLineNo">227</span> public Map<String, String> getFlags() {<a name="line.227"></a>
|
||||
<span class="sourceLineNo">228</span> return flags;<a name="line.228"></a>
|
||||
<span class="sourceLineNo">229</span> }<a name="line.229"></a>
|
||||
<span class="sourceLineNo">230</span><a name="line.230"></a>
|
||||
<span class="sourceLineNo">231</span> public void setFlags(Map<String, String> flags) {<a name="line.231"></a>
|
||||
<span class="sourceLineNo">232</span> this.flags = flags;<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> public boolean canConsumeInput() {<a name="line.235"></a>
|
||||
<span class="sourceLineNo">236</span> return canConsumeInput;<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> public void setCanConsumeInput(boolean canConsumeInput) {<a name="line.239"></a>
|
||||
<span class="sourceLineNo">240</span> this.canConsumeInput = canConsumeInput;<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> public void setOptionalResolver(boolean optionalResolver) {<a name="line.243"></a>
|
||||
<span class="sourceLineNo">244</span> this.optionalResolver = optionalResolver;<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> public boolean isOptionalResolver() {<a name="line.247"></a>
|
||||
<span class="sourceLineNo">248</span> return optionalResolver;<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">251</span> public boolean requiresInput() {<a name="line.251"></a>
|
||||
<span class="sourceLineNo">252</span> return requiresInput;<a name="line.252"></a>
|
||||
<span class="sourceLineNo">253</span> }<a name="line.253"></a>
|
||||
<span class="sourceLineNo">254</span><a name="line.254"></a>
|
||||
<span class="sourceLineNo">255</span> public void setRequiresInput(boolean requiresInput) {<a name="line.255"></a>
|
||||
<span class="sourceLineNo">256</span> this.requiresInput = requiresInput;<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> public String getSyntax() {<a name="line.259"></a>
|
||||
<span class="sourceLineNo">260</span> return syntax;<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> public void setSyntax(String syntax) {<a name="line.263"></a>
|
||||
<span class="sourceLineNo">264</span> this.syntax = syntax;<a name="line.264"></a>
|
||||
<span class="sourceLineNo">265</span> }<a name="line.265"></a>
|
||||
<span class="sourceLineNo">266</span><a name="line.266"></a>
|
||||
<span class="sourceLineNo">267</span> public String getConditions() {<a name="line.267"></a>
|
||||
<span class="sourceLineNo">268</span> return conditions;<a name="line.268"></a>
|
||||
<span class="sourceLineNo">269</span> }<a name="line.269"></a>
|
||||
<span class="sourceLineNo">270</span><a name="line.270"></a>
|
||||
<span class="sourceLineNo">271</span> public void setConditions(String conditions) {<a name="line.271"></a>
|
||||
<span class="sourceLineNo">272</span> this.conditions = conditions;<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> public Set<String> getRequiredPermissions() {<a name="line.275"></a>
|
||||
<span class="sourceLineNo">276</span> return permissions;<a name="line.276"></a>
|
||||
<span class="sourceLineNo">277</span> }<a name="line.277"></a>
|
||||
<span class="sourceLineNo">278</span>}<a name="line.278"></a>
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -40,36 +40,38 @@
|
||||
<span class="sourceLineNo">032</span>@SuppressWarnings("WeakerAccess")<a name="line.32"></a>
|
||||
<span class="sourceLineNo">033</span>public enum MessageKeys implements MessageKeyProvider {<a name="line.33"></a>
|
||||
<span class="sourceLineNo">034</span> PERMISSION_DENIED,<a name="line.34"></a>
|
||||
<span class="sourceLineNo">035</span> ERROR_GENERIC_LOGGED,<a name="line.35"></a>
|
||||
<span class="sourceLineNo">036</span> UNKNOWN_COMMAND,<a name="line.36"></a>
|
||||
<span class="sourceLineNo">037</span> INVALID_SYNTAX,<a name="line.37"></a>
|
||||
<span class="sourceLineNo">038</span> ERROR_PREFIX,<a name="line.38"></a>
|
||||
<span class="sourceLineNo">039</span> ERROR_PERFORMING_COMMAND,<a name="line.39"></a>
|
||||
<span class="sourceLineNo">040</span> INFO_MESSAGE,<a name="line.40"></a>
|
||||
<span class="sourceLineNo">041</span> PLEASE_SPECIFY_ONE_OF,<a name="line.41"></a>
|
||||
<span class="sourceLineNo">042</span> MUST_BE_A_NUMBER,<a name="line.42"></a>
|
||||
<span class="sourceLineNo">043</span> MUST_BE_MIN_LENGTH,<a name="line.43"></a>
|
||||
<span class="sourceLineNo">044</span> MUST_BE_MAX_LENGTH,<a name="line.44"></a>
|
||||
<span class="sourceLineNo">045</span> PLEASE_SPECIFY_AT_LEAST,<a name="line.45"></a>
|
||||
<span class="sourceLineNo">046</span> PLEASE_SPECIFY_AT_MOST,<a name="line.46"></a>
|
||||
<span class="sourceLineNo">047</span> NOT_ALLOWED_ON_CONSOLE,<a name="line.47"></a>
|
||||
<span class="sourceLineNo">048</span> COULD_NOT_FIND_PLAYER,<a name="line.48"></a>
|
||||
<span class="sourceLineNo">049</span> NO_COMMAND_MATCHED_SEARCH,<a name="line.49"></a>
|
||||
<span class="sourceLineNo">050</span> HELP_PAGE_INFORMATION,<a name="line.50"></a>
|
||||
<span class="sourceLineNo">051</span> HELP_NO_RESULTS,<a name="line.51"></a>
|
||||
<span class="sourceLineNo">052</span> HELP_HEADER,<a name="line.52"></a>
|
||||
<span class="sourceLineNo">053</span> HELP_FORMAT,<a name="line.53"></a>
|
||||
<span class="sourceLineNo">054</span> HELP_DETAILED_HEADER,<a name="line.54"></a>
|
||||
<span class="sourceLineNo">055</span> HELP_DETAILED_COMMAND_FORMAT,<a name="line.55"></a>
|
||||
<span class="sourceLineNo">056</span> HELP_DETAILED_PARAMETER_FORMAT,<a name="line.56"></a>
|
||||
<span class="sourceLineNo">057</span> HELP_SEARCH_HEADER,<a name="line.57"></a>
|
||||
<span class="sourceLineNo">058</span> ;<a name="line.58"></a>
|
||||
<span class="sourceLineNo">059</span><a name="line.59"></a>
|
||||
<span class="sourceLineNo">060</span> private final MessageKey key = MessageKey.of("acf-core." + this.name().toLowerCase());<a name="line.60"></a>
|
||||
<span class="sourceLineNo">061</span> public MessageKey getMessageKey() {<a name="line.61"></a>
|
||||
<span class="sourceLineNo">062</span> return key;<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">035</span> PERMISSION_DENIED_PARAMETER,<a name="line.35"></a>
|
||||
<span class="sourceLineNo">036</span> ERROR_GENERIC_LOGGED,<a name="line.36"></a>
|
||||
<span class="sourceLineNo">037</span> UNKNOWN_COMMAND,<a name="line.37"></a>
|
||||
<span class="sourceLineNo">038</span> INVALID_SYNTAX,<a name="line.38"></a>
|
||||
<span class="sourceLineNo">039</span> ERROR_PREFIX,<a name="line.39"></a>
|
||||
<span class="sourceLineNo">040</span> ERROR_PERFORMING_COMMAND,<a name="line.40"></a>
|
||||
<span class="sourceLineNo">041</span> INFO_MESSAGE,<a name="line.41"></a>
|
||||
<span class="sourceLineNo">042</span> PLEASE_SPECIFY_ONE_OF,<a name="line.42"></a>
|
||||
<span class="sourceLineNo">043</span> MUST_BE_A_NUMBER,<a name="line.43"></a>
|
||||
<span class="sourceLineNo">044</span> MUST_BE_MIN_LENGTH,<a name="line.44"></a>
|
||||
<span class="sourceLineNo">045</span> MUST_BE_MAX_LENGTH,<a name="line.45"></a>
|
||||
<span class="sourceLineNo">046</span> PLEASE_SPECIFY_AT_LEAST,<a name="line.46"></a>
|
||||
<span class="sourceLineNo">047</span> PLEASE_SPECIFY_AT_MOST,<a name="line.47"></a>
|
||||
<span class="sourceLineNo">048</span> NOT_ALLOWED_ON_CONSOLE,<a name="line.48"></a>
|
||||
<span class="sourceLineNo">049</span> COULD_NOT_FIND_PLAYER,<a name="line.49"></a>
|
||||
<span class="sourceLineNo">050</span> NO_COMMAND_MATCHED_SEARCH,<a name="line.50"></a>
|
||||
<span class="sourceLineNo">051</span> HELP_PAGE_INFORMATION,<a name="line.51"></a>
|
||||
<span class="sourceLineNo">052</span> HELP_NO_RESULTS,<a name="line.52"></a>
|
||||
<span class="sourceLineNo">053</span> HELP_HEADER,<a name="line.53"></a>
|
||||
<span class="sourceLineNo">054</span> HELP_FORMAT,<a name="line.54"></a>
|
||||
<span class="sourceLineNo">055</span> HELP_DETAILED_HEADER,<a name="line.55"></a>
|
||||
<span class="sourceLineNo">056</span> HELP_DETAILED_COMMAND_FORMAT,<a name="line.56"></a>
|
||||
<span class="sourceLineNo">057</span> HELP_DETAILED_PARAMETER_FORMAT,<a name="line.57"></a>
|
||||
<span class="sourceLineNo">058</span> HELP_SEARCH_HEADER,<a name="line.58"></a>
|
||||
<span class="sourceLineNo">059</span> ;<a name="line.59"></a>
|
||||
<span class="sourceLineNo">060</span><a name="line.60"></a>
|
||||
<span class="sourceLineNo">061</span> private final MessageKey key = MessageKey.of("acf-core." + this.name().toLowerCase());<a name="line.61"></a>
|
||||
<span class="sourceLineNo">062</span><a name="line.62"></a>
|
||||
<span class="sourceLineNo">063</span> public MessageKey getMessageKey() {<a name="line.63"></a>
|
||||
<span class="sourceLineNo">064</span> return key;<a name="line.64"></a>
|
||||
<span class="sourceLineNo">065</span> }<a name="line.65"></a>
|
||||
<span class="sourceLineNo">066</span>}<a name="line.66"></a>
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -96,7 +96,7 @@
|
||||
<span class="sourceLineNo">088</span> this.prefSubCommand = prefSubCommand;<a name="line.88"></a>
|
||||
<span class="sourceLineNo">089</span><a name="line.89"></a>
|
||||
<span class="sourceLineNo">090</span> this.permission = annotations.getAnnotationValue(method, CommandPermission.class, Annotations.REPLACEMENTS | Annotations.NO_EMPTY);<a name="line.90"></a>
|
||||
<span class="sourceLineNo">091</span> this.complete = annotations.getAnnotationValue(method, CommandCompletion.class);<a name="line.91"></a>
|
||||
<span class="sourceLineNo">091</span> this.complete = annotations.getAnnotationValue(method, CommandCompletion.class, Annotations.DEFAULT_EMPTY); // no replacements as it should be per-issuer<a name="line.91"></a>
|
||||
<span class="sourceLineNo">092</span> this.helpText = annotations.getAnnotationValue(method, Description.class, Annotations.REPLACEMENTS | Annotations.DEFAULT_EMPTY);<a name="line.92"></a>
|
||||
<span class="sourceLineNo">093</span> this.conditions = annotations.getAnnotationValue(method, Conditions.class, Annotations.REPLACEMENTS | Annotations.NO_EMPTY);<a name="line.93"></a>
|
||||
<span class="sourceLineNo">094</span> this.helpSearchTags = annotations.getAnnotationValue(method, HelpSearchTags.class, Annotations.REPLACEMENTS | Annotations.NO_EMPTY);<a name="line.94"></a>
|
||||
@@ -234,117 +234,132 @@
|
||||
<span class="sourceLineNo">226</span> if (requiresInput && remainingRequired > 0) {<a name="line.226"></a>
|
||||
<span class="sourceLineNo">227</span> remainingRequired--;<a name="line.227"></a>
|
||||
<span class="sourceLineNo">228</span> }<a name="line.228"></a>
|
||||
<span class="sourceLineNo">229</span> if (args.isEmpty() && !(isLast && type == String[].class)) {<a name="line.229"></a>
|
||||
<span class="sourceLineNo">230</span> if (allowOptional && parameter.getDefaultValue() != null) {<a name="line.230"></a>
|
||||
<span class="sourceLineNo">231</span> args.add(parameter.getDefaultValue());<a name="line.231"></a>
|
||||
<span class="sourceLineNo">232</span> } else if (allowOptional && parameter.isOptional()) {<a name="line.232"></a>
|
||||
<span class="sourceLineNo">233</span> Object value = parameter.isOptionalResolver() ? resolver.getContext(context) : null;<a name="line.233"></a>
|
||||
<span class="sourceLineNo">234</span> if (value == null && parameter.getClass().isPrimitive()) {<a name="line.234"></a>
|
||||
<span class="sourceLineNo">235</span> throw new IllegalStateException("Parameter " + parameter.getName() + " is primitive and does not support Optional.");<a name="line.235"></a>
|
||||
<span class="sourceLineNo">236</span> }<a name="line.236"></a>
|
||||
<span class="sourceLineNo">237</span> //noinspection unchecked<a name="line.237"></a>
|
||||
<span class="sourceLineNo">238</span> this.manager.conditions.validateConditions(context, value);<a name="line.238"></a>
|
||||
<span class="sourceLineNo">239</span> passedArgs.put(parameterName, value);<a name="line.239"></a>
|
||||
<span class="sourceLineNo">240</span> //noinspection UnnecessaryContinue<a name="line.240"></a>
|
||||
<span class="sourceLineNo">241</span> continue;<a name="line.241"></a>
|
||||
<span class="sourceLineNo">242</span> } else if (requiresInput) {<a name="line.242"></a>
|
||||
<span class="sourceLineNo">243</span> scope.showSyntax(sender, this);<a name="line.243"></a>
|
||||
<span class="sourceLineNo">244</span> return null;<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> if (parameter.getValues() != null) {<a name="line.247"></a>
|
||||
<span class="sourceLineNo">248</span> String arg = !args.isEmpty() ? args.get(0) : "";<a name="line.248"></a>
|
||||
<span class="sourceLineNo">249</span><a name="line.249"></a>
|
||||
<span class="sourceLineNo">250</span> Set<String> possible = new HashSet<>();<a name="line.250"></a>
|
||||
<span class="sourceLineNo">251</span> CommandCompletions commandCompletions = this.manager.getCommandCompletions();<a name="line.251"></a>
|
||||
<span class="sourceLineNo">252</span> for (String s : parameter.getValues()) {<a name="line.252"></a>
|
||||
<span class="sourceLineNo">253</span> //noinspection unchecked<a name="line.253"></a>
|
||||
<span class="sourceLineNo">254</span> List<String> check = commandCompletions.getCompletionValues(this, sender, s, origArgs, opContext.isAsync());<a name="line.254"></a>
|
||||
<span class="sourceLineNo">255</span> if (!check.isEmpty()) {<a name="line.255"></a>
|
||||
<span class="sourceLineNo">256</span> possible.addAll(check.stream().map(String::toLowerCase).collect(Collectors.toList()));<a name="line.256"></a>
|
||||
<span class="sourceLineNo">257</span> } else {<a name="line.257"></a>
|
||||
<span class="sourceLineNo">258</span> possible.add(s.toLowerCase());<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">229</span><a name="line.229"></a>
|
||||
<span class="sourceLineNo">230</span> Set<String> parameterPermissions = parameter.getRequiredPermissions();<a name="line.230"></a>
|
||||
<span class="sourceLineNo">231</span> if (args.isEmpty() && !(isLast && type == String[].class)) {<a name="line.231"></a>
|
||||
<span class="sourceLineNo">232</span> if (allowOptional && parameter.getDefaultValue() != null) {<a name="line.232"></a>
|
||||
<span class="sourceLineNo">233</span> args.add(parameter.getDefaultValue());<a name="line.233"></a>
|
||||
<span class="sourceLineNo">234</span> } else if (allowOptional && parameter.isOptional()) {<a name="line.234"></a>
|
||||
<span class="sourceLineNo">235</span> if (!this.manager.hasPermission(sender, parameterPermissions)) {<a name="line.235"></a>
|
||||
<span class="sourceLineNo">236</span> sender.sendMessage(MessageType.ERROR, MessageKeys.PERMISSION_DENIED_PARAMETER, "{param}", parameterName);<a name="line.236"></a>
|
||||
<span class="sourceLineNo">237</span> throw new InvalidCommandArgument(false);<a name="line.237"></a>
|
||||
<span class="sourceLineNo">238</span> }<a name="line.238"></a>
|
||||
<span class="sourceLineNo">239</span> Object value = parameter.isOptionalResolver() ? resolver.getContext(context) : null;<a name="line.239"></a>
|
||||
<span class="sourceLineNo">240</span><a name="line.240"></a>
|
||||
<span class="sourceLineNo">241</span> if (value == null && parameter.getClass().isPrimitive()) {<a name="line.241"></a>
|
||||
<span class="sourceLineNo">242</span> throw new IllegalStateException("Parameter " + parameter.getName() + " is primitive and does not support Optional.");<a name="line.242"></a>
|
||||
<span class="sourceLineNo">243</span> }<a name="line.243"></a>
|
||||
<span class="sourceLineNo">244</span> //noinspection unchecked<a name="line.244"></a>
|
||||
<span class="sourceLineNo">245</span> this.manager.conditions.validateConditions(context, value);<a name="line.245"></a>
|
||||
<span class="sourceLineNo">246</span> passedArgs.put(parameterName, value);<a name="line.246"></a>
|
||||
<span class="sourceLineNo">247</span> continue;<a name="line.247"></a>
|
||||
<span class="sourceLineNo">248</span> } else if (requiresInput) {<a name="line.248"></a>
|
||||
<span class="sourceLineNo">249</span> scope.showSyntax(sender, this);<a name="line.249"></a>
|
||||
<span class="sourceLineNo">250</span> return null;<a name="line.250"></a>
|
||||
<span class="sourceLineNo">251</span> }<a name="line.251"></a>
|
||||
<span class="sourceLineNo">252</span> } else {<a name="line.252"></a>
|
||||
<span class="sourceLineNo">253</span> if (!this.manager.hasPermission(sender, parameterPermissions)) {<a name="line.253"></a>
|
||||
<span class="sourceLineNo">254</span> sender.sendMessage(MessageType.ERROR, MessageKeys.PERMISSION_DENIED_PARAMETER, "{param}", parameterName);<a name="line.254"></a>
|
||||
<span class="sourceLineNo">255</span> throw new InvalidCommandArgument(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> if (parameter.getValues() != null) {<a name="line.259"></a>
|
||||
<span class="sourceLineNo">260</span> String arg = !args.isEmpty() ? args.get(0) : "";<a name="line.260"></a>
|
||||
<span class="sourceLineNo">261</span><a name="line.261"></a>
|
||||
<span class="sourceLineNo">262</span> if (!possible.contains(arg.toLowerCase())) {<a name="line.262"></a>
|
||||
<span class="sourceLineNo">263</span> throw new InvalidCommandArgument(MessageKeys.PLEASE_SPECIFY_ONE_OF,<a name="line.263"></a>
|
||||
<span class="sourceLineNo">264</span> "{valid}", ACFUtil.join(possible, ", "));<a name="line.264"></a>
|
||||
<span class="sourceLineNo">265</span> }<a name="line.265"></a>
|
||||
<span class="sourceLineNo">266</span> }<a name="line.266"></a>
|
||||
<span class="sourceLineNo">267</span> Object paramValue = resolver.getContext(context);<a name="line.267"></a>
|
||||
<span class="sourceLineNo">268</span> //noinspection unchecked<a name="line.268"></a>
|
||||
<span class="sourceLineNo">269</span> this.manager.conditions.validateConditions(context, paramValue);<a name="line.269"></a>
|
||||
<span class="sourceLineNo">270</span> passedArgs.put(parameterName, paramValue);<a name="line.270"></a>
|
||||
<span class="sourceLineNo">271</span> }<a name="line.271"></a>
|
||||
<span class="sourceLineNo">272</span> return passedArgs;<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> boolean hasPermission(CommandIssuer issuer) {<a name="line.275"></a>
|
||||
<span class="sourceLineNo">276</span> return (permission == null || permission.isEmpty() || scope.manager.hasPermission(issuer, permission)) && scope.hasPermission(issuer);<a name="line.276"></a>
|
||||
<span class="sourceLineNo">277</span> }<a name="line.277"></a>
|
||||
<span class="sourceLineNo">278</span><a name="line.278"></a>
|
||||
<span class="sourceLineNo">279</span><a name="line.279"></a>
|
||||
<span class="sourceLineNo">280</span> /**<a name="line.280"></a>
|
||||
<span class="sourceLineNo">281</span> * @see #getRequiredPermissions()<a name="line.281"></a>
|
||||
<span class="sourceLineNo">282</span> * @deprecated<a name="line.282"></a>
|
||||
<span class="sourceLineNo">283</span> */<a name="line.283"></a>
|
||||
<span class="sourceLineNo">284</span> @Deprecated<a name="line.284"></a>
|
||||
<span class="sourceLineNo">285</span> public String getPermission() {<a name="line.285"></a>
|
||||
<span class="sourceLineNo">286</span> if (this.permission == null || this.permission.isEmpty()) {<a name="line.286"></a>
|
||||
<span class="sourceLineNo">287</span> return null;<a name="line.287"></a>
|
||||
<span class="sourceLineNo">288</span> }<a name="line.288"></a>
|
||||
<span class="sourceLineNo">289</span> return ACFPatterns.COMMA.split(this.permission)[0];<a name="line.289"></a>
|
||||
<span class="sourceLineNo">290</span> }<a name="line.290"></a>
|
||||
<span class="sourceLineNo">291</span><a name="line.291"></a>
|
||||
<span class="sourceLineNo">292</span> private void computePermissions() {<a name="line.292"></a>
|
||||
<span class="sourceLineNo">293</span> this.permissions.clear();<a name="line.293"></a>
|
||||
<span class="sourceLineNo">294</span> this.permissions.addAll(this.scope.getRequiredPermissions());<a name="line.294"></a>
|
||||
<span class="sourceLineNo">295</span> if (this.permission != null && !this.permission.isEmpty()) {<a name="line.295"></a>
|
||||
<span class="sourceLineNo">296</span> this.permissions.addAll(Arrays.asList(ACFPatterns.COMMA.split(this.permission)));<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><a name="line.299"></a>
|
||||
<span class="sourceLineNo">300</span> public Set<String> getRequiredPermissions() {<a name="line.300"></a>
|
||||
<span class="sourceLineNo">301</span> return this.permissions;<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> public boolean requiresPermission(String permission) {<a name="line.304"></a>
|
||||
<span class="sourceLineNo">305</span> return getRequiredPermissions().contains(permission);<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> public String getPrefSubCommand() {<a name="line.308"></a>
|
||||
<span class="sourceLineNo">309</span> return prefSubCommand;<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> public String getSyntaxText() {<a name="line.312"></a>
|
||||
<span class="sourceLineNo">313</span> return syntaxText;<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> public String getHelpText() {<a name="line.316"></a>
|
||||
<span class="sourceLineNo">317</span> return helpText != null ? helpText : "";<a name="line.317"></a>
|
||||
<span class="sourceLineNo">318</span> }<a name="line.318"></a>
|
||||
<span class="sourceLineNo">319</span><a name="line.319"></a>
|
||||
<span class="sourceLineNo">320</span> public boolean isPrivate() {<a name="line.320"></a>
|
||||
<span class="sourceLineNo">321</span> return isPrivate;<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> public String getCommand() {<a name="line.324"></a>
|
||||
<span class="sourceLineNo">325</span> return command;<a name="line.325"></a>
|
||||
<span class="sourceLineNo">326</span> }<a name="line.326"></a>
|
||||
<span class="sourceLineNo">327</span><a name="line.327"></a>
|
||||
<span class="sourceLineNo">328</span> public void addSubcommand(String cmd) {<a name="line.328"></a>
|
||||
<span class="sourceLineNo">329</span> this.registeredSubcommands.add(cmd);<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 void addSubcommands(Collection<String> cmd) {<a name="line.332"></a>
|
||||
<span class="sourceLineNo">333</span> this.registeredSubcommands.addAll(cmd);<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> public <T extends Annotation> T getAnnotation(Class<T> annotation) {<a name="line.336"></a>
|
||||
<span class="sourceLineNo">337</span> return method.getAnnotation(annotation);<a name="line.337"></a>
|
||||
<span class="sourceLineNo">338</span> }<a name="line.338"></a>
|
||||
<span class="sourceLineNo">339</span>}<a name="line.339"></a>
|
||||
<span class="sourceLineNo">262</span> Set<String> possible = new HashSet<>();<a name="line.262"></a>
|
||||
<span class="sourceLineNo">263</span> CommandCompletions commandCompletions = this.manager.getCommandCompletions();<a name="line.263"></a>
|
||||
<span class="sourceLineNo">264</span> for (String s : parameter.getValues()) {<a name="line.264"></a>
|
||||
<span class="sourceLineNo">265</span> if ("*".equals(s) || "@completions".equals(s)) {<a name="line.265"></a>
|
||||
<span class="sourceLineNo">266</span> s = commandCompletions.findDefaultCompletion(this, origArgs);<a name="line.266"></a>
|
||||
<span class="sourceLineNo">267</span> }<a name="line.267"></a>
|
||||
<span class="sourceLineNo">268</span> //noinspection unchecked<a name="line.268"></a>
|
||||
<span class="sourceLineNo">269</span> List<String> check = commandCompletions.getCompletionValues(this, sender, s, origArgs, opContext.isAsync());<a name="line.269"></a>
|
||||
<span class="sourceLineNo">270</span> if (!check.isEmpty()) {<a name="line.270"></a>
|
||||
<span class="sourceLineNo">271</span> possible.addAll(check.stream().map(String::toLowerCase).collect(Collectors.toList()));<a name="line.271"></a>
|
||||
<span class="sourceLineNo">272</span> } else {<a name="line.272"></a>
|
||||
<span class="sourceLineNo">273</span> possible.add(s.toLowerCase());<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 (!possible.contains(arg.toLowerCase())) {<a name="line.276"></a>
|
||||
<span class="sourceLineNo">277</span> throw new InvalidCommandArgument(MessageKeys.PLEASE_SPECIFY_ONE_OF,<a name="line.277"></a>
|
||||
<span class="sourceLineNo">278</span> "{valid}", ACFUtil.join(possible, ", "));<a name="line.278"></a>
|
||||
<span class="sourceLineNo">279</span> }<a name="line.279"></a>
|
||||
<span class="sourceLineNo">280</span> }<a name="line.280"></a>
|
||||
<span class="sourceLineNo">281</span><a name="line.281"></a>
|
||||
<span class="sourceLineNo">282</span> Object paramValue = resolver.getContext(context);<a name="line.282"></a>
|
||||
<span class="sourceLineNo">283</span><a name="line.283"></a>
|
||||
<span class="sourceLineNo">284</span> //noinspection unchecked<a name="line.284"></a>
|
||||
<span class="sourceLineNo">285</span> this.manager.conditions.validateConditions(context, paramValue);<a name="line.285"></a>
|
||||
<span class="sourceLineNo">286</span> passedArgs.put(parameterName, paramValue);<a name="line.286"></a>
|
||||
<span class="sourceLineNo">287</span> }<a name="line.287"></a>
|
||||
<span class="sourceLineNo">288</span> return passedArgs;<a name="line.288"></a>
|
||||
<span class="sourceLineNo">289</span> }<a name="line.289"></a>
|
||||
<span class="sourceLineNo">290</span><a name="line.290"></a>
|
||||
<span class="sourceLineNo">291</span> boolean hasPermission(CommandIssuer issuer) {<a name="line.291"></a>
|
||||
<span class="sourceLineNo">292</span> return this.manager.hasPermission(issuer, getRequiredPermissions());<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> * @see #getRequiredPermissions()<a name="line.296"></a>
|
||||
<span class="sourceLineNo">297</span> * @deprecated<a name="line.297"></a>
|
||||
<span class="sourceLineNo">298</span> */<a name="line.298"></a>
|
||||
<span class="sourceLineNo">299</span> @Deprecated<a name="line.299"></a>
|
||||
<span class="sourceLineNo">300</span> public String getPermission() {<a name="line.300"></a>
|
||||
<span class="sourceLineNo">301</span> if (this.permission == null || this.permission.isEmpty()) {<a name="line.301"></a>
|
||||
<span class="sourceLineNo">302</span> return null;<a name="line.302"></a>
|
||||
<span class="sourceLineNo">303</span> }<a name="line.303"></a>
|
||||
<span class="sourceLineNo">304</span> return ACFPatterns.COMMA.split(this.permission)[0];<a name="line.304"></a>
|
||||
<span class="sourceLineNo">305</span> }<a name="line.305"></a>
|
||||
<span class="sourceLineNo">306</span><a name="line.306"></a>
|
||||
<span class="sourceLineNo">307</span> private void computePermissions() {<a name="line.307"></a>
|
||||
<span class="sourceLineNo">308</span> this.permissions.clear();<a name="line.308"></a>
|
||||
<span class="sourceLineNo">309</span> this.permissions.addAll(this.scope.getRequiredPermissions());<a name="line.309"></a>
|
||||
<span class="sourceLineNo">310</span> if (this.permission != null && !this.permission.isEmpty()) {<a name="line.310"></a>
|
||||
<span class="sourceLineNo">311</span> this.permissions.addAll(Arrays.asList(ACFPatterns.COMMA.split(this.permission)));<a name="line.311"></a>
|
||||
<span class="sourceLineNo">312</span> }<a name="line.312"></a>
|
||||
<span class="sourceLineNo">313</span> }<a name="line.313"></a>
|
||||
<span class="sourceLineNo">314</span><a name="line.314"></a>
|
||||
<span class="sourceLineNo">315</span> public Set<String> getRequiredPermissions() {<a name="line.315"></a>
|
||||
<span class="sourceLineNo">316</span> return this.permissions;<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 boolean requiresPermission(String permission) {<a name="line.319"></a>
|
||||
<span class="sourceLineNo">320</span> return getRequiredPermissions().contains(permission);<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> public String getPrefSubCommand() {<a name="line.323"></a>
|
||||
<span class="sourceLineNo">324</span> return prefSubCommand;<a name="line.324"></a>
|
||||
<span class="sourceLineNo">325</span> }<a name="line.325"></a>
|
||||
<span class="sourceLineNo">326</span><a name="line.326"></a>
|
||||
<span class="sourceLineNo">327</span> public String getSyntaxText() {<a name="line.327"></a>
|
||||
<span class="sourceLineNo">328</span> return syntaxText;<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> public String getHelpText() {<a name="line.331"></a>
|
||||
<span class="sourceLineNo">332</span> return helpText != null ? helpText : "";<a name="line.332"></a>
|
||||
<span class="sourceLineNo">333</span> }<a name="line.333"></a>
|
||||
<span class="sourceLineNo">334</span><a name="line.334"></a>
|
||||
<span class="sourceLineNo">335</span> public boolean isPrivate() {<a name="line.335"></a>
|
||||
<span class="sourceLineNo">336</span> return isPrivate;<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> public String getCommand() {<a name="line.339"></a>
|
||||
<span class="sourceLineNo">340</span> return command;<a name="line.340"></a>
|
||||
<span class="sourceLineNo">341</span> }<a name="line.341"></a>
|
||||
<span class="sourceLineNo">342</span><a name="line.342"></a>
|
||||
<span class="sourceLineNo">343</span> public void addSubcommand(String cmd) {<a name="line.343"></a>
|
||||
<span class="sourceLineNo">344</span> this.registeredSubcommands.add(cmd);<a name="line.344"></a>
|
||||
<span class="sourceLineNo">345</span> }<a name="line.345"></a>
|
||||
<span class="sourceLineNo">346</span><a name="line.346"></a>
|
||||
<span class="sourceLineNo">347</span> public void addSubcommands(Collection<String> cmd) {<a name="line.347"></a>
|
||||
<span class="sourceLineNo">348</span> this.registeredSubcommands.addAll(cmd);<a name="line.348"></a>
|
||||
<span class="sourceLineNo">349</span> }<a name="line.349"></a>
|
||||
<span class="sourceLineNo">350</span><a name="line.350"></a>
|
||||
<span class="sourceLineNo">351</span> public <T extends Annotation> T getAnnotation(Class<T> annotation) {<a name="line.351"></a>
|
||||
<span class="sourceLineNo">352</span> return method.getAnnotation(annotation);<a name="line.352"></a>
|
||||
<span class="sourceLineNo">353</span> }<a name="line.353"></a>
|
||||
<span class="sourceLineNo">354</span>}<a name="line.354"></a>
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -38,11 +38,11 @@
|
||||
<span class="sourceLineNo">030</span><a name="line.30"></a>
|
||||
<span class="sourceLineNo">031</span>/**<a name="line.31"></a>
|
||||
<span class="sourceLineNo">032</span> * Sets the permission required to perform this command.<a name="line.32"></a>
|
||||
<span class="sourceLineNo">033</span> *<a name="line.33"></a>
|
||||
<span class="sourceLineNo">033</span> * <p><a name="line.33"></a>
|
||||
<span class="sourceLineNo">034</span> * Permission format will vary based on implementation platform<a name="line.34"></a>
|
||||
<span class="sourceLineNo">035</span> */<a name="line.35"></a>
|
||||
<span class="sourceLineNo">036</span>@Retention(RetentionPolicy.RUNTIME)<a name="line.36"></a>
|
||||
<span class="sourceLineNo">037</span>@Target({ElementType.METHOD, ElementType.TYPE})<a name="line.37"></a>
|
||||
<span class="sourceLineNo">037</span>@Target({ElementType.METHOD, ElementType.TYPE, ElementType.PARAMETER})<a name="line.37"></a>
|
||||
<span class="sourceLineNo">038</span>public @interface CommandPermission {<a name="line.38"></a>
|
||||
<span class="sourceLineNo">039</span> String value();<a name="line.39"></a>
|
||||
<span class="sourceLineNo">040</span>}<a name="line.40"></a>
|
||||
|
||||
@@ -181,7 +181,7 @@ extends co.aikar.commands.CommandCompletions<co.aikar.commands.CommandComplet
|
||||
<!-- -->
|
||||
</a>
|
||||
<h3>Methods inherited from class co.aikar.commands.CommandCompletions</h3>
|
||||
<code>registerStaticCompletion, registerStaticCompletion, registerStaticCompletion, registerStaticCompletion</code></li>
|
||||
<code>registerStaticCompletion, registerStaticCompletion, registerStaticCompletion, registerStaticCompletion, setDefaultCompletion</code></li>
|
||||
</ul>
|
||||
<ul class="blockList">
|
||||
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
|
||||
|
||||
@@ -141,7 +141,7 @@ extends co.aikar.commands.CommandExecutionContext<<a href="../../../co/aikar/
|
||||
<!-- -->
|
||||
</a>
|
||||
<h3>Methods inherited from class co.aikar.commands.CommandExecutionContext</h3>
|
||||
<code>canOverridePlayerContext, getAnnotation, getAnnotationValue, getAnnotationValue, getArgs, getBooleanFlagValue, getBooleanFlagValue, getCmd, getDoubleFlagValue, getFirstArg, getFlags, getFlagValue, getFlagValue, getFlagValue, getFlagValue, getFlagValue, getFlagValue, getFloatFlagValue, getIndex, getIntFlagValue, getIssuer, getLastArg, getLongFlagValue, getNumParams, getParam, getPassedArgs, getResolvedArg, getResolvedArg, getResolvedArg, hasAnnotation, hasFlag, isLastArg, isOptional, joinArgs, joinArgs, popFirstArg, popLastArg</code></li>
|
||||
<code>canOverridePlayerContext, getAnnotation, getAnnotationValue, getAnnotationValue, getArgs, getBooleanFlagValue, getBooleanFlagValue, getCmd, getDoubleFlagValue, getFirstArg, getFlags, getFlagValue, getFlagValue, getFlagValue, getFlagValue, getFlagValue, getFlagValue, getFloatFlagValue, getIndex, getIntFlagValue, getIssuer, getLastArg, getLongFlagValue, getNumParams, getParam, getParameterPermissions, getPassedArgs, getResolvedArg, getResolvedArg, getResolvedArg, hasAnnotation, hasFlag, isLastArg, isOptional, joinArgs, joinArgs, popFirstArg, popLastArg</code></li>
|
||||
</ul>
|
||||
<ul class="blockList">
|
||||
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
|
||||
|
||||
@@ -309,7 +309,7 @@ extends co.aikar.commands.CommandManager<net.dv8tion.jda.core.events.message.
|
||||
<!-- -->
|
||||
</a>
|
||||
<h3>Methods inherited from class co.aikar.commands.CommandManager</h3>
|
||||
<code>addSupportedLanguage, createConditionContext, createRegisteredCommand, enableUnstableAPI, formatMessage, generateCommandHelp, generateCommandHelp, generateCommandHelp, generateCommandHelp, getCommandConditions, getCommandReplacements, getCurrentCommandIssuer, getCurrentCommandManager, getCurrentCommandOperationContext, getDefaultExceptionHandler, getDefaultFormatter, getDefaultHelpPerPage, getFormat, getHelpFormatter, getIssuerLocale, getRootCommand, getSupportedLanguages, handleUncaughtException, hasPermission, isLoggingUnhandledExceptions, log, notifyLocaleChange, obtainRootCommand, onLocaleChange, registerDependency, registerDependency, sendMessage, sendMessage, setDefaultExceptionHandler, setDefaultExceptionHandler, setDefaultFormatter, setDefaultHelpPerPage, setFormat, setFormat, setFormat, setHelpFormatter, setIssuerLocale, usePerIssuerLocale, usingPerIssuerLocale</code></li>
|
||||
<code>addSupportedLanguage, createConditionContext, createRegisteredCommand, enableUnstableAPI, formatMessage, generateCommandHelp, generateCommandHelp, generateCommandHelp, generateCommandHelp, getCommandConditions, getCommandReplacements, getCurrentCommandIssuer, getCurrentCommandManager, getCurrentCommandOperationContext, getDefaultExceptionHandler, getDefaultFormatter, getDefaultHelpPerPage, getFormat, getHelpFormatter, getIssuerLocale, getRootCommand, getSupportedLanguages, handleUncaughtException, hasPermission, hasPermission, isLoggingUnhandledExceptions, log, notifyLocaleChange, obtainRootCommand, onLocaleChange, registerDependency, registerDependency, sendMessage, sendMessage, setDefaultExceptionHandler, setDefaultExceptionHandler, setDefaultFormatter, setDefaultHelpPerPage, setFormat, setFormat, setFormat, setHelpFormatter, setIssuerLocale, usePerIssuerLocale, usingPerIssuerLocale</code></li>
|
||||
</ul>
|
||||
<ul class="blockList">
|
||||
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
|
||||
|
||||
@@ -162,7 +162,7 @@ extends co.aikar.commands.BukkitCommandCompletions</pre>
|
||||
<!-- -->
|
||||
</a>
|
||||
<h3>Methods inherited from class co.aikar.commands.CommandCompletions</h3>
|
||||
<code>registerAsyncCompletion, registerCompletion, registerStaticCompletion, registerStaticCompletion, registerStaticCompletion, registerStaticCompletion</code></li>
|
||||
<code>registerAsyncCompletion, registerCompletion, registerStaticCompletion, registerStaticCompletion, registerStaticCompletion, registerStaticCompletion, setDefaultCompletion</code></li>
|
||||
</ul>
|
||||
<ul class="blockList">
|
||||
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
|
||||
|
||||
@@ -197,7 +197,7 @@ extends co.aikar.commands.BukkitCommandManager</pre>
|
||||
<!-- -->
|
||||
</a>
|
||||
<h3>Methods inherited from class co.aikar.commands.CommandManager</h3>
|
||||
<code>addSupportedLanguage, enableUnstableAPI, formatMessage, generateCommandHelp, generateCommandHelp, generateCommandHelp, generateCommandHelp, getCommandConditions, getCommandReplacements, getCurrentCommandIssuer, getCurrentCommandManager, getCurrentCommandOperationContext, getDefaultExceptionHandler, getDefaultFormatter, getDefaultHelpPerPage, getFormat, getHelpFormatter, getIssuerLocale, getRootCommand, getSupportedLanguages, hasPermission, isLoggingUnhandledExceptions, log, notifyLocaleChange, obtainRootCommand, onLocaleChange, registerDependency, registerDependency, sendMessage, sendMessage, setDefaultExceptionHandler, setDefaultExceptionHandler, setDefaultFormatter, setDefaultHelpPerPage, setFormat, setFormat, setFormat, setHelpFormatter, setIssuerLocale, usePerIssuerLocale, usingPerIssuerLocale</code></li>
|
||||
<code>addSupportedLanguage, enableUnstableAPI, formatMessage, generateCommandHelp, generateCommandHelp, generateCommandHelp, generateCommandHelp, getCommandConditions, getCommandReplacements, getCurrentCommandIssuer, getCurrentCommandManager, getCurrentCommandOperationContext, getDefaultExceptionHandler, getDefaultFormatter, getDefaultHelpPerPage, getFormat, getHelpFormatter, getIssuerLocale, getRootCommand, getSupportedLanguages, hasPermission, hasPermission, isLoggingUnhandledExceptions, log, notifyLocaleChange, obtainRootCommand, onLocaleChange, registerDependency, registerDependency, sendMessage, sendMessage, setDefaultExceptionHandler, setDefaultExceptionHandler, setDefaultFormatter, setDefaultHelpPerPage, setFormat, setFormat, setFormat, setHelpFormatter, setIssuerLocale, usePerIssuerLocale, usingPerIssuerLocale</code></li>
|
||||
</ul>
|
||||
<ul class="blockList">
|
||||
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
|
||||
|
||||
@@ -158,7 +158,7 @@ extends co.aikar.commands.CommandCompletions<<a href="../../../co/aikar/comma
|
||||
<!-- -->
|
||||
</a>
|
||||
<h3>Methods inherited from class co.aikar.commands.CommandCompletions</h3>
|
||||
<code>registerAsyncCompletion, registerCompletion, registerStaticCompletion, registerStaticCompletion, registerStaticCompletion, registerStaticCompletion</code></li>
|
||||
<code>registerAsyncCompletion, registerCompletion, registerStaticCompletion, registerStaticCompletion, registerStaticCompletion, registerStaticCompletion, setDefaultCompletion</code></li>
|
||||
</ul>
|
||||
<ul class="blockList">
|
||||
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
|
||||
|
||||
@@ -162,7 +162,7 @@ extends co.aikar.commands.CommandExecutionContext<<a href="../../../co/aikar/
|
||||
<!-- -->
|
||||
</a>
|
||||
<h3>Methods inherited from class co.aikar.commands.CommandExecutionContext</h3>
|
||||
<code>canOverridePlayerContext, getAnnotation, getAnnotationValue, getAnnotationValue, getArgs, getBooleanFlagValue, getBooleanFlagValue, getCmd, getDoubleFlagValue, getFirstArg, getFlags, getFlagValue, getFlagValue, getFlagValue, getFlagValue, getFlagValue, getFlagValue, getFloatFlagValue, getIndex, getIntFlagValue, getIssuer, getLastArg, getLongFlagValue, getNumParams, getParam, getPassedArgs, getResolvedArg, getResolvedArg, getResolvedArg, hasAnnotation, hasFlag, isLastArg, isOptional, joinArgs, joinArgs, popFirstArg, popLastArg</code></li>
|
||||
<code>canOverridePlayerContext, getAnnotation, getAnnotationValue, getAnnotationValue, getArgs, getBooleanFlagValue, getBooleanFlagValue, getCmd, getDoubleFlagValue, getFirstArg, getFlags, getFlagValue, getFlagValue, getFlagValue, getFlagValue, getFlagValue, getFlagValue, getFloatFlagValue, getIndex, getIntFlagValue, getIssuer, getLastArg, getLongFlagValue, getNumParams, getParam, getParameterPermissions, getPassedArgs, getResolvedArg, getResolvedArg, getResolvedArg, hasAnnotation, hasFlag, isLastArg, isOptional, joinArgs, joinArgs, popFirstArg, popLastArg</code></li>
|
||||
</ul>
|
||||
<ul class="blockList">
|
||||
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
|
||||
|
||||
@@ -281,7 +281,7 @@ extends co.aikar.commands.CommandManager<org.spongepowered.api.command.Comman
|
||||
<!-- -->
|
||||
</a>
|
||||
<h3>Methods inherited from class co.aikar.commands.CommandManager</h3>
|
||||
<code>addSupportedLanguage, enableUnstableAPI, formatMessage, generateCommandHelp, generateCommandHelp, generateCommandHelp, generateCommandHelp, getCommandConditions, getCommandReplacements, getCurrentCommandIssuer, getCurrentCommandManager, getCurrentCommandOperationContext, getDefaultExceptionHandler, getDefaultFormatter, getDefaultHelpPerPage, getFormat, getHelpFormatter, getIssuerLocale, getRootCommand, getSupportedLanguages, handleUncaughtException, hasPermission, isLoggingUnhandledExceptions, log, notifyLocaleChange, obtainRootCommand, onLocaleChange, registerDependency, registerDependency, sendMessage, sendMessage, setDefaultExceptionHandler, setDefaultExceptionHandler, setDefaultFormatter, setDefaultHelpPerPage, setFormat, setFormat, setFormat, setHelpFormatter, setIssuerLocale, usePerIssuerLocale, usingPerIssuerLocale</code></li>
|
||||
<code>addSupportedLanguage, enableUnstableAPI, formatMessage, generateCommandHelp, generateCommandHelp, generateCommandHelp, generateCommandHelp, getCommandConditions, getCommandReplacements, getCurrentCommandIssuer, getCurrentCommandManager, getCurrentCommandOperationContext, getDefaultExceptionHandler, getDefaultFormatter, getDefaultHelpPerPage, getFormat, getHelpFormatter, getIssuerLocale, getRootCommand, getSupportedLanguages, handleUncaughtException, hasPermission, hasPermission, isLoggingUnhandledExceptions, log, notifyLocaleChange, obtainRootCommand, onLocaleChange, registerDependency, registerDependency, sendMessage, sendMessage, setDefaultExceptionHandler, setDefaultExceptionHandler, setDefaultFormatter, setDefaultHelpPerPage, setFormat, setFormat, setFormat, setHelpFormatter, setIssuerLocale, usePerIssuerLocale, usingPerIssuerLocale</code></li>
|
||||
</ul>
|
||||
<ul class="blockList">
|
||||
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
|
||||
|
||||
@@ -159,7 +159,7 @@ extends co.aikar.commands.CommandCompletions<<a href="../../../co/aikar/comma
|
||||
<!-- -->
|
||||
</a>
|
||||
<h3>Methods inherited from class co.aikar.commands.CommandCompletions</h3>
|
||||
<code>registerAsyncCompletion, registerCompletion, registerStaticCompletion, registerStaticCompletion, registerStaticCompletion, registerStaticCompletion</code></li>
|
||||
<code>registerAsyncCompletion, registerCompletion, registerStaticCompletion, registerStaticCompletion, registerStaticCompletion, registerStaticCompletion, setDefaultCompletion</code></li>
|
||||
</ul>
|
||||
<ul class="blockList">
|
||||
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
|
||||
|
||||
@@ -162,7 +162,7 @@ extends co.aikar.commands.CommandExecutionContext<<a href="../../../co/aikar/
|
||||
<!-- -->
|
||||
</a>
|
||||
<h3>Methods inherited from class co.aikar.commands.CommandExecutionContext</h3>
|
||||
<code>canOverridePlayerContext, getAnnotation, getAnnotationValue, getAnnotationValue, getArgs, getBooleanFlagValue, getBooleanFlagValue, getCmd, getDoubleFlagValue, getFirstArg, getFlags, getFlagValue, getFlagValue, getFlagValue, getFlagValue, getFlagValue, getFlagValue, getFloatFlagValue, getIndex, getIntFlagValue, getIssuer, getLastArg, getLongFlagValue, getNumParams, getParam, getPassedArgs, getResolvedArg, getResolvedArg, getResolvedArg, hasAnnotation, hasFlag, isLastArg, isOptional, joinArgs, joinArgs, popFirstArg, popLastArg</code></li>
|
||||
<code>canOverridePlayerContext, getAnnotation, getAnnotationValue, getAnnotationValue, getArgs, getBooleanFlagValue, getBooleanFlagValue, getCmd, getDoubleFlagValue, getFirstArg, getFlags, getFlagValue, getFlagValue, getFlagValue, getFlagValue, getFlagValue, getFlagValue, getFloatFlagValue, getIndex, getIntFlagValue, getIssuer, getLastArg, getLongFlagValue, getNumParams, getParam, getParameterPermissions, getPassedArgs, getResolvedArg, getResolvedArg, getResolvedArg, hasAnnotation, hasFlag, isLastArg, isOptional, joinArgs, joinArgs, popFirstArg, popLastArg</code></li>
|
||||
</ul>
|
||||
<ul class="blockList">
|
||||
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
|
||||
|
||||
@@ -302,7 +302,7 @@ extends co.aikar.commands.CommandManager<com.velocitypowered.api.command.Comm
|
||||
<!-- -->
|
||||
</a>
|
||||
<h3>Methods inherited from class co.aikar.commands.CommandManager</h3>
|
||||
<code>addSupportedLanguage, enableUnstableAPI, formatMessage, generateCommandHelp, generateCommandHelp, generateCommandHelp, generateCommandHelp, getCommandConditions, getCommandReplacements, getCurrentCommandIssuer, getCurrentCommandManager, getCurrentCommandOperationContext, getDefaultExceptionHandler, getDefaultFormatter, getDefaultHelpPerPage, getFormat, getHelpFormatter, getIssuerLocale, getRootCommand, getSupportedLanguages, handleUncaughtException, hasPermission, isLoggingUnhandledExceptions, log, notifyLocaleChange, obtainRootCommand, onLocaleChange, registerDependency, registerDependency, sendMessage, sendMessage, setDefaultExceptionHandler, setDefaultExceptionHandler, setDefaultFormatter, setDefaultHelpPerPage, setFormat, setFormat, setFormat, setHelpFormatter, setIssuerLocale, usePerIssuerLocale, usingPerIssuerLocale</code></li>
|
||||
<code>addSupportedLanguage, enableUnstableAPI, formatMessage, generateCommandHelp, generateCommandHelp, generateCommandHelp, generateCommandHelp, getCommandConditions, getCommandReplacements, getCurrentCommandIssuer, getCurrentCommandManager, getCurrentCommandOperationContext, getDefaultExceptionHandler, getDefaultFormatter, getDefaultHelpPerPage, getFormat, getHelpFormatter, getIssuerLocale, getRootCommand, getSupportedLanguages, handleUncaughtException, hasPermission, hasPermission, isLoggingUnhandledExceptions, log, notifyLocaleChange, obtainRootCommand, onLocaleChange, registerDependency, registerDependency, sendMessage, sendMessage, setDefaultExceptionHandler, setDefaultExceptionHandler, setDefaultFormatter, setDefaultHelpPerPage, setFormat, setFormat, setFormat, setHelpFormatter, setIssuerLocale, usePerIssuerLocale, usingPerIssuerLocale</code></li>
|
||||
</ul>
|
||||
<ul class="blockList">
|
||||
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
|
||||
|
||||
Reference in New Issue
Block a user