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

Статус
Закрыто для дальнейших ответов.

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
 
Последнее редактирование:
Я указал, с этим проблем нет..
это ты как определил, что нет?) в твоей строке с ошибкой null может возникать только из вызова
getCommand("youtube"). скорее всего это значит у тебя команда youtube не зарегистрирована в plugin.yml. покажи что в нем
 
это ты как определил, что нет?) в твоей строке с ошибкой null может возникать только из вызова
getCommand("youtube"). скорее всего это значит у тебя команда youtube не зарегистрирована в plugin.yml. покажи что в нем
Согласна
 
Конфиг plugin.yml:

name: YTStream
main: ru.cryptocomplex.main.core
version: 0.3
commands:
youtube:
description: blabla
usage: /youtube <URL>
 
Конфиг plugin.yml:

name: YTStream
main: ru.cryptocomplex.main.core
version: 0.3
commands:
youtube:
description: blabla
usage: /youtube <URL>
Проверь содержимое файла парсером: http://yaml-online-parser.appspot.com
Хотя, конечно, странно.
По логике, с кривым конфигом плагин бы не запустился вовсе.
Убедись, что в обоих местах у тебя всё латиницей.
Перекомпиль плагин, наконец.
Чудес не бывает
 
Не знаю в чем кроется секрет этого, но у меня была точно такая же ошибка.
Исправил ее так:
В главный класс вне onEnable добавил
Код:
private Commands commands
, а уже внутри onEnable объявил
Код:
 this.commands = new Commands();

Соответственно, в строке
Код:
getCommand("youtube").setExecutor(new Commands(this));
меняешь new Commands(this) на commands(this)
 
Я всё больше начинаю верить в чудеса...
Парсер вывел следующее:
Код:
{
  "commands": null,
  "version": 0.3,
  "name": "YTStream",
  "usage": "/youtube",
  "main": "ru.cryptocomplex.main.core",
  "youtube": null,
  "description": "haha"
}
В итоге всё равно ничего не работает...
 
Не знаю в чем кроется секрет этого, но у меня была точно такая же ошибка.
Исправил ее так:
В главный класс вне onEnable добавил
Код:
private Commands commands
, а уже внутри onEnable объявил
Код:
 this.commands = new Commands();

Соответственно, в строке
Код:
getCommand("youtube").setExecutor(new Commands(this));
меняешь new Commands(this) на commands(this)
сделал всё так, как ты сказал. профита 0 :с
 
Я всё больше начинаю верить в чудеса...
Парсер вывел следующее:
Код:
{
  "commands": null,
  "version": 0.3,
  "name": "YTStream",
  "usage": "/youtube",
  "main": "ru.cryptocomplex.main.core",
  "youtube": null,
  "description": "haha"
}
В итоге всё равно ничего не работает...
Скинь его файлом или напиши через вставку с отступами 😁
 
Тема закрыта. Автор (я) - долбобо. Отдельное спасибо тем, кто мне помог!
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх