Solved Plugin JavaNullPointer exception reach a class with listeners class

Discussion in 'Plugin Development' started by Silverkan, Feb 17, 2020.

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

    Silverkan

    Hello, i've a problem with my plugin,

    I want to create a plugin who change the Join and the Quit message, but i've an exception when i want to reach another class.


    This is my Listeners class's code:
    Code:
    package be.detraziel.atypical.listeners;
    
    import org.bukkit.Bukkit;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.player.PlayerJoinEvent;
    import org.bukkit.event.player.PlayerLoginEvent;
    import org.bukkit.event.player.PlayerQuitEvent;
    
    import be.detraziel.atypical.commands.Main;
    
    public class JoinAndQuit implements Listener {
           
              private Main main;
             
              public JoinAndQuit(Main main) {
                this.main = main;
              }
             
             
              @EventHandler
              public boolean OnJoin(PlayerJoinEvent event) {
                Player player = event.getPlayer();
                event.setJoinMessage(null);
                for(Player p : Bukkit.getOnlinePlayers()){
                @SuppressWarnings("unused")
                String pname = player.getName();
                p.sendMessage("");
                }
              return true;
              }
             
              @EventHandler
              public boolean OnQuit(PlayerQuitEvent event) {
                Player player = event.getPlayer();
                event.setQuitMessage(null);
                for(Player p : Bukkit.getOnlinePlayers()){
                @SuppressWarnings("unused")
                String pname = player.getName();
                p.sendMessage(main.getConfig().getString(Main.crochet()).replace(main.getConfig().getString("TchatColor.Symbol"), "§") + main.getConfig().getString("JoinAndQuit.Quit").replace(main.getConfig().getString("TchatColor.Symbol"), "§"));
                }
                  return true;           
              }
               
              @EventHandler
              public boolean onPlayerLoginEvent(final PlayerLoginEvent event) {
                Player player = event.getPlayer();
                if (!player.hasPlayedBefore()) {
                for(Player p : Bukkit.getOnlinePlayers()){
                @SuppressWarnings("unused")
                String pname = player.getName();
                p.sendMessage(main.getConfig().getString(Main.crochet()).replace(main.getConfig().getString("TchatColor.Symbol"), "§") + main.getConfig().getString("JoinAndQuit.FirstTime").replace(main.getConfig().getString("TchatColor.Symbol"), "§"));
    
    }
                }
                  return true;         
              }
    }
             
             
    
    And then, it's my Main class's what i want to reach:
    Code:
    package be.detraziel.atypical.commands;
    
    import org.bukkit.plugin.java.JavaPlugin;
    
    import be.detraziel.atypical.commands.Main;
    import be.detraziel.atypical.listeners.ArrayLists;
    import be.detraziel.atypical.listeners.Bot;
    import be.detraziel.atypical.listeners.JoinAndQuit;
    import be.detraziel.atypical.listeners.TchatColor;
    
    public class Main extends JavaPlugin {
       
        public static String crochet() {
            String crochet = "Prefix.Tchat";
            return crochet;
        }
           
       
          @Override
        public void onEnable(){
            saveDefaultConfig();
            System.out.println("[Atypical]: " + getConfig().getString("Console.In").replace(getConfig().getString("TchatColor.Symbol"), "§"));
            if(getConfig().getString("TchatColor.Enabled") == "true"){   
            getServer().getPluginManager().registerEvents(new TchatColor(null), this);
            }
            if(getConfig().getString("JoinAndQuit.Enabled") == "true"){   
            getServer().getPluginManager().registerEvents(new JoinAndQuit(null), this);
            }
            //Ajout de commande Utils
            if(getConfig().getString("Utils.Enabled") == "true"){
            getCommand("Respond").setExecutor(new Respond(this));
            getCommand("Enderchest").setExecutor(new Enderchest(this));
            getCommand("Craft").setExecutor(new Craft(this));
            getCommand("JoinAndQuit").setExecutor(new JoinAndQuitC(this));
            }
            getServer().getPluginManager().registerEvents(new Bot(), this);
            getServer().getPluginManager().registerEvents(new ArrayLists(), this);
        }
       
          @Override
        public void onDisable() {
            System.out.println("[Atypical]: " + getConfig().getString("Console.Out").replace(getConfig().getString("TchatColor.Symbol"), "§"));
           
        }
    
    }
    Both are in different package.

    Thanks a lot in advance for your piece of advice!
     
  2. Offline

    timtower Administrator Administrator Moderator

    Moved to plugin development.
    @Silverkan getConfig().getString("TchatColor.Enabled") == "true"
    Replace that with getBool please, now they will return false anyways.
    What error are you getting then? Please post it.
     
  3. Offline

    Kars

    You need to create an instance of your listener in Main and pass Main to that in the parameters.
    PHP:
    new JoinAndQuit(this);
    Also it is good practice to do the registerEvents part in the constructor for the listener.
     
    Silverkan likes this.
  4. Offline

    Silverkan

    Thanks @Kars for this advice, it works now.
     
Thread Status:
Not open for further replies.

Share This Page