Line 36 is giving me a NPE, and im not sure why Code:java package me.Zix.BorderClans; import java.util.ArrayList; import org.bukkit.Bukkit;import org.bukkit.ChatColor;import org.bukkit.Server;import org.bukkit.command.Command;import org.bukkit.command.CommandSender;import org.bukkit.entity.Arrow;import org.bukkit.entity.Entity;import org.bukkit.entity.Player;import org.bukkit.entity.Projectile;import org.bukkit.event.EventHandler;import org.bukkit.event.Listener;import org.bukkit.event.entity.EntityDamageByEntityEvent;import org.bukkit.event.player.AsyncPlayerChatEvent;import org.bukkit.event.player.PlayerJoinEvent;import org.bukkit.plugin.java.JavaPlugin;import org.bukkit.scoreboard.DisplaySlot;import org.bukkit.scoreboard.Objective;import org.bukkit.scoreboard.Scoreboard;import org.bukkit.scoreboard.ScoreboardManager;import org.kitteh.tag.AsyncPlayerReceiveNameTagEvent; public class BorderClans extends JavaPlugin implements Listener { public void onEnable() { getServer().getPluginManager().registerEvents(this, this); getConfig().options().copyDefaults(true); } ScoreboardManager manager = Bukkit.getScoreboardManager(); Scoreboard board = manager.getNewScoreboard(); ArrayList<Player> red = new ArrayList<Player>(); ArrayList<Player> blue = new ArrayList<Player>(); @EventHandler public void onPlayerjoin(PlayerJoinEvent event){ Player player = event.getPlayer(); if(player.hasPlayedBefore() == true){ String redteam = "red"; String blueteam = "blue"; String team = getConfig().getString(player.getName() + ".team"); if(team == null){ if(red.size() == blue.size()){ addToRed(player); } else { if (red.size() < blue.size()){ addToRed(player); } else if (blue.size() < red.size()){ addToBlue(player); } } } else if(team.equalsIgnoreCase(redteam)){ addToRed(player); } else if(team.equals(blueteam)){ addToBlue(player); } else if(team.equals(null)){ if(red.size() == blue.size()){ addToRed(player); } else { if (red.size() < blue.size()){ addToRed(player); } else if (blue.size() < red.size()){ addToBlue(player); } } } } else if(player.hasPlayedBefore() == false){ if(red.size() == blue.size()){ addToRed(player); } else if (red.size() < blue.size()){ addToRed(player); } else if (blue.size() < red.size()){ addToBlue(player); } } } /* @EventHandler public void onNameTag(AsyncPlayerReceiveNameTagEvent event){ if(red.contains(event.getNamedPlayer())){ event.setTag(ChatColor.RED + event.getNamedPlayer().getName()); } else { event.setTag(ChatColor.BLUE + event.getNamedPlayer().getName()); } } @EventHandler public void onChat(AsyncPlayerChatEvent event){ Player player = event.getPlayer(); Server server = Bukkit.getServer(); String message = event.getMessage(); event.setCancelled(true); server.broadcastMessage("<§a[G]" + player.getDisplayName() + ">" + " " + message); } */ /* public void addToTeam(Player player){ if(player.hasPermission("borderclans.pink")){ if(red.contains(player)){ String redprefix = "§7[§4Red§7][§c-§7]§4 "; player.setDisplayName(redprefix + ChatColor.LIGHT_PURPLE + "•" + player.getName() + "§f"); } else if(blue.contains(player)){ String blueprefix = "§7[§9Blue§7][§a+§7]§9 "; player.setDisplayName(blueprefix + ChatColor.LIGHT_PURPLE + "•" + player.getName() + "§f"); } } else if(player.hasPermission("borderclans.red")){ if(red.contains(player)){ String redprefix = "§7[§4Red§7][§c-§7]§4 "; player.setDisplayName(redprefix + ChatColor.RED + "•" + player.getName() + "§f"); } else if(blue.contains(player)){ String blueprefix = "§7[§9Blue§7][§a+§7]§9 "; player.setDisplayName(blueprefix + ChatColor.RED + "•" + player.getName() + "§f"); } } else if(player.hasPermission("borderclans.orange")){ if(red.contains(player)){ String redprefix = "§7[§4Red§7][§c-§7]§4 "; player.setDisplayName(redprefix + ChatColor.GOLD + "•" + player.getName() + "§f"); } else if(blue.contains(player)){ String blueprefix = "§7[§9Blue§7][§a+§7]§9 "; player.setDisplayName(blueprefix + ChatColor.GOLD + "•" + player.getName() + "§f"); } } else if(player.hasPermission("borderclans.green")){ if(red.contains(player)){ String redprefix = "§7[§4Red§7][§c-§7]§4 "; player.setDisplayName(redprefix + ChatColor.GREEN + "•" + player.getName() + "§f"); } else if(blue.contains(player)){ String blueprefix = "§7[§9Blue§7][§a+§7]§9 "; player.setDisplayName(blueprefix + ChatColor.GREEN + "•" + player.getName() + "§f"); } } else if(player.hasPermission("borderclans.purple")){ if(red.contains(player)){ String redprefix = "§7[§4Red§7][§c-§7]§4 "; player.setDisplayName(redprefix + ChatColor.DARK_PURPLE + "•" + player.getName() + "§f"); } else if(blue.contains(player)){ String blueprefix = "§7[§9Blue§7][§a+§7]§9 "; player.setDisplayName(blueprefix + ChatColor.DARK_PURPLE + "•" + player.getName() + "§f"); } } } */ public void addToRed(Player player){ player.setScoreboard(board); Objective objective = board.registerNewObjective("team", "dummy"); objective.setDisplaySlot(DisplaySlot.BELOW_NAME); objective.setDisplayName(ChatColor.RED + "Red Team"); for(Player online : Bukkit.getOnlinePlayers()){ online.setScoreboard(board); online.setHealth(online.getHealth()); //Update their health } player.setPlayerListName(ChatColor.RED + player.getName()); red.add(player); String redconfig = "red"; this.getConfig().set(player.getName() + ".team", redconfig); saveConfig(); player.sendMessage(ChatColor.GRAY + "You have been put on " + ChatColor.RED + "Red " + ChatColor.GRAY + "team!"); if(player.hasPermission("borderclans.pink")){ String redprefix = "§7[§4Red§7][§c-§7]§4 "; player.setDisplayName(redprefix + ChatColor.LIGHT_PURPLE + "• " + ChatColor.RED + player.getName() + "§f"); } else if(player.hasPermission("borderclans.red")){ String redprefix = "§7[§4Red§7][§c-§7]§4 "; player.setDisplayName(redprefix + ChatColor.RED + "• " + ChatColor.RED + player.getName() + "§f"); } else if(player.hasPermission("borderclans.orange")){ String redprefix = "§7[§4Red§7][§c-§7]§4 "; player.setDisplayName(redprefix + ChatColor.GOLD + "• " + ChatColor.RED + player.getName() + "§f"); } else if(player.hasPermission("borderclans.green")){ String redprefix = "§7[§4Red§7][§c-§7]§4 "; player.setDisplayName(redprefix + ChatColor.GREEN + "• " + ChatColor.RED + player.getName() + "§f"); } else if(player.hasPermission("borderclans.purple")){ String redprefix = "§7[§4Red§7][§c-§7]§4 "; player.setDisplayName(redprefix + ChatColor.DARK_PURPLE + "• " + ChatColor.RED + player.getName() + "§f"); } else { String redprefix = "§7[§4Red§7][§c-§7]§4 "; player.setDisplayName(redprefix + player.getName() + "§f"); } } public void addToBlue(Player player){ player.setScoreboard(board); Objective objective = board.registerNewObjective("team", "dummy"); objective.setDisplaySlot(DisplaySlot.BELOW_NAME); objective.setDisplayName(ChatColor.BLUE + "Blue Team"); for(Player online : Bukkit.getOnlinePlayers()){ online.setScoreboard(board); online.setHealth(online.getHealth()); //Update their health } player.setPlayerListName(ChatColor.BLUE + player.getName()); blue.add(player); String blueconfig = "blue"; this.getConfig().set(player.getName() + ".team", blueconfig); saveConfig(); player.sendMessage(ChatColor.GRAY + "You have been put on " + ChatColor.BLUE + "Blue " + ChatColor.GRAY + "team!"); if(player.hasPermission("borderclans.pink")){ String blueprefix = "§7[§9Blue§7][§a+§7]§9 "; player.setDisplayName(blueprefix + ChatColor.LIGHT_PURPLE + "• " + ChatColor.BLUE + player.getName() + "§f"); } else if(player.hasPermission("borderclans.red")){ String blueprefix = "§7[§9Blue§7][§a+§7]§9 "; player.setDisplayName(blueprefix + ChatColor.RED + "• " + ChatColor.BLUE + player.getName() + "§f"); } else if(player.hasPermission("borderclans.orange")){ String blueprefix = "§7[§9Blue§7][§a+§7]§9 "; player.setDisplayName(blueprefix + ChatColor.GOLD + "• " + ChatColor.BLUE + player.getName() + "§f"); } else if(player.hasPermission("borderclans.green")){ String blueprefix = "§7[§9Blue§7][§a+§7]§9 "; player.setDisplayName(blueprefix + ChatColor.GREEN + "• " + ChatColor.BLUE + player.getName() + "§f"); } else if(player.hasPermission("borderclans.purple")){ String blueprefix = "§7[§9Blue§7][§a+§7]§9 "; player.setDisplayName(blueprefix + ChatColor.DARK_PURPLE + "• " + ChatColor.BLUE + player.getName() + "§f"); } else { String blueprefix = "§7[§9Blue§7][§a+§7]§9 "; player.setDisplayName(blueprefix + player.getName() + "§f"); } } @EventHandler public void onEntityDamageByEntity(EntityDamageByEntityEvent event){ if(event.getDamager() instanceof Player && event.getEntity() instanceof Player){ System.out.println("Player hit player."); Player player = (Player) event.getEntity(); Player damager = (Player) event.getDamager(); if (red.contains(player.getName()) && red.contains(damager.getName())){ System.out.println("Red hit red."); event.setCancelled(true); } if (blue.contains(player.getName()) && blue.contains(damager.getName())){ System.out.println("Blue hit blue."); event.setCancelled(true); } } else { if(event.getDamager() instanceof Arrow){ Projectile arrow = (Projectile) event.getDamager(); Entity shooter = (Entity) arrow.getShooter(); if(shooter instanceof Player){ if(red.contains(((Player) shooter).getName()) && red.contains(event.getEntity())){ System.out.println("Red hit red with bow."); event.setCancelled(true); } if(blue.contains(((Player) shooter).getName()) && blue.contains(event.getEntity())){ System.out.println("Blue hit blue with bow."); event.setCancelled(true); } } } } } @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { Player player = (Player) sender; Server server = Bukkit.getServer(); StringBuilder b = new StringBuilder(); for (int i = 0; i < args.length; i++) { if (i != 0) b.append(' '); b.append(args[i]); } if(label.equals("g")){ if(args.length == 0){ player.sendMessage(ChatColor.RED + "Too few arguments."); player.sendMessage(ChatColor.RED + "/g <message>"); } else { if(red.contains(player)){ server.broadcastMessage("<§a[G]" + player.getDisplayName() + ">" + " " + b.toString()); } else if(blue.contains(player)){ server.broadcastMessage("<§a[G]" + player.getDisplayName() + ">" + " " + b.toString()); } } } else if(label.equalsIgnoreCase("t")){ if(args.length == 0){ player.sendMessage(ChatColor.RED + "Too few arguments."); player.sendMessage(ChatColor.RED + "/t <message>"); } else { if(red.contains(player)){ for(Player p : red){ p.sendMessage("<§c[T]" + player.getDisplayName() + ">" + " " + b.toString()); } } else { for(Player p : blue){ p.sendMessage("<§9[T]" + player.getDisplayName() + ">" + " " + b.toString()); } } } } return true; }}[/i] Line 36 is; Code:java Scoreboard board = manager.getNewScoreboard(); I have not used scoreboards before, so I dont really know what im doing
The scoreboard manager might not have been initialized at the time your class is. As a rule of thumb, if you need to reference the bukkit API as early as possible, do it in the onEnable method.
Try this: Code:java ScoreboardManager manager;Scoreboard board; public void onEnable(){manager = Bukkit.getScoreboardManager();board = manager.getNewScoreboard();}