Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

Помогите Не работает onCommand()

Тема в разделе "Разработка плагинов для новичков", создана пользователем Featixy, 5 май 2016.

  1. Автор темы
    Featixy

    Featixy Участник

    Баллы:
    31
    Код:
    Код:
        public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args){
            Player player = (Player) sender;
            if(commandLabel.equalsIgnoreCase("sendme")){
                player.sendMessage(ChatColor.GOLD + "Sent");
            }
            return false;
        }
     
  2. Хостинг MineCraft
    <
  3. CoolBoy

    CoolBoy Активный участник Пользователь

    Баллы:
    96
    Skype:
    thecoolboy2070
    Имя в Minecraft:
    CoolBoy
    Ну, с самого главного? В майн классе метод onEnable() существует? Ваш класс, где расположена команда зарегестрирована в onEnable()?
    После наследования Player к sender'у у вас могут возникнуть некоторые неприятности с консолью.
    Ну и напоследок, не эксперементировал с commandLabel (как-то до этого не доходило), но что-то мне подсказывает что так команда не исполнится. И да, в plugin.yml ваша команда зарегестрирована?
     
  4. Dereku

    Dereku Старожил

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Код:
    //Данный метод работает только в классах, которые либо расширяют JavaPlugin, либо наследуют CommandExecutor
    public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args){
        Player player = (Player) sender; //Не проверяем sender'a на игрока
        if(commandLabel.equalsIgnoreCase("sendme")){ //Мда.
            player.sendMessage(ChatColor.GOLD + "Sent");
        }
        return false; //И в итоге команда у нас никогда не выполнена.
    }
    Кек.
     
  5. CraftCoder

    CraftCoder Старожил Пользователь

    Баллы:
    108
    Имя в Minecraft:
    CraftCoderr
    Во-первых раширяет == наследует. Во-вторых CommandExecutor нельзя наследовать, его можно реализовывать (implementation - (рус. реализация)).
     
  6. Dereku

    Dereku Старожил

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Бял, как обычно всё путаю. Спасибки за исправления.
     
  7. Автор темы
    Featixy

    Featixy Участник

    Баллы:
    31
    Забыл в plugin.yml записать. Спасибо. Всё работает, без регистрации в onEnable() - она нужна? И как её сделать?
     
  8. CoolBoy

    CoolBoy Активный участник Пользователь

    Баллы:
    96
    Skype:
    thecoolboy2070
    Имя в Minecraft:
    CoolBoy
    Ну, как бы:
    Код:
    public void on Enable()
    {
        getCommand("твоя команда тут").setExecutor(new "твой ексекутор тут")(this));
    }
     

Поделиться этой страницей