Initialisation complète de la bibliothèque betterMcCommands (DSL, arguments typés, cycle de vie des événements, injection dynamique CommandMap)
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
package fr.luc.bettermccommands.api.suggestion;
|
||||
|
||||
import fr.luc.bettermccommands.api.CommandContext;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* Fournisseur dynamique de suggestions pour l'auto-complétion (Tab-Complete).
|
||||
*/
|
||||
@FunctionalInterface
|
||||
public interface SuggestionProvider {
|
||||
|
||||
/**
|
||||
* Calcule et retourne la liste des suggestions pour un argument donné dans un contexte précis.
|
||||
*
|
||||
* @param context Le contexte actuel de la commande.
|
||||
* @param currentInput La saisie en cours de frappe par l'utilisateur.
|
||||
* @return La collection de suggestions correspondantes.
|
||||
*/
|
||||
Collection<Suggestion> getSuggestions(CommandContext context, String currentInput);
|
||||
|
||||
/**
|
||||
* Crée un fournisseur à partir d'une liste statique de chaînes de caractères.
|
||||
*
|
||||
* @param values Les valeurs possibles.
|
||||
* @return Un {@link SuggestionProvider} filtrant les valeurs par préfixe insensible à la casse.
|
||||
*/
|
||||
static SuggestionProvider strings(String... values) {
|
||||
return strings(Arrays.asList(values));
|
||||
}
|
||||
|
||||
/**
|
||||
* Crée un fournisseur à partir d'une collection statique de chaînes.
|
||||
*
|
||||
* @param values La collection de valeurs textuelles.
|
||||
* @return Un {@link SuggestionProvider} filtrant par préfixe.
|
||||
*/
|
||||
static SuggestionProvider strings(Collection<String> values) {
|
||||
return (context, currentInput) -> {
|
||||
String lower = currentInput == null ? "" : currentInput.toLowerCase();
|
||||
return values.stream()
|
||||
.filter(v -> v.toLowerCase().startsWith(lower))
|
||||
.map(Suggestion::of)
|
||||
.collect(Collectors.toList());
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Crée un fournisseur vide ne retournant aucune suggestion.
|
||||
*
|
||||
* @return Un {@link SuggestionProvider} vide.
|
||||
*/
|
||||
static SuggestionProvider empty() {
|
||||
return (context, currentInput) -> List.of();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user