2

I'm having a NullPointerException when trying to load the plugin in my bukkit server, but no errors in Eclipse. My plugin is a Rush pluing and alot of things are not used/missing. The Error is this:

[18:11:10] [Server thread/ERROR]: Could not load 'plugins\rush.jar' in folder 'plugins'
org.bukkit.plugin.InvalidPluginException: java.lang.NullPointerException
at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:182) ~                          [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
at org.bukkit.plugin.SimplePluginManager.loadPlugin(SimplePluginManager.java:308) ~  [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager.java:231) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
at org.bukkit.craftbukkit.v1_7_R1.CraftServer.loadPlugins(CraftServer.java:255) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
at org.bukkit.craftbukkit.v1_7_R1.CraftServer.<init>(CraftServer.java:233) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
at net.minecraft.server.v1_7_R1.PlayerList.<init>(PlayerList.java:63) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
at net.minecraft.server.v1_7_R1.DedicatedPlayerList.<init>(SourceFile:14) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
at net.minecraft.server.v1_7_R1.DedicatedServer.init(DedicatedServer.java:126) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
at net.minecraft.server.v1_7_R1.MinecraftServer.run(MinecraftServer.java:424) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
at net.minecraft.server.v1_7_R1.ThreadServerApplication.run(SourceFile:617) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
Caused by: java.lang.NullPointerException
at me.mailh.Rush.MainRush.<init>(MainRush.java:62) ~[?:?]
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:1.7.0_45]
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) ~[?:1.7.0_45]
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) ~  [?:1.7.0_45]
at java.lang.reflect.Constructor.newInstance(Unknown Source) ~[?:1.7.0_45]
at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:178) ~  [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
... 9 more

Here is my code:

package me.mailh.Rush;

import java.io.File;
import java.util.logging.Logger;

import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.World;
import org.bukkit.WorldCreator;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.PlayerDeathEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.scoreboard.Scoreboard;
import org.bukkit.scoreboard.ScoreboardManager;
import org.bukkit.scoreboard.Team;

public  class  MainRush extends JavaPlugin implements Listener{


public final Logger logger = Logger.getLogger("Minecraft");
public static MainRush plugin;





public void onEnable(){
    this.logger.info("Rush is enabled.");
    getServer().getPluginManager().registerEvents(this, this);
}


    private  ScoreboardManager manager = Bukkit.getScoreboardManager();
    private Scoreboard board = manager.getNewScoreboard();
    private  Team bleu = board.registerNewTeam("bleu");
    private  Team orange = board.registerNewTeam("orange");


public void onDisable(){
    this.logger.info("Rush is disabled.");
}



public boolean onCommand(CommandSender s, Command c, String lbl, String[] args){
    Player pl = (Player) s;
    if (lbl.equalsIgnoreCase("rush")){
        if (args.length == 0){ 
        World w = Bukkit.getWorld("rush");


        Location rush = new Location( w, -210, 51, -8 );
        pl.sendMessage(ChatColor.GOLD + "Teleportation...");
        pl.teleport(rush);
        } 

        if (args[0].equalsIgnoreCase("bleu")){
            board.resetScores(pl.getPlayer());
            orange.removePlayer(pl.getPlayer());
            bleu.addPlayer(pl.getPlayer());
            pl.sendMessage(ChatColor.AQUA + "Vous êtes dans l'équipe bleu");
            bleu.setAllowFriendlyFire(false);

            }
        if (args[0].equalsIgnoreCase("leave")){
            board.resetScores(pl.getPlayer());
            bleu.removePlayer(pl.getPlayer());
            orange.removePlayer(pl.getPlayer());
            pl.sendMessage(ChatColor.RED + "Vous avez quitté votre équipe");

        }
        if (args[0].equalsIgnoreCase("orange")){
            board.resetScores(pl.getPlayer());
            bleu.removePlayer(pl.getPlayer());
            orange.addPlayer(pl.getPlayer());
            pl.sendMessage(ChatColor.GOLD + "Vous êtes dans l'équipe orange");
            orange.setAllowFriendlyFire(false);

        }

        }


    return true; 
    }
public  void rollback(){
if(Bukkit.getServer().unloadWorld("rush",false))
{
new File("rush").delete();
Bukkit.getServer().createWorld(new WorldCreator("rush"));
}
}




 @EventHandler
 public void onLeave(PlayerQuitEvent e){
 Player p = (Player) e.getPlayer();
    bleu.removePlayer(p);
    orange.removePlayer(p);
    board.resetScores(p);

 }
 @EventHandler
 public void Death(PlayerDeathEvent event){
 if (event.getEntityType() == EntityType.PLAYER){
 Player player = event.getEntity();
    Team team = board.getPlayerTeam(player);
 if(team.equals(bleu)){
 player.sendMessage("did it work? bleu");  
 }
 else if (team.equals(orange)){
 player.sendMessage("did it work orange?");
 }
 }
 }
 }
5
  • Could you indicate which line the error occurs on? Commented Mar 18, 2014 at 23:29
  • @kabb Well as I said I have no errors in Eclipse. So I don't know the line. Commented Mar 18, 2014 at 23:30
  • The line the error occurred on is in the stacktrace. It says line 62 in the class MainRush. Which line is line 62? Commented Mar 18, 2014 at 23:31
  • @kabb the line 62 is a } after pl.teleport(rush); Commented Mar 18, 2014 at 23:33
  • 1
    Possible duplicate of What is a Null Pointer Exception, and how do I fix it? Commented Jan 11, 2016 at 15:08

1 Answer 1

7

It seems to this code:

private ScoreboardManager manager = Bukkit.getScoreboardManager();
private Scoreboard board = manager.getNewScoreboard();

The reason is that you're not declaring these variables inside of a method, so, they get loaded before your onEnable() method is called, making it so that you can't get anything using Bukkit as it Bukkit has not yet been initialized.

What I recommend doing is doing something like this outside of any methods:

private ScoreboardManager manager;
private Scoreboard board;

then doing this in your onEnable():

manager = Bukkit.getScoreboardManager();
board = manager.getNewScoreboard();

So you would have something like this:

public class MainRush extends JavaPlugin implements Listener{

    private ScoreboardManager manager;
    private Scoreboard board;

    @Override
    public void onEnable(){
        //plugin enabled
        manager = Bukkit.getScoreboardManager();
        board = manager.getNewScoreboard();
    }
}

By doing this, you're eliminating the chance of getting a NullPointerException when your plugin is loaded. As a general rule of thumb, you should never get anything from bukkit outside of methods.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.