@@ -23,6 +23,7 @@ import org.anvilpowered.kbrig.context.CommandContext
2323import org.anvilpowered.kbrig.context.StringRange
2424import org.anvilpowered.kbrig.coroutine.coroutineToFuture
2525import org.anvilpowered.kbrig.suggestion.Suggestion
26+ import org.anvilpowered.kbrig.suggestion.SuggestionProvider
2627import org.anvilpowered.kbrig.suggestion.Suggestions
2728import org.anvilpowered.kbrig.suggestion.SuggestionsBuilder
2829import org.anvilpowered.kbrig.tree.ArgumentCommandNode
@@ -42,6 +43,7 @@ import com.mojang.brigadier.arguments.StringArgumentType as BrigadierStringArgum
4243import com.mojang.brigadier.context.CommandContext as BrigadierCommandContext
4344import com.mojang.brigadier.context.StringRange as BrigadierStringRange
4445import com.mojang.brigadier.suggestion.Suggestion as BrigadierSuggestion
46+ import com.mojang.brigadier.suggestion.SuggestionProvider as BrigadierSuggestionProvider
4547import com.mojang.brigadier.suggestion.Suggestions as BrigadierSuggestions
4648import com.mojang.brigadier.suggestion.SuggestionsBuilder as BrigadierSuggestionsBuilder
4749import com.mojang.brigadier.tree.ArgumentCommandNode as BrigadierArgumentCommandNode
@@ -71,7 +73,7 @@ fun <S, T> ArgumentCommandNode<S, T>.toBrigadier(): BrigadierArgumentCommandNode
7173 redirect?.toBrigadier(),
7274 null ,
7375 forks,
74- null ,
76+ customSuggestions?.toBrigadier() ,
7577 ).withChildrenFrom(this )
7678}
7779
@@ -140,6 +142,15 @@ private fun <T> ArgumentType<T>.toDefaultBrigadierArgument(): BrigadierArgumentT
140142 }
141143}
142144
145+ private fun <S > SuggestionProvider<S>.toBrigadier (): BrigadierSuggestionProvider <S > {
146+ val original = this
147+ return BrigadierSuggestionProvider { context, builder ->
148+ coroutineToFuture {
149+ original.getSuggestions(context.toKBrig(), builder.toKBrig()).toBrigadier()
150+ }
151+ }
152+ }
153+
143154private fun Suggestions.toBrigadier (): BrigadierSuggestions = BrigadierSuggestions (range.toBrigadier(), list.map { it.toBrigadier() })
144155private fun Suggestion.toBrigadier (): BrigadierSuggestion = BrigadierSuggestion (range.toBrigadier(), text)
145156private fun StringRange.toBrigadier (): BrigadierStringRange = BrigadierStringRange (start, end)
0 commit comments