🇪🇸 Español (Spanish)
🇪🇸 Español (Spanish)
Appearance
🇪🇸 Español (Spanish)
🇪🇸 Español (Spanish)
Appearance
This page is written for version:
1.20.4
This page is written for version:
1.20.4
Minecraft tiene un poderoso sistema de sugerencias de comandos que es usado en muchos lugares, como en el comanado de /give
. Este sistema te permite sugerir valores para argumentos de comandos al usuario, donde este puede escoger de estos valores - es una buena manera de hacer tus comandos más ergonómicos y amigables al usuario.
Un SuggestionProvider
(Proveedor de Sugerencias) es usado para crear una lista de sugerencias que serán enviadas al cliente. Un proveedor de sugerencias es una interfaz funcional que tiene un parámetro de CommandContext
y un SuggestionBuilder
(Constructor de Sugerencias), y retorna algunos Suggestions
(Sugerencias). El SuggestionProvider
retorna un CompletableFuture
(Completador a Futuro) ya que las sugerencias pueden no estar disponibles inmediatamente.
Para usar un proveedor de sugerencias, tienes que llamar el método suggests
en el constructor del argumento. Este método tiene un parámetro SuggestionProvider
y retorna un nuevo constructor de argumento con el proveedor de sugerencias adjuntado.
No lines matched.
Hay algunos proveedores de sugerencias incluidos que puedes usar:
Proveedor de Sugerencias | Descripción |
---|---|
SuggestionProviders.SUMMONABLE_ENTITIES | Sugiere todas las entidades que pueden ser convocadas. |
SuggestionProviders.AVAILABLE_SOUNDS | Sugiere todos los efectos de sonido que pueden ser reproducidos. |
LootCommand.SUGGESTION_PROVIDER | Sugiere todas las loot tables (tablas de loot) que están disponibles. |
SuggestionProviders.ALL_BIOMES | Sugiere todos los biomas disponibles. |
Si un proveedor incluido no suficiente para tus necesidades, puedes crear tu propio proveedor de sugerencias. Para esto, debes crear una clase que implemente la interfaz SuggestionProvider
y que anule el método getSuggestions
.
Para este ejemplo, haremos un proveedor de sugerencias que sugiere todos los nombres de usuario de los jugadores en el servidor.
public class PlayerSuggestionProvider implements SuggestionProvider<ServerCommandSource> {
@Override
public CompletableFuture<Suggestions> getSuggestions(CommandContext<ServerCommandSource> context, SuggestionsBuilder builder) throws CommandSyntaxException {
ServerCommandSource source = context.getSource();
// Thankfully, the ServerCommandSource has a method to get a list of player names.
Collection<String> playerNames = source.getPlayerNames();
// Add all player names to the builder.
for (String playerName : playerNames) {
builder.suggest(playerName);
}
// Lock the suggestions after we've modified them.
return builder.buildFuture();
}
}
Para usar este proveedor de sugerencias, simplemente pasa una instancia de él en el método .suggests
en el constructor del argumento.
Obviamente, los proveedores de sugerencias pueden ser más complejos, ya que también el contexto del comando para proveer sugerencias basadas en el estado del comando - como los argumentos que ya han sido dados.
Esto puede ser en la forma de leer el inventario del jugador y sugerir items, o entidades que estén cerca del jugador.