Bukkit NullPointerException onEnable()

时间:2014-11-16 20:13:18

标签: nullpointerexception bukkit

我一直在研究一个新的插件,当我加载它时,它会给我一个" NullPointerException"错误,我似乎无法找到它可以找到错误的地方。这是错误:

  

[20:15:45] [服务器线程/信息]:[EntityManager]启用EntityManager v3.0.0.4   [20:15:45] [服务器线程/信息]:[0; 31; 1mEntityManager [0; 32; 1m3.0.0.4 [0; 36; 1m已启用![m]   [20:15:45] [服务器线程/错误]:启用EntityManager v3.0.0.4时出错(它是最新的吗?)   显示java.lang.NullPointerException       在me.AngryCupcake274.EntityManager.EntityManager.loadConfiguration(EntityManager.java:296)〜[?:?]       at me.AngryCupcake274.EntityManager.EntityManager.onEnable(EntityManager.java:63)〜[?:?]       在org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:316)~ [spigot.jar:git-Spigot-1649]       在org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:332)[spigot.jar:git-Spigot-1649]       在org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:417)[spigot.jar:git-Spigot-1649]       在org.bukkit.craftbukkit.v1_7_R4.CraftServer.loadPlugin(CraftServer.java:476)[spigot.jar:git-Spigot-1649]       在org.bukkit.craftbukkit.v1_7_R4.CraftServer.enablePlugins(CraftServer.java:394)[spigot.jar:git-Spigot-1649]       at net.minecraft.server.v1_7_R4.MinecraftServer.n(MinecraftServer.java:360)[spigot.jar:git-Spigot-1649]       at net.minecraft.server.v1_7_R4.MinecraftServer.g(MinecraftServer.java:334)[spigot.jar:git-Spigot-1649]       at net.minecraft.server.v1_7_R4.MinecraftServer.a(MinecraftServer.java:290)[spigot.jar:git-Spigot-1649]       at net.minecraft.server.v1_7_R4.DedicatedServer.init(DedicatedServer.java:210)[spigot.jar:git-Spigot-1649]       at net.minecraft.server.v1_7_R4.MinecraftServer.run(MinecraftServer.java:458)[spigot.jar:git-Spigot-1649]       at net.minecraft.server.v1_7_R4.ThreadServerApplication.run(SourceFile:628)[spigot.jar:git-Spigot-1649]

package me.AngryCupcake274.EntityManager;

import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Server;
import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.entity.*;
import org.bukkit.event.Listener;
import org.bukkit.plugin.PluginDescriptionFile;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.scheduler.BukkitScheduler;

public class EntityManager extends JavaPlugin implements Listener {

RemoveEntities reme;
CommandHandler comh;
CleanEntities cent;

int loopdelay;
String oneminutemessage;
String oneminutecolor;
String threesecondsmessage;
String threesecondscolor;
String twosecondsmessage;
String twosecondscolor;
String onesecondmessage;
String onesecondcolor;
String finalmessage;
String finalcolor;

String oneMinWarn;

String threeSecWarn;

String twoSecWarn;

String oneSecWarn;

String removeInfo;

String[] worldNames;
Server server = Bukkit.getServer();
ConsoleCommandSender console = server.getConsoleSender();
PluginDescriptionFile pdf = this.getDescription();
String pdfEnable = ChatColor.RED + pdf.getName() + " " + ChatColor.GREEN
        + pdf.getVersion() + ChatColor.AQUA + " Enabled!";
String pdfDisable = ChatColor.RED + pdf.getName() + " " + ChatColor.GREEN
        + pdf.getVersion() + ChatColor.DARK_PURPLE + " Enabled!";

Player cleaner;

int counter = 0;
int totalcounter = 0;

@Override
public void onEnable() {

    console.sendMessage(pdfEnable);

    BukkitScheduler scheduler = Bukkit.getServer().getScheduler();
    saveDefaultConfig();

    loadConfiguration();

    scheduler.scheduleSyncRepeatingTask(this, new Runnable() {
        @Override
        public void run() {
            for (int first = 0; first >= 1; first++) {
                cleanUp();
            }
        }
    }, 0L, 12000L);
}

@Override
public void onDisable() {
    console.sendMessage(pdfDisable);
}

@SuppressWarnings("deprecation")
public void cleanUp() {
    // warn
    for (Player player : Bukkit.getOnlinePlayers()) {
        player.sendMessage(oneMinWarn);
    }
    console.sendMessage(oneMinWarn);

    BukkitScheduler warn3 = Bukkit.getServer().getScheduler();
    warn3.scheduleSyncDelayedTask(this, new Runnable() {
        @Override
        public void run() {
            for (Player player : Bukkit.getOnlinePlayers()) {
                player.sendMessage(threeSecWarn);
            }
            console.sendMessage(threeSecWarn);
        }
    }, 1220L);

    BukkitScheduler warn2 = Bukkit.getServer().getScheduler();
    warn2.scheduleSyncDelayedTask(this, new Runnable() {
        @Override
        public void run() {
            for (Player player : Bukkit.getOnlinePlayers()) {
                player.sendMessage(twoSecWarn);
            }
            console.sendMessage(twoSecWarn);
        }
    }, 1240L);

    BukkitScheduler warn1 = Bukkit.getServer().getScheduler();
    warn1.scheduleSyncDelayedTask(this, new Runnable() {
        @Override
        public void run() {
            for (Player player : Bukkit.getOnlinePlayers()) {
                player.sendMessage(oneSecWarn);
            }
            console.sendMessage(oneSecWarn);
        }
    }, 1260L);

    BukkitScheduler doAction = Bukkit.getServer().getScheduler();
    doAction.scheduleSyncDelayedTask(this, new Runnable() {
        @Override
        public void run() {
            reme.removeEntities();
        }
    }, 1280L);
}

@SuppressWarnings("deprecation")
public void cleanUpCommand() {
    // warn
    for (Player player : Bukkit.getOnlinePlayers()) {
        player.sendMessage(threeSecWarn);
    }
    console.sendMessage(threeSecWarn);

    BukkitScheduler warn2c = Bukkit.getServer().getScheduler();
    warn2c.scheduleSyncDelayedTask(this, new Runnable() {
        @Override
        public void run() {
            for (Player player : Bukkit.getOnlinePlayers()) {
                player.sendMessage(twoSecWarn);
            }
            console.sendMessage(twoSecWarn);
        }
    }, 20L);

    BukkitScheduler warn1c = Bukkit.getServer().getScheduler();
    warn1c.scheduleSyncDelayedTask(this, new Runnable() {
        @Override
        public void run() {
            for (Player player : Bukkit.getOnlinePlayers()) {
                player.sendMessage(oneSecWarn);
            }
            console.sendMessage(oneSecWarn);
        }
    }, 40L);

    BukkitScheduler doAction = Bukkit.getServer().getScheduler();
    doAction.scheduleSyncDelayedTask(this, new Runnable() {
        @Override
        public void run() {

            for (Player player : Bukkit.getOnlinePlayers()) {
                player.sendMessage(removeInfo);
            }
            console.sendMessage(removeInfo);
        }
    }, 60L);
}

public void cleanUpCommand2() {
    BukkitScheduler doAction = Bukkit.getServer().getScheduler();
    doAction.scheduleSyncDelayedTask(this, new Runnable() {
        @Override
        public void run() {
            reme.removeEntities();
        }
    }, 0L);
}

public void loadConfiguration() {
    String ltime = "looptime";
    String onemmsg = "oneminute.message";
    String onemcolor = "oneminute.color";
    String threesmsg = "threeseconds.message";
    String threescolor = "threeseconds.color";
    String twosmsg = "twoseconds.message";
    String twoscolor = "twoseconds.color";
    String onesmsg = "onesecond.message";
    String onescolor = "onesecond.color";
    String fmsg = "final.message";
    String fcolor = "final.color";

    String arrowr = "arrow";
    String boatr = "boat";
    String itemr = "dropped_item";
    String eggr = "egg";
    String enderdragonr = "ender_dragon";
    String enderpearlr = "ender_pearl";
    String endersignalr = "ender_signal";
    String xporbr = "experience_orb";
    String fireballr = "fireball";
    String fireworkr = "firework";
    String fishinghookr = "fishing_hook";
    String itemframer = "item_frame";
    String leashr = "leash_hitch";
    String lightningr = "lightning";
    String minecartr = "minecart";
    String minecartchestr = "minecart_chest";
    String minecartcommandr = "minecart_command";
    String minecartfurnacer = "minecart_furnace";
    String minecarthopperr = "minecart_hopper";
    String minecartmobspawnerr = "minecart_mob_spawner";
    String minecarttntr = "minecart_tnt";
    String paintingr = "painting";
    String primedtntr = "primed_tnt";
    String sfireballr = "small_fireball";
    String snowballr = "snowball";
    String splashpotionr = "splash_potion";
    String expbottler = "exp_bottle";
    String thrownxpbottler = "thrown_exp_bottle";
    String witherskullr = "wither_skull";

    getConfig().addDefault(ltime, (10 * 60 * 20));
    getConfig().addDefault(onemmsg,
            "Ground items will be removed in 1 minute!");
    getConfig().addDefault(onemcolor, "AQUA");
    getConfig().addDefault(threesmsg,
            "Ground items will be removed in 3 seconds!");
    getConfig().addDefault(threescolor, "DARK_GREEN");
    getConfig().addDefault(twosmsg, "2 seconds!");
    getConfig().addDefault(twoscolor, "GOLD");
    getConfig().addDefault(onesmsg, "1 second!");
    getConfig().addDefault(onescolor, "RED");
    getConfig().addDefault(fmsg, "Ground items will be removed!");
    getConfig().addDefault(fcolor, "DARK_RED");

    getConfig().addDefault(arrowr, true);
    getConfig().addDefault(boatr, false);
    getConfig().addDefault(itemr, true);
    getConfig().addDefault(eggr, true);
    getConfig().addDefault(enderdragonr, false);
    getConfig().addDefault(enderpearlr, true);
    getConfig().addDefault(endersignalr, true);
    getConfig().addDefault(xporbr, true);
    getConfig().addDefault(fireballr, true);
    getConfig().addDefault(fireworkr, true);
    getConfig().addDefault(fishinghookr, false);
    getConfig().addDefault(itemframer, false);
    getConfig().addDefault(leashr, false);
    getConfig().addDefault(lightningr, true);
    getConfig().addDefault(minecartr, false);
    getConfig().addDefault(minecartchestr, false);
    getConfig().addDefault(minecartcommandr, false);
    getConfig().addDefault(minecartfurnacer, false);
    getConfig().addDefault(minecarthopperr, false);
    getConfig().addDefault(minecartmobspawnerr, false);
    getConfig().addDefault(minecarttntr, false);
    getConfig().addDefault(paintingr, false);
    getConfig().addDefault(primedtntr, true);
    getConfig().addDefault(sfireballr, true);
    getConfig().addDefault(snowballr, true);
    getConfig().addDefault(splashpotionr, true);
    getConfig().addDefault(expbottler, true);
    getConfig().addDefault(thrownxpbottler, true);
    getConfig().addDefault(witherskullr, true);

    getConfig().options().copyDefaults(true);
    saveConfig();

    loopdelay = getConfig().getInt("looptime");
    oneminutemessage = getConfig().getString("oneminute.message");
    oneminutecolor = getConfig().getString("oneminute.color");
    threesecondsmessage = getConfig().getString("threeseconds.message");
    threesecondscolor = getConfig().getString("threeseconds.color");
    twosecondsmessage = getConfig().getString("twoseconds.message");
    twosecondscolor = getConfig().getString("twoseconds.color");
    onesecondmessage = getConfig().getString("onesecond.message");
    onesecondcolor = getConfig().getString("onesecond.color");
    finalmessage = getConfig().getString("final.message");
    finalcolor = getConfig().getString("final.color");

    oneMinWarn = ChatColor.valueOf(oneminutecolor) + oneminutemessage;

    threeSecWarn = ChatColor.valueOf(threesecondscolor)
            + threesecondsmessage;

    twoSecWarn = ChatColor.valueOf(twosecondscolor) + twosecondsmessage;

    oneSecWarn = ChatColor.valueOf(onesecondcolor) + onesecondmessage;

    removeInfo = ChatColor.valueOf(finalcolor) + finalmessage;

    reme.arrow = getConfig().getBoolean("arrow");
    reme.boat = getConfig().getBoolean("boat");
    reme.droppeditem = getConfig().getBoolean("dropped_item");
    reme.egg = getConfig().getBoolean("egg");
    reme.enderpearl = getConfig().getBoolean("ender_pearl");
    reme.endersignal = getConfig().getBoolean("ender_signal");
    reme.experienceorb = getConfig().getBoolean("experience_orb");
    reme.fireball = getConfig().getBoolean("fireball");
    reme.firework = getConfig().getBoolean("firework");
    reme.fishinghook = getConfig().getBoolean("fishing_hook");
    reme.itemframe = getConfig().getBoolean("item_frame");
    reme.leashhitch = getConfig().getBoolean("leash_hitch");
    reme.lightning = getConfig().getBoolean("lightning");
    reme.minecart = getConfig().getBoolean("minecart");
    reme.minecartchest = getConfig().getBoolean("minecart_chest");
    reme.minecartcommand = getConfig().getBoolean("minecart_command");
    reme.minecartfurnace = getConfig().getBoolean("minecart_furnace");
    reme.minecarthopper = getConfig().getBoolean("minecart_hopper");
    reme.minecartmobspawner = getConfig().getBoolean("minecart_mob_spawner");
    reme.minecarttnt = getConfig().getBoolean("minecart_tnt");
    reme.painting = getConfig().getBoolean("painting");
    reme.primedtnt = getConfig().getBoolean("primed_tnt");
    reme.smallfireball = getConfig().getBoolean("small_fireball");
    reme.snowball = getConfig().getBoolean("snowball");
    reme.splashpotion = getConfig().getBoolean("splash_potion");
    reme.thrownexpbottle = getConfig().getBoolean("exp_bottle");
    reme.witherskull = getConfig().getBoolean("wither_skull");

    saveDefaultConfig();
}

public void reloadPlugin() {
    reloadConfig();

    loopdelay = getConfig().getInt("looptime");
    oneminutemessage = getConfig().getString("oneminute.message");
    oneminutecolor = getConfig().getString("oneminute.color");
    threesecondsmessage = getConfig().getString("threeseconds.message");
    threesecondscolor = getConfig().getString("threeseconds.color");
    twosecondsmessage = getConfig().getString("twoseconds.message");
    twosecondscolor = getConfig().getString("twoseconds.color");
    onesecondmessage = getConfig().getString("onesecond.message");
    onesecondcolor = getConfig().getString("onesecond.color");
    finalmessage = getConfig().getString("final.message");
    finalcolor = getConfig().getString("final.color");

    reme.arrow = getConfig().getBoolean("arrow");
    reme.boat = getConfig().getBoolean("boat");
    reme.droppeditem = getConfig().getBoolean("dropped_item");
    reme.egg = getConfig().getBoolean("egg");
    reme.enderpearl = getConfig().getBoolean("ender_pearl");
    reme.endersignal = getConfig().getBoolean("ender_signal");
    reme.experienceorb = getConfig().getBoolean("experience_orb");
    reme.fireball = getConfig().getBoolean("fireball");
    reme.firework = getConfig().getBoolean("firework");
    reme.fishinghook = getConfig().getBoolean("fishing_hook");
    reme.itemframe = getConfig().getBoolean("item_frame");
    reme.leashhitch = getConfig().getBoolean("leash_hitch");
    reme.lightning = getConfig().getBoolean("lightning");
    reme.minecart = getConfig().getBoolean("minecart");
    reme.minecartchest = getConfig().getBoolean("minecart_chest");
    reme.minecartcommand = getConfig().getBoolean("minecart_command");
    reme.minecartfurnace = getConfig().getBoolean("minecart_furnace");
    reme.minecarthopper = getConfig().getBoolean("minecart_hopper");
    reme.minecartmobspawner = getConfig().getBoolean("minecart_mob_spawner");
    reme.minecarttnt = getConfig().getBoolean("minecart_tnt");
    reme.painting = getConfig().getBoolean("painting");
    reme.primedtnt = getConfig().getBoolean("primed_tnt");
    reme.smallfireball = getConfig().getBoolean("small_fireball");
    reme.snowball = getConfig().getBoolean("snowball");
    reme.splashpotion = getConfig().getBoolean("splash_potion");
    reme.thrownexpbottle = getConfig().getBoolean("exp_bottle");
    reme.witherskull = getConfig().getBoolean("wither_skull");

    getServer().getScheduler().cancelTasks(this);
    getServer().getPluginManager().disablePlugin(this);
    getServer().getPluginManager().enablePlugin(this);
}
}

2 个答案:

答案 0 :(得分:1)

  

me.AngryCupcake274.EntityManager.EntityManager.loadConfiguration(EntityManager.java:296)

您的296文件的第EntityManager.java行会抛出异常。

reme.arrow = getConfig().getBoolean("arrow");

此时reme仍为null,因此您无法指定arrow。 在RemoveEntitites方法中调用loadConfiguration()后,您应确保onEnable()已经过实例化。

另见What is a NPE and how do I fix it?

答案 1 :(得分:0)

我做到了!

我告诉RemoveEntities类在RemoveEntities类中找到变量,而不是设置EntityManager变量。