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

Помогите Код отлично компилируется, но не хочет работать.

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

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

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

    Баллы:
    61
    Имя в Minecraft:
    BrightWhisper
    Дело в следующем: Пишу я спокойно простейший плагин для вывода текста по команде. Эклипс видит, что в коде ошибок вообще нет. Пробую запустить - ХОБА! Ошибка в следующей строке:

    Код:
    getCommand("youtube").setExecutor(new Commands(this));
    Вот исходный код:
    главный класс:
    Код:
    package ru.cryptocomplex.main;
    
    import java.io.File;
    import java.util.logging.Logger;
    import ru.cryptocomplex.main.Commands;
    import org.bukkit.plugin.java.JavaPlugin;
    
    public class core extends JavaPlugin {
     
        Logger log = Logger.getLogger("Minecraft");
    
            public void onEnable(){
                File config = new File(getDataFolder() + File.separator + "config.yml");
                if(!config.exists()) {
                    getLogger().warning("Can't find config.yml in plugin directory!");
                    getLogger().info("Creating new config file...");
                    getConfig().options().copyDefaults(true);
                    saveDefaultConfig();
                }
                getCommand("youtube").setExecutor(new Commands(this));
                getLogger().info("Plugin enabled!");
                getLogger().info("Plugin made exclusively for CryptoComplex!");
            }
         
            public void onDisable(){
                getLogger().info("Plugin disabled! :C");
            }
         
    }
    класс "Commands":
    Код:
    package ru.cryptocomplex.main;
    
    import org.bukkit.Bukkit;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandExecutor;
    import org.bukkit.command.CommandSender;
    
    public class Commands implements CommandExecutor{
    
        private core plugin;
    
        public Commands(core plugin) {
            this.plugin = plugin;
        }
    
        @Override
        public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
            String prefix = plugin.getConfig().getString("prefix");
            prefix = prefix.replace("&", "\u00a7");
            String netprav = plugin.getConfig().getString("netprav");
            netprav = netprav.replace("&", "\u00a7");
            if(!sender.hasPermission("ytstream.youtube")) {
                sender.sendMessage(prefix + netprav);
            return true;
            }
     
        if(args.length == 0){
            return false;
        }
     
        String url = args[0];
        String cao = plugin.getConfig().getString("messages.closeandopen");
        cao = cao.replace("&", "\u00a7");
        String bfrnick = plugin.getConfig().getString("messages.bfrnick");
        bfrnick = bfrnick.replace("&", "\u00a7");
        String bfrurl = plugin.getConfig().getString("messages.bfrurl");
        bfrurl = bfrurl.replace("&", "\u00a7");
        Bukkit.broadcastMessage(cao);
        Bukkit.broadcastMessage(bfrnick + sender);
        Bukkit.broadcastMessage(bfrurl + url);
        Bukkit.broadcastMessage(cao);
        return true;
    }
    }
    
    (Ещё есть файлы plugin.yml и config.yml, но они своей таковой роли тут не играют)

    Код ошибочки прилагается: upload_2019-1-27_20-43-24.png
     
    Последнее редактирование: 27 янв 2019
  2. Nikolai_Faint

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

    Баллы:
    96
    Вангую NullPointer.
     
  3. LuckyZeeRo

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

    Баллы:
    96
    Имя в Minecraft:
    i0xHeX
  4. Code

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

    Баллы:
    123
    Имя в Minecraft:
    _Gizmo
    вроде играют, команду надо указать в plygin.yml
     
  5. Автор темы
    BrightWhisper

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

    Баллы:
    61
    Имя в Minecraft:
    BrightWhisper
    Я указал, с этим проблем нет..

    Как бы вы предложили изменить код так, чтобы он в итоге стал рабочим?
     
  6. Code

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

    Баллы:
    123
    Имя в Minecraft:
    _Gizmo
    это ты как определил, что нет?) в твоей строке с ошибкой null может возникать только из вызова
    getCommand("youtube"). скорее всего это значит у тебя команда youtube не зарегистрирована в plugin.yml. покажи что в нем
     
  7. Evgesha728

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

    Баллы:
    6
    Имя в Minecraft:
    Evgesha728
    Согласна
     
  8. Автор темы
    BrightWhisper

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

    Баллы:
    61
    Имя в Minecraft:
    BrightWhisper
    Конфиг plugin.yml:

    name: YTStream
    main: ru.cryptocomplex.main.core
    version: 0.3
    commands:
    youtube:
    description: blabla
    usage: /youtube <URL>
     
  9. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Проверь содержимое файла парсером: http://yaml-online-parser.appspot.com
    Хотя, конечно, странно.
    По логике, с кривым конфигом плагин бы не запустился вовсе.
    Убедись, что в обоих местах у тебя всё латиницей.
    Перекомпиль плагин, наконец.
    Чудес не бывает
     
  10. Vladis086

    Vladis086 Активный участник

    Баллы:
    61
    Имя в Minecraft:
    Vladis086
    Не знаю в чем кроется секрет этого, но у меня была точно такая же ошибка.
    Исправил ее так:
    В главный класс вне onEnable добавил
    Код:
    private Commands commands
    , а уже внутри onEnable объявил
    Код:
     this.commands = new Commands(); 
    Соответственно, в строке
    Код:
     
    getCommand("youtube").setExecutor(new Commands(this)); 
    меняешь new Commands(this) на commands(this)
     
  11. Автор темы
    BrightWhisper

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

    Баллы:
    61
    Имя в Minecraft:
    BrightWhisper
    Я всё больше начинаю верить в чудеса...
    Парсер вывел следующее:
    Код:
    {
      "commands": null,
      "version": 0.3,
      "name": "YTStream",
      "usage": "/youtube",
      "main": "ru.cryptocomplex.main.core",
      "youtube": null,
      "description": "haha"
    }
    В итоге всё равно ничего не работает...
     
  12. Автор темы
    BrightWhisper

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

    Баллы:
    61
    Имя в Minecraft:
    BrightWhisper
    сделал всё так, как ты сказал. профита 0 :с
     
  13. NyanGuyMF

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

    Баллы:
    76
    Скинь его файлом или напиши через вставку с отступами :D
     
  14. Автор темы
    BrightWhisper

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

    Баллы:
    61
    Имя в Minecraft:
    BrightWhisper
    Код:
    {
      "commands": {
        "youtube": {
          "usage": "/youtube",
          "description": "haha"
        }
      },
      "main": "ru.cryptocomplex.main.core",
      "name": "YTStream",
      "version": 0.3
    }
    вуаля
     
  15. NyanGuyMF

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

    Баллы:
    76
    Сам plugin.yml :D Так, как ты скинул сейчас должно работать..

    Пример:
    upload_2019-1-28_15-46-30.png
     
  16. Автор темы
    BrightWhisper

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

    Баллы:
    61
    Имя в Minecraft:
    BrightWhisper
    Тема закрыта. Автор (я) - долбобо. Отдельное спасибо тем, кто мне помог!
     
Статус темы:
Закрыта.

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