Hey guys i made a party plugin and it works fine except for my players health doesnt update when they are hit here is my code Scoreboard: Code: public void updateScoreboard() { List<String> second = Arrays.asList(toStringArray(getPartyMembers().toArray())); Iterator<String> players = getPartyMembers().iterator(); while(players.hasNext()) { String pn = players.next(); if(Bukkit.getPlayer(pn) == null) continue; Player p = Bukkit.getPlayer(pn); Objective o = ScoreboardMechanics.getBoard(p).getObjective(DisplaySlot.SIDEBAR); if(o == null) { o = ScoreboardMechanics.getBoard(p).registerNewObjective("player_data", "dummy"); o.setDisplayName(ChatColor.RED.toString() + ChatColor.BOLD.toString() + "Party"); o.setDisplaySlot(DisplaySlot.SIDEBAR); } for(String tn : second) { if(Bukkit.getPlayer(tn) == null) { ScoreboardMechanics.getBoard(p).resetScores(Bukkit.getOfflinePlayer(tn)); continue; } Player t = Bukkit.getPlayer(tn); String name = getPlayerName(t); if(name.length() > 16) name = name.substring(0, 16); o.getScore(Bukkit.getOfflinePlayer(name)).setScore(HealthMechanics.getPlayerHP(t.getName())); } } } My Healthmechanics.getPlayerHP part of the code Code: public static int getPlayerHP(String p_name) { if(player_health.containsKey(p_name)) { return player_health.get(p_name); } // If the data doesn't exist, return default? return 50;
@dsdevil Please list ALL the places you make a call to updateScoreboard(); my guess is you just need to make an EntityDamageByEntityEvent and updateScoreboard(); in there, but I am not positive.
Code: public void addPlayer(Player pl) { if(players.contains(pl)) return; players.add(pl.getName()); PartyMechanics.party_map.put(pl.getName(), this); updateScoreboard(); if(getPartyMembers().size() == 1) { return; } int party_count = getPartyMembers().size(); for(String s : getPartyMembers()) { if(s.equalsIgnoreCase(pl.getName())) { continue; } if(Bukkit.getPlayer(s) == null) { continue; } final Player p_mem = Bukkit.getPlayer(s); if(party_count == 4) { p_mem.sendMessage(ChatColor.GRAY + "You now have " + ChatColor.BOLD + "4/8" + ChatColor.GRAY + " party members. You will now recieve increased drop rates when fighting together."); } if(party_count == 8) { p_mem.sendMessage(ChatColor.GRAY + "You now have " + ChatColor.BOLD + "8/8" + ChatColor.GRAY + " party members. You will now recieve +5% DMG/ARMOR AND " + ChatColor.UNDERLINE + "GREATLY" + ChatColor.GRAY + " increased drop rates when fighting together."); } And then there is Code: public void updateScoreboard() { List<String> second = Arrays.asList(toStringArray(getPartyMembers().toArray())); Iterator<String> players = getPartyMembers().iterator(); while(players.hasNext()) { String pn = players.next(); if(Bukkit.getPlayer(pn) == null) continue; Player p = Bukkit.getPlayer(pn); Objective o = ScoreboardMechanics.getBoard(p).getObjective(DisplaySlot.SIDEBAR); if(o == null) { o = ScoreboardMechanics.getBoard(p).registerNewObjective("player_data", "dummy"); o.setDisplayName(ChatColor.RED.toString() + ChatColor.BOLD.toString() + "Party"); o.setDisplaySlot(DisplaySlot.SIDEBAR); } for(String tn : second) { if(Bukkit.getPlayer(tn) == null) { ScoreboardMechanics.getBoard(p).resetScores(Bukkit.getOfflinePlayer(tn)); continue; } Player t = Bukkit.getPlayer(tn); String name = getPlayerName(t); if(name.length() > 16) name = name.substring(0, 16); o.getScore(Bukkit.getOfflinePlayer(name)).setScore(HealthMechanics.getPlayerHP(t.getName())); } } } } And Code: public void run() { for(String p_name : party_map.keySet()) { if(Bukkit.getPlayer(p_name) == null){ party_map.remove(p_name); continue; } if(parties_checked.contains(party_map.get(p_name))) continue; //The party was already updated Party party = party_map.get(p_name); party.updateScoreboard(); parties_checked.add(party); } //Clear it for the next go around parties_checked.clear(); } }.runTaskTimer(Main.plugin, 0, 20L); log.info("[PartyMechanics] has been ENABLED."); } those are the only ones @meguy26