- Баллы
- 76
- Имя в Minecraft
- 0xLairon1
Дай мне то что я хочу
Maven зависимость
Репозиторий
Зависимость
Про библиотеку
XCommandLib — это простая библиотека, которая поможет вам быстро и легко создавать команды и подкоманды. Вы также можете настраивать свои подкоманды как вам угодно.
Использование
Как создать и зарегистрировать свою команду?
Как я могу создать свою собственную подкоманду?
Actions
Если вы хотите сделать свои собственные сообщения о том, что у игрока недостаточно прав или что подкоманда не найдена, то воспользуйтесь системой Actions.
Maven зависимость
Репозиторий
HTML:
<repository>
<id>space-lairon-libs</id>
<url>https://maven.pkg.jetbrains.space/0xlairon1/p/main/lairon-libs</url>
</repository>
HTML:
<dependency>
<groupId>ru.lairon.libs</groupId>
<artifactId>0xCommandLib</artifactId>
<version>2.3</version>
<scope>compile</scope>
</dependency>
Про библиотеку
XCommandLib — это простая библиотека, которая поможет вам быстро и легко создавать команды и подкоманды. Вы также можете настраивать свои подкоманды как вам угодно.
Использование
Как создать и зарегистрировать свою команду?
PHP:
public void onEnable(){
// Для начала создайте CommandRegistry,
// он нужен для того чтобы хранить ваши подкоманды
// и вы легко могли ими управлять.
CommandRegistry commandRegistry = new CommandRegistry();
// Создайте CommandExecutor,
// он нужен, чтобы зарегистрировать его как команду Bukkit.
// Он будет управлять всеми подкомандами для вас.
CommandExecutor commandExecutor = new CommandExecutor(commandRegistry, Plugin);
// Зарегистрируйте CommandExecutor как обычную команду для Bukkit.
PluginCommand yourBukkitCommand = Bukkit.getPluginCommand("YourCommand");
yourBukkitCommand.setExecutor(commandExecutor);
// Вы также можете зарегистрировать CommandExecutor как TabCompleter.,
// то моя библиотека сама будет сортировать, фильтровать и отображать таб комплиты которые вы ей отдадите
yourBukkitCommand.setTabCompleter(commandExecutor);
// Теперь вы можете добавлять свои подкоманды в CommandRegistry и использовать их в игре!
// Использование в игре: /YourCommand <SubCommandID> <params>...
commandRegistry.registerCommand(new YourSubCommand());
// Вот как вы можете установить стандартный обработчик команд,
// он будет вызываться, когда игрок не ввел ни одной подкоманды.
// Вы можете использовать его как команду для отображения справки помощи игроку.
// Просто зарегистрируйте HelpCommand как обычную подкоманду help и как команду по умолчанию.
commandExecutor.setDefaultCommand(new HelpCommand());
}
Как я могу создать свою собственную подкоманду?
PHP:
// Во-первых, наследуйте класс SubCommand и реализуйте его
// Метод onCommand и конструктор класса
public class YourSubCommand extends SubCommand {
// В конструкторе суперкласса передайте SubCommandSettings.
// Вы можете использовать builder, чтобы легко настроить свою подкоманду.
// Если вам нужно указать только идентификатор, вы можете использовать new SubCommandSettings(ID);
public YourSubCommand() {
super(SubCommandSettings
// ID вашей подкоманды,
// он нужен чтобы библиотека понимала
// какую подкоманду нужно использовать.
.builder("YourSubCommand") // (ОБЕЗАТЕЛЬНО)
// Если вы хотите, чтобы только игроки использовали
// вашу подкоманда, установите для нее значение true
.onlyPlayer(true) // (НЕ ОБЕЗАТЕЛЬНО)
// Вы можете установить разрешения, которые
// потребуются для выполнения под команды
.permission("some.permission") // (НЕ ОБЕЗАТЕЛЬНО)
// Вы можете установить псевдонимы для вашей подкоманды
.aliases(List.of("alias1", "alias2")) // (НЕОБЕЗАТЕЛЬНО)
// Или добавляйте псевдонимы по одному
.alias("alias3") // (НЕОБЕЗАТЕЛЬНО)
.alias("alias4") // (НЕОБЕЗАТЕЛЬНО)
//Если true команды будет выполнять асинхронно
.async(true) // (НЕОБЕЗАТЕЛЬНО)
.build());
}
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
// Здесь вы можете добавить логику к вашей подкоманде.
// Реализация может быть такой же, как в ванильном Bukkit.
// Библиотека сама сделает все проверки для onlyPlayer и тд.
// Обратите внимание, что в массиве args
// первый элемент всегда будет
// идентификатор вашей подкоманды или ее псевдоним.
return false;
}
@Override
public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
// Здесь вы можете ввести Tab Complete для подкоманд,
// библиотека сама все отфильтрует и отсортирует за вас
return null;
}
}
Actions
Если вы хотите сделать свои собственные сообщения о том, что у игрока недостаточно прав или что подкоманда не найдена, то воспользуйтесь системой Actions.
PHP:
public void onEnable() {
CommandRegistry commandRegistry = new CommandRegistry();
CommandExecutor commandExecutor = new CommandExecutor(commandRegistry);
// Это действие используется для отслеживания события
// когда игрок ввел неизвестную подкоманду
commandExecutor.setCommandNotFoundAction(action -> {
action.getCommandID(); // ID команды, введенной игроком
action.getCommandSender(); // Сам игрок или объект ConsoleSender
// Здесь вы можете отправить сообщение игроку
// команды о том, что команда не найдена.
action.getCommandSender().sendMessage("Подкоманда " + action.getCommandID() + " не найдена.");
});
// Это действие будет вызвано, когда у игрока
// недостаточно прав для использования этой подкоманды
commandExecutor.setSenderDontHasPermissionAction(action -> {
action.getCommand(); // Подкоманда, которую кто-то пытался использовать
action.getCommandSender(); // Отправитель команды
// Здесь вы также можете отправить сообщение
// игроку что у него нет прав
action.getCommandSender().sendMessage("Вы должны иметь право %s для того чтобы использовать %s"
.formatted(
action.getCommand().getSettings().getPermission(),
action.getCommand().getSettings().getId()
));
});
// Это действие запускается, когда команда
// использовалась консолью, но она только для игрока.
commandExecutor.setOnlyPlayerAction(action -> {
action.getCommand(); // Подкоманда, которую кто-то пытался использовать
action.getCommandSender(); // Отправитель команды
});
}
Последнее редактирование: