geforkt von Mirrors/FastAsyncWorldEdit
Cleaned up InvalidUsageException and CommandException to be less confusing.
Dieser Commit ist enthalten in:
Ursprung
08ad5f4451
Commit
88f0f1061a
@ -19,10 +19,13 @@
|
|||||||
|
|
||||||
package com.sk89q.minecraft.util.commands;
|
package com.sk89q.minecraft.util.commands;
|
||||||
|
|
||||||
|
import javax.annotation.Nullable;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.ListIterator;
|
import java.util.ListIterator;
|
||||||
|
|
||||||
|
import static com.google.common.base.Preconditions.checkNotNull;
|
||||||
|
|
||||||
public class CommandException extends Exception {
|
public class CommandException extends Exception {
|
||||||
|
|
||||||
private static final long serialVersionUID = 870638193072101739L;
|
private static final long serialVersionUID = 870638193072101739L;
|
||||||
@ -48,7 +51,16 @@ public class CommandException extends Exception {
|
|||||||
commandStack.add(name);
|
commandStack.add(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
public String toStackString(String prefix, String spacedSuffix) {
|
/**
|
||||||
|
* Gets the command that was called, which will include the sub-command
|
||||||
|
* (i.e. "/br sphere").
|
||||||
|
*
|
||||||
|
* @param prefix the command shebang character (such as "/") -- may be empty
|
||||||
|
* @param spacedSuffix a suffix to put at the end (optional) -- may be null
|
||||||
|
* @return the command that was used
|
||||||
|
*/
|
||||||
|
public String getCommandUsed(String prefix, @Nullable String spacedSuffix) {
|
||||||
|
checkNotNull(prefix);
|
||||||
StringBuilder builder = new StringBuilder();
|
StringBuilder builder = new StringBuilder();
|
||||||
if (prefix != null) {
|
if (prefix != null) {
|
||||||
builder.append(prefix);
|
builder.append(prefix);
|
||||||
|
@ -222,8 +222,8 @@ public final class CommandManager {
|
|||||||
} catch (CommandPermissionsException e) {
|
} catch (CommandPermissionsException e) {
|
||||||
actor.printError("You don't have permission to do this.");
|
actor.printError("You don't have permission to do this.");
|
||||||
} catch (InvalidUsageException e) {
|
} catch (InvalidUsageException e) {
|
||||||
if (e.isFullUsageSuggested()) {
|
if (e.isFullHelpSuggested()) {
|
||||||
actor.printRaw(ColorCodeBuilder.asColorCodes(new CommandUsageBox(e.getCommand(), e.toStackString("/", ""), locals)));
|
actor.printRaw(ColorCodeBuilder.asColorCodes(new CommandUsageBox(e.getCommand(), e.getCommandUsed("/", ""), locals)));
|
||||||
String message = e.getMessage();
|
String message = e.getMessage();
|
||||||
if (message != null) {
|
if (message != null) {
|
||||||
actor.printError(message);
|
actor.printError(message);
|
||||||
@ -231,7 +231,7 @@ public final class CommandManager {
|
|||||||
} else {
|
} else {
|
||||||
String message = e.getMessage();
|
String message = e.getMessage();
|
||||||
actor.printError(message != null ? message : "The command was not used properly (no more help available).");
|
actor.printError(message != null ? message : "The command was not used properly (no more help available).");
|
||||||
actor.printError(e.getUsage("/"));
|
actor.printError(e.getSimpleUsageString("/"));
|
||||||
}
|
}
|
||||||
} catch (WrappedCommandException e) {
|
} catch (WrappedCommandException e) {
|
||||||
Throwable t = e.getCause();
|
Throwable t = e.getCause();
|
||||||
|
@ -21,38 +21,79 @@ package com.sk89q.worldedit.util.command;
|
|||||||
|
|
||||||
import com.sk89q.minecraft.util.commands.CommandException;
|
import com.sk89q.minecraft.util.commands.CommandException;
|
||||||
|
|
||||||
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
import static com.google.common.base.Preconditions.checkNotNull;
|
import static com.google.common.base.Preconditions.checkNotNull;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Thrown when a command is not used properly.
|
* Thrown when a command is not used properly.
|
||||||
|
* </p>
|
||||||
|
* When handling this exception, print the error message if it is not null.
|
||||||
|
* Print a one line help instruction unless {@link #isFullHelpSuggested()}
|
||||||
|
* is true, which, in that case, the full help of the command should be shown.
|
||||||
|
* </p>
|
||||||
|
* If no error message is set and full help is not to be shown, then a generic
|
||||||
|
* "you used this command incorrectly" message should be shown.
|
||||||
*/
|
*/
|
||||||
public class InvalidUsageException extends CommandException {
|
public class InvalidUsageException extends CommandException {
|
||||||
|
|
||||||
private static final long serialVersionUID = -3222004168669490390L;
|
private static final long serialVersionUID = -3222004168669490390L;
|
||||||
private final CommandCallable command;
|
private final CommandCallable command;
|
||||||
private final boolean fullUsageSuggested;
|
private final boolean fullHelpSuggested;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a new instance with no error message and with no suggestion
|
||||||
|
* that full and complete help for the command should be shown. This will
|
||||||
|
* result in a generic error message.
|
||||||
|
*
|
||||||
|
* @param command the command
|
||||||
|
*/
|
||||||
public InvalidUsageException(CommandCallable command) {
|
public InvalidUsageException(CommandCallable command) {
|
||||||
this(null, command);
|
this(null, command);
|
||||||
}
|
}
|
||||||
|
|
||||||
public InvalidUsageException(String message, CommandCallable command) {
|
/**
|
||||||
|
* Create a new instance with a message and with no suggestion
|
||||||
|
* that full and complete help for the command should be shown.
|
||||||
|
*
|
||||||
|
* @param message the message
|
||||||
|
* @param command the command
|
||||||
|
*/
|
||||||
|
public InvalidUsageException(@Nullable String message, CommandCallable command) {
|
||||||
this(message, command, false);
|
this(message, command, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public InvalidUsageException(String message, CommandCallable command, boolean fullUsageSuggested) {
|
/**
|
||||||
|
* Create a new instance with a message.
|
||||||
|
*
|
||||||
|
* @param message the message
|
||||||
|
* @param command the command
|
||||||
|
* @param fullHelpSuggested true if the full help for the command should be shown
|
||||||
|
*/
|
||||||
|
public InvalidUsageException(@Nullable String message, CommandCallable command, boolean fullHelpSuggested) {
|
||||||
super(message);
|
super(message);
|
||||||
checkNotNull(command);
|
checkNotNull(command);
|
||||||
this.command = command;
|
this.command = command;
|
||||||
this.fullUsageSuggested = fullUsageSuggested;
|
this.fullHelpSuggested = fullHelpSuggested;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the command.
|
||||||
|
*
|
||||||
|
* @return the command
|
||||||
|
*/
|
||||||
public CommandCallable getCommand() {
|
public CommandCallable getCommand() {
|
||||||
return command;
|
return command;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getUsage(String prefix) {
|
/**
|
||||||
return toStackString(prefix, command.getDescription().getUsage());
|
* Get a simple usage string.
|
||||||
|
*
|
||||||
|
* @param prefix the command shebang (such as "/") -- may be blank
|
||||||
|
* @return a usage string
|
||||||
|
*/
|
||||||
|
public String getSimpleUsageString(String prefix) {
|
||||||
|
return getCommandUsed(prefix, command.getDescription().getUsage());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -60,7 +101,7 @@ public class InvalidUsageException extends CommandException {
|
|||||||
*
|
*
|
||||||
* @return show full usage
|
* @return show full usage
|
||||||
*/
|
*/
|
||||||
public boolean isFullUsageSuggested() {
|
public boolean isFullHelpSuggested() {
|
||||||
return fullUsageSuggested;
|
return fullHelpSuggested;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren