I need some help with my Scoreboard

Discussion in 'Plugin Development' started by Eclipse_Minecraft_Coder, Jul 13, 2016.

Thread Status:
Not open for further replies.
  1. I am really new to this and I am making this scoreboard. I have an error on line 59 with 'plugin'
    please help me


    Code:
    package me.bukkit.silversledge1031;
    
    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    import org.bukkit.Material;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandSender;
    import org.bukkit.craftbukkit.Main;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.player.PlayerJoinEvent;
    import org.bukkit.plugin.Plugin;
    import org.bukkit.plugin.java.JavaPlugin;
    import org.bukkit.scoreboard.ScoreboardManager;
    import org.bukkit.scoreboard.DisplaySlot;
    import org.bukkit.scoreboard.Objective;
    import org.bukkit.scoreboard.Score;
    import org.bukkit.scoreboard.Scoreboard;
    
    
    
    public class main extends JavaPlugin implements Listener {
      
        static Plugin plugin;
      
        public void onEnable() {
          
            plugin = this;
          
            Bukkit.getServer().getPluginManager().registerEvents(this, this);
          
        }
               
        @EventHandler
        public void PlayerJoin(PlayerJoinEvent e) {
          
            final Player p = e.getPlayer();
            ScoreboardManager manager = Bukkit.getScoreboardManager();
            final Scoreboard board = manager.getNewScoreboard();
            Objective objective = board.registerNewObjective("test", "dummy");
            objective.setDisplaySlot(DisplaySlot.SIDEBAR);
            objective.setDisplayName(ChatColor.DARK_BLUE + "Doghouse Servers");
          
            Score score = objective.getScore(ChatColor.DARK_AQUA + "Player Name:");
            score.setScore(10);
          
            Score score1 = objective.getScore(ChatColor.LIGHT_PURPLE + p.getName());
            score1.setScore(9);
          
            Score score2 = objective.getScore(ChatColor.GOLD + "Health:");
            score2.setScore(8);
          
            long health = Math.round(p.getHealth());
          
            Score score3 = objective.getScore(ChatColor.GRAY + String.valueOf(health));
            score3.setScore(7);
          
            Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(Main.plugin /* <------- this is underlined in red*/, new Runnable() {
                public void run() {
                  
                    p.setScoreboard(board);
                  
                  
                }
            },0, 20 * 10);
          
        }
      
               }
    
    
    every thing that's highlighted (1) is underlined in red
    (right image)

    View attachment 27625

    will this line of code work?:



    f
    Code:
    final Player p = e.getPlayer();
            ScoreboardManager manager = Bukkit.getScoreboardManager();
            final Scoreboard board = manager.getNewScoreboard();
            Objective objective = board.registerNewObjective("test", "dummy");
            objective.setDisplaySlot(DisplaySlot.SIDEBAR);
            objective.setDisplayName(ChatColor.DARK_BLUE + "Doghouse Servers");
          
            Score score = objective.getScore(ChatColor.DARK_AQUA + "Player Name:");
            score.setScore(10);
          
          
          
            Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(Main.plugin /* <------- this is underlined in red*/, new Runnable() {
                public void run() {
                  
                    p.setScoreboard(board);
                  
                  
                }
            },0, 20 * 10);
          
        }
     
    Last edited: Jul 13, 2016
  2. Offline

    MCMastery

    Instead of making "plugin" a Plugin, make it what it is - a main.
    Don't call the class main, however! Class names in Java should always begin with a capital letter.
     
  3. Thanks, but I have one more problem. The server scoreboard shows for about 20 seconds, but then disapears!

    package me.bukkit.silversledge1031;


    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.player.PlayerJoinEvent;
    import org.bukkit.plugin.Plugin;
    import org.bukkit.plugin.java.JavaPlugin;
    import org.bukkit.scoreboard.ScoreboardManager;
    import org.bukkit.scoreboard.DisplaySlot;
    import org.bukkit.scoreboard.Objective;
    import org.bukkit.scoreboard.Score;
    import org.bukkit.scoreboard.Scoreboard;

    //export now!

    public class main extends JavaPlugin implements Listener {

    static Plugin plugin;

    public void onEnable() {

    plugin = this;

    Bukkit.getServer().getPluginManager().registerEvents(this, this);

    }

    @EventHandler
    public void PlayerJoin(PlayerJoinEvent e) {

    final Player p = e.getPlayer();
    ScoreboardManager manager = Bukkit.getScoreboardManager();
    final Scoreboard board = manager.getNewScoreboard();
    Objective objective = board.registerNewObjective("test", "dummy");
    objective.setDisplaySlot(DisplaySlot.SIDEBAR);
    objective.setDisplayName(ChatColor.DARK_BLUE + "Doghouse Servers");

    Score score = objective.getScore(ChatColor.DARK_AQUA + "Player: " + p.getName());
    score.setScore(10);

    //Score score1 = objective.getScore(ChatColor.LIGHT_PURPLE + p.getName());
    //score1.setScore(9);



    long health = Math.round(p.getHealth());

    Score score2 = objective.getScore(ChatColor.GOLD + "Health: " + String.valueOf(health));
    score2.setScore(9);

    Score score4 = objective.getScore(ChatColor.GOLD + "________________");
    score4.setScore(8);

    if (p.hasPlayedBefore() == false) {
    Score score5 = objective.getScore(ChatColor.DARK_GREEN + "WELCOME, NEW PLAYER!");
    score5.setScore(7);
    }else{
    Score score5 = objective.getScore(ChatColor.GRAY + "JOINED BEFORE");
    score5.setScore(6);
    }
    Score score6 = objective.getScore(ChatColor.RED + "________________");
    score6.setScore(5);

    Score score7 = objective.getScore(ChatColor.RED + "Thanks For Joining");
    score7.setScore(4);

    Score score8 = objective.getScore(ChatColor.DARK_PURPLE + "Stuck on an island? Type in '/home'!");
    score8.setScore(3);




    Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(main.plugin, new Runnable() {
    public void run() {

    p.setScoreboard(board);


    }
    },0, 20 * 10);

    }

    }

    thanks, but the scoreboard is blacking out after 20 seconds

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Jul 14, 2016
  4. It goes black because you are constantly setting the player's scoreboard each 200 ticks(20 * 10).
    You only need to set the player's scoreboard when they join, not repeatedly after they join.

    By the way you may have some trouble with the health and your joined before thing.
    You may want to use hashmaps or something with your scoreboards, because other players will see each
    other's health and joined before.
     
  5. Can you please give an example to what the code should look like? I am not very good at this yet.
     
    Last edited: Jul 16, 2016
  6. Could you tell me what the code will look like?
     
  7. I know spoon-feeding isn't allowed but to clear this up, here is your code. I've tidied it up & fixed it for you (i think? I haven't tested it yet.)
    code (open)

    Code:java
    1.  
    2. package me.bukkit.silversledge1031;
    3.  
    4.  
    5. import org.bukkit.Bukkit;
    6. import org.bukkit.ChatColor;
    7. import org.bukkit.entity.Player;
    8. import org.bukkit.event.EventHandler;
    9. import org.bukkit.event.Listener;
    10. import org.bukkit.event.player.PlayerJoinEvent;
    11. import org.bukkit.plugin.Plugin;
    12. import org.bukkit.plugin.java.JavaPlugin;
    13. import org.bukkit.scoreboard.ScoreboardManager;
    14. import org.bukkit.scoreboard.DisplaySlot;
    15. import org.bukkit.scoreboard.Objective;
    16. import org.bukkit.scoreboard.Score;
    17. import org.bukkit.scoreboard.Scoreboard;
    18.  
    19. //export now!
    20.  
    21. public class Main extends JavaPlugin implements Listener {
    22.  
    23. static Plugin plugin;
    24.  
    25. public void onEnable() {
    26. plugin = this;
    27. Bukkit.getServer().getPluginManager().registerEvents(this, this);
    28. }
    29.  
    30. @EventHandler
    31. public void PlayerJoin(PlayerJoinEvent e) {
    32. final Player p = e.getPlayer();
    33. ScoreboardManager manager = Bukkit.getScoreboardManager();
    34. final Scoreboard board = manager.getNewScoreboard();
    35. Objective objective = board.registerNewObjective("test", "dummy");
    36. objective.setDisplaySlot(DisplaySlot.SIDEBAR);
    37. objective.setDisplayName(ChatColor.DARK_BLUE + "Doghouse Servers");
    38.  
    39. Score score = objective.getScore(ChatColor.DARK_AQUA + "Player: " + p.getName());
    40. score.setScore(10);
    41.  
    42. Score score1 = objective.getScore(ChatColor.LIGHT_PURPLE + p.getName());
    43. score1.setScore(9);
    44.  
    45.  
    46.  
    47. long health = Math.round(p.getHealth());
    48.  
    49. Score score2 = objective.getScore(ChatColor.GOLD + "Health: " + String.valueOf(health));
    50. score2.setScore(9);
    51.  
    52. Score score4 = objective.getScore(ChatColor.GOLD + "________________");
    53. score4.setScore(8);
    54.  
    55. if (p.hasPlayedBefore() == false) {
    56. Score score5 = objective.getScore(ChatColor.DARK_GREEN + "WELCOME, NEW PLAYER!");
    57. score5.setScore(7);
    58. }else{
    59. Score score5 = objective.getScore(ChatColor.GRAY + "JOINED BEFORE");
    60. score5.setScore(6);
    61. }
    62. Score score6 = objective.getScore(ChatColor.RED + "________________");
    63. score6.setScore(5);
    64.  
    65. Score score7 = objective.getScore(ChatColor.RED + "Thanks For Joining");
    66. score7.setScore(4);
    67.  
    68. Score score8 = objective.getScore(ChatColor.DARK_PURPLE + "Stuck on an island? Type in '/home'!");
    69. score8.setScore(3);
    70.  
    71.  
    72.  
    73.  
    74. Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(Main.plugin, new Runnable() {
    75. @Override
    76. public void run() {
    77. p.setScoreboard(board);
    78. }
    79. }, 20*10);
    80. }
    81. }
    82.  

     
  8. Sorry, but thanks!
     
  9. Offline

    I Al Istannen

    @Astrophylite
    Spoonfeeding isn't forbidden, just deprecated :p

    I haven't really looked at the code, but writing what you did to fix it (and why) would probably help :)
     
    Astrophylite likes this.
  10. Ok, thanks!

    hmmmmm, this is weird. The scoreboard just disapeared altogether!

    Code:
    package me.bukkit.silversledge1031;
    
    
    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.player.PlayerJoinEvent;
    import org.bukkit.plugin.Plugin;
    import org.bukkit.plugin.java.JavaPlugin;
    import org.bukkit.scoreboard.ScoreboardManager;
    import org.bukkit.scoreboard.DisplaySlot;
    import org.bukkit.scoreboard.Objective;
    import org.bukkit.scoreboard.Score;
    import org.bukkit.scoreboard.Scoreboard;
    
    //export now!
    
    public class Main extends JavaPlugin implements Listener {
    
        static Plugin plugin;
    
        public void onEnable() {
            plugin = this;
            Bukkit.getServer().getPluginManager().registerEvents(this, this);
        }
    
        @EventHandler
        public void PlayerJoin(PlayerJoinEvent e) {
            final Player p = e.getPlayer();
            ScoreboardManager manager = Bukkit.getScoreboardManager();
            final Scoreboard board = manager.getNewScoreboard();
            Objective objective = board.registerNewObjective("test", "dummy");
            objective.setDisplaySlot(DisplaySlot.SIDEBAR);
            objective.setDisplayName(ChatColor.DARK_BLUE + "Doghouse Servers");
         
            Score score = objective.getScore(ChatColor.DARK_AQUA + "Player: " + p.getName());
            score.setScore(10);
         
            Score score1 = objective.getScore(ChatColor.LIGHT_PURPLE + p.getName());
            score1.setScore(9);
     
     
     
            long health = Math.round(p.getHealth());
         
            Score score2 = objective.getScore(ChatColor.GOLD + "Health: " + String.valueOf(health));
            score2.setScore(9);
         
            Score score4 = objective.getScore(ChatColor.GOLD + "________________");
            score4.setScore(8);
     
            if (p.hasPlayedBefore() == false) {
                Score score5 = objective.getScore(ChatColor.DARK_GREEN + "WELCOME, NEW PLAYER!");
                score5.setScore(7);
            }else{
                Score score5 = objective.getScore(ChatColor.GRAY + "JOINED BEFORE");
                score5.setScore(6);
            }
            Score score6 = objective.getScore(ChatColor.RED + "________________");
            score6.setScore(5);
         
            Score score7 = objective.getScore(ChatColor.RED + "Thanks For Joining");
            score7.setScore(4);
         
            Score score8 = objective.getScore(ChatColor.DARK_PURPLE + "Stuck? Type in '/home'!");
            score8.setScore(3);
           
            if (p.isOp() == true) {
                 Score score9 = objective.getScore(ChatColor.GOLD + "Rank: " + ChatColor.DARK_RED + "Server Admin");
                 score9.setScore(2);
            }else{
                 if (p.isOp() == false) {
                     Score score9 = objective.getScore(ChatColor.GOLD + "Rank: " + ChatColor.DARK_RED + "Player");
                     score9.setScore(2);
            }
           
     
            Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(Main.plugin, new Runnable() {
                @Override
                public void run() {
                    p.setScoreboard(board); 
                }
            }, 20*10);
        }
       
    }
        }
    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Jul 16, 2016
  11. This can be changed into 2 lines! You can use a conditional statement check if their op and set their rank without the if. Also remove the == true and false since isOp is already a Boolean. true == true - Bit useless

    getScore(stuff.. (isOp ? True : false) )
    Set the server admin and player strings in place of the true false.
    Example
    boolean apple = true
    System.out.println("You are " + (apple ? "" : "not") + " eating an apple!);
    If Apple is true
    You are eating an apple!
    If Apple is false
    You are not eating an apple!
     
  12. When I do what you say, I get errors! I might not understand!
     
  13. @Eclipse_Minecraft_Coder
    package me.bukkit.silversledge1031;


    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    import org.bukkit.command.defaults.GiveCommand;
    import org.bukkit.entity.Giant;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.player.PlayerJoinEvent;
    import org.bukkit.event.world.SpawnChangeEvent;
    import org.bukkit.material.SpawnEgg;
    import org.bukkit.plugin.Plugin;
    import org.bukkit.plugin.java.JavaPlugin;
    import org.bukkit.scoreboard.ScoreboardManager;

    import net.minecraft.server.v1_9_R2.ItemStack;
    import net.minecraft.server.v1_9_R2.SpawnerCreature;

    import org.bukkit.scoreboard.DisplaySlot;
    import org.bukkit.scoreboard.Objective;
    import org.bukkit.scoreboard.Score;
    import org.bukkit.scoreboard.Scoreboard;

    //export now!

    public class Main extends JavaPlugin implements Listener {

    static Plugin plugin;

    public void onEnable() {
    plugin = this;
    Bukkit.getServer().getPluginManager().registerEvents(this, this);
    }

    @EventHandler
    public void PlayerJoin(PlayerJoinEvent e) {
    final Player p = e.getPlayer();
    ScoreboardManager manager = Bukkit.getScoreboardManager();
    final Scoreboard board = manager.getNewScoreboard();
    Objective objective = board.registerNewObjective("test", "dummy");
    objective.setDisplaySlot(DisplaySlot.SIDEBAR);
    objective.setDisplayName(ChatColor.DARK_BLUE + "Doghouse Servers");

    Score score = objective.getScore(ChatColor.DARK_AQUA + "Player: " + p.getName());
    score.setScore(10);

    Score score1 = objective.getScore(ChatColor.LIGHT_PURPLE + p.getName());
    score1.setScore(9);
    long health = Math.round(p.getHealth());

    Score score2 = objective.getScore(ChatColor.GOLD + "Health: " + String.valueOf(health));
    score2.setScore(9);

    Score score4 = objective.getScore(ChatColor.GOLD + "________________");
    score4.setScore(8);
    if (p.hasPlayedBefore() == false) {
    Score score5 = objective.getScore(ChatColor.DARK_GREEN + "WELCOME, NEW PLAYER!");
    score5.setScore(7);
    }else{
    Score score5 = objective.getScore(ChatColor.BOLD + "JOINED BEFORE");
    score5.setScore(6);

    }
    Score score6 = objective.getScore(ChatColor.RED + "________________");
    score6.setScore(5);

    Score score7 = objective.getScore(ChatColor.RED + "Thanks For Joining");
    score7.setScore(4);

    Score score8 = objective.getScore(ChatColor.DARK_PURPLE + "Stuck? Type in '/home'!");
    score8.setScore(3);

    if (p.isOp()) {
    Score score9 = objective.getScore(ChatColor.GOLD + "Rank: " + ChatColor.DARK_RED + "Server Admin");
    score9.setScore(2);
    }else{
    Score score9 = objective.getScore(ChatColor.GOLD + "Rank: " + ChatColor.DARK_RED + "Player");
    score9.setScore(2);

    }
    Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(Main.plugin, new Runnable() {
    @Override
    public void run() {
    p.setScoreboard(board);
    }
    }, 20*10);


    }
    }


    //the imports are jsut for experimenting
     
  14. @Eclipse_Minecraft_Coder What's erroring? You didn't even do what I suggested you just removed the == true which would throw no error.

    And post your code in [code=java][/code] tags so it is actually readable.
     
  15. But you said to remove the 'if' o isPlayerOP(), that caused errors
     
  16. @Eclipse_Minecraft_Coder You know I'm not a mind reader right? I don't know what issue you have but your changes look fine to me. And again, you can condense the whole if to 2 lines using what I said above.

    Please tell what issue your having
     
  17. Ok. Sorry. The plugin is in my plugins folder, however, when I start the server, all the plugins work but this one. I only know as much as you do now!
     
  18. @Eclipse_Minecraft_Coder Have you tried checking console, when a plugin doesn't work there is usually info to be found there. You know your scoreboard only appears after 10 seconds right?
     
  19. Except, thats the thing. I have the Jarfile in my plugins folder, but when I click start, it loads all plugins except the one I want to download. No download message. No errors. No nothing.

    also, now it just disappears, which makes sense, sense because i typed in plugin in the command prompt 'Scorebard' didn't pop up

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Jul 16, 2016
  20. Wow. Let's fix this mess. First of all, you don't seem to know much Java. You need to learn Java before trying to work with the Bukkit API. Second, do not use me.bukkit.* in your package names. This is to avoid copyright situations. Just use me.<devName>.<projectName>.*
    Third, you don't need to use boolean == false | true
    You could just use the NOT operator (!) to check if something is false. Fourth, your code is horribly formatted. You can use CTRL + Shift + F to format the code (if you're using eclipse (#EclipseIsSuperior @bwfcwalshy)). Why are you using Math#round for a double, then putting that into a long variable..? Plus, you don't need to use String#valueOf for int/long/double/etc. Java already does it for you so you could just put "" + int
    Also, it's best not to name your main class main. Instead name it the name of your plugin.
    Lastly, don't double-post. The only reason the bot hadn't already merged your posts is because you overloaded it. :p
     
Thread Status:
Not open for further replies.

Share This Page