From 3763eb40d4274270e221a3bac10d1ef664b18d13 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20S=C3=B6derberg?= Date: Thu, 8 Oct 2020 13:26:23 +0200 Subject: [PATCH] :sparkles: Make MaterialArgument's error message less annoying --- .../bukkit/parsers/MaterialArgument.java | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/cloud-minecraft/cloud-bukkit/src/main/java/cloud/commandframework/bukkit/parsers/MaterialArgument.java b/cloud-minecraft/cloud-bukkit/src/main/java/cloud/commandframework/bukkit/parsers/MaterialArgument.java index 3747bd11..21afd704 100644 --- a/cloud-minecraft/cloud-bukkit/src/main/java/cloud/commandframework/bukkit/parsers/MaterialArgument.java +++ b/cloud-minecraft/cloud-bukkit/src/main/java/cloud/commandframework/bukkit/parsers/MaterialArgument.java @@ -31,11 +31,9 @@ import org.bukkit.Material; import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.Nullable; -import java.util.EnumSet; import java.util.List; import java.util.Queue; import java.util.function.BiFunction; -import java.util.stream.Collectors; /** * cloud argument type that parses Bukkit {@link Material materials} @@ -118,17 +116,23 @@ public class MaterialArgument extends CommandArgument { final @NonNull CommandContext commandContext, final @NonNull Queue<@NonNull String> inputQueue ) { - final String input = inputQueue.peek(); + String input = inputQueue.peek(); if (input == null) { return ArgumentParseResult.failure(new NullPointerException("No input was provided")); } + /* Pre-process input */ + if (input.contains("minecraft:")) { + input = input.substring("minecraft:".length()); + } + input = input.toUpperCase(); + try { - final Material material = Material.valueOf(input.replace("minecraft:", "").toUpperCase()); + final Material material = Material.valueOf(input); inputQueue.remove(); return ArgumentParseResult.success(material); } catch (final IllegalArgumentException exception) { - return ArgumentParseResult.failure(new MaterialParseException(input)); + return ArgumentParseResult.failure(new MaterialParseException(inputQueue.peek())); } } @@ -159,8 +163,7 @@ public class MaterialArgument extends CommandArgument { @Override public String getMessage() { - return EnumSet.allOf(Material.class).stream().map(Material::name).map(String::toLowerCase) - .collect(Collectors.joining(", ")); + return String.format("'%s' is not a valid material name", this.input); } }