@@ -3,21 +3,19 @@ package su.plo.slib.command.brigadier
33import com.mojang.brigadier.Command
44import com.mojang.brigadier.RedirectModifier
55import com.mojang.brigadier.StringReader
6+ import com.mojang.brigadier.arguments.ArgumentType
67import com.mojang.brigadier.builder.RequiredArgumentBuilder
7- import com.mojang.brigadier.context.CommandContext
88import com.mojang.brigadier.context.CommandContextBuilder
99import com.mojang.brigadier.context.ParsedArgument
1010import com.mojang.brigadier.exceptions.CommandSyntaxException
1111import com.mojang.brigadier.suggestion.SuggestionProvider
12- import com.mojang.brigadier.suggestion.Suggestions
13- import com.mojang.brigadier.suggestion.SuggestionsBuilder
1412import com.mojang.brigadier.tree.ArgumentCommandNode
1513import com.mojang.brigadier.tree.CommandNode
1614import su.plo.slib.api.command.brigadier.CustomArgumentType
1715import su.plo.slib.api.command.brigadier.McBrigadierSource
18- import java.util.concurrent.CompletableFuture
1916import java.util.function.Predicate
2017
18+ @Suppress(" UNCHECKED_CAST" )
2119class CustomArgumentCommandNode <S , PARSED , NATIVE >(
2220 name : String ,
2321 val customArgumentType : CustomArgumentType <PARSED , NATIVE >,
@@ -30,7 +28,7 @@ class CustomArgumentCommandNode<S, PARSED, NATIVE>(
3028 customSuggestions : SuggestionProvider <S >? ,
3129) : ArgumentCommandNode<S, NATIVE>(
3230 name,
33- customArgumentType.nativeType ,
31+ customArgumentType.unwrapNativeType() as ArgumentType < NATIVE > ,
3432 command,
3533 requirement,
3634 redirect,
@@ -73,13 +71,7 @@ fun <S, PARSED, NATIVE> RequiredArgumentBuilder<S, PARSED>.buildCustom(
7371 isFork,
7472 suggestionsProvider ? :
7573 if (! type.useNativeSuggestions()) {
76- object : SuggestionProvider <S > {
77- override fun getSuggestions (
78- context : CommandContext <S ?>,
79- builder : SuggestionsBuilder ,
80- ): CompletableFuture <Suggestions > =
81- type.listSuggestions(context, builder)
82- }
74+ SuggestionProvider <S > { context, builder -> type.listSuggestions(context, builder) }
8375 } else {
8476 null
8577 },
@@ -89,3 +81,6 @@ fun <S, PARSED, NATIVE> RequiredArgumentBuilder<S, PARSED>.buildCustom(
8981
9082 return result
9183}
84+
85+ tailrec fun ArgumentType <* >.unwrapNativeType (): ArgumentType <* > =
86+ if (this is CustomArgumentType <* , * >) nativeType.unwrapNativeType() else this
0 commit comments