From 2659eac93b9d5c51ffe0e66bc46fcd8864405691 Mon Sep 17 00:00:00 2001 From: jmp Date: Wed, 10 Mar 2021 18:57:26 -0800 Subject: [PATCH] brigadier: Fix MappedArgumentParsers always mapping to string --- .../brigadier/CloudBrigadierManager.java | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/cloud-minecraft/cloud-brigadier/src/main/java/cloud/commandframework/brigadier/CloudBrigadierManager.java b/cloud-minecraft/cloud-brigadier/src/main/java/cloud/commandframework/brigadier/CloudBrigadierManager.java index 58fc3348..6b0b5eee 100644 --- a/cloud-minecraft/cloud-brigadier/src/main/java/cloud/commandframework/brigadier/CloudBrigadierManager.java +++ b/cloud-minecraft/cloud-brigadier/src/main/java/cloud/commandframework/brigadier/CloudBrigadierManager.java @@ -385,23 +385,22 @@ public final class CloudBrigadierManager { @SuppressWarnings("all") private > @Nullable Pair<@NonNull ArgumentType, @Nullable SuggestionProvider> getArgument( final @NonNull TypeToken valueType, - final @NonNull TypeToken argumentType, - final @NonNull K argument + final @NonNull K argumentParser ) { /* Unwrap mapped arguments */ - ArgumentParser commandArgument = (ArgumentParser) argument; + ArgumentParser commandArgument = (ArgumentParser) argumentParser; while (commandArgument instanceof MappedArgumentParser) { commandArgument = ((MappedArgumentParser) commandArgument).getBaseParser(); } final BrigadierMapping mapping = (BrigadierMapping) this.mappers - .get(GenericTypeReflector.erase(argumentType.getType())); + .get(commandArgument.getClass()); if (mapping == null || mapping.getMapper() == null) { return this.createDefaultMapper(valueType); } return Pair.of( (ArgumentType) ((Function) mapping.getMapper()).apply(commandArgument), - mapping.makeSuggestionProvider(argument) + mapping.makeSuggestionProvider(argumentParser) ); } @@ -527,7 +526,6 @@ public final class CloudBrigadierManager { @SuppressWarnings("unchecked") final ArgumentParser parser = (ArgumentParser) parsers[i]; final Pair, SuggestionProvider> pair = this.getArgument( TypeToken.get((Class) types[i]), - TypeToken.get(parser.getClass()), parser ); final SuggestionProvider provider = pair.getSecond() == delegateSuggestions() ? suggestionProvider @@ -576,7 +574,6 @@ public final class CloudBrigadierManager { // Register argument final Pair, SuggestionProvider> pair = this.getArgument( root.getValue().getValueType(), - TypeToken.get(root.getValue().getParser().getClass()), root.getValue().getParser() ); final SuggestionProvider provider = pair.getSecond() == delegateSuggestions()