Hello! I'm trying to add a scoreboard score, where we have a score (coins) in a FileConfiguration, with the variable coins. When I reload the server, it gives an error on startup - NullPointerException, on this line: Code: coin.put(p, obj.getScore(Bukkit.getServer().getOfflinePlayer(ChatColor.GREEN + "Coins: "))); This is the full code: Code: package me.Darkpicasa.GoldSparkKits; import java.util.HashMap; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.OfflinePlayer; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.block.Action; import org.bukkit.event.entity.PlayerDeathEvent; import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.event.player.PlayerDropItemEvent; import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerRespawnEvent; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.scoreboard.DisplaySlot; import org.bukkit.scoreboard.Objective; import org.bukkit.scoreboard.Score; import org.bukkit.scoreboard.Scoreboard; import org.bukkit.scoreboard.ScoreboardManager; public class GoldSparkKits extends JavaPlugin implements Listener{ public GoldSparkKits plugin; public CustomConfig coins; public HashMap<OfflinePlayer, Score> coin = new HashMap<OfflinePlayer, Score>(); public ScoreboardManager sbm; public Scoreboard sb; public Objective obj; public void onEnable(){ sbm = Bukkit.getScoreboardManager(); sb = sbm.getNewScoreboard(); obj = sb.registerNewObjective("test1", "test"); obj.setDisplaySlot(DisplaySlot.SIDEBAR); obj.setDisplayName(ChatColor.translateAlternateColorCodes('&', "&6&lGoldSpark Network PvP ")); for (Player p : Bukkit.getOnlinePlayers()){ p.setScoreboard(sb); if (coin.get(p) == null){ coin.put(p, obj.getScore(Bukkit.getServer().getOfflinePlayer(ChatColor.GREEN + "Coins: "))); coin.get(p).setScore(coins.getConfig().getInt(p.getName())); } } plugin = this; coins = new CustomConfig(plugin, "coins.yml"); coins.getConfig().options().copyDefaults(true); coins.saveConfig(); getLogger().info("Plugin Enabled"); getServer().getPluginManager().registerEvents(this, this); } public void onDisable(){ getLogger().info("Plugin Disabled"); } @EventHandler public void playerJoin(PlayerJoinEvent e){ Player p = e.getPlayer(); p.setScoreboard(sb); if (coin.get(p) == null){ coin.put(p, obj.getScore(Bukkit.getServer().getOfflinePlayer(ChatColor.GREEN + "Coins: "))); coin.get(p).setScore(coins.getConfig().getInt(p.getName())); } if (!(coins.getConfig().contains(e.getPlayer().getName()))){ coins.getConfig().createSection(e.getPlayer().getName()); coins.getConfig().set(e.getPlayer().getName(), 0); coins.saveConfig(); } for (ItemStack a : p.getInventory().getContents()){ if ((a.getType() == Material.CLAY_BALL && ChatColor.stripColor(a.getItemMeta().getDisplayName()).equalsIgnoreCase("Kit Shop"))){ return; } } ItemStack is = new ItemStack(Material.CLAY_BALL); ItemMeta im = is.getItemMeta(); im.setDisplayName(ChatColor.GREEN + "Kit Shop"); is.setItemMeta(im); p.getInventory().addItem(is); p.updateInventory(); } @EventHandler public void respawn(PlayerRespawnEvent e){ Player p = e.getPlayer(); ItemStack is = new ItemStack(Material.CLAY_BALL); ItemMeta im = is.getItemMeta(); im.setDisplayName(ChatColor.GREEN + "Kit Shop"); is.setItemMeta(im); p.getInventory().addItem(is); } @EventHandler public void dropItem(PlayerDropItemEvent e){ e.setCancelled(true); } @EventHandler public void characterOpen(PlayerInteractEvent e){ if (e.getAction() == Action.RIGHT_CLICK_BLOCK || e.getAction() == Action.RIGHT_CLICK_AIR) { Player p = e.getPlayer(); try { if (p.getItemInHand().getType() == Material.CLAY_BALL) { if (ChatColor.stripColor(p.getItemInHand().getItemMeta().getDisplayName()).equalsIgnoreCase("Kit Shop")) { e.setCancelled(true); openInv(p); } } } catch (Exception a) {} } } @EventHandler public void inventoryGUI(InventoryClickEvent e){ if (!(ChatColor.stripColor(e.getInventory().getName()).equalsIgnoreCase("Redeem"))){ return; } Player p = (Player) e.getWhoClicked(); e.setCancelled(true); if (e.getCurrentItem()==null || e.getCurrentItem().getType() == Material.AIR || !e.getCurrentItem().hasItemMeta()){ p.closeInventory(); return; } switch (e.getCurrentItem().getType()){ case WOOD_SWORD: p.sendMessage("Hi"); p.closeInventory(); break; default: p.closeInventory(); break; } } @EventHandler public void playerDeath(PlayerDeathEvent e){ if (e.getEntity().getKiller() != null){ Player killer = e.getEntity().getKiller(); Player slain = e.getEntity(); int new1 = coins.getConfig().getInt(killer.getName()) + 3; int new2 = coins.getConfig().getInt(slain.getName()) - 1; coins.getConfig().set(killer.getName(), new1); coins.saveConfig(); killer.sendMessage(ChatColor.GOLD + "You killed " + slain.getName() + "! You received 3 coins!"); killer.sendMessage(ChatColor.RED + "You can redeem these tokens for coins in the upcoming character shop! Be sure to save your tokens!"); if (new2 != -1){ coins.getConfig().set(slain.getName(), new2); coins.saveConfig(); slain.sendMessage(ChatColor.GOLD + "You were killed by " + killer.getName() + "! You lost 1 coin!"); } else{ slain.sendMessage(ChatColor.GOLD + "You were killed by " + killer.getName() + "!"); } coin.get(killer).setScore(new1); coin.get(slain).setScore(new2); } e.getDrops().clear(); } public void openInv(Player p){ Inventory inv = Bukkit.createInventory(null, 9, ChatColor.DARK_GREEN + "Redeem"); ItemStack example = new ItemStack(Material.WOOD_SWORD); ItemMeta exampleMeta = example.getItemMeta(); exampleMeta.setDisplayName(ChatColor.DARK_PURPLE + "EXAMPLE"); example.setItemMeta(exampleMeta); inv.setItem(0, example); p.openInventory(inv); } }
Darkpicasa U`re using OnlinePlayers on "OfflinePlayer" Field, and be sure there`s an obj with that score.
That's what I thought... Do you see the error? I've looked through a few YouTube videos, I still can't seem to solve it. Please help I'm new to Scoreboards EDIT by Moderator: merged posts, please use the edit button instead of double posting.