So I have this: Code:java package me.dubehh.Scoreboard; import me.dubehh.Kingdom.Main; import org.bukkit.Bukkit;import org.bukkit.ChatColor;import org.bukkit.entity.Player;import org.bukkit.scoreboard.DisplaySlot;import org.bukkit.scoreboard.Objective;import org.bukkit.scoreboard.Scoreboard;import org.bukkit.scoreboard.ScoreboardManager; public class Board { final Main m; public Board(Main instance){ m = instance; } ScoreboardManager sm = Bukkit.getScoreboardManager(); Scoreboard board = sm.getNewScoreboard(); public Objective obj = board.registerNewObjective("dummy", "board"); int onlinePlayer = Bukkit.getServer().getOnlinePlayers().length; public void toggleScoreboard(Player p){ if(p.getScoreboard().equals(board)){ p.sendMessage(ChatColor.GRAY + "- Info bord uitgezet - "); p.setScoreboard(m.board.sm.getNewScoreboard()); }else{ p.sendMessage(ChatColor.GRAY + "- Info bord aangezet - "); loadObj(obj, p); p.setScoreboard(board); } } @SuppressWarnings("deprecation") public void loadObj(Objective obj, Player p){ obj.setDisplaySlot(DisplaySlot.SIDEBAR); obj.setDisplayName(ChatColor.DARK_AQUA + "[" + ChatColor.AQUA + "The Roam" + ChatColor.DARK_AQUA + "]"); obj.getScore(Bukkit.getOfflinePlayer(ChatColor.GRAY + "Online: " + ChatColor.AQUA + onlinePlayer)).setScore(10); obj.getScore(Bukkit.getOfflinePlayer("")).setScore(9); obj.getScore(Bukkit.getOfflinePlayer(ChatColor.DARK_GRAY + "" + ChatColor.BOLD + "Jij")).setScore(8); obj.getScore(Bukkit.getOfflinePlayer(ChatColor.GRAY + "Rang: " + ChatColor.AQUA + m.promote.getRank(p))).setScore(7); obj.getScore(Bukkit.getOfflinePlayer(ChatColor.GRAY + "Kingdom: " + ChatColor.AQUA + m.methods.getKingdom(p))).setScore(6); } Which is my scoreboard class. And everything works except the 'Rang' and 'Kingdom'. When I call the toggle method, I get kicked from my server with: http://gyazo.com/d56c2e2379f4a9a0b91b845329f2c40e (safe link) possible causes: - I use a player object inside the scoreboards? I want personal scoreboards. Thanks!
I havent checked out the scoreboard api myself, but the error is quite clear, the string you're passing in is far too long for the scoreboard. If you're passing in the player object, do player.getName() (or display name) instead.
CorrieKay Well how would that make a differense? Since ' m.promote.getRank(p) ' is a String. Code:java public String getRank(Player p){if(someRank.contains(p)){return "Leader";}else{return "Villager";} That is not IN my actual getRank method. But how I did it here, I did it in my real code.
Dubehh there is a score name limit of 16 chars. Colour and format count as 2 chars. So villager gives 18 chars, which is more than 16
TheMcScavenger I like to keep my code english. Like 1/2 methods are dutch. The rest is just messages. fireblast709 Thanks! Didn't know ChatColor took space. Just wondering, is there a way to renew a score? Code:java obj.getScore(Bukkit.getOfflinePlayer("")).setScore(9); obj.getScore(Bukkit.getOfflinePlayer(ChatColor.DARK_GRAY + "" + ChatColor.BOLD + "Rang:")).setScore(8); obj.getScore(Bukkit.getOfflinePlayer(ChatColor.AQUA + m.promote.getRank(p))).setScore(7); obj.getScore(Bukkit.getOfflinePlayer(ChatColor.DARK_GRAY + "" + ChatColor.BOLD + "Kingdom:")).setScore(6); obj.getScore(Bukkit.getOfflinePlayer(ChatColor.AQUA + getKD(p))).setScore(5); For example, when the person shows the scoreboard, and he is a Villager the scoreboard shows 'Villager' like it should. but when I add him to, for example, 'Knight'. it will show: (scoreboard) Rang: Villager 7 Knight 7 (it creates a list of Ranks everytime the person is promoted / demoted. I'd like it to just update it from Villager to Knight. EDIT by Moderator: merged posts, please use the edit button instead of double posting.
fireblast709 How can I 'reset' a score? I need to remove '7' than add a new thing to '7'. But how can I get a score number?
fireblast709 I tried Code:java board.resetScores(p); board.resetScores(Bukkit.getOfflinePlayer(ChatColor.AQUA + m.promote.getRank(p))); both did not work :l. Current code Code:java ScoreboardManager sm = Bukkit.getScoreboardManager(); Scoreboard board = sm.getNewScoreboard(); public Objective obj = board.registerNewObjective("dummy", "board"); int onlinePlayer; public void toggleScoreboard(Player p){ if(p.getScoreboard().equals(board)){ p.sendMessage(ChatColor.GRAY + "- Info bord uitgezet - "); p.setScoreboard(m.board.sm.getNewScoreboard()); }else{ p.sendMessage(ChatColor.GRAY + "- Info bord aangezet - "); loadObj(obj, p); p.setScoreboard(board); } } @SuppressWarnings("deprecation") public void loadObj(Objective obj, Player p){ onlinePlayer = Bukkit.getServer().getOnlinePlayers().length; board.resetScores(Bukkit.getOfflinePlayer(ChatColor.AQUA + m.promote.getRank(p))); board.resetScores(Bukkit.getOfflinePlayer(ChatColor.AQUA + getKD(p))); obj.setDisplaySlot(DisplaySlot.SIDEBAR); obj.setDisplayName(ChatColor.DARK_AQUA + "[" + ChatColor.AQUA + "The Roam" + ChatColor.DARK_AQUA + "]"); obj.getScore(Bukkit.getOfflinePlayer(ChatColor.GRAY + "Online: " + ChatColor.AQUA + onlinePlayer)).setScore(10); obj.getScore(Bukkit.getOfflinePlayer("")).setScore(9); obj.getScore(Bukkit.getOfflinePlayer(ChatColor.DARK_GRAY + "" + ChatColor.BOLD + "Rang:")).setScore(8); obj.getScore(Bukkit.getOfflinePlayer(ChatColor.AQUA + m.promote.getRank(p))).setScore(7); obj.getScore(Bukkit.getOfflinePlayer(ChatColor.DARK_GRAY + "" + ChatColor.BOLD + "Kingdom:")).setScore(6); obj.getScore(Bukkit.getOfflinePlayer(ChatColor.AQUA + getKD(p))).setScore(5);; } public String getKD(Player p){ if(m.getConfig().contains(p.getName())){ String kd = m.getConfig().getString(p.getName() + ".Kingdom"); return kd; }else{ return "-"; } }
fireblast709 Still the same. Code:java final Main m; public Board(Main instance){ m = instance; } ScoreboardManager sm = Bukkit.getScoreboardManager(); Scoreboard board = sm.getNewScoreboard(); public Objective obj = board.registerNewObjective("dummy", "board"); int onlinePlayer; public void toggleScoreboard(Player p){ if(p.getScoreboard().equals(board)){ p.sendMessage(ChatColor.GRAY + "- Info bord uitgezet - "); p.setScoreboard(m.board.sm.getNewScoreboard()); }else{ p.sendMessage(ChatColor.GRAY + "- Info bord aangezet - "); loadObj(obj, p); p.setScoreboard(board); } } public void clearScore(){ for(OfflinePlayer player : board.getPlayers()) { if(obj.getName().contains(ChatColor.AQUA + "")){ board.resetScores(player); } } } @SuppressWarnings("deprecation") public void loadObj(Objective obj, Player p){ onlinePlayer = Bukkit.getServer().getOnlinePlayers().length; clearScore(); obj.setDisplaySlot(DisplaySlot.SIDEBAR); obj.setDisplayName(ChatColor.DARK_AQUA + "[" + ChatColor.AQUA + "The Roam" + ChatColor.DARK_AQUA + "]"); obj.getScore(Bukkit.getOfflinePlayer(ChatColor.GRAY + "Online: " + ChatColor.AQUA + onlinePlayer)).setScore(10); obj.getScore(Bukkit.getOfflinePlayer("")).setScore(9); obj.getScore(Bukkit.getOfflinePlayer(ChatColor.DARK_GRAY + "" + ChatColor.BOLD + "Rang:")).setScore(8); obj.getScore(Bukkit.getOfflinePlayer(ChatColor.AQUA + m.promote.getRank(p))).setScore(7); obj.getScore(Bukkit.getOfflinePlayer(ChatColor.DARK_GRAY + "" + ChatColor.BOLD + "Kingdom:")).setScore(6); obj.getScore(Bukkit.getOfflinePlayer(ChatColor.AQUA + getKD(p))).setScore(5);; } public String getKD(Player p){ if(m.getConfig().contains(p.getName())){ String kd = m.getConfig().getString(p.getName() + ".Kingdom"); return kd; }else{ return "-"; } } } Promote Code:java public void promotePlayer(Player p, Player sender){ m.board.loadObj(m.board.obj, p); if(!(isPromoted(p))){ setRidderI(p); p.sendMessage(pref + "dutch message"); sender.sendMessage(pref + "dutch message"); return; }else if(isRidderI(p)){ setRidderII(p); p.sendMessage(pref + "dutch message"); sender.sendMessage(pref + "dutch message"); return; }else if(isRidderII(p)){ setHertog(p); p.sendMessage(pref + "dutch message"); sender.sendMessage(pref + "dutch message"); return; }else{ sender.sendMessage(pref + "dutch message"); } }