I am currently creating a hub for my server with lobbies. There is an error that checks when to vanish people from the lobbies every 1 seconds ~. Here is the error. Code: java.lang.NullPointerException at org.hiros.plugin.Hub$2.run(Hub.java:212) ~[?:?] at org.bukkit.craftbukkit.v1_7_R1.scheduler.CraftTask.run(CraftTask.java :53) ~[craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks] at org.bukkit.craftbukkit.v1_7_R1.scheduler.CraftScheduler.mainThreadHea rtbeat(CraftScheduler.java:345) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks ] at net.minecraft.server.v1_7_R1.MinecraftServer.u(MinecraftServer.java:5 87) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks] at net.minecraft.server.v1_7_R1.DedicatedServer.u(DedicatedServer.java:2 50) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks] at net.minecraft.server.v1_7_R1.MinecraftServer.t(MinecraftServer.java:5 45) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks] at net.minecraft.server.v1_7_R1.MinecraftServer.run(MinecraftServer.java :457) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks] at net.minecraft.server.v1_7_R1.ThreadServerApplication.run(SourceFile:6 17) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks] [21:55:38 WARN]: [Hub] Task #110 for Hub v1.0 generated an exception java.lang.NullPointerException at org.hiros.plugin.Hub$2.run(Hub.java:212) ~[?:?] at org.bukkit.craftbukkit.v1_7_R1.scheduler.CraftTask.run(CraftTask.java :53) ~[craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks] at org.bukkit.craftbukkit.v1_7_R1.scheduler.CraftScheduler.mainThreadHea rtbeat(CraftScheduler.java:345) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks ] at net.minecraft.server.v1_7_R1.MinecraftServer.u(MinecraftServer.java:5 87) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks] at net.minecraft.server.v1_7_R1.DedicatedServer.u(DedicatedServer.java:2 50) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks] at net.minecraft.server.v1_7_R1.MinecraftServer.t(MinecraftServer.java:5 45) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks] at net.minecraft.server.v1_7_R1.MinecraftServer.run(MinecraftServer.java :457) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks] at net.minecraft.server.v1_7_R1.ThreadServerApplication.run(SourceFile:6 17) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks] [21:55:39 WARN]: [Hub] Task #110 for Hub v1.0 generated an exception java.lang.NullPointerException at org.hiros.plugin.Hub$2.run(Hub.java:212) ~[?:?] at org.bukkit.craftbukkit.v1_7_R1.scheduler.CraftTask.run(CraftTask.java :53) ~[craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks] at org.bukkit.craftbukkit.v1_7_R1.scheduler.CraftScheduler.mainThreadHea rtbeat(CraftScheduler.java:345) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks ] at net.minecraft.server.v1_7_R1.MinecraftServer.u(MinecraftServer.java:5 87) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks] at net.minecraft.server.v1_7_R1.DedicatedServer.u(DedicatedServer.java:2 50) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks] at net.minecraft.server.v1_7_R1.MinecraftServer.t(MinecraftServer.java:5 45) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks] at net.minecraft.server.v1_7_R1.MinecraftServer.run(MinecraftServer.java :457) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks] at net.minecraft.server.v1_7_R1.ThreadServerApplication.run(SourceFile:6 17) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks] Here is my source code. Code: package org.hiros.plugin; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Map.Entry; import org.bukkit.ChatColor; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; 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.player.PlayerInteractEvent; import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.plugin.java.JavaPlugin; public class Hub extends JavaPlugin implements Listener{ String prefix = ChatColor.WHITE+"["+ChatColor.GREEN+""+ChatColor.BOLD+"Crystal"+ChatColor.DARK_GREEN+""+ChatColor.BOLD+"Craft"+ChatColor.RESET+""+ChatColor.WHITE+"] "; //Variable declartion public HashMap<Player, Boolean> preventHideSpam = new HashMap<Player, Boolean>(); public HashMap<Player, Boolean> lobbyHidePlayers = new HashMap<Player, Boolean>(); public int maxLobbies = 54; public HashMap<Player, Integer> currentLobby = new HashMap<Player, Integer>(); public HashMap<Player, Integer> hub = new HashMap<Player, Integer>(); @Override public void onEnable() { checkForConfig(); this.getServer().getPluginManager().registerEvents(this, this); } @Override public void onDisable() { //Do stuff } public void checkForConfig() { if(this.getConfig().getBoolean("setup") != true) { this.getConfig().set("setup", true); this.saveConfig(); } } //Commands public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { if(!(sender instanceof Player)) { getLogger().info("Please do not execute commands through the console."); return false; } if(cmd.getName().equalsIgnoreCase("hub")) { final Player player = (Player) sender; if(args.length == 0) { joinHub(player, 0); return false; } if(args[0].equalsIgnoreCase("menu")) { if(!(player.hasPermission("crystalcraft.hub.menu"))) { player.sendMessage(prefix+ChatColor.DARK_RED+"You do not have permission"); return false; } IconMenu mainMenu = new IconMenu(9,ChatColor.GREEN+""+ChatColor.BOLD+"Hub Commands",new IconMenu.OptionClickEventHandler() { @Override public void onOptionClick(IconMenu.OptionClickEvent event) { if(event.getName().equalsIgnoreCase(ChatColor.GOLD+""+ChatColor.BOLD+"Set Hub Spawn")) { if(!(event.getPlayer().hasPermission("cyrstalcraft.hub.sethub"))) { event.getPlayer().sendMessage(prefix+ChatColor.DARK_RED+"You do not have permission."); } else { setHubSpawn(event.getPlayer()); } } event.setWillClose(true); } }, this); mainMenu.setOption(0, new ItemStack(Material.NETHER_STAR), ChatColor.GOLD+""+ChatColor.BOLD+"Set Hub Spawn", ChatColor.BLUE+"Stand where you want the hub spawn to be."); mainMenu.open(player); } } return false; } //Event Handlers @EventHandler public void onPlayerJoin(PlayerJoinEvent event) { if(this.getConfig().getBoolean("hub.setup") != true) { event.getPlayer().sendMessage(prefix+ChatColor.RED+"Please set the hub spawn. Type /hub menu."); } else { joinHub(event.getPlayer(), 0); } } @EventHandler public void onPlayerInteract(PlayerInteractEvent event) { Player player = event.getPlayer(); if(player.getItemInHand().getType() == Material.WATCH && event.getAction().equals(Action.RIGHT_CLICK_AIR) || player.getItemInHand().getType() == Material.WATCH && event.getAction().equals(Action.RIGHT_CLICK_BLOCK)) { if(lobbyHidePlayers.get(player) == false) { if(preventHideSpam.get(player) == true) { player.sendMessage(prefix+ChatColor.RED+"Please wait 15 seconds between each use."); } else { lobbyHidePlayers.put(player, true); for(Player p : getServer().getOnlinePlayers()) { player.hidePlayer(p); } player.sendMessage(prefix+ChatColor.AQUA+""+ChatColor.BOLD+"All players have been hidden."); preventHideSpam(player); } } else { if(preventHideSpam.get(player) == true) { player.sendMessage(prefix+ChatColor.RED+"Please wait 15 seconds between each use."); } else { lobbyHidePlayers.put(player, true); for(Player p : getServer().getOnlinePlayers()) { player.hidePlayer(p); } player.sendMessage(prefix+ChatColor.AQUA+""+ChatColor.BOLD+"All players are now visible."); } } } if(player.getItemInHand().getType() == Material.NETHER_STAR && event.getAction().equals(Action.RIGHT_CLICK_BLOCK) || player.getItemInHand().getType() == Material.NETHER_STAR && event.getAction().equals(Action.RIGHT_CLICK_AIR)) { openLobbySelector(player); } } //Hub Api public void setHubSpawn(Player player) { double x = player.getLocation().getX(); double y = player.getLocation().getY(); double z = player.getLocation().getZ(); float yaw = player.getLocation().getYaw(); String world = player.getLocation().getWorld().toString(); this.getConfig().set("hub.setup", true); this.getConfig().set("hub.spawn.x", x); this.getConfig().set("hub.spawn.y", y); this.getConfig().set("hub.spawn.z", z); this.getConfig().set("hub.spawn.yaw", yaw); this.getConfig().set("hub.spawn.world", world); this.saveConfig(); this.reloadConfig(); player.sendMessage(prefix+ChatColor.GOLD+"Hub location has been set."); } public void sendPlayerJoinMessage(Player player) { player.sendMessage(ChatColor.DARK_GREEN+""+ChatColor.BOLD+""+ChatColor.STRIKETHROUGH+"========================="); player.sendMessage(ChatColor.BOLD+""+ChatColor.WHITE+"Welcome to the "+ChatColor.GREEN+"Crystal"+ChatColor.DARK_GREEN+"Craft "+ChatColor.WHITE+"Hub!"); player.sendMessage(""); player.sendMessage(ChatColor.GOLD+"Hub Lobby: "+ChatColor.WHITE+""+currentLobby.get(player)); Iterator<?> iteratora = hub.entrySet().iterator(); int playersOnline = 0; while(iteratora.hasNext()) { @SuppressWarnings("unchecked") Entry<Player, Integer> entry = (Entry<Player, Integer>) iteratora.next(); if(entry.getValue() == currentLobby.get(player)) { playersOnline += 1; } } player.sendMessage(ChatColor.GOLD+"Players in Lobby: "+ChatColor.WHITE+""+playersOnline); player.sendMessage(""); player.sendMessage(ChatColor.YELLOW+""+ChatColor.BOLD+"Right Click your compass to view the quick warp menu."); player.sendMessage(ChatColor.DARK_GREEN+""+ChatColor.BOLD+""+ChatColor.STRIKETHROUGH+"========================="); } public void getHubItems(Player player) { Inventory playerInv = player.getInventory(); playerInv.clear(); ItemStack compass = new ItemStack(Material.COMPASS); ItemMeta compassMeta = compass.getItemMeta(); compassMeta.setDisplayName(ChatColor.GREEN+""+ChatColor.BOLD+"Quick Warp"); compass.setItemMeta(compassMeta); playerInv.setItem(0, compass); ItemStack clock = new ItemStack(Material.WATCH); ItemMeta clockMeta = clock.getItemMeta(); clockMeta.setDisplayName(ChatColor.AQUA+""+ChatColor.BOLD+"Hide Players"); clock.setItemMeta(clockMeta); playerInv.setItem(1, clock); ItemStack star = new ItemStack(Material.NETHER_STAR); ItemMeta starMeta = star.getItemMeta(); starMeta.setDisplayName(ChatColor.LIGHT_PURPLE+""+ChatColor.BOLD+"Lobby Selector"); star.setItemMeta(starMeta); playerInv.setItem(8, star); } public void joinHub(final Player player, int hubid) { int randomLobby; if(hubid == 0) { randomLobby = (int)(Math.random()*maxLobbies); } else { randomLobby = hubid; } currentLobby.put(player, randomLobby); Location playerLoc = player.getLocation(); playerLoc.setX(this.getConfig().getDouble("hub.spawn.x")); playerLoc.setY(this.getConfig().getDouble("hub.spawn.y")); playerLoc.setZ(this.getConfig().getDouble("hub.spawn.z")); player.teleport(playerLoc); hub.put(player, currentLobby.get(player)); sendPlayerJoinMessage(player); getHubItems(player); //Hide the players in other lobbies for(Player p : getServer().getOnlinePlayers()) { player.hidePlayer(p); } getServer().getScheduler().scheduleSyncRepeatingTask(this, new Runnable() { public void run() { for(Map.Entry<Player, Integer> entry : hub.entrySet()) { Player tempPlayer = entry.getKey(); int tempLobby = entry.getValue(); player.sendMessage(""+lobbyHidePlayers.get(player).toString()); } } }, 20L, 20L); } public void preventHideSpam(final Player player) { preventHideSpam.put(player, true); getServer().getScheduler().scheduleSyncDelayedTask(this, new Runnable() { public void run() { preventHideSpam.put(player, false); } }, 300L); } public void openLobbySelector(Player player) { IconMenu lobbyMenu = new IconMenu(54, ChatColor.LIGHT_PURPLE+""+ChatColor.BOLD+""+ChatColor.UNDERLINE+"Lobby Selector", new IconMenu.OptionClickEventHandler() { @Override public void onOptionClick(IconMenu.OptionClickEvent event) { Player player = (Player) event.getPlayer(); String eventStr = event.getName(); eventStr = eventStr.replace(ChatColor.GOLD+""+ChatColor.BOLD+"Lobby #", ""); int lobbyNum = Integer.parseInt(eventStr); joinHub(player, lobbyNum); event.setWillClose(true); } }, this); for(int i=0;i<maxLobbies;i++) { int tempi = i+1; int tempPlayersOnline = 0; boolean lobbyImIn = false; Iterator<?> iterator = hub.entrySet().iterator(); while(iterator.hasNext()) { @SuppressWarnings("unchecked") Entry<Player, Integer> entry = (Entry<Player, Integer>) iterator.next(); if(entry.getValue() == tempi) { tempPlayersOnline += 1; } if(entry.getKey() == player && entry.getValue() == tempi) { lobbyImIn = true; } } String onlineMessage = null; if(tempPlayersOnline == 1) { onlineMessage = ChatColor.BLUE+"1 Player Online."; } else { onlineMessage = ChatColor.BLUE+""+tempPlayersOnline+" Players Online."; } if(lobbyImIn == false) { lobbyMenu.setOption(i, new ItemStack(Material.IRON_BLOCK, tempi), ChatColor.GOLD+""+ChatColor.BOLD+"Lobby #"+tempi, onlineMessage); } else { lobbyMenu.setOption(i, new ItemStack(Material.GOLD_BLOCK, tempi), ChatColor.GOLD+""+ChatColor.BOLD+"Lobby #"+tempi, onlineMessage); } } lobbyMenu.open(player); } }
Looks like you get three ( of the same error, NPE ) on the same line. Here is a part of the error, think you can now figure it out? Code: java.lang.NullPointerException at org.hiros.plugin.Hub$2.run(Hub.java:212) ~[?:?]
1.) it will make it easier on us if you used Code:java code here because it adds line numbers. 2.) learning how to read stacktraces will greatly increase your abilities. Which is the link above me. After adding it to my IDE (for line numbers) The problem is at line 212 which is Code:java Player tempPlayer = entry.getKey(); So I would say that in this instance entry.getKey(); is null. Maybe adding a check that will cancel the method should one of them be null (if its okay for it to be null) and if its supposed to have something in it at all times, I suggest finding out why this is null.