Multiple Classes

Discussion in 'Plugin Development' started by billman555555, Sep 28, 2013.

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

    billman555555

    Hi, i have a plugin which has a ArrayList in the main class.
    I want to make a Class for Events (Join, Quit, Death). But it needs to acsess the ArrayList.
    How would i do this?
     
  2. Offline

    amhokies

    Making the ArrayList static will let you access it from other classes without having to use an instance of your main class.
     
  3. Offline

    Chinwe

    Create a constructor in the class that takes your class as a parameter
    (look at the first 2 steps of this tutorial)

    Then create a method in the class the List is in called getList() (or similar), which simply returns the list :)

    Code:
    public mainClass plugin;
     
    public <class_name> (mainClass plugin)
    {
        this.plugin = plugin;
    }
     
    // ...
    // Access it like this
    List<String> = plugin.getList();
     
    // --------------- \\
    // In your main class
    List<String> yourList = ...;
     
    public List<String> getList()
    {
        return yourList;
    }
    Or you could simply make it static and access it with <classname>.<listname>, though I believe the above method is better :oops:
     
    amhokies likes this.
  4. Offline

    billman555555

    Chinwe amhokies
    Thanks, i will try both systems!

    amhokies
    I tried it but the Events dont work!
    Main Plugin:
    Code:java
    1. package com.billcraftmc.survivalgames;
    2.  
    3. import java.util.ArrayList;
    4.  
    5. import org.bukkit.Bukkit;
    6. import org.bukkit.Material;
    7. import org.bukkit.entity.Player;
    8. import org.bukkit.event.Listener;
    9. import org.bukkit.inventory.Inventory;
    10. import org.bukkit.inventory.ItemStack;
    11. import org.bukkit.plugin.java.JavaPlugin;
    12. import org.bukkit.potion.PotionEffect;
    13. import org.bukkit.potion.PotionEffectType;
    14.  
    15. public class SurvivalGames extends JavaPlugin implements Listener {
    16.  
    17. static String prefix = "§a[SurvivalGames]:";
    18. static ArrayList<String> spectators = new ArrayList<String>();
    19. static ArrayList<String> tributes = new ArrayList<String>();
    20. static ArrayList<String> gamemakers = new ArrayList<String>();
    21. static int maintime = 301; static int players = 0;
    22.  
    23. @Override
    24. public void onEnable(){
    25. getLogger().info("Enabled SurvivalGames");
    26. Bukkit.getServer().getPluginManager().registerEvents(this, this);
    27. }
    28. @Override
    29. public void onDisable() {
    30. getLogger().info("Disaled SurvivalGames");
    31. }
    32. public static void gameStart() {
    33. }
    34. public static void giveBuff() {
    35. for (Player players : Bukkit.getOnlinePlayers()) {
    36. players.addPotionEffect(new PotionEffect(PotionEffectType.SPEED, 1200, 1));
    37. }
    38. }
    39. public static void gameMakerSelector() {
    40. for (Player players : Bukkit.getOnlinePlayers()) {
    41. Inventory inventory = players.getInventory();
    42. if (gamemakers.size() <= 1) {
    43. gamemakers.add(players.getName());
    44. players.sendMessage(prefix+"§eYou are now a Game Maker");
    45. players.setAllowFlight(true);
    46. players.addPotionEffect(new PotionEffect(PotionEffectType.INVISIBILITY, Integer.MAX_VALUE, 1));
    47. inventory.addItem(new ItemStack(Material.POTION, 16, (short)16428));
    48. inventory.addItem(new ItemStack(Material.POTION, 8, (short)16420));
    49. } else {
    50. tributes.add(players.getName());
    51. players.sendMessage(prefix+"§eYou are now a Tribute");
    52. }
    53. }
    54. }
    55. }

    Event class:
    Code:java
    1. package com.billcraftmc.survivalgames;
    2.  
    3. import org.bukkit.Bukkit;
    4. import org.bukkit.entity.Player;
    5. import org.bukkit.event.EventHandler;
    6. import org.bukkit.event.Listener;
    7. import org.bukkit.event.entity.PlayerDeathEvent;
    8. import org.bukkit.event.player.PlayerJoinEvent;
    9. import org.bukkit.event.player.PlayerQuitEvent;
    10. import org.bukkit.potion.PotionEffect;
    11. import org.bukkit.potion.PotionEffectType;
    12.  
    13. public class Events implements Listener {
    14.  
    15. String prefix = SurvivalGames.prefix;
    16.  
    17. @EventHandler
    18. public void onDeath(PlayerDeathEvent event) {
    19. Player player = event.getEntity().getPlayer();
    20. event.setDeathMessage(null);
    21. if (player.getKiller() instanceof Player) {
    22. Bukkit.broadcastMessage(prefix+"§f"+player.getName()+"§e was killed by §f"+player.getKiller().getName()+"!");
    23. } else {
    24. Bukkit.broadcastMessage(prefix+"§f"+player.getName()+"§e died!");
    25. }
    26. SurvivalGames.tributes.remove(player.getName());
    27. SurvivalGames.spectators.add(player.getName());
    28. player.setAllowFlight(true);
    29. player.addPotionEffect(new PotionEffect(PotionEffectType.INVISIBILITY, Integer.MAX_VALUE, 1));
    30. player.sendMessage(prefix+"§eYou are now a Spectator");
    31. }
    32. @EventHandler
    33. public void onQuit(PlayerQuitEvent event) {
    34. Player player = event.getPlayer();
    35. event.setQuitMessage(null);
    36. Bukkit.broadcastMessage(prefix+"§f"+player.getName()+"§e left the game!");
    37. SurvivalGames.players = SurvivalGames.players - 1;
    38. }
    39. @EventHandler
    40. public void onJoin(PlayerJoinEvent event) {
    41. Player player = event.getPlayer();
    42. event.setJoinMessage(null);
    43. Bukkit.broadcastMessage(prefix+"§f"+player.getName()+"§e joined the game!");
    44. SurvivalGames.players = SurvivalGames.players + 1;
    45. if (SurvivalGames.players == 1) {
    46. SurvivalGames.gameStart();
    47. }
    48. }
    49. }


    Chinwe
    Do you know what might be the problem with Above post?

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Jun 4, 2016
  5. Offline

    Chinwe

    Try adding the modifier 'public' before 'static', though I think/thought it defaults to package/any classes in the same package can access it :confused:
     
  6. Offline

    billman555555

    Chinwe
    No i meant the events not working.
     
Thread Status:
Not open for further replies.

Share This Page