🇺🇦 Українська (Ukrainian - Ukraine)
🇺🇦 Українська (Ukrainian - Ukraine)
Зовнішній вигляд
🇺🇦 Українська (Ukrainian - Ukraine)
🇺🇦 Українська (Ukrainian - Ukraine)
Зовнішній вигляд
Ця сторінка написана для версії:
1.20.4
Minecraft має потужну систему пропозицій команд, що використовується у багатьох місцях, таких як команда /give. Ця система дозволяє пропонувати гравцю значення аргументу, які вони можуть вибрати, що є гарним засобом створення більш зручних та ергономічних команд.
Клас SuggestionProvider використовується для створення списку пропозицій, які будуть надіслані гравцю. Постачальник пропозицій - це функція, що приймає об'єкти CommandContext та SuggestionBuilder, та повертає об'єкт Suggestions. SuggestionProvider повертає об'єкт CompletableFuture тому, що пропозиції можуть бути не доступні відразу.
Для використання постачальника пропозицій треба викликати метод suggests в об'єкта ArgumentBuilder. Цей метод приймає об'єкт SuggestionProvider та повертає свій ArgumentBuilder з доданим постачальником пропозицій.
No lines matched.Minecraft надає декілька вбудованих постачальників пропозицій:
| Постачальник | Опис | 
|---|---|
| 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 у ArgumentBuilder.
Звісно, що постачальники пропозицій можуть бути складнішими, оскільки вони також можуть зчитувати контекст команди та надавати пропозиції на основі її стану - наприклад, аргументи, що вже були надані.
Це може також зчитувати інвентар гравця та пропонувати предмети, або істот, які неподалік від гравця.