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

OnEnable Решено!

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

Статус темы:
Закрыта.
  1. Автор темы
    Boris3000

    Boris3000 Новичок

    Баллы:
    6
    Имя в Minecraft:
    _Borsi2000_
    я совсем недавно начал работать с плагинами поэтому не знаю как и что делается, до этого только в unity работал в среде jawa
    так вот вопрос делаю по урокам плагин (2й) и там надо создать команды вот мой код
    package ru.slywnow.bukkit.test;

    import org.bukkit.command.Command;
    import org.bukkit.command.CommandExecutor;
    import org.bukkit.command.CommandSender;
    import org.bukkit.plugin.java.JavaPlugin;

    public class command extends JavaPlugin implements CommandExecutor {
    @Override
    public boolean onCommand(CommandSender arg0, Command arg1, String arg2, String[] arg3) {
    }
    public void onEnable() {
    & getCommand("cmdplugin").setExecutor(new CmdPlgCommand());
    & getCommand("helpme").setExecutor(new HelpmeCommand());
    & getCommand("dmitriymx").setExecutor(new CopyrightAuthor());
    & }
    return true;
    }
    }
    &-пишет что отшибка
    помогите решить
     
  2. serega6531

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

    Баллы:
    173
    Skype:
    shkurovs
    Эммм, а зачем тут &? Это даже не оператор И.
     
  3. JustBlender

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

    Баллы:
    123
    Skype:
    justblender
    Имя в Minecraft:
    JustBlender
    Боже, что за говно у тебя там? Зачем один метод пихать в другой? onEnable() должен быть как отдельный. И да, что за '&'?
     
  4. serega6531

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

    Баллы:
    173
    Skype:
    shkurovs
    Он не пихает, он просто не может в разметку кода. onCommand заканчивается сразу после начала.
     
  5. Автор темы
    Boris3000

    Boris3000 Новичок

    Баллы:
    6
    Имя в Minecraft:
    _Borsi2000_
    Я же написал что &- это там где ошибку пишет!(в коле соотвецтвено этого нету)
    спасибо просто я привык не void а function писать вот и не заметил такой ерунды=)
    если не сложно помогите и с этим
    package ru.slywnow.bukkit.test;


    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileReader;

    import org.bukkit.command.Command;
    import org.bukkit.command.CommandSender;
    import org.bukkit.event.Listener;
    import org.bukkit.plugin.java.JavaPlugin;

    import ru.tehkode.permissions.bukkit.PermissionsEx;

    public class command extends JavaPlugin implements Listener {

    @Override
    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
    if(PermissionsEx.getUser(event.getPlayer()).has("slywnow.info")){
    if(command.getName().equalsIgnoreCase("cmdplugin")){
    sender.sendMessage("this is \"cmdplugin\" command");
    return true;
    }else if(command.getName().equalsIgnoreCase("slywnow")){
    File helpText = new File(getDataFolder(), "slywnow.txt");
    StringBuilder fullText = new StringBuilder();
    try {
    BufferedReader buffer = new BufferedReader(new FileReader(helpText));
    String line;
    while((line = buffer.readLine()) != null){
    fullText.append(line).append("\n");
    }
    buffer.close();
    } catch (Exception e) {
    e.printStackTrace();
    }
    sender.sendMessage(fullText.toString());
    return true;
    }
    return false;
    }
    }
    }
    ошибка там где event
    P.s пытался задать премишин для pex (плагин мастерю для сервера, поэтому pb не интересует.
     
  6. JustBlender

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

    Баллы:
    123
    Skype:
    justblender
    Имя в Minecraft:
    JustBlender
    Лол, совсем запутался.
     
  7. makssof

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

    Баллы:
    103
    Сам себе ответил. Такой переменной не существует, она нигде не объявлена.
     
  8. Hilgert

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

    Баллы:
    123
    Skype:
    mixa2258
    Имя в Minecraft:
    Hilgert
    Ошибка NullPointerException? если да, в plugin.yml команды вписаны?
     
  9. kirill2011s

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

    Баллы:
    103
    Как я понял, у него ошибка синтаксическая. Чтобы написать оператор "и" нужно писать "&&"
     
  10. serega6531

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

    Баллы:
    173
    Skype:
    shkurovs
    Нет. Вы код читали? К тому же, эту ошибку уже исправили.
     
  11. promc

    promc Новичок Пользователь

    Баллы:
    21
    Имя в Minecraft:
    pro_mc
    Ты скинь хотя бы какую ошибку кидает
     
  12. Reality_SC

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

    Баллы:
    123
    Имя в Minecraft:
    Reality_SC
    Блин, используйте уже тег [ code = Java ] ... [ /code ]
     
  13. fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    Это очень хорошо, что Вы научились копировать из разных мест. Только при этом нужно понимать, что именно Вы копируете.

    event.getPlayer()... Вы скопировали из какого-то обработчика событий. Там объект event был определен. Т.е. там было что-то вроде этого:
    Код:
      @EventHandler
      public void onPlayerNeedToLearnJava (PlayerMoveEvent event);
            if(PermissionsEx.getUser(event.getPlayer()).has("slywnow.info")){
    ...
    
    Видите в чем разница? Во втором варианте, объект event является параметром для вызываемой функции, а в функции onCommand параметры только такие: CommandSender sender, Command command, String label, String[] args
    Там нет event. Соответственно обращаться к этому объекту... ну ни как нельзя. Нет его. Не существует.

    А поскольку Вам нужно здесь не событие, а игрок который выполнил команду, то для этого нужно работать с объектом sender:
    Код:
        @Override
        public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
            Player player = null; // Создаем объект player - игрок
            if (sender insanceof Player) player = (Player) sender; // Если sender - это игрок - то "получаем" его.
            else return false; // Или если команду писали в консоли - уходим
            if(player.hasPermission("slywnow.info")){
    //... дальше делайте что Вы хотите.
    
    Вообще Ваши ошибки понятны на этапе набора кода. Т.е. Вы ещё не пытаетесь компилировать, а вам IDE уже подсказывает, что у Вас ошибка. Если прочитать текст ошибки и попытаться его понять - то даже если сразу не будет понятно, как исправлять, то по крайней мере вопросы будет задавать проще.
     
  14. Автор темы
    Boris3000

    Boris3000 Новичок

    Баллы:
    6
    Имя в Minecraft:
    _Borsi2000_
    Спасибо всем, за время не работы rubukkit'a уже решил не только эту но и проблему с player , и научился задавать переменые, а то пытался через var или public делать=)
     
Статус темы:
Закрыта.

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