Solved Arena Null Pointer Exception!

Discussion in 'Plugin Development' started by x_Jake_s, Sep 17, 2016.

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

    x_Jake_s

    I keep getting this error whenever I use my command to create an arena however I cant for the life of me figure out what the fix for it could be here is my source code and the error is surrounded by quotes:

    AlphaArena(Main Class)
    Code:
    public class AlphaArena extends JavaPlugin {
    
        static ArenaManager am;
        public File playersFile;
        public File arenasFile;
        public FileConfiguration players;
        public FileConfiguration arenas;
        public FileConfiguration config;
      
        public void onEnable() {
          
        }
      
        public void onDisable() {}
      
        public void setupYamls() {
            playersFile = new File(getDataFolder(), "players.yml");
            arenasFile = new File(getDataFolder(), "arenas.yml");
          
            arenas = new YamlConfiguration();
            players = new YamlConfiguration();
            config = getConfig();
          
            arenas.options().copyDefaults(true);
            players.options().copyDefaults(true);
            config.options().copyDefaults(true);
        }
      
      
        public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
          
            if (args.length == 0) {
                if (command.getName().equalsIgnoreCase("list")) {
                    String arenas = "List of Arenas - " + ChatColor.AQUA;
                    Object localIterator = am.getArenas().iterator();
                    while (((Iterator<?>) localIterator).hasNext()) {
                        ArenaInstance ai = (ArenaInstance)((Iterator<?>) localIterator).next();
                        arenas = arenas + ai.getName() + ",";
                    }
                    sender.sendMessage(arenas);
                }
            }
            if (args.length == 1) {
                if (command.getName().equalsIgnoreCase("create")) {
                    ArenaInstance ai = new ArenaInstance(args[0]);
    //the error is here!
                    am.createArena(ai);
    // ^^^^^
                }
                if (command.getName().equalsIgnoreCase("delete")) {
                    am.deleteArena(args[0]);
                }
            }
          
            return false;
        }
    }
    This issue directs us to my create arena method in my arena manager class:

    Code:
    public class ArenaManager {
    
        private static Map<String, ArenaInstance> playerArena = new HashMap<String, ArenaInstance>();
        public static Map<String, ArenaInstance> arenas = new HashMap<String, ArenaInstance>();
        public static List<ArenaInstance> list = new ArrayList<ArenaInstance>();
    
        public ArenaInstance getArena(String name) {
            if (arenas.containsKey(name)) {
                ArenaInstance ai = arenas.get(name);
                return ai;
            }
            return null;
        }
    
        public List<ArenaInstance> getArenas() {
            return list;
        }
    
        public boolean isInArena(Player p) {
            if (playerArena.containsKey(p.getName()))
                return true;
            return false;
        }
    
        public ArenaInstance getArena(Player p) {
            String name = p.getName();
            if (playerArena.containsKey(name)) {
                ArenaInstance ai = playerArena.get(name);
                return ai;
            }
            return null;
        }
    
        public void removePlayer(Player p) {
            if (playerArena.containsKey(p.getName())) {
                playerArena.remove(p.getName());
            }
        }
    
        public void addPlayer(Player p, ArenaInstance arena) {
            if (!playerArena.containsKey(p.getName())) {
                playerArena.put(p.getName(), arena);
            }
        }
    
        public boolean arenaExists(String name) {
            if (arenas.containsKey(name))
                return true;
            return false;
        }
    
        public void createArena(ArenaInstance arena) {
            if (!arenas.containsKey(arena.getName())) {
                arenas.put(arena.getName(), arena);
                if (!list.contains(arena)) {
                    list.add(arena);
                }
            }
        }
    
        public void deleteArena(String name) {
            if (!arenas.containsKey(name))
                return;
            arenas.remove(name);
            if (list.contains(name))
                list.remove(name);
        }
    
    }
    
    and here is my arena instance class

    Code:
    public class ArenaInstance {
    
        private String name;
        //private GameState state = GameState.STATE;
        //private int id = 0;
        private List<UUID> players = new ArrayList<UUID>();
      
        public ArenaInstance(String name) {
            this.name = name;
        }
      
        //public GameState getState() {}
      
        //public void setState(GameState state) {}
      
        public String getName() {
            return this.name;
        }
      
        public void setName(String name) {
            this.name = name;
        }
      
        public List<UUID> getPlayers() {
            return this.players;
        }
      
    }
     
  2. Offline

    Zombie_Striker

  3. Offline

    x_Jake_s

    when type /create <name> it returns with an error saying I am receiving a null pointer at my createArena function in arenamanager
     
  4. Offline

    ShaneCraftDev

    The ArenaManager object in your JavaPlugin class is never initialized, this object is null. All your variables in the ArenaManager class are static, so I dont see a reason for why your methods in this class are not.
     
  5. Offline

    x_Jake_s

    ohhh wow cant believe I never thought about that thanks for helping me resolve this issue!
     
Thread Status:
Not open for further replies.

Share This Page