🇷🇺 Русский (Russian)
🇷🇺 Русский (Russian)
Внешний вид
🇷🇺 Русский (Russian)
🇷🇺 Русский (Russian)
Внешний вид
This page is written for:
1.21
This page is written for:
1.21
Майнкрафт имеет мощную систему предложений по командам, которая используется много где, например в команде /give
. Эта система позволяет вам предложение значения к аргументам ваших команд для пользователей, которые они могут выбрать - это отличная возможность сделать вашу команду больше удобнее и эргономичной.
SuggestionProvider
- используется для создания списка предложений, который будет отправлен на клиент. Поставщик предложений - это функциональный интерфейс, который использует CommandContext
и SuggestionBuilder
, а также возвращает Suggestions
. SuggestionProvider
возвращает CompletableFuture
, потому что предложения могут быть доступны не сразу.
Чтобы использовать поставщика предложений, необходимо вызвать метод suggests
в конструкторе аргументов. Этот метод берёт SuggestionProvider
и возвращает модифицированный аргумент конструктора с прикрепленным поставщиком предложений.
No lines matched.
Несколько встроенных поставщиков предложений которые вы можете использовать:
Поставщик предложений | Описание |
---|---|
SuggestionProviders.SUMMONABLE_ENTITIES | Предлагает всех вызываемых сущностей. |
SuggestionProviders.AVAILABLE_SOUNDS | Предлагает все производимые звуки. |
LootCommand.SUGGESTION_PROVIDER | Предлагает все возможные таблицы добычи. |
SuggestionProviders.ALL_BIOMES | Предлагает всевозможные биомы. |
Если встроенные провайдеры не удовлетворяют вашим потребностям, вы можете создать свой поставщик предложений. Для этого, вам нужно создать класс который имплементирует интерфейс SuggestionProvider
и перезаписать метод getSuggestions
.
Например, мы сделаем поставщик предложений предлагающий все имена игроков на сервере.
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();
}
}
Для использования этого поставщика предложений, просто передадите его экземпляр в метод .suggests
в конструктор аргументов.
Очевидно, что поставщики предложений могут быть более сложными, поскольку они также могут считывать контекст команды, чтобы предоставлять предложения на основе состояния команды, например аргументов, которые уже были предоставлены.
Это может быть в виде чтения инвентаря игрока и предлагать предметы, или сущностей вокруг игрока.