Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

Помогите Ошибка при запуске плагина связанная с конфигом

ILeZzoV

Активный участник
Пользователь
Баллы
66
Имя в Minecraft
ILeZzoV
Здравствуйте, при запуске плагина в консоль вылезла такая ошибка
Error occurred while enabling CoalAntiVoid v1.0 (Is it up to date?)
java.lang.NullPointerException: Cannot invoke "org.minecoal.ru.coalantivoid.CoalAntiVoid.getConfig()" because "this.plugin" is null
 
Без кода не понять, что такое this.plugin?
 
Без кода не понять, что такое this.plugin?
Код:
package org.minecoal.ru.coalantivoid;

import org.bukkit.command.CommandExecutor;
import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.java.JavaPlugin;
import java.util.logging.Logger;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerMoveEvent;
import org.jetbrains.annotations.NotNull;

import java.io.File;
public final class CoalAntiVoid extends JavaPlugin {

    private Plugin plugin;

    @Override
    public void onEnable() {

        this.getLogger().info("§6CoalAntiVoid §fЗапущен");
        this.getLogger().info("§fВерсия: §e1.0");
        this.getLogger().info("§bvk.com/ilezovofficial");
        File config = new File(getDataFolder() + File.separator + "config.yml");
        if(!config.exists()) {
            getLogger().info("§6CoalDesign &fСоздание &9config.yml");
            getConfig().options().copyDefaults(true);
            saveDefaultConfig();
        }

        Bukkit.getPluginManager().registerEvents(new antivoid(this), this);

        String a = getConfig().getString("Message.noPermission");
        String prefix = getConfig().getString("prefix");
        String reload = getConfig().getString("Message.reload");

        getCommand("coalavd").setExecutor(new CommandExecutor() {
            @Override
            public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) {
                if(args.length == 0 && sender.hasPermission("coalav.reload")){

                    sender.sendMessage("§fПерезагрузить плагин - §e/coalav reload");
                    return true;
                }else{
                    sender.sendMessage(prefix + a);
                }
                if(args[0].equalsIgnoreCase("reload")){
                    reloadConfig();
                    sender.sendMessage(prefix + reload);
                    return true;
                }
                return false;
            }
        });

    }


    @Override
    public void onDisable() {
        this.getLogger().info("§6CoalAntiVoid §fЗапущен");
        this.getLogger().info("§fВерсия: §e1.0");
        this.getLogger().info("§bvk.com/ilezovofficial");
            }
}

Код:
package org.minecoal.ru.coalantivoid;

import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.Sound;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerMoveEvent;

public class antivoid implements Listener {
    private CoalAntiVoid plugin;
    public antivoid(CoalAntiVoid plugin) {
        this.plugin = plugin;
    }

    int a = plugin.getConfig().getInt("Xyz.y");
    boolean q = plugin.getConfig().getBoolean("function.title");
    boolean q1 = plugin.getConfig().getBoolean("function.message");
    boolean q2 = plugin.getConfig().getBoolean("function.actionbar");
    boolean q3 = plugin.getConfig().getBoolean("function.sound");
    String prefix = plugin.getConfig().getString("prefix");
    String title = plugin.getConfig().getString("Message.titlemsg");
    String subtitle = plugin.getConfig().getString("Message.subtitlemsg");
    String message = plugin.getConfig().getString("Message.messagemsg");
    String actionbar = plugin.getConfig().getString("Message.actionbarmsg");

    String sound = plugin.getConfig().getString("Songs.sound");

    @EventHandler
    public void moveplayer(PlayerMoveEvent e){


        Player p = e.getPlayer();
        int y = p.getLocation().getBlockY();
        Location spawn = p.getWorld().getSpawnLocation();
        if(y<a){
            p.teleport(spawn);
            if(q == true){
                p.sendTitle(title, subtitle, 20,40,20);
            }
            if(q1==true){
                p.sendMessage(prefix+ message);
            }
            if(q2==true){
                p.sendActionBar(actionbar);
            }


        }
    }
}
 
А покажи где именно выдает ошибку, короче говоря полный лог ошибки скинь,
желательно через pastebin.com или hastebin.com

Ну а вообще может поможет, в главном классе создать поле
static CoalAntiVoid instance;

И геттер для него

public static CoalAntiVoid getInstance() {
return instance;
}

И в классе с ивентом вместо plugin использовать метод getInstance()
 
А покажи где именно выдает ошибку, короче говоря полный лог ошибки скинь,
желательно через pastebin.com или hastebin.com

Ну а вообще может поможет, в главном классе создать поле
static CoalAntiVoid instance;

И геттер для него

public static CoalAntiVoid getInstance() {
return instance;
}

И в классе с ивентом вместо plugin использовать метод getInstance()
Hastebin: Send and Save Text or Code Snippets for Free | Toptal®
 
Я можно сказать в разработке первый день, так что за многое не шарю, поэтому могу тупить на простых словах
 
Я можно сказать в разработке первый день, так что за многое не шарю, поэтому могу тупить на простых словах
Чесн, и я не знаю, не было такого, попробуй убрать из главного класса
private Plugin plugin;

Или попробуй метод который я описал в предыдущем сообщении

Или как ещё один вариант, инициализировать твои поля в классе с ивентом во время выполнения ивента
 
Поля в классе инициализируются раньше вызова конструктора.
Поэтому на момент инициализации полей класса antivoid поле plugin ещё не инициализировано.
Самое простое, что ты можешь сделать - это перенести инициализацию всех полей в конструктор.

И да, в Java названия всех классов с большой буквы, поэтому рекомендую переименовать antivoid в Antivoid или AntiVoid
 

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

Назад
Верх