Add exception messages so invalid input doesn't result in 'Invalid Command Argument: null' (#13)

Co-authored-by: Alexander Söderberg <Sauilitired@users.noreply.github.com>
This commit is contained in:
Jason 2020-09-30 01:44:07 -07:00 committed by GitHub
parent bea9c54841
commit 09e3e7aa13
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 48 additions and 10 deletions

View file

@ -26,13 +26,17 @@ package cloud.commandframework.bukkit;
import cloud.commandframework.CommandManager;
import cloud.commandframework.CommandTree;
import cloud.commandframework.bukkit.parsers.MaterialArgument;
import cloud.commandframework.bukkit.parsers.OfflinePlayerArgument;
import cloud.commandframework.bukkit.parsers.PlayerArgument;
import cloud.commandframework.bukkit.parsers.WorldArgument;
import cloud.commandframework.execution.CommandExecutionCoordinator;
import io.leangen.geantyref.TypeToken;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.OfflinePlayer;
import org.bukkit.World;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.Plugin;
import org.checkerframework.checker.nullness.qual.NonNull;
@ -87,6 +91,11 @@ public class BukkitCommandManager<C> extends CommandManager<C> {
this.getParserRegistry().registerParserSupplier(TypeToken.get(World.class), params -> new WorldArgument.WorldParser<>());
this.getParserRegistry().registerParserSupplier(TypeToken.get(Material.class),
params -> new MaterialArgument.MaterialParser<>());
this.getParserRegistry()
.registerParserSupplier(TypeToken.of(Player.class), params -> new PlayerArgument.PlayerParser<>());
this.getParserRegistry()
.registerParserSupplier(TypeToken.of(OfflinePlayer.class),
params -> new OfflinePlayerArgument.OfflinePlayerParser<>());
/* Try to determine the Minecraft version */
int version = -1;

View file

@ -124,7 +124,7 @@ public final class OfflinePlayerArgument<C> extends CommandArgument<C, OfflinePl
}
private static final class OfflinePlayerParser<C> implements ArgumentParser<C, OfflinePlayer> {
public static final class OfflinePlayerParser<C> implements ArgumentParser<C, OfflinePlayer> {
@Override
public @NonNull ArgumentParseResult<OfflinePlayer> parse(@NonNull final CommandContext<C> commandContext,
@ -160,14 +160,14 @@ public final class OfflinePlayerArgument<C> extends CommandArgument<C, OfflinePl
/**
* Player parse exception
* OfflinePlayer parse exception
*/
public static final class OfflinePlayerParseException extends IllegalArgumentException {
private final String input;
/**
* Construct a new boolean parse exception
* Construct a new OfflinePlayer parse exception
*
* @param input String input
*/
@ -184,5 +184,9 @@ public final class OfflinePlayerArgument<C> extends CommandArgument<C, OfflinePl
return input;
}
@Override
public String getMessage() {
return String.format("No player found for input '%s'.", input);
}
}
}

View file

@ -119,7 +119,7 @@ public final class PlayerArgument<C> extends CommandArgument<C, Player> {
}
private static final class PlayerParser<C> implements ArgumentParser<C, Player> {
public static final class PlayerParser<C> implements ArgumentParser<C, Player> {
@Override
public @NonNull ArgumentParseResult<Player> parse(@NonNull final CommandContext<C> commandContext,
@ -162,7 +162,7 @@ public final class PlayerArgument<C> extends CommandArgument<C, Player> {
private final String input;
/**
* Construct a new boolean parse exception
* Construct a new Player parse exception
*
* @param input String input
*/
@ -179,5 +179,9 @@ public final class PlayerArgument<C> extends CommandArgument<C, Player> {
return input;
}
@Override
public String getMessage() {
return String.format("No player found for input '%s'.", input);
}
}
}