Solved Help with scoreboard and scheduler

Discussion in 'Plugin Development' started by SrNicks_, May 27, 2015.

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

    SrNicks_

    I'm trying for a long time to fix that, but I can not. how to fix?
    He says that already exists, but I just registered the new goal after he check whether you already have. Why this happens?


    Code:
    if(!(this.sb.getObjective("showhealt") == null)){
                this.objective.setDisplayName(ChatColor.RED + "❤");
                p.setHealth(p.getHealth());
            }else{
            this.objective = this.sb.registerNewObjective("showhealth", "health");  
            this.objective.setDisplaySlot(DisplaySlot.BELOW_NAME);
            this.objective.setDisplayName(ChatColor.RED + "❤");
            p.setHealth(p.getHealth());
            }
    
    error:
    Code:
    20:26:42 [WARNING] [TheTags] Task #14 for TheTags v2.0 generated an exception
    java.lang.IllegalArgumentException: An objective of name 'showhealth' already ex
    ists
            at org.apache.commons.lang.Validate.isTrue(Validate.java:157)
            at org.bukkit.craftbukkit.v1_5_R3.scoreboard.CraftScoreboard.registerNew
    Objective(CraftScoreboard.java:40)
            at org.bukkit.craftbukkit.v1_5_R3.scoreboard.CraftScoreboard.registerNew
    Objective(CraftScoreboard.java:20)
            at me.souonick.C.TheTags.Placar.update(Placar.java:36)
            at me.souonick.C.TheTags.Main$1.run(Main.java:23)
            at org.bukkit.craftbukkit.v1_5_R3.scheduler.CraftTask.run(CraftTask.java
    :53)
            at org.bukkit.craftbukkit.v1_5_R3.scheduler.CraftScheduler.mainThreadHea
    rtbeat(CraftScheduler.java:345)
            at net.minecraft.server.v1_5_R3.MinecraftServer.r(MinecraftServer.java:5
    13)
            at net.minecraft.server.v1_5_R3.DedicatedServer.r(DedicatedServer.java:2
    26)
            at net.minecraft.server.v1_5_R3.MinecraftServer.q(MinecraftServer.java:4
    77)
            at net.minecraft.server.v1_5_R3.MinecraftServer.run(MinecraftServer.java
    :410)
            at net.minecraft.server.v1_5_R3.ThreadServerApplication.run(SourceFile:5
    73)
    >
     
  2. Offline

    meguy26

  3. Offline

    SrNicks_

    @meguy26
    Code:
    package me.SrNick.C.TheTags;
    
    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;
    import org.bukkit.scoreboard.Team;
    
    public class Placar
    {
      private ScoreboardManager sm;
      private Scoreboard sb;
      private Team team;
      private Objective objective;
      Main main;
    
      public Placar(Main main)
      {
        this.main = main;
      }
    
      public void update(Player p)
      {
        this.sm = Bukkit.getScoreboardManager();
        this.sb = this.sm.getMainScoreboard();   
            String hasNameTeam = p.getName();
            String nameTeam;   
            nameTeam = hasNameTeam;
            if(!(this.sb.getObjective("showhealt") == null)){
                this.objective.setDisplayName(ChatColor.RED + "❤");
                p.setHealth(p.getHealth());
            }else{
            this.objective = this.sb.registerNewObjective("showhealth", "health");  
            this.objective.setDisplaySlot(DisplaySlot.BELOW_NAME);
            this.objective.setDisplayName(ChatColor.RED + "❤");
            p.setHealth(p.getHealth());
            }
            String tagFinal = "[Opped] ";
            if (this.sb.getTeam(nameTeam) != null)
            {
              this.team = this.sb.getTeam(nameTeam);
              this.team.addPlayer(p);
              this.team.setPrefix(tagFinal);
          
            }
            else
            {
              this.team = this.sb.registerNewTeam(nameTeam);
              this.team.addPlayer(p);
              this.team.setPrefix(tagFinal);
            }
      
        }
    
      public void setScoreboardPlayer(Player p)
      {
        p.setScoreboard(this.sb);
      }
    }
     
  4. Offline

    meguy26

    @SrNicks_
    OHMYGOSH IVEGOTIT!!!!
    I think ive got it, its actually quite simple really:
    Code:
    //check for "showhealth" instead of "showhealt"
    if(!(this.sb.getObjective("showhealth") == null)){
                this.objective.setDisplayName(ChatColor.RED + "❤");
                p.setHealth(p.getHealth());
            }else{
            this.objective = this.sb.registerNewObjective("showhealth", "health");
            this.objective.setDisplaySlot(DisplaySlot.BELOW_NAME);
            this.objective.setDisplayName(ChatColor.RED + "❤");
            p.setHealth(p.getHealth());
            }
    I believe you just mistyped the if statement....

    EDIT:
    I just realized the complete and total redundancy of that sentence...
     
  5. Offline

    SrNicks_

    @meguy26
    Thank you for your help. I got another error, know how to solve?

    Code:
    21:26:36 [WARNING] [TheTags] Task #14 for TheTags v2.0 generated an exception
    java.lang.NullPointerException
            at me.SrNick.C.TheTags.Placar.update(Placar.java:33)
            at me.SrNick.C.TheTags.Main$1.run(Main.java:23)
            at org.bukkit.craftbukkit.v1_5_R3.scheduler.CraftTask.run(CraftTask.java
    :53)
            at org.bukkit.craftbukkit.v1_5_R3.scheduler.CraftScheduler.mainThreadHea
    rtbeat(CraftScheduler.java:345)
            at net.minecraft.server.v1_5_R3.MinecraftServer.r(MinecraftServer.java:5
    13)
            at net.minecraft.server.v1_5_R3.DedicatedServer.r(DedicatedServer.java:2
    26)
            at net.minecraft.server.v1_5_R3.MinecraftServer.q(MinecraftServer.java:4
    77)
            at net.minecraft.server.v1_5_R3.MinecraftServer.run(MinecraftServer.java
    :410)
            at net.minecraft.server.v1_5_R3.ThreadServerApplication.run(SourceFile:5
    73)
     
  6. Offline

    meguy26

  7. Offline

    nverdier

    @SrNicks_ Placar line 33 is pointing to a null value.
     
  8. Offline

    SrNicks_

    nverdier likes this.
  9. Offline

    nverdier

Thread Status:
Not open for further replies.

Share This Page