null pointer exception

Discussion in 'Plugin Development' started by DarkMbs, Feb 4, 2021.

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

    DarkMbs

    I am trying to add a command manager in my plugin but I am getting an error.

    https://paste.gg/p/anonymous/1b1110c867ed49dd845d56dea4840cd4

    Code:
    @Override
        public void perform(Player player, String[] args) {
            if (args.length > 1){
                String msg = getSyntax();
                player.sendMessage(msg);
            }else {
                int lvl = plugin.lvl.getLevel(player);
                player.sendMessage(ChatColor.YELLOW + "SlayerLevel: " + ChatColor.GREEN + lvl);
            }
        }
    Line 38:

    Code:
    int lvl = plugin.lvl.getLevel(player);
     
  2. Online

    timtower Administrator Administrator Moderator

    @DarkMbs plugin is null, lvl is null
     
  3. Offline

    DarkMbs

    how can i fix it i was following a video tutorial
     
  4. Online

    timtower Administrator Administrator Moderator

    @DarkMbs Need to initialize both.
    But can't say anything on that with just that method, need the full class for that.
     
  5. Offline

    DarkMbs

    which class should I share
     
  6. Online

    timtower Administrator Administrator Moderator

    The one with the method in it that you posted.
     
  7. Offline

    DarkMbs

    Code:
    public class LevelCommand extends SubCommand {
        AdderSlayer plugin;
        public LevelCommand(AdderSlayer plugin) {
            this.plugin = plugin;
        }
    
        @Override
        public String getName() {
            return "level";
        }
    
        @Override
        public String getDescription() {
            return "shows the Slayer level";
        }
    
        @Override
        public String getSyntax() {
            return "/slayer level";
        }
    
        @Override
        public void perform(Player player, String[] args) {
            if (args.length > 1){
                String msg = getSyntax();
                player.sendMessage(msg);
            }else {
                int lvl = plugin.lvl.getLevel(player);
                player.sendMessage(ChatColor.YELLOW + "SlayerLevel: " + ChatColor.GREEN + lvl);
            }
        }
    }
    
    and it's being called from here:
    Code:
    public class CommandManager implements CommandExecutor {
    
        private  ArrayList<SubCommand> subCommands = new ArrayList<>();
    
        public  CommandManager(){
            subCommands.add(new LevelCommand());
        }
    
        @Override
        public boolean onCommand(CommandSender sender, Command command, String s, String[] args) {
            if (sender instanceof Player){
                Player p = (Player) sender;
    
                if (args.length > 0){
                    for (int i = 0; i< getSubCommands().size(); i++){
                        if (args[0].equalsIgnoreCase(getSubCommands().get(i).getName())){
                            getSubCommands().get(i).perform(p,args);
                        }
    
                    }
    
                }
            }
    
            return true;
        }
    
        public ArrayList<SubCommand> getSubCommands() {
            return subCommands;
        }
    }
    
    and i dont know what to put inside the brackets of "LevelCommand":
    subCommands.add(new LevelCommand());

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Feb 4, 2021
  8. Online

    timtower Administrator Administrator Moderator

  9. Offline

    DarkMbs

    I made these changes was this what I was suppose to do?
    Code:
    public class CommandManager implements CommandExecutor {
        AdderSlayer plugin;
    
        public CommandManager(AdderSlayer plugin) {
            this.plugin = plugin;
        }
    
        private  ArrayList<SubCommand> subCommands = new ArrayList<>();
    
        public  CommandManager(){
            subCommands.add(new LevelCommand(plugin));
        }
    
     
  10. Online

    timtower Administrator Administrator Moderator

  11. Offline

    DarkMbs

    yes same error for some reason it says the plugin is all ways null:
     
  12. Online

    timtower Administrator Administrator Moderator

    Show the class where you make the CommandManager
     
  13. Offline

    DarkMbs

    do you mean this?
    Code:
    public class CommandManager implements CommandExecutor {
        AdderSlayer plugin;
    
        public CommandManager(AdderSlayer plugin) {
            this.plugin = plugin;
        }
    
        private  ArrayList<SubCommand> subCommands = new ArrayList<>();
    
        public  CommandManager(){
            subCommands.add(new LevelCommand(plugin);
        }
    
        @Override
        public boolean onCommand(CommandSender sender, Command command, String s, String[] args) {
            if (sender instanceof Player){
                Player p = (Player) sender;
    
                if (args.length > 0){
                    for (int i = 0; i< getSubCommands().size(); i++){
                        if (args[0].equalsIgnoreCase(getSubCommands().get(i).getName())){
                            getSubCommands().get(i).perform(p,args);
                        }
    
                    }
    
                }
            }
    
            return true;
        }
    
        public ArrayList<SubCommand> getSubCommands() {
            return subCommands;
        }
    }
    
     
    Last edited: Feb 4, 2021
  14. Online

    timtower Administrator Administrator Moderator

    @DarkMbs And now you have an old one again -.-
     
  15. Offline

    DarkMbs

    ohh sorry. my bad i edited the post
     
  16. Online

    timtower Administrator Administrator Moderator

    Code:
    public CommandManager(){
    subCommands.add(new LevelCommand(plugin);
    }
    Remove this one.
     
Thread Status:
Not open for further replies.

Share This Page