Need help for passing object to other class (scoreboard)

Discussion in 'Plugin Development' started by TomTom1997, Jul 12, 2014.

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

    TomTom1997

    Hello,

    Since yesterday I started to make my first plugin and there appeared some issues. I have class for scoreboard. And there is methods to make scoreboard, load it and change scores.

    Here it is:

    Code:java
    1. package eu.anavicius.TomTom1997.TomTowerDefence;
    2.  
    3. import org.bukkit.Bukkit;
    4. import org.bukkit.entity.Player;
    5. import org.bukkit.event.Listener;
    6. import org.bukkit.scoreboard.DisplaySlot;
    7. import org.bukkit.scoreboard.Objective;
    8. import org.bukkit.scoreboard.Score;
    9. import org.bukkit.scoreboard.Scoreboard;
    10. import org.bukkit.scoreboard.ScoreboardManager;
    11.  
    12. public class Votes implements Listener {
    13.  
    14. public Scoreboard board;
    15. public Score scores[] = new Score[6];
    16.  
    17. public void sBoard () {
    18. ScoreboardManager manager = Bukkit.getScoreboardManager();
    19. Scoreboard board = manager.getNewScoreboard();
    20.  
    21. Objective obj = board.registerNewObjective("VoteMap", "dummy");
    22. obj.setDisplayName("Vote for maps!");
    23. obj.setDisplaySlot(DisplaySlot.SIDEBAR);
    24.  
    25. Score scores[] = new Score[6];
    26.  
    27. for (int i = 1; i<6; i++) {
    28. scores[i] = obj.getScore("Map " + i);
    29. scores[i].setScore(0);
    30. this.scores[i] = scores[i];
    31. }
    32. }
    33.  
    34. public void setScore(int i) {
    35. int sc = scores[i].getScore();
    36. scores[i].setScore(sc+=1);
    37.  
    38. for (Player p : Bukkit.getOnlinePlayers()) {
    39. p.setScoreboard(board);
    40. }
    41. }
    42.  
    43. public void showTo (Player player) {
    44. player.setScoreboard(this.board);
    45. }
    46.  
    47. }
    48. [/i][/i][/i][/i][/i][/i]

    The problem is that I don't know how to change scores or load it to the player in different classes. Example:
    Code:java
    1. //On my main class
    2.  
    3. public class Main extends Javaplugin {
    4. Votes vote = new Votes();
    5.  
    6. public void onEnable () {
    7. vote.sBoard();//Initialized scoreboard
    8. }
    9. }
    10. //another class
    11.  
    12. public class JoinDicsEvents {
    13. //what should i write here to acces my initialized
    14. //scoreboard (I mean write vote.showTo(player){})
    15. //Everytime when I try something there appears NPE
    16. }
     
  2. Offline

    Zettelkasten

    Just make your Scoreboard public and other classes can access it (as you have already done). For example:

    Code:java
    1. public class JoinDicsEvents {
    2. // This will be the same scoreboard as initialized
    3. Scoreboard scoreboard = Votes.scoreboard;
    4. // Now you can do what ever you want with it:
    5. scoreboard.registerNewObjective(...);
    6.  
    7. // And the same with your score array:
    8. Score scores[] = Votes.scores;
    9. scores[2].setScore(31415);
    10. }


    And BTW It has to be "JavaPlugin" instead of "Javaplugin" in the main class :)
     
  3. Offline

    TomTom1997

    I see there 'Votes.scores' and 'Votes.scoreboad'. Maybie there is other solution without using static?
     
Thread Status:
Not open for further replies.

Share This Page