1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Помогите CommandSender & Player

Тема в разделе "Разработка плагинов для новичков", создана пользователем Geroll, 25 ноя 2012.

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

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

    Баллы:
    123
    Помогите правильно построить плагин , мне нужно что-бы при вводе команды /lvl игрок получал сообщение text + Player.getLevel .


    Код:
        public boolean onCommand(CommandSender sender, Command command, String label, String[] args , Player player) {
              if(command.getName().equalsIgnoreCase("lvl"))
           {
                player.sendMessage( "Ваш уровень:" + ChatColor.RED + player.getLevel());
            }     
            return false;
        }
     
  2. Jers

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

    Баллы:
    153
    Читали это?
    Код:
     public boolean onCommand(CommandSender sender, Command command, String label, String[] args , Player player) {
              if(command.getName().equalsIgnoreCase("lvl"))
          {
                player.sendMessage( "Ваш уровень:" + ChatColor.RED + player.getExhaustion());//Можно и .getExp() написать
            }
            return false;
        }
    Попробуйте так
     
  3. Автор темы
    Geroll

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

    Баллы:
    123

    Когда прописываю команду , в чат пишется эта же команда . Не пойму в чем проблема =(
     
    Сникерсни нравится это.
  4. DPOH-VAR

    DPOH-VAR Старожил Пользователь

    Баллы:
    153
    Skype:
    dpohvar
    @Geroll,
    Читаем внимательно и до конца туториал:
    http://wiki.bukkit.org/Plugin_Tutorial
    Не забываем подключить обработчик команд при загрузке плагина.
    И не забываем прописать команду в plugin.yml
    Раздел permissions там прописывать не обязательно.
     
    Geroll и Jers нравится это.
  5. Автор темы
    Geroll

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

    Баллы:
    123
    Спасибо за ссылку , мот пой plugin.yml
    Код:
    name: LevelInfo
    main: ru.lvl.bukkit.plugin.LevelStat
    version: 0.1
    commands:
      lvl:
          description: Level info
          usage: /lvl
     
  6. Jers

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

    Баллы:
    153
    По моему у вас не правильно написан main:
     
  7. Автор темы
    Geroll

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

    Баллы:
    123
    -_- , плагин работает , в консоли виден . Именно команда не работает =)
     
    ВремяПриключений нравится это.
  8. DPOH-VAR

    DPOH-VAR Старожил Пользователь

    Баллы:
    153
    Skype:
    dpohvar
    Код:
    public void onEnable() {
        // ...
     
        // This will throw a NullPointException if you don't have the command defined in your plugin.yml file!
        getCommand("basic").setExecutor(new MyPluginCommandExecutor(this));
     
        // ...
    }
    1) в главном классе плагина обработчик команды точно подключен?
    2) Советую убрать проверку имени команды (первая строка в функции обработчика) - по факту она лишняя. Обработчик все равно запускается только по своей команде.
    3) Дебаггер в помощь. Доходит ли исполнение до функции обработчика?
    4) Откуда взялся входящий параметр player в обработчике? :confused:
     
    Jers и Geroll нравится это.
  9. Автор темы
    Geroll

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

    Баллы:
    123
    Сейчас проверю , спасибо!
     
  10. Автор темы
    Geroll

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

    Баллы:
    123
    :( , исполнение не доходит до функции .
    Гляньте правильно ли я сделал
    Код:
      public static final Logger logg = Logger.getLogger("Debug");
     
        @Override
        public boolean onCommand(CommandSender sender, Command command, String label, String[] args , Player player) {
            if(command.getName().equalsIgnoreCase("lvl"))
            {
            logg.info("Debug true");
            player.sendMessage( "Ваш уровень:" + ChatColor.RED + player.getExhaustion());//Можно и .getExp() написать
            }
          return false;
      }
     
    Сникерсни нравится это.
  11. DPOH-VAR

    DPOH-VAR Старожил Пользователь

    Баллы:
    153
    Skype:
    dpohvar
    Не правильно.
    Во первых, нужно отключить проверку на пятой строке.
    Во вторых, метод onCommand не принимает значение типа Player. Компилятор должен ругаться на это.
    И желательно в конце обработки вернуть true (это означает, что команда успешно завершена. В противном случае сэндеру отправилась бы справка о команде)

    Лучший способ избавиться от ошибки - стереть все и написать снова, по туториалу.
     
    Jers и Geroll нравится это.
  12. Автор темы
    Geroll

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

    Баллы:
    123
    Спасибо , тему можно закрывать
     
  13. Автор темы
    Geroll

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

    Баллы:
    123
    ааааа , РАБОТАЕТ!
     
  14. 1lyaSweeper

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

    Баллы:
    173
    Skype:
    Iswperr
    Имя в Minecraft:
    1lyaSweeper
    вроде бы usage: /<command>
     
    Vedroyder нравится это.
  15. Jers

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

    Баллы:
    153
    У него команда /lvl. Нужно заменять <command> на свою команду...
     
    Сникерсни нравится это.
  16. 1lyaSweeper

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

    Баллы:
    173
    Skype:
    Iswperr
    Имя в Minecraft:
    1lyaSweeper
    :eek:
     
  17. Ission

    Ission Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    lokivava
    usage - выдаётся игроку при неправильном наборе команды и понаписать туда можно много всякого-всякого (onCommand(*) return false;).
     
    1lyaSweeper и Jers нравится это.
  18. Jampire

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

    Баллы:
    173
    Skype:
    jampire-h
    Имя в Minecraft:
    Jampire
    Намного круче везде писать return true; и выводить своё сообщение об ошибке)
    Ибо цвет, да и приятнее как-то..)
     
  19. DPOH-VAR

    DPOH-VAR Старожил Пользователь

    Баллы:
    153
    Skype:
    dpohvar
    Раз уж на то пошло, мсье, то еще круче перехватывать все исключения в обработке функции. А вместо return false выкидывать исключения с текстом, который потом отображать игроку. Я так и делаю ;)
     
    Jampire нравится это.
  20. Jampire

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

    Баллы:
    173
    Skype:
    jampire-h
    Имя в Minecraft:
    Jampire
    Велосипед :D
     

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