Config not saving anything anymore

Discussion in 'Plugin Development' started by Adrian Pasternak, Sep 10, 2016.

Thread Status:
Not open for further replies.
  1. Hi!
    My config is no longer saving anything, it used to be working just fine but now it isn't. I am getting NPE's on basically everything that involves a config. Thanks
    Code:
    package me.Adrian.Referal;
    
    import java.io.File;
    import java.util.HashMap;
    import java.util.logging.Logger;
    
    import org.bukkit.Bukkit;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandSender;
    import org.bukkit.configuration.ConfigurationSection;
    import org.bukkit.configuration.file.YamlConfiguration;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.player.PlayerJoinEvent;
    import org.bukkit.plugin.RegisteredServiceProvider;
    import org.bukkit.plugin.java.JavaPlugin;
    
    import net.milkbowl.vault.economy.Economy;
    import net.milkbowl.vault.economy.EconomyResponse;
    
    public class Referal extends JavaPlugin implements Listener{
       
        public static Economy econ = null;
        public Logger log = Logger.getLogger("myLogger"); 
        YamlConfiguration config;
        ConfigurationSection config_tags; 
       
        public static HashMap<String, Integer> referrals = new HashMap<String, Integer>(); 
    
    
       
        // loading a config
        public void loadConfig(){
            if(!(new File(getDataFolder(), "config.yml").exists())){
               
                this.saveDefaultConfig();
                }
           
               
            this.config.getConfigurationSection("refers").getKeys(true);
            for(String p : this.config_tags.getKeys(false)){
                referrals.put(p, this.config_tags.getInt(p)); 
               
            }
           
           
            }
       
        public void onEnable(){
            for(Player p : Bukkit.getServer().getOnlinePlayers()){
                if(!config.contains(p.getName().toLowerCase())){
    
                config.createSection("refers." + p.getPlayer().getName().toLowerCase());
                saveConfig();
            }
        }
    
    
            Bukkit.getPluginManager().registerEvents(this, this);
            if (!setupEconomy() ) {
                log.severe(String.format("[%s] - Disabled due to no Vault dependency found!", getDescription().getName()));
                getServer().getPluginManager().disablePlugin(this);
                return;
            }
            config = (YamlConfiguration) getConfig(); 
            this.loadConfig(); 
            this.saveDefaultConfig();
            }
       
        public void onDisable(){
    
            this.saveConfig();
           
           
           
        }
        private boolean setupEconomy() {
            if (getServer().getPluginManager().getPlugin("Vault") == null) {
                return false;
            }
            RegisteredServiceProvider<Economy> rsp = getServer().getServicesManager().getRegistration(Economy.class);
            if (rsp == null) {
                return false;
            }
            econ = rsp.getProvider();
            return econ != null;
        }
        public String prefix = "§8[§cReferralsPlus§8]§7 ";
        @Override
        public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
    
            if(!(sender instanceof Player)){
                sender.sendMessage(prefix + "You must be a player! ");
                return true; 
               
            }
            // This command adds +1 referral to the target player
            if(cmd.getName().equalsIgnoreCase("refer") && sender.hasPermission("refer.use")){
                if(!sender.hasPermission("refer.use")){
                    sender.sendMessage(prefix + "I'm sorry, but you do not have permission to do this!");
                }
                if(args.length == 0){
                    sender.sendMessage(" ");
                    sender.sendMessage(prefix + "Referrals v1.0 was developed by PumpMelon");
                    sender.sendMessage(prefix + "/refer <player> ");
                    sender.sendMessage(prefix + "/refersee <player>");
    
                    if(sender.hasPermission("refer.admin")){
                        sender.sendMessage(prefix + "/referload"); 
                        sender.sendMessage(prefix + "/referbypass <player>");
                        return true; 
                    }
                    sender.sendMessage(" ");
                    return true;
                }
                else if(args.length > 1){
                    sender.sendMessage(prefix + "Too many arguements! /refer to check usage.");
                    return true;
                   
                }
                else if(args.length == 1){
                    @SuppressWarnings("deprecation")
                    Player player = Bukkit.getPlayer(args[0]);
    
                    // Checks if they already have referred someone
                if(config.getString("never." + sender.getName().toLowerCase()) != null){
                    sender.sendMessage(prefix + "You have already referred someone!");
                    return true; 
                }
                        // Checks if they try to refer themselves
                    if(player.getName() == sender.getName()){
                        sender.sendMessage(prefix + "You cannot refer yourself!");
                        return true; 
                       
                    }
                    //Checks if target is null
                    else if(player.getName() == null){
                        sender.sendMessage(prefix + "That player is offline or not a player!");
                        return true; 
                    }
                    String neverpath = "never." + sender.getName().toLowerCase(); 
                    String path = "refers." + player.getName().toLowerCase(); 
                    if(config.getString(path) != null){
                        int refers = config.getInt(path); 
                            config.set("refers." + player.getName().toLowerCase(), refers + 1);
                            saveConfig();
                    }
                    sender.sendMessage(prefix + "You have sent a referal for " + player.getDisplayName());
                    this.config.set("never." + sender.getName().toLowerCase(), neverpath);
                    saveConfig();
                    Player p = (Player) sender; 
                    String econpath = "econ-rewards." + true;
                    if(config.getBoolean(econpath) ==  true){
                    EconomyResponse r = econ.depositPlayer(player, config.getInt("reciever-amount"));
                    EconomyResponse r2 = econ.depositPlayer(p, config.getInt("sender-amount"));
                    if(r.transactionSuccess()){
                        player.sendMessage(prefix + sender.getName() + " referred you, therefore you get " + config.getInt("reciever-amount"));
                    }
                    if(r2.transactionSuccess()){
                        sender.sendMessage(prefix + "You referred " + player.getName() + " earning you " + config.getInt("sender-amount"));
                    }
    
                }
                    return true; 
               
                   
                }
               
            }
           
           
           
            // Refer bypass command
            if(cmd.getName().equalsIgnoreCase("refer.bypass") && sender.hasPermission("refer.bypass")){
                @SuppressWarnings("deprecation")
                Player target = Bukkit.getPlayer(args[0]);
                String neverpath = "never." + target.getName().toLowerCase(); 
               
                       
                    if(config.contains(neverpath)){
                        config.set(neverpath, null);  
                        reloadConfig();
                        saveConfig();
                        sender.sendMessage(prefix + target.getName() +  " may now send another referral!");
                   
                   
                    return false; 
                    }
                    else if(args.length < 0 || args.length > 0){
                        sender.sendMessage(prefix + "Incorrect arguements! Please see /refer for usage.");
                       
                        return true;
                        }
                    else if(target.getName() == null){
                        sender.sendMessage(prefix + "That player is offline or not a player!");
                        return true; 
                    }
                    else if(!config.contains(neverpath)){
                        sender.sendMessage(prefix + target + " has never referred someone before!");
                        return true; 
                    }
            }
           
       
       
       
       
       
            // this command checks to see how many referrals target player has
            if(cmd.getName().equalsIgnoreCase("refersee")&& sender.hasPermission("refer.see")){
                if(!sender.hasPermission("refer.see")){
                    sender.sendMessage(prefix + "I'm sorry, but you do not have permission to do this!");
                }
                if(args.length > 1 || args.length < 1){
                    sender.sendMessage(prefix + "Incorrect arguements! Please do /refer to see the menu.");
                    return true; 
                }
                if(args.length == 1){
                    @SuppressWarnings("deprecation")
                    Player player = Bukkit.getPlayer(args[0]);
                    if(player == null){
                        sender.sendMessage(prefix + "The player, " + args[0] + "is offline or not a player!");
                        return true; 
                    }
    
                    if(!config.contains("refers." + player.getName().toLowerCase())){
                    }
                    int total = config.getInt("refers." + player.getName().toLowerCase());
                    sender.sendMessage(prefix + player.getDisplayName() + " §7has " + "§c" + total + "§7 referrals!");
                    return true; 
    
                }
               
            }
            if(cmd.getName().equalsIgnoreCase("referload")&& sender.hasPermission("refer.admin")){
                if(!sender.hasPermission("refer.admin")){
                    sender.sendMessage(prefix + "I'm sorry, but you do not have permission to do this!");
                }
                this.reloadConfig();
                saveConfig();
                sender.sendMessage(prefix + "Referrals v1.0 has been reloaded!");
            }
           
           
            return false;
       
            }
       
        @EventHandler
        public void onPlayerJoin(PlayerJoinEvent e){
            // Adds player to config
            if(!config.contains(e.getPlayer().getName().toLowerCase())){
                config.createSection("refers." + e.getPlayer().getName().toLowerCase());
                saveConfig();
            }
           
        }
       
    
    }
    
    
     
  2. Offline

    Zombie_Striker

    @Adrian Pasternak
    You are not setting the config. Look what config is equal to. You never set it to anyhting, so the config is null. Before doing anything to the config, set config equal to getConfig in the onEnable.
     
  3. Offline

    kameronn

    fileconfiguration.save(file)

    then try and catch
     
  4. I did set the config
    Code:
    config = (YamlConfiguration) getConfig();
    
     
  5. Offline

    Zombie_Striker

    @Adrian Pasternak
    But that is not in the onEnable. The onEnable references the config, so you need to set the config inside the onEnable.
     
  6. Offline

    JanTuck

    Just saying consider, using uuid instead og playername :)

    Sent from Tapatalk
     
  7. I did this as well,
    Code:
    public void onEnable(){
            for(Player p : Bukkit.getServer().getOnlinePlayers()){
                if(!config.contains(p.getName().toLowerCase())){
    
                config.createSection("refers." + p.getPlayer().getName().toLowerCase());
                saveConfig();
            }
        }
    
    
            Bukkit.getPluginManager().registerEvents(this, this);
            if (!setupEconomy() ) {
                log.severe(String.format("[%s] - Disabled due to no Vault dependency found!", getDescription().getName()));
                getServer().getPluginManager().disablePlugin(this);
                return;
            }
            config = (YamlConfiguration) getConfig(); 
            this.loadConfig(); 
            this.saveDefaultConfig();
            }
    
    That is my entire onEnable,
     
  8. Offline

    Zombie_Striker

    You are referencing the config two lines into the onEnable. That means the config has to be set before this line. To fix this, either:
    • Add "config=getConfig()" directly under the onEnable.
    • change "YamlConfiguration config;" to "YamlConfiguration config = getConfig();"
     
Thread Status:
Not open for further replies.

Share This Page