Solved Share ArrayList data between classes?

Discussion in 'Plugin Development' started by qlimax5000, Nov 5, 2013.

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

    qlimax5000

    So, i'm working on a plugin but a problem came up, i need to have 1 class add/remove players from an ArrayList and another class to read it.

    Example:

    Main.java:
    Code:java
    1. import java.util.ArrayList;
    2.  
    3. import org.bukkit.command.Command;
    4. import org.bukkit.command.CommandSender;
    5. import org.bukkit.entity.Player;
    6. import org.bukkit.plugin.java.JavaPlugin;
    7.  
    8. public class Main extends JavaPlugin {
    9.  
    10. ArrayList<Player> godmode = new ArrayList<>();
    11.  
    12. @Override
    13. public void onEnable() {
    14. getServer().getPluginManager().registerEvents(new PlayerDamageListener(), this);
    15. }
    16.  
    17. @Override
    18. public boolean onCommand(CommandSender sender, Command command,
    19. String label, String[] args) {
    20. if (command.getName().equalsIgnoreCase("godmode")) {
    21. if (sender instanceof Player) {
    22. Player player = (Player) sender;
    23. if (!(godmode.contains(player))) {
    24. godmode.add(player);
    25. player.sendMessage("GODMODE ON");
    26. } else {
    27. godmode.remove(player);
    28. player.sendMessage("GODMODE OFF");
    29. }
    30. }
    31. }
    32. return false;
    33. }
    34.  
    35. }


    PlayerDamageListener:
    Code:java
    1. import org.bukkit.entity.Player;
    2. import org.bukkit.event.EventHandler;
    3. import org.bukkit.event.Listener;
    4. import org.bukkit.event.entity.EntityDamageEvent;
    5.  
    6. public class PlayerDamageListener implements Listener {
    7.  
    8. Main m = new Main();
    9.  
    10. @EventHandler
    11. public void onPlayerDamage(EntityDamageEvent event) {
    12. if (event.getEntity() instanceof Player) {
    13. Player player = (Player) event.getEntity();
    14. if (m.godmode.contains(player)) {
    15. event.setCancelled(true);
    16. }
    17. }
    18. }
    19.  
    20. }


    I'm getting no errors, it just gets an empty List...

    Thanks
    - Ben
     
  2. Offline

    GusGold

    qlimax5000
    You can access it by just
    Code:java
    1. Main.godmode
    or you could add a getter and setter in your Main class:
    Getter (open)
    Code:java
    1. public ArrayList<Player> getGodmode(){
    2. return godmode;
    3. }
    Setter (open)
    Code:java
    1. public void setGodmode(Player player, boolean add){
    2. if (add)
    3. godmode.add(player);
    4. else
    5. godmode.remove(player);
    6. }
     
    MrSnare likes this.
  3. Offline

    qlimax5000

    GusGold
    I just tested this, i changed my ArrayLists to static and now it works PERFECTLY!
    Thanks, man!

    - Ben
     
  4. Offline

    GusGold

Thread Status:
Not open for further replies.

Share This Page