NPE Help

Discussion in 'Plugin Development' started by Zix, Jun 5, 2014.

Thread Status:
Not open for further replies.
  1. Offline

    Zix

    Line 36 is giving me a NPE, and im not sure why

    Code:java
    1. package me.Zix.BorderClans;
    2.  
    3. import java.util.ArrayList;
    4.  
    5. import org.bukkit.Bukkit;
    6. import org.bukkit.ChatColor;
    7. import org.bukkit.Server;
    8. import org.bukkit.command.Command;
    9. import org.bukkit.command.CommandSender;
    10. import org.bukkit.entity.Arrow;
    11. import org.bukkit.entity.Entity;
    12. import org.bukkit.entity.Player;
    13. import org.bukkit.entity.Projectile;
    14. import org.bukkit.event.EventHandler;
    15. import org.bukkit.event.Listener;
    16. import org.bukkit.event.entity.EntityDamageByEntityEvent;
    17. import org.bukkit.event.player.AsyncPlayerChatEvent;
    18. import org.bukkit.event.player.PlayerJoinEvent;
    19. import org.bukkit.plugin.java.JavaPlugin;
    20. import org.bukkit.scoreboard.DisplaySlot;
    21. import org.bukkit.scoreboard.Objective;
    22. import org.bukkit.scoreboard.Scoreboard;
    23. import org.bukkit.scoreboard.ScoreboardManager;
    24. import org.kitteh.tag.AsyncPlayerReceiveNameTagEvent;
    25.  
    26. public class BorderClans extends JavaPlugin implements Listener {
    27.  
    28. public void onEnable() {
    29.  
    30. getServer().getPluginManager().registerEvents(this, this);
    31. getConfig().options().copyDefaults(true);
    32.  
    33. }
    34.  
    35. ScoreboardManager manager = Bukkit.getScoreboardManager();
    36. Scoreboard board = manager.getNewScoreboard();
    37.  
    38. ArrayList<Player> red = new ArrayList<Player>();
    39. ArrayList<Player> blue = new ArrayList<Player>();
    40.  
    41.  
    42.  
    43. @EventHandler
    44. public void onPlayerjoin(PlayerJoinEvent event){
    45.  
    46. Player player = event.getPlayer();
    47.  
    48. if(player.hasPlayedBefore() == true){
    49.  
    50. String redteam = "red";
    51. String blueteam = "blue";
    52. String team = getConfig().getString(player.getName() + ".team");
    53.  
    54. if(team == null){
    55. if(red.size() == blue.size()){
    56.  
    57. addToRed(player);
    58.  
    59. } else {
    60. if (red.size() < blue.size()){
    61.  
    62. addToRed(player);
    63.  
    64. } else if (blue.size() < red.size()){
    65.  
    66. addToBlue(player);
    67.  
    68. }
    69. }
    70. } else if(team.equalsIgnoreCase(redteam)){
    71.  
    72. addToRed(player);
    73.  
    74. } else if(team.equals(blueteam)){
    75.  
    76. addToBlue(player);
    77.  
    78. } else if(team.equals(null)){
    79. if(red.size() == blue.size()){
    80.  
    81. addToRed(player);
    82.  
    83. } else {
    84. if (red.size() < blue.size()){
    85.  
    86. addToRed(player);
    87.  
    88. } else if (blue.size() < red.size()){
    89.  
    90. addToBlue(player);
    91.  
    92. }
    93. }
    94. }
    95. } else if(player.hasPlayedBefore() == false){
    96. if(red.size() == blue.size()){
    97.  
    98. addToRed(player);
    99.  
    100. } else if (red.size() < blue.size()){
    101.  
    102. addToRed(player);
    103.  
    104. } else if (blue.size() < red.size()){
    105.  
    106. addToBlue(player);
    107.  
    108. }
    109. }
    110. }
    111.  
    112. /*
    113.   @EventHandler
    114.   public void onNameTag(AsyncPlayerReceiveNameTagEvent event){
    115.   if(red.contains(event.getNamedPlayer())){
    116.   event.setTag(ChatColor.RED + event.getNamedPlayer().getName());
    117.   } else {
    118.   event.setTag(ChatColor.BLUE + event.getNamedPlayer().getName());
    119.   }
    120.   }
    121.  
    122.   @EventHandler
    123.   public void onChat(AsyncPlayerChatEvent event){
    124.   Player player = event.getPlayer();
    125.   Server server = Bukkit.getServer();
    126.   String message = event.getMessage();
    127.  
    128.   event.setCancelled(true);
    129.  
    130.   server.broadcastMessage("<§a[G]" + player.getDisplayName() + ">" + " " + message);
    131.  
    132.   }
    133.   */
    134.  
    135. /*
    136.   public void addToTeam(Player player){
    137.  
    138.   if(player.hasPermission("borderclans.pink")){
    139.   if(red.contains(player)){
    140.   String redprefix = "§7[§4Red§7][§c-§7]§4 ";
    141.   player.setDisplayName(redprefix + ChatColor.LIGHT_PURPLE + "•" + player.getName() + "§f");
    142.   } else if(blue.contains(player)){
    143.   String blueprefix = "§7[§9Blue§7][§a+§7]§9 ";
    144.   player.setDisplayName(blueprefix + ChatColor.LIGHT_PURPLE + "•" + player.getName() + "§f");
    145.   }
    146.   } else if(player.hasPermission("borderclans.red")){
    147.   if(red.contains(player)){
    148.   String redprefix = "§7[§4Red§7][§c-§7]§4 ";
    149.   player.setDisplayName(redprefix + ChatColor.RED + "•" + player.getName() + "§f");
    150.   } else if(blue.contains(player)){
    151.   String blueprefix = "§7[§9Blue§7][§a+§7]§9 ";
    152.   player.setDisplayName(blueprefix + ChatColor.RED + "•" + player.getName() + "§f");
    153.   }
    154.   } else if(player.hasPermission("borderclans.orange")){
    155.   if(red.contains(player)){
    156.   String redprefix = "§7[§4Red§7][§c-§7]§4 ";
    157.   player.setDisplayName(redprefix + ChatColor.GOLD + "•" + player.getName() + "§f");
    158.   } else if(blue.contains(player)){
    159.   String blueprefix = "§7[§9Blue§7][§a+§7]§9 ";
    160.   player.setDisplayName(blueprefix + ChatColor.GOLD + "•" + player.getName() + "§f");
    161.   }
    162.   } else if(player.hasPermission("borderclans.green")){
    163.   if(red.contains(player)){
    164.   String redprefix = "§7[§4Red§7][§c-§7]§4 ";
    165.   player.setDisplayName(redprefix + ChatColor.GREEN + "•" + player.getName() + "§f");
    166.   } else if(blue.contains(player)){
    167.   String blueprefix = "§7[§9Blue§7][§a+§7]§9 ";
    168.   player.setDisplayName(blueprefix + ChatColor.GREEN + "•" + player.getName() + "§f");
    169.   }
    170.   } else if(player.hasPermission("borderclans.purple")){
    171.   if(red.contains(player)){
    172.   String redprefix = "§7[§4Red§7][§c-§7]§4 ";
    173.   player.setDisplayName(redprefix + ChatColor.DARK_PURPLE + "•" + player.getName() + "§f");
    174.   } else if(blue.contains(player)){
    175.   String blueprefix = "§7[§9Blue§7][§a+§7]§9 ";
    176.   player.setDisplayName(blueprefix + ChatColor.DARK_PURPLE + "•" + player.getName() + "§f");
    177.   }
    178.   }
    179.   }
    180.   */
    181.  
    182.  
    183.  
    184.  
    185. public void addToRed(Player player){
    186.  
    187. player.setScoreboard(board);
    188.  
    189. Objective objective = board.registerNewObjective("team", "dummy");
    190. objective.setDisplaySlot(DisplaySlot.BELOW_NAME);
    191. objective.setDisplayName(ChatColor.RED + "Red Team");
    192.  
    193. for(Player online : Bukkit.getOnlinePlayers()){
    194. online.setScoreboard(board);
    195. online.setHealth(online.getHealth()); //Update their health
    196. }
    197.  
    198. player.setPlayerListName(ChatColor.RED + player.getName());
    199.  
    200. red.add(player);
    201.  
    202. String redconfig = "red";
    203. this.getConfig().set(player.getName() + ".team", redconfig);
    204. saveConfig();
    205.  
    206. player.sendMessage(ChatColor.GRAY + "You have been put on " + ChatColor.RED + "Red " + ChatColor.GRAY + "team!");
    207.  
    208. if(player.hasPermission("borderclans.pink")){
    209.  
    210. String redprefix = "§7[§4Red§7][§c-§7]§4 ";
    211. player.setDisplayName(redprefix + ChatColor.LIGHT_PURPLE + "• " + ChatColor.RED + player.getName() + "§f");
    212.  
    213. } else if(player.hasPermission("borderclans.red")){
    214.  
    215. String redprefix = "§7[§4Red§7][§c-§7]§4 ";
    216. player.setDisplayName(redprefix + ChatColor.RED + "• " + ChatColor.RED + player.getName() + "§f");
    217.  
    218. } else if(player.hasPermission("borderclans.orange")){
    219.  
    220. String redprefix = "§7[§4Red§7][§c-§7]§4 ";
    221. player.setDisplayName(redprefix + ChatColor.GOLD + "• " + ChatColor.RED + player.getName() + "§f");
    222.  
    223. } else if(player.hasPermission("borderclans.green")){
    224.  
    225. String redprefix = "§7[§4Red§7][§c-§7]§4 ";
    226. player.setDisplayName(redprefix + ChatColor.GREEN + "• " + ChatColor.RED + player.getName() + "§f");
    227.  
    228. } else if(player.hasPermission("borderclans.purple")){
    229.  
    230. String redprefix = "§7[§4Red§7][§c-§7]§4 ";
    231. player.setDisplayName(redprefix + ChatColor.DARK_PURPLE + "• " + ChatColor.RED + player.getName() + "§f");
    232. } else {
    233.  
    234. String redprefix = "§7[§4Red§7][§c-§7]§4 ";
    235. player.setDisplayName(redprefix + player.getName() + "§f");
    236.  
    237. }
    238. }
    239.  
    240. public void addToBlue(Player player){
    241.  
    242. player.setScoreboard(board);
    243.  
    244. Objective objective = board.registerNewObjective("team", "dummy");
    245. objective.setDisplaySlot(DisplaySlot.BELOW_NAME);
    246. objective.setDisplayName(ChatColor.BLUE + "Blue Team");
    247.  
    248. for(Player online : Bukkit.getOnlinePlayers()){
    249. online.setScoreboard(board);
    250. online.setHealth(online.getHealth()); //Update their health
    251. }
    252.  
    253.  
    254. player.setPlayerListName(ChatColor.BLUE + player.getName());
    255.  
    256. blue.add(player);
    257.  
    258. String blueconfig = "blue";
    259. this.getConfig().set(player.getName() + ".team", blueconfig);
    260. saveConfig();
    261.  
    262. player.sendMessage(ChatColor.GRAY + "You have been put on " + ChatColor.BLUE + "Blue " + ChatColor.GRAY + "team!");
    263.  
    264. if(player.hasPermission("borderclans.pink")){
    265.  
    266. String blueprefix = "§7[§9Blue§7][§a+§7]§9 ";
    267. player.setDisplayName(blueprefix + ChatColor.LIGHT_PURPLE + "• " + ChatColor.BLUE + player.getName() + "§f");
    268.  
    269. } else if(player.hasPermission("borderclans.red")){
    270.  
    271. String blueprefix = "§7[§9Blue§7][§a+§7]§9 ";
    272. player.setDisplayName(blueprefix + ChatColor.RED + "• " + ChatColor.BLUE + player.getName() + "§f");
    273.  
    274. } else if(player.hasPermission("borderclans.orange")){
    275.  
    276. String blueprefix = "§7[§9Blue§7][§a+§7]§9 ";
    277. player.setDisplayName(blueprefix + ChatColor.GOLD + "• " + ChatColor.BLUE + player.getName() + "§f");
    278.  
    279. } else if(player.hasPermission("borderclans.green")){
    280.  
    281. String blueprefix = "§7[§9Blue§7][§a+§7]§9 ";
    282. player.setDisplayName(blueprefix + ChatColor.GREEN + "• " + ChatColor.BLUE + player.getName() + "§f");
    283.  
    284. } else if(player.hasPermission("borderclans.purple")){
    285.  
    286. String blueprefix = "§7[§9Blue§7][§a+§7]§9 ";
    287. player.setDisplayName(blueprefix + ChatColor.DARK_PURPLE + "• " + ChatColor.BLUE + player.getName() + "§f");
    288.  
    289. } else {
    290.  
    291. String blueprefix = "§7[§9Blue§7][§a+§7]§9 ";
    292. player.setDisplayName(blueprefix + player.getName() + "§f");
    293.  
    294. }
    295. }
    296.  
    297.  
    298.  
    299.  
    300.  
    301.  
    302.  
    303.  
    304.  
    305.  
    306. @EventHandler
    307. public void onEntityDamageByEntity(EntityDamageByEntityEvent event){
    308. if(event.getDamager() instanceof Player && event.getEntity() instanceof Player){
    309.  
    310. System.out.println("Player hit player.");
    311.  
    312. Player player = (Player) event.getEntity();
    313. Player damager = (Player) event.getDamager();
    314.  
    315. if (red.contains(player.getName()) && red.contains(damager.getName())){
    316.  
    317. System.out.println("Red hit red.");
    318.  
    319. event.setCancelled(true);
    320.  
    321. }
    322.  
    323. if (blue.contains(player.getName()) && blue.contains(damager.getName())){
    324.  
    325. System.out.println("Blue hit blue.");
    326.  
    327. event.setCancelled(true);
    328. }
    329. } else {
    330. if(event.getDamager() instanceof Arrow){
    331. Projectile arrow = (Projectile) event.getDamager();
    332. Entity shooter = (Entity) arrow.getShooter();
    333. if(shooter instanceof Player){
    334.  
    335. if(red.contains(((Player) shooter).getName()) && red.contains(event.getEntity())){
    336. System.out.println("Red hit red with bow.");
    337. event.setCancelled(true);
    338. }
    339.  
    340. if(blue.contains(((Player) shooter).getName()) && blue.contains(event.getEntity())){
    341. System.out.println("Blue hit blue with bow.");
    342. event.setCancelled(true);
    343. }
    344.  
    345. }
    346. }
    347. }
    348. }
    349.  
    350.  
    351. @Override
    352. public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
    353. Player player = (Player) sender;
    354. Server server = Bukkit.getServer();
    355.  
    356. StringBuilder b = new StringBuilder();
    357. for (int i = 0; i < args.length; i++) {
    358. if (i != 0)
    359. b.append(' ');
    360. b.append(args[i]);
    361. }
    362.  
    363. if(label.equals("g")){
    364.  
    365. if(args.length == 0){
    366. player.sendMessage(ChatColor.RED + "Too few arguments.");
    367. player.sendMessage(ChatColor.RED + "/g <message>");
    368. } else {
    369.  
    370. if(red.contains(player)){
    371.  
    372. server.broadcastMessage("<§a[G]" + player.getDisplayName() + ">" + " " + b.toString());
    373.  
    374. } else if(blue.contains(player)){
    375.  
    376. server.broadcastMessage("<§a[G]" + player.getDisplayName() + ">" + " " + b.toString());
    377.  
    378. }
    379. }
    380.  
    381. } else if(label.equalsIgnoreCase("t")){
    382.  
    383. if(args.length == 0){
    384. player.sendMessage(ChatColor.RED + "Too few arguments.");
    385. player.sendMessage(ChatColor.RED + "/t <message>");
    386. } else {
    387.  
    388. if(red.contains(player)){
    389.  
    390. for(Player p : red){
    391. p.sendMessage("<§c[T]" + player.getDisplayName() + ">" + " " + b.toString());
    392. }
    393.  
    394. } else {
    395.  
    396. for(Player p : blue){
    397. p.sendMessage("<§9[T]" + player.getDisplayName() + ">" + " " + b.toString());
    398.  
    399. }
    400. }
    401. }
    402. }
    403.  
    404. return true;
    405. }
    406. }[/i]


    Line 36 is;
    Code:java
    1. Scoreboard board = manager.getNewScoreboard();

    I have not used scoreboards before, so I dont really know what im doing
     
  2. Offline

    Rocoty

    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.
     
  3. Offline

    ever_x

    Try this:
    Code:java
    1.  
    2. ScoreboardManager manager;
    3. Scoreboard board;
    4.  
    5. public void onEnable()
    6. {
    7. manager = Bukkit.getScoreboardManager();board = manager.getNewScoreboard();
    8. }
    9.  
     
  4. Offline

    Zix

    ever_x
    Thanks! That worked
     
Thread Status:
Not open for further replies.

Share This Page