Scoreboard Help?

Discussion in 'Plugin Development' started by Axanite, Nov 18, 2013.

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

    Axanite

    So I'm making a plugin that uses scoreboards to track scores and something is not going right...
    Basically, I asked a friend how to fix something as Eclipse didn't show errors but when I loaded my server it gave me an error saying nullpointerexception and he told me to add something that checks if the manager is null but now everything using board & manager elsewhere is saying it cannot be resolved and I cannot fix it. Any help will be appreciated!

    CODE:
    Code:
    package me.rf2minecraft.ABBAMining;
     
    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    import org.bukkit.Material;
    import org.bukkit.enchantments.Enchantment;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.block.BlockBreakEvent;
    import org.bukkit.plugin.java.JavaPlugin;
    import org.bukkit.scoreboard.DisplaySlot;
    import org.bukkit.scoreboard.Objective;
    import org.bukkit.scoreboard.Score;
    import org.bukkit.scoreboard.Scoreboard;
    import org.bukkit.scoreboard.ScoreboardManager;
    import org.bukkit.scoreboard.Team;
     
    public final class ABBAMining extends JavaPlugin {
        public void onEnable() {
            Bukkit.getServer().getPluginManager().registerEvents(new BlockBreak(), this);
        }
       
        ScoreboardManager manager = Bukkit.getScoreboardManager();
        if(manager!=null) {
            Scoreboard board = manager.getNewScoreboard();
            Team team = board.registerNewTeam("Scores");
            Team getTeam = board.getTeam("Scores");
            Objective objective = board.registerNewObjective("score", "dummy");
        } else {
            getLogger().info("ScoreboardManager could not be found!");
        }
       
        Score emeralds = objective.getScore(Bukkit.getOfflinePlayer(ChatColor.DARK_PURPLE + "Emeralds"));
        Score diamonds = objective.getScore(Bukkit.getOfflinePlayer(ChatColor.DARK_PURPLE + "Diamonds"));
        Score gold = objective.getScore(Bukkit.getOfflinePlayer(ChatColor.DARK_PURPLE + "Gold"));
        Score lapis = objective.getScore(Bukkit.getOfflinePlayer(ChatColor.DARK_PURPLE + "Lapis"));
        Score redstone = objective.getScore(Bukkit.getOfflinePlayer(ChatColor.DARK_PURPLE + "Redstone"));       
           
        public class BlockBreak implements Listener {
            @EventHandler
            public void onBlockBreak(BlockBreakEvent e) {
                if(!(e.getPlayer().getItemInHand().getType() == Material.DIAMOND_PICKAXE && e.getPlayer().getItemInHand().containsEnchantment(Enchantment.SILK_TOUCH))) return;
                if(!(e.getBlock().getType() == Material.EMERALD_ORE || e.getBlock().getType() == Material.DIAMOND_ORE)) return;
                if(!(e.getBlock().getType() == Material.GOLD_ORE || e.getBlock().getType() == Material.LAPIS_ORE || e.getBlock().getType() == Material.REDSTONE_ORE)) return;
                int EmeraldMined = 7;
                int DiamondMined = 5;
                int GoldMined = 3;
                int LapisMined = 1;
                int RedstoneMined = 1;
                objective.setDisplaySlot(DisplaySlot.SIDEBAR);
                objective.setDisplayName("Scores");
                if(e.getBlock().getType() == Material.EMERALD_ORE) {
                    Player p = e.getPlayer();
                    p.setScoreboard(board);
                    emeralds.setScore(EmeraldMined);
                }
                if(e.getBlock().getType() == Material.DIAMOND_ORE) {
                    Player p = e.getPlayer();
                    p.setScoreboard(board);
                    diamonds.setScore(DiamondMined);
                }
                if(e.getBlock().getType() == Material.GOLD_ORE) {
                    Player p = e.getPlayer();
                    p.setScoreboard(board);
                    gold.setScore(GoldMined);
                }
                if(e.getBlock().getType() == Material.LAPIS_ORE) {
                    Player p = e.getPlayer();
                    p.setScoreboard(board);
                    lapis.setScore(LapisMined);
                }
                if(e.getBlock().getType() == Material.REDSTONE_ORE) {
                    Player p = e.getPlayer();
                    p.setScoreboard(board);
                    redstone.setScore(RedstoneMined);
                    }
                }
            }
        }
    }
     
  2. Offline

    L33m4n123

    Code:
    if(manager!=null) {
            Scoreboard board = manager.getNewScoreboard();
            Team team = board.registerNewTeam("Scores");
            Team getTeam = board.getTeam("Scores");
            Objective objective = board.registerNewObjective("score", "dummy");
        } else {
            getLogger().info("ScoreboardManager could not be found!");
        }

    that should be inside a method
     
  3. Offline

    Axanite

    So like...
    public class ManagerNullCheck {
    // CODE
    } ?
     
  4. Offline

    L33m4n123

    method is not the same as a class
     
  5. Offline

    Axanite

    Erm.... can I have an example please? Sorry, I'm not used to fixing weird bugs like this.... atleast for me.
     
  6. Offline

    L33m4n123

    Well. I don't want to step on your toe but since this is more than basics of the basics of MOST programming language I personally advice you to go ahaed and learn java first. However here is a basic overview of a class and its method


    Code:java
    1. public class MyClass {
    2. // Here is your class body
    3. // Here you only should define
    4. // fields and methods and
    5. // if you like so another class
    6. public void myMethod(/*****/) {
    7. // here is where you do if clauses
    8. // and whatever else you want to do
    9. }
    10. }
     
  7. Offline

    Axanite

    Ah thanks. I'll try later as I'm taking some time to myself for a bit. :)
     
Thread Status:
Not open for further replies.

Share This Page