🎨 Add caption for string "No input was provided"

This commit is contained in:
jmp 2020-10-16 12:18:39 -07:00 • committed by Alexander Söderberg
parent c67cc35cf6
commit fba29041e6
29 changed files with 191 additions and 31 deletions

View file

@ -26,6 +26,7 @@ package cloud.commandframework.arguments;
import cloud.commandframework.arguments.parser.ArgumentParseResult; import cloud.commandframework.arguments.parser.ArgumentParseResult;
import cloud.commandframework.arguments.parser.ArgumentParser; import cloud.commandframework.arguments.parser.ArgumentParser;
import cloud.commandframework.context.CommandContext; import cloud.commandframework.context.CommandContext;
import cloud.commandframework.exceptions.parsing.NoInputProvidedException;
import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.NonNull;
import java.util.ArrayList; import java.util.ArrayList;
@ -112,7 +113,10 @@ public final class StaticArgument<C> extends CommandArgument<C, String> {
) { ) {
final String string = inputQueue.peek(); final String string = inputQueue.peek();
if (string == null) { if (string == null) {
return ArgumentParseResult.failure(new NullPointerException("No input provided")); return ArgumentParseResult.failure(new NoInputProvidedException(
StaticArgumentParser.class,
commandContext
));
} }
if (this.allAcceptedAliases.contains(string)) { if (this.allAcceptedAliases.contains(string)) {
inputQueue.remove(); inputQueue.remove();

View file

@ -28,6 +28,7 @@ import cloud.commandframework.captions.Caption;
import cloud.commandframework.captions.CaptionVariable; import cloud.commandframework.captions.CaptionVariable;
import cloud.commandframework.captions.StandardCaptionKeys; import cloud.commandframework.captions.StandardCaptionKeys;
import cloud.commandframework.context.CommandContext; import cloud.commandframework.context.CommandContext;
import cloud.commandframework.exceptions.parsing.NoInputProvidedException;
import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.NonNull;
import java.util.Queue; import java.util.Queue;
@ -89,7 +90,10 @@ public final class RegexPreprocessor<C> implements BiFunction<@NonNull CommandCo
) { ) {
final String head = strings.peek(); final String head = strings.peek();
if (head == null) { if (head == null) {
throw new NullPointerException("No input"); return ArgumentParseResult.failure(new NoInputProvidedException(
RegexPreprocessor.class,
context
));
} }
if (predicate.test(head)) { if (predicate.test(head)) {
return ArgumentParseResult.success(true); return ArgumentParseResult.success(true);

View file

@ -29,6 +29,7 @@ import cloud.commandframework.arguments.parser.ArgumentParser;
import cloud.commandframework.captions.CaptionVariable; import cloud.commandframework.captions.CaptionVariable;
import cloud.commandframework.captions.StandardCaptionKeys; import cloud.commandframework.captions.StandardCaptionKeys;
import cloud.commandframework.context.CommandContext; import cloud.commandframework.context.CommandContext;
import cloud.commandframework.exceptions.parsing.NoInputProvidedException;
import cloud.commandframework.exceptions.parsing.ParserException; import cloud.commandframework.exceptions.parsing.ParserException;
import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.NonNull;
import org.checkerframework.checker.nullness.qual.Nullable; import org.checkerframework.checker.nullness.qual.Nullable;
@ -173,7 +174,10 @@ public final class BooleanArgument<C> extends CommandArgument<C, Boolean> {
) { ) {
final String input = inputQueue.peek(); final String input = inputQueue.peek();
if (input == null) { if (input == null) {
return ArgumentParseResult.failure(new NullPointerException("No input was provided")); return ArgumentParseResult.failure(new NoInputProvidedException(
BooleanParser.class,
commandContext
));
} }
inputQueue.remove(); inputQueue.remove();

View file

@ -27,6 +27,7 @@ import cloud.commandframework.arguments.CommandArgument;
import cloud.commandframework.arguments.parser.ArgumentParseResult; import cloud.commandframework.arguments.parser.ArgumentParseResult;
import cloud.commandframework.arguments.parser.ArgumentParser; import cloud.commandframework.arguments.parser.ArgumentParser;
import cloud.commandframework.context.CommandContext; import cloud.commandframework.context.CommandContext;
import cloud.commandframework.exceptions.parsing.NoInputProvidedException;
import cloud.commandframework.exceptions.parsing.NumberParseException; import cloud.commandframework.exceptions.parsing.NumberParseException;
import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.NonNull;
import org.checkerframework.checker.nullness.qual.Nullable; import org.checkerframework.checker.nullness.qual.Nullable;
@ -189,7 +190,10 @@ public final class ByteArgument<C> extends CommandArgument<C, Byte> {
) { ) {
final String input = inputQueue.peek(); final String input = inputQueue.peek();
if (input == null) { if (input == null) {
return ArgumentParseResult.failure(new NullPointerException("No input was provided")); return ArgumentParseResult.failure(new NoInputProvidedException(
ByteParser.class,
commandContext
));
} }
try { try {
final byte value = Byte.parseByte(input); final byte value = Byte.parseByte(input);

View file

@ -29,6 +29,7 @@ import cloud.commandframework.arguments.parser.ArgumentParser;
import cloud.commandframework.captions.CaptionVariable; import cloud.commandframework.captions.CaptionVariable;
import cloud.commandframework.captions.StandardCaptionKeys; import cloud.commandframework.captions.StandardCaptionKeys;
import cloud.commandframework.context.CommandContext; import cloud.commandframework.context.CommandContext;
import cloud.commandframework.exceptions.parsing.NoInputProvidedException;
import cloud.commandframework.exceptions.parsing.ParserException; import cloud.commandframework.exceptions.parsing.ParserException;
import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.NonNull;
import org.checkerframework.checker.nullness.qual.Nullable; import org.checkerframework.checker.nullness.qual.Nullable;
@ -129,7 +130,10 @@ public final class CharArgument<C> extends CommandArgument<C, Character> {
) { ) {
final String input = inputQueue.peek(); final String input = inputQueue.peek();
if (input == null) { if (input == null) {
return ArgumentParseResult.failure(new NullPointerException("No input was provided")); return ArgumentParseResult.failure(new NoInputProvidedException(
CharacterParser.class,
commandContext
));
} }
if (input.length() != 1) { if (input.length() != 1) {

View file

@ -27,6 +27,7 @@ import cloud.commandframework.arguments.CommandArgument;
import cloud.commandframework.arguments.parser.ArgumentParseResult; import cloud.commandframework.arguments.parser.ArgumentParseResult;
import cloud.commandframework.arguments.parser.ArgumentParser; import cloud.commandframework.arguments.parser.ArgumentParser;
import cloud.commandframework.context.CommandContext; import cloud.commandframework.context.CommandContext;
import cloud.commandframework.exceptions.parsing.NoInputProvidedException;
import cloud.commandframework.exceptions.parsing.NumberParseException; import cloud.commandframework.exceptions.parsing.NumberParseException;
import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.NonNull;
import org.checkerframework.checker.nullness.qual.Nullable; import org.checkerframework.checker.nullness.qual.Nullable;
@ -189,7 +190,10 @@ public final class DoubleArgument<C> extends CommandArgument<C, Double> {
) { ) {
final String input = inputQueue.peek(); final String input = inputQueue.peek();
if (input == null) { if (input == null) {
return ArgumentParseResult.failure(new NullPointerException("No input was provided")); return ArgumentParseResult.failure(new NoInputProvidedException(
DoubleParser.class,
commandContext
));
} }
try { try {
final double value = Double.parseDouble(input); final double value = Double.parseDouble(input);

View file

@ -29,6 +29,7 @@ import cloud.commandframework.arguments.parser.ArgumentParser;
import cloud.commandframework.captions.CaptionVariable; import cloud.commandframework.captions.CaptionVariable;
import cloud.commandframework.captions.StandardCaptionKeys; import cloud.commandframework.captions.StandardCaptionKeys;
import cloud.commandframework.context.CommandContext; import cloud.commandframework.context.CommandContext;
import cloud.commandframework.exceptions.parsing.NoInputProvidedException;
import cloud.commandframework.exceptions.parsing.ParserException; import cloud.commandframework.exceptions.parsing.ParserException;
import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.NonNull;
import org.checkerframework.checker.nullness.qual.Nullable; import org.checkerframework.checker.nullness.qual.Nullable;
@ -167,7 +168,10 @@ public class EnumArgument<C, E extends Enum<E>> extends CommandArgument<C, E> {
) { ) {
final String input = inputQueue.peek(); final String input = inputQueue.peek();
if (input == null) { if (input == null) {
return ArgumentParseResult.failure(new NullPointerException("No input was provided")); return ArgumentParseResult.failure(new NoInputProvidedException(
EnumParser.class,
commandContext
));
} }
for (final E value : this.allowedValues) { for (final E value : this.allowedValues) {

View file

@ -27,6 +27,7 @@ import cloud.commandframework.arguments.CommandArgument;
import cloud.commandframework.arguments.parser.ArgumentParseResult; import cloud.commandframework.arguments.parser.ArgumentParseResult;
import cloud.commandframework.arguments.parser.ArgumentParser; import cloud.commandframework.arguments.parser.ArgumentParser;
import cloud.commandframework.context.CommandContext; import cloud.commandframework.context.CommandContext;
import cloud.commandframework.exceptions.parsing.NoInputProvidedException;
import cloud.commandframework.exceptions.parsing.NumberParseException; import cloud.commandframework.exceptions.parsing.NumberParseException;
import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.NonNull;
import org.checkerframework.checker.nullness.qual.Nullable; import org.checkerframework.checker.nullness.qual.Nullable;
@ -189,7 +190,10 @@ public final class FloatArgument<C> extends CommandArgument<C, Float> {
) { ) {
final String input = inputQueue.peek(); final String input = inputQueue.peek();
if (input == null) { if (input == null) {
return ArgumentParseResult.failure(new NullPointerException("No input was provided")); return ArgumentParseResult.failure(new NoInputProvidedException(
FloatParser.class,
commandContext
));
} }
try { try {
final float value = Float.parseFloat(input); final float value = Float.parseFloat(input);

View file

@ -27,6 +27,7 @@ import cloud.commandframework.arguments.CommandArgument;
import cloud.commandframework.arguments.parser.ArgumentParseResult; import cloud.commandframework.arguments.parser.ArgumentParseResult;
import cloud.commandframework.arguments.parser.ArgumentParser; import cloud.commandframework.arguments.parser.ArgumentParser;
import cloud.commandframework.context.CommandContext; import cloud.commandframework.context.CommandContext;
import cloud.commandframework.exceptions.parsing.NoInputProvidedException;
import cloud.commandframework.exceptions.parsing.NumberParseException; import cloud.commandframework.exceptions.parsing.NumberParseException;
import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.NonNull;
import org.checkerframework.checker.nullness.qual.Nullable; import org.checkerframework.checker.nullness.qual.Nullable;
@ -226,7 +227,10 @@ public final class IntegerArgument<C> extends CommandArgument<C, Integer> {
) { ) {
final String input = inputQueue.peek(); final String input = inputQueue.peek();
if (input == null) { if (input == null) {
return ArgumentParseResult.failure(new NullPointerException("No input was provided")); return ArgumentParseResult.failure(new NoInputProvidedException(
IntegerParser.class,
commandContext
));
} }
try { try {
final int value = Integer.parseInt(input); final int value = Integer.parseInt(input);

View file

@ -27,6 +27,7 @@ import cloud.commandframework.arguments.CommandArgument;
import cloud.commandframework.arguments.parser.ArgumentParseResult; import cloud.commandframework.arguments.parser.ArgumentParseResult;
import cloud.commandframework.arguments.parser.ArgumentParser; import cloud.commandframework.arguments.parser.ArgumentParser;
import cloud.commandframework.context.CommandContext; import cloud.commandframework.context.CommandContext;
import cloud.commandframework.exceptions.parsing.NoInputProvidedException;
import cloud.commandframework.exceptions.parsing.NumberParseException; import cloud.commandframework.exceptions.parsing.NumberParseException;
import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.NonNull;
import org.checkerframework.checker.nullness.qual.Nullable; import org.checkerframework.checker.nullness.qual.Nullable;
@ -183,7 +184,10 @@ public final class LongArgument<C> extends CommandArgument<C, Long> {
) { ) {
final String input = inputQueue.peek(); final String input = inputQueue.peek();
if (input == null) { if (input == null) {
return ArgumentParseResult.failure(new NullPointerException("No input was provided")); return ArgumentParseResult.failure(new NoInputProvidedException(
LongParser.class,
commandContext
));
} }
try { try {
final long value = Long.parseLong(input); final long value = Long.parseLong(input);

View file

@ -27,6 +27,7 @@ import cloud.commandframework.arguments.CommandArgument;
import cloud.commandframework.arguments.parser.ArgumentParseResult; import cloud.commandframework.arguments.parser.ArgumentParseResult;
import cloud.commandframework.arguments.parser.ArgumentParser; import cloud.commandframework.arguments.parser.ArgumentParser;
import cloud.commandframework.context.CommandContext; import cloud.commandframework.context.CommandContext;
import cloud.commandframework.exceptions.parsing.NoInputProvidedException;
import cloud.commandframework.exceptions.parsing.NumberParseException; import cloud.commandframework.exceptions.parsing.NumberParseException;
import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.NonNull;
import org.checkerframework.checker.nullness.qual.Nullable; import org.checkerframework.checker.nullness.qual.Nullable;
@ -189,7 +190,10 @@ public final class ShortArgument<C> extends CommandArgument<C, Short> {
) { ) {
final String input = inputQueue.peek(); final String input = inputQueue.peek();
if (input == null) { if (input == null) {
return ArgumentParseResult.failure(new NullPointerException("No input was provided")); return ArgumentParseResult.failure(new NoInputProvidedException(
ShortParser.class,
commandContext
));
} }
try { try {
final short value = Short.parseShort(input); final short value = Short.parseShort(input);

View file

@ -29,6 +29,7 @@ import cloud.commandframework.arguments.parser.ArgumentParser;
import cloud.commandframework.captions.CaptionVariable; import cloud.commandframework.captions.CaptionVariable;
import cloud.commandframework.captions.StandardCaptionKeys; import cloud.commandframework.captions.StandardCaptionKeys;
import cloud.commandframework.context.CommandContext; import cloud.commandframework.context.CommandContext;
import cloud.commandframework.exceptions.parsing.NoInputProvidedException;
import cloud.commandframework.exceptions.parsing.ParserException; import cloud.commandframework.exceptions.parsing.ParserException;
import cloud.commandframework.util.StringUtils; import cloud.commandframework.util.StringUtils;
import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.NonNull;
@ -297,7 +298,10 @@ public final class StringArgument<C> extends CommandArgument<C, String> {
) { ) {
final String input = inputQueue.peek(); final String input = inputQueue.peek();
if (input == null) { if (input == null) {
return ArgumentParseResult.failure(new NullPointerException("No input was provided")); return ArgumentParseResult.failure(new NoInputProvidedException(
StringParser.class,
commandContext
));
} }
if (this.stringMode == StringMode.SINGLE) { if (this.stringMode == StringMode.SINGLE) {

View file

@ -29,6 +29,7 @@ import cloud.commandframework.arguments.parser.ArgumentParser;
import cloud.commandframework.captions.CaptionVariable; import cloud.commandframework.captions.CaptionVariable;
import cloud.commandframework.captions.StandardCaptionKeys; import cloud.commandframework.captions.StandardCaptionKeys;
import cloud.commandframework.context.CommandContext; import cloud.commandframework.context.CommandContext;
import cloud.commandframework.exceptions.parsing.NoInputProvidedException;
import cloud.commandframework.exceptions.parsing.ParserException; import cloud.commandframework.exceptions.parsing.ParserException;
import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.NonNull;
import org.checkerframework.checker.nullness.qual.Nullable; import org.checkerframework.checker.nullness.qual.Nullable;
@ -128,7 +129,10 @@ public final class UUIDArgument<C> extends CommandArgument<C, UUID> {
) { ) {
final String input = inputQueue.peek(); final String input = inputQueue.peek();
if (input == null) { if (input == null) {
return ArgumentParseResult.failure(new NullPointerException("No input was provided")); return ArgumentParseResult.failure(new NoInputProvidedException(
UUIDParser.class,
commandContext
));
} }
try { try {

View file

@ -36,6 +36,10 @@ import java.util.function.BiFunction;
*/ */
public class SimpleCaptionRegistry<C> implements FactoryDelegatingCaptionRegistry<C> { public class SimpleCaptionRegistry<C> implements FactoryDelegatingCaptionRegistry<C> {
/**
* Default caption for {@link StandardCaptionKeys#ARGUMENT_PARSE_FAILURE_NO_INPUT_PROVIDED}.
*/
public static final String ARGUMENT_PARSE_FAILURE_NO_INPUT_PROVIDED = "No input was provided";
/** /**
* Default caption for {@link StandardCaptionKeys#ARGUMENT_PARSE_FAILURE_BOOLEAN}. * Default caption for {@link StandardCaptionKeys#ARGUMENT_PARSE_FAILURE_BOOLEAN}.
*/ */
@ -84,6 +88,10 @@ public class SimpleCaptionRegistry<C> implements FactoryDelegatingCaptionRegistr
private final Map<Caption, BiFunction<Caption, C, String>> messageFactories = new HashMap<>(); private final Map<Caption, BiFunction<Caption, C, String>> messageFactories = new HashMap<>();
protected SimpleCaptionRegistry() { protected SimpleCaptionRegistry() {
this.registerMessageFactory(
StandardCaptionKeys.ARGUMENT_PARSE_FAILURE_NO_INPUT_PROVIDED,
(caption, sender) -> ARGUMENT_PARSE_FAILURE_NO_INPUT_PROVIDED
);
this.registerMessageFactory( this.registerMessageFactory(
StandardCaptionKeys.ARGUMENT_PARSE_FAILURE_BOOLEAN, StandardCaptionKeys.ARGUMENT_PARSE_FAILURE_BOOLEAN,
(caption, sender) -> ARGUMENT_PARSE_FAILURE_BOOLEAN (caption, sender) -> ARGUMENT_PARSE_FAILURE_BOOLEAN

View file

@ -36,6 +36,10 @@ public final class StandardCaptionKeys {
private static final Collection<Caption> RECOGNIZED_CAPTIONS = new LinkedList<>(); private static final Collection<Caption> RECOGNIZED_CAPTIONS = new LinkedList<>();
/**
* Variables: None
*/
public static final Caption ARGUMENT_PARSE_FAILURE_NO_INPUT_PROVIDED = of("argument.parse.failure.no_input_was_provided");
/** /**
* Variables: {input} * Variables: {input}
*/ */

View file

@ -0,0 +1,52 @@
//
// MIT License
//
// Copyright (c) 2020 Alexander Söderberg & Contributors
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE.
//
package cloud.commandframework.exceptions.parsing;
import cloud.commandframework.captions.StandardCaptionKeys;
import cloud.commandframework.context.CommandContext;
import org.checkerframework.checker.nullness.qual.NonNull;
/**
* An exception which is thrown when an argument's input is unexpectedly null or empty
*/
public class NoInputProvidedException extends ParserException {
/**
* Construct a new NoInputProvidedException
*
* @param argumentParser Argument parser class
* @param context Command context
*/
public NoInputProvidedException(
final Class<?> argumentParser,
final @NonNull CommandContext<?> context
) {
super(
argumentParser,
context,
StandardCaptionKeys.ARGUMENT_PARSE_FAILURE_NO_INPUT_PROVIDED
);
}
}

View file

@ -27,6 +27,7 @@ import cloud.commandframework.arguments.CommandArgument;
import cloud.commandframework.arguments.parser.ArgumentParseResult; import cloud.commandframework.arguments.parser.ArgumentParseResult;
import cloud.commandframework.arguments.parser.ArgumentParser; import cloud.commandframework.arguments.parser.ArgumentParser;
import cloud.commandframework.context.CommandContext; import cloud.commandframework.context.CommandContext;
import cloud.commandframework.exceptions.parsing.NoInputProvidedException;
import net.dv8tion.jda.api.entities.MessageChannel; import net.dv8tion.jda.api.entities.MessageChannel;
import net.dv8tion.jda.api.entities.TextChannel; import net.dv8tion.jda.api.entities.TextChannel;
import net.dv8tion.jda.api.events.message.MessageReceivedEvent; import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
@ -152,7 +153,10 @@ public final class ChannelArgument<C> extends CommandArgument<C, MessageChannel>
) { ) {
final String input = inputQueue.peek(); final String input = inputQueue.peek();
if (input == null) { if (input == null) {
return ArgumentParseResult.failure(new NullPointerException("No input was provided")); return ArgumentParseResult.failure(new NoInputProvidedException(
MessageParser.class,
commandContext
));
} }
final MessageReceivedEvent event = commandContext.get("MessageReceivedEvent"); final MessageReceivedEvent event = commandContext.get("MessageReceivedEvent");

View file

@ -27,6 +27,7 @@ import cloud.commandframework.arguments.CommandArgument;
import cloud.commandframework.arguments.parser.ArgumentParseResult; import cloud.commandframework.arguments.parser.ArgumentParseResult;
import cloud.commandframework.arguments.parser.ArgumentParser; import cloud.commandframework.arguments.parser.ArgumentParser;
import cloud.commandframework.context.CommandContext; import cloud.commandframework.context.CommandContext;
import cloud.commandframework.exceptions.parsing.NoInputProvidedException;
import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.JDA;
import net.dv8tion.jda.api.entities.User; import net.dv8tion.jda.api.entities.User;
import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.NonNull;
@ -151,7 +152,10 @@ public final class UserArgument<C> extends CommandArgument<C, User> {
) { ) {
final String input = inputQueue.peek(); final String input = inputQueue.peek();
if (input == null) { if (input == null) {
return ArgumentParseResult.failure(new NullPointerException("No input was provided")); return ArgumentParseResult.failure(new NoInputProvidedException(
UserParser.class,
commandContext
));
} }
final JDA jda = commandContext.get("JDA"); final JDA jda = commandContext.get("JDA");

View file

@ -29,6 +29,7 @@ import cloud.commandframework.arguments.parser.ArgumentParser;
import cloud.commandframework.bukkit.BukkitCaptionKeys; import cloud.commandframework.bukkit.BukkitCaptionKeys;
import cloud.commandframework.captions.CaptionVariable; import cloud.commandframework.captions.CaptionVariable;
import cloud.commandframework.context.CommandContext; import cloud.commandframework.context.CommandContext;
import cloud.commandframework.exceptions.parsing.NoInputProvidedException;
import cloud.commandframework.exceptions.parsing.ParserException; import cloud.commandframework.exceptions.parsing.ParserException;
import org.bukkit.NamespacedKey; import org.bukkit.NamespacedKey;
import org.bukkit.enchantments.Enchantment; import org.bukkit.enchantments.Enchantment;
@ -132,7 +133,10 @@ public class EnchantmentArgument<C> extends CommandArgument<C, Enchantment> {
) { ) {
final String input = inputQueue.peek(); final String input = inputQueue.peek();
if (input == null) { if (input == null) {
return ArgumentParseResult.failure(new NullPointerException("No input was provided")); return ArgumentParseResult.failure(new NoInputProvidedException(
EnchantmentParser.class,
commandContext
));
} }
final NamespacedKey key; final NamespacedKey key;

View file

@ -29,6 +29,7 @@ import cloud.commandframework.arguments.parser.ArgumentParser;
import cloud.commandframework.bukkit.BukkitCaptionKeys; import cloud.commandframework.bukkit.BukkitCaptionKeys;
import cloud.commandframework.captions.CaptionVariable; import cloud.commandframework.captions.CaptionVariable;
import cloud.commandframework.context.CommandContext; import cloud.commandframework.context.CommandContext;
import cloud.commandframework.exceptions.parsing.NoInputProvidedException;
import cloud.commandframework.exceptions.parsing.ParserException; import cloud.commandframework.exceptions.parsing.ParserException;
import org.bukkit.Material; import org.bukkit.Material;
import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.NonNull;
@ -131,7 +132,10 @@ public class MaterialArgument<C> extends CommandArgument<C, Material> {
) { ) {
String input = inputQueue.peek(); String input = inputQueue.peek();
if (input == null) { if (input == null) {
return ArgumentParseResult.failure(new NullPointerException("No input was provided")); return ArgumentParseResult.failure(new NoInputProvidedException(
MaterialParser.class,
commandContext
));
} }
try { try {

View file

@ -29,6 +29,7 @@ import cloud.commandframework.arguments.parser.ArgumentParser;
import cloud.commandframework.bukkit.BukkitCaptionKeys; import cloud.commandframework.bukkit.BukkitCaptionKeys;
import cloud.commandframework.captions.CaptionVariable; import cloud.commandframework.captions.CaptionVariable;
import cloud.commandframework.context.CommandContext; import cloud.commandframework.context.CommandContext;
import cloud.commandframework.exceptions.parsing.NoInputProvidedException;
import cloud.commandframework.exceptions.parsing.ParserException; import cloud.commandframework.exceptions.parsing.ParserException;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.OfflinePlayer; import org.bukkit.OfflinePlayer;
@ -141,7 +142,10 @@ public final class OfflinePlayerArgument<C> extends CommandArgument<C, OfflinePl
) { ) {
final String input = inputQueue.peek(); final String input = inputQueue.peek();
if (input == null) { if (input == null) {
return ArgumentParseResult.failure(new NullPointerException("No input was provided")); return ArgumentParseResult.failure(new NoInputProvidedException(
OfflinePlayerParser.class,
commandContext
));
} }
inputQueue.remove(); inputQueue.remove();

View file

@ -29,6 +29,7 @@ import cloud.commandframework.arguments.parser.ArgumentParser;
import cloud.commandframework.bukkit.BukkitCaptionKeys; import cloud.commandframework.bukkit.BukkitCaptionKeys;
import cloud.commandframework.captions.CaptionVariable; import cloud.commandframework.captions.CaptionVariable;
import cloud.commandframework.context.CommandContext; import cloud.commandframework.context.CommandContext;
import cloud.commandframework.exceptions.parsing.NoInputProvidedException;
import cloud.commandframework.exceptions.parsing.ParserException; import cloud.commandframework.exceptions.parsing.ParserException;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
@ -135,7 +136,10 @@ public final class PlayerArgument<C> extends CommandArgument<C, Player> {
) { ) {
final String input = inputQueue.peek(); final String input = inputQueue.peek();
if (input == null) { if (input == null) {
return ArgumentParseResult.failure(new NullPointerException("No input was provided")); return ArgumentParseResult.failure(new NoInputProvidedException(
PlayerParser.class,
commandContext
));
} }
inputQueue.remove(); inputQueue.remove();

View file

@ -29,6 +29,7 @@ import cloud.commandframework.arguments.parser.ArgumentParser;
import cloud.commandframework.bukkit.BukkitCaptionKeys; import cloud.commandframework.bukkit.BukkitCaptionKeys;
import cloud.commandframework.captions.CaptionVariable; import cloud.commandframework.captions.CaptionVariable;
import cloud.commandframework.context.CommandContext; import cloud.commandframework.context.CommandContext;
import cloud.commandframework.exceptions.parsing.NoInputProvidedException;
import cloud.commandframework.exceptions.parsing.ParserException; import cloud.commandframework.exceptions.parsing.ParserException;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.World; import org.bukkit.World;
@ -128,7 +129,10 @@ public class WorldArgument<C> extends CommandArgument<C, World> {
) { ) {
final String input = inputQueue.peek(); final String input = inputQueue.peek();
if (input == null) { if (input == null) {
return ArgumentParseResult.failure(new NullPointerException("No input was provided")); return ArgumentParseResult.failure(new NoInputProvidedException(
WorldParser.class,
commandContext
));
} }
final World world = Bukkit.getWorld(input); final World world = Bukkit.getWorld(input);

View file

@ -29,6 +29,7 @@ import cloud.commandframework.arguments.parser.ArgumentParser;
import cloud.commandframework.bukkit.CloudBukkitCapabilities; import cloud.commandframework.bukkit.CloudBukkitCapabilities;
import cloud.commandframework.bukkit.arguments.selector.MultipleEntitySelector; import cloud.commandframework.bukkit.arguments.selector.MultipleEntitySelector;
import cloud.commandframework.context.CommandContext; import cloud.commandframework.context.CommandContext;
import cloud.commandframework.exceptions.parsing.NoInputProvidedException;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.entity.Entity; import org.bukkit.entity.Entity;
import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.NonNull;
@ -141,7 +142,10 @@ public final class MultipleEntitySelectorArgument<C> extends CommandArgument<C,
} }
final String input = inputQueue.peek(); final String input = inputQueue.peek();
if (input == null) { if (input == null) {
return ArgumentParseResult.failure(new NullPointerException("No input was provided")); return ArgumentParseResult.failure(new NoInputProvidedException(
MultipleEntitySelectorParser.class,
commandContext
));
} }
inputQueue.remove(); inputQueue.remove();

View file

@ -30,6 +30,7 @@ import cloud.commandframework.bukkit.CloudBukkitCapabilities;
import cloud.commandframework.bukkit.arguments.selector.MultiplePlayerSelector; import cloud.commandframework.bukkit.arguments.selector.MultiplePlayerSelector;
import cloud.commandframework.bukkit.parsers.PlayerArgument; import cloud.commandframework.bukkit.parsers.PlayerArgument;
import cloud.commandframework.context.CommandContext; import cloud.commandframework.context.CommandContext;
import cloud.commandframework.exceptions.parsing.NoInputProvidedException;
import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableList;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.entity.Entity; import org.bukkit.entity.Entity;
@ -136,7 +137,10 @@ public final class MultiplePlayerSelectorArgument<C> extends CommandArgument<C,
) { ) {
final String input = inputQueue.peek(); final String input = inputQueue.peek();
if (input == null) { if (input == null) {
return ArgumentParseResult.failure(new NullPointerException("No input was provided")); return ArgumentParseResult.failure(new NoInputProvidedException(
MultiplePlayerSelectorParser.class,
commandContext
));
} }
inputQueue.remove(); inputQueue.remove();

View file

@ -29,6 +29,7 @@ import cloud.commandframework.arguments.parser.ArgumentParser;
import cloud.commandframework.bukkit.CloudBukkitCapabilities; import cloud.commandframework.bukkit.CloudBukkitCapabilities;
import cloud.commandframework.bukkit.arguments.selector.SingleEntitySelector; import cloud.commandframework.bukkit.arguments.selector.SingleEntitySelector;
import cloud.commandframework.context.CommandContext; import cloud.commandframework.context.CommandContext;
import cloud.commandframework.exceptions.parsing.NoInputProvidedException;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.entity.Entity; import org.bukkit.entity.Entity;
import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.NonNull;
@ -139,7 +140,10 @@ public final class SingleEntitySelectorArgument<C> extends CommandArgument<C, Si
} }
final String input = inputQueue.peek(); final String input = inputQueue.peek();
if (input == null) { if (input == null) {
return ArgumentParseResult.failure(new NullPointerException("No input was provided")); return ArgumentParseResult.failure(new NoInputProvidedException(
SingleEntitySelectorParser.class,
commandContext
));
} }
inputQueue.remove(); inputQueue.remove();

View file

@ -30,6 +30,7 @@ import cloud.commandframework.bukkit.CloudBukkitCapabilities;
import cloud.commandframework.bukkit.arguments.selector.SinglePlayerSelector; import cloud.commandframework.bukkit.arguments.selector.SinglePlayerSelector;
import cloud.commandframework.bukkit.parsers.PlayerArgument; import cloud.commandframework.bukkit.parsers.PlayerArgument;
import cloud.commandframework.context.CommandContext; import cloud.commandframework.context.CommandContext;
import cloud.commandframework.exceptions.parsing.NoInputProvidedException;
import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableList;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.entity.Entity; import org.bukkit.entity.Entity;
@ -134,7 +135,10 @@ public final class SinglePlayerSelectorArgument<C> extends CommandArgument<C, Si
) { ) {
final String input = inputQueue.peek(); final String input = inputQueue.peek();
if (input == null) { if (input == null) {
return ArgumentParseResult.failure(new NullPointerException("No input was provided")); return ArgumentParseResult.failure(new NoInputProvidedException(
SinglePlayerSelectorParser.class,
commandContext
));
} }
inputQueue.remove(); inputQueue.remove();

View file

@ -28,6 +28,7 @@ import cloud.commandframework.arguments.parser.ArgumentParseResult;
import cloud.commandframework.arguments.parser.ArgumentParser; import cloud.commandframework.arguments.parser.ArgumentParser;
import cloud.commandframework.captions.CaptionVariable; import cloud.commandframework.captions.CaptionVariable;
import cloud.commandframework.context.CommandContext; import cloud.commandframework.context.CommandContext;
import cloud.commandframework.exceptions.parsing.NoInputProvidedException;
import cloud.commandframework.exceptions.parsing.ParserException; import cloud.commandframework.exceptions.parsing.ParserException;
import cloud.commandframework.velocity.VelocityCaptionKeys; import cloud.commandframework.velocity.VelocityCaptionKeys;
import com.velocitypowered.api.proxy.Player; import com.velocitypowered.api.proxy.Player;
@ -170,11 +171,10 @@ public final class PlayerArgument<C> extends CommandArgument<C, Player> {
) { ) {
final String input = inputQueue.peek(); final String input = inputQueue.peek();
if (input == null) { if (input == null) {
return ArgumentParseResult.failure( return ArgumentParseResult.failure(new NoInputProvidedException(
new NullPointerException( PlayerParser.class,
"No input was provided" commandContext
) ));
);
} }
final Player player = this.proxyServer.getPlayer(input).orElse(null); final Player player = this.proxyServer.getPlayer(input).orElse(null);
if (player == null) { if (player == null) {

View file

@ -26,6 +26,8 @@ package cloud.commandframework.examples.bukkit;
import cloud.commandframework.Command; import cloud.commandframework.Command;
import cloud.commandframework.CommandTree; import cloud.commandframework.CommandTree;
import cloud.commandframework.Description; import cloud.commandframework.Description;
import cloud.commandframework.minecraft.extras.MinecraftExceptionHandler;
import cloud.commandframework.minecraft.extras.MinecraftHelp;
import cloud.commandframework.annotations.AnnotationParser; import cloud.commandframework.annotations.AnnotationParser;
import cloud.commandframework.annotations.Argument; import cloud.commandframework.annotations.Argument;
import cloud.commandframework.annotations.CommandDescription; import cloud.commandframework.annotations.CommandDescription;
@ -56,8 +58,6 @@ import cloud.commandframework.execution.CommandExecutionCoordinator;
import cloud.commandframework.extra.confirmation.CommandConfirmationManager; import cloud.commandframework.extra.confirmation.CommandConfirmationManager;
import cloud.commandframework.meta.CommandMeta; import cloud.commandframework.meta.CommandMeta;
import cloud.commandframework.minecraft.extras.ColorArgument; import cloud.commandframework.minecraft.extras.ColorArgument;
import cloud.commandframework.minecraft.extras.MinecraftExceptionHandler;
import cloud.commandframework.minecraft.extras.MinecraftHelp;
import cloud.commandframework.paper.PaperCommandManager; import cloud.commandframework.paper.PaperCommandManager;
import cloud.commandframework.types.tuples.Triplet; import cloud.commandframework.types.tuples.Triplet;
import io.leangen.geantyref.TypeToken; import io.leangen.geantyref.TypeToken;