Strange problem with scoreboards

Discussion in 'Plugin Development' started by Pitazzo, Mar 2, 2014.

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

    Pitazzo

    Hey guys!
    I've coded a little scoreboard but I have a quite strange problem when I activate two objectives: I'm not able to join the server (Internal exception: java.io.IOException: Received string length longer than maximum allowed (18 > 16)). The "best" is that this just happens when there is more tan one objectives in de scoreboard; here is my code:

    Code:java
    1. package es.programahermes.Utilidades;
    2.  
    3. import org.bukkit.Bukkit;
    4. import org.bukkit.ChatColor;
    5. import org.bukkit.entity.Player;
    6. import org.bukkit.scoreboard.DisplaySlot;
    7. import org.bukkit.scoreboard.Objective;
    8. import org.bukkit.scoreboard.Score;
    9. import org.bukkit.scoreboard.ScoreboardManager;
    10.  
    11. import es.programahermes.MySQL;
    12.  
    13. public class Scoreboard {
    14.  
    15. static ScoreboardManager manager = Bukkit.getScoreboardManager();
    16.  
    17. public static void showScore(Player player){
    18.  
    19. int sed = (int) MySQL.getSed(player);
    20. int residual = (int) MySQL.getResidual(player);
    21. ScoreboardManager manager = Bukkit.getScoreboardManager();
    22. org.bukkit.scoreboard.Scoreboard board = manager.getNewScoreboard();
    23. Objective obj = board.registerNewObjective("test", "dummy");
    24. obj.setDisplaySlot(DisplaySlot.SIDEBAR);
    25. obj.setDisplayName(ChatColor.BOLD+ "Soporte Vital");
    26. Score residuos = null;
    27. Score hidratacion = null;
    28.  
    29.  
    30. if(MySQL.getSed(player)>70){
    31. hidratacion = obj.getScore(Bukkit.getOfflinePlayer("Hidratación: "+ChatColor.GREEN+sed+"%"));
    32. }else{
    33. if(MySQL.getSed(player)<30){
    34. hidratacion = obj.getScore(Bukkit.getOfflinePlayer("Hidratación: "+ChatColor.GOLD+sed+"%"));
    35. }else{
    36. hidratacion = obj.getScore(Bukkit.getOfflinePlayer("Hidratación: "+ChatColor.RED+sed+"%"));
    37.  
    38. }
    39. }
    40.  
    41.  
    42. //residuos
    43. if(MySQL.getResidual(player)<50){
    44. residuos = obj.getScore(Bukkit.getOfflinePlayer("Residuos: "+ChatColor.GREEN+residual+"%"));
    45. }else{
    46. if(MySQL.getResidual(player)>70){
    47. residuos = obj.getScore(Bukkit.getOfflinePlayer("Residuos: "+ChatColor.GOLD+residual+"%"));
    48. }else{
    49. residuos = obj.getScore(Bukkit.getOfflinePlayer("Residuos: "+ChatColor.RED+residual+"%"));
    50.  
    51. }
    52. }
    53.  
    54. residuos.setScore(0);
    55. hidratacion.setScore(0);
    56.  
    57. player.setScoreboard(board);
    58. }
    59.  
    60. }


    By the way i would like to know if is possible not displaying any score or setting it null.

    Thanks in advance!

    Any idea?

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Jun 7, 2016
  2. Probably because you have a String longer than 16 in your Scoreboard Objective/Displayname? ChatColors count as characters I believe, so you must shorten the lengths...
     
Thread Status:
Not open for further replies.

Share This Page