Config list

Discussion in 'Plugin Development' started by AlbkadDev, Jan 5, 2018.

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

    AlbkadDev

    So Ye. I am trying to give a fine each time someone uses a bad word.

    Code:
    @EventHandler
        public void onPlayerChat(AsyncPlayerChatEvent e) {
        
            for (String words : e.getMessage().split(" ")) {
                if (f.getConfig().getStringList("badwords").contains(words)) {
                    e.setCancelled(true);
                    f.setFine(4, e.getPlayer());
                    e.getPlayer().sendMessage(ChatColor.DARK_RED + "You just got a fine of 4$ for using a bad word in chat!");
                }
            }
        
        }
    This is how I put in the list in config
    Code:
    badwords:
      - hello
      - jolly
    But it gives me a nullpointer error at this line
    Code:
    if (f.getConfig().getStringList("badwords").contains(words)) {
    And this is how it looks in the config that the server creates.
    Code:
    badwords:
    - hello
    - jolly
    

    This is the error https://gyazo.com/85caa2ddf154ec86ea94536d0ffe9719
    [​IMG]
     
  2. Online

    timtower Administrator Administrator Moderator

  3. Offline

    AlbkadDev

    @timtower well the only more code in this class is
    Code:
    Fines f = Fines.getInstance();
     
  4. Online

    timtower Administrator Administrator Moderator

    @AlbkadDev Full class please, and based on that: also the main class please.
     
  5. Offline

    AlbkadDev

    @timtower
    Code:
    package me.albkad.life;
    
    import org.bukkit.ChatColor;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.player.AsyncPlayerChatEvent;
    import org.bukkit.event.player.PlayerJoinEvent;
    
    
    public class EventListener implements Listener {
       
        Fines f = Fines.getInstance();
       
        @EventHandler
        public void onPlayerChat(AsyncPlayerChatEvent e) {
           
            for (String words : e.getMessage().split(" ")) {
                if (f.getConfig().getStringList("badwords").contains(words)) {
                    e.setCancelled(true);
                    f.setFine(4, e.getPlayer());
                    e.getPlayer().sendMessage(ChatColor.DARK_RED + "You just got a fine of 4$ for using a bad word in chat!");
                }
            }
           
        }
       
       
       
    }
    
    This is the only code in main class that is relevant
    Code:
    package me.albkad.life;
    
    import java.util.UUID;
    
    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Player;
    import org.bukkit.plugin.RegisteredServiceProvider;
    import org.bukkit.plugin.java.JavaPlugin;
    
    import com.google.common.primitives.Ints;
    
    import net.milkbowl.vault.economy.Economy;
    
    public class Main extends JavaPlugin {
       
        public static Economy econ = null;
        Fines m = Fines.getInstance();
       
        public void onEnable() {
            m.setup(this);
            Bukkit.getServer().getPluginManager().registerEvents(new EventListener(), this);
            if (!setupEconomy() ) {
                getLogger().severe(String.format("[%s] - Disabled due to no Vault dependency found!", getDescription().getName()));
                getServer().getPluginManager().disablePlugin(this);
                return;
            }
           
        //    for (int i = 0; i < m.getConfig().getStringList(m.getConfig().getString("Fines.")).size(); i++) {
        //        Bukkit.getServer().broadcastMessage("This is working");
        //        m.fine.put(Bukkit.getServer().getPlayer(m.getConfig().getStringList(m.getConfig().getString("Fines.")).get(i)).getUniqueId(), m.getConfig().getInt(Bukkit.getServer().getPlayer(m.getConfig().getStringList(m.getConfig().getString("Fines.")).get(i)).getUniqueId().toString()));
               
        //    }
            if (!(getConfig().getConfigurationSection("Fines") == null)) {
                for(String key: getConfig().getConfigurationSection("Fines").getKeys(false)) {
                      int value = getConfig().getInt("Fines." + key);
                      m.fine.put(UUID.fromString(key), value);
                    }
            }
           
        }
    And this is the only relevant part in the Fines/SettingsManager class
    Code:
    package me.albkad.life;
    
    import java.io.File;
    import java.io.IOException;
    import java.util.HashMap;
    import java.util.UUID;
    
    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    import org.bukkit.configuration.file.FileConfiguration;
    import org.bukkit.configuration.file.YamlConfiguration;
    import org.bukkit.entity.Player;
    import org.bukkit.plugin.Plugin;
    import org.bukkit.plugin.PluginDescriptionFile;
    
    
    import net.milkbowl.vault.economy.EconomyResponse;
    
    public class Fines {
       
        private Fines() {}
       
        Main plugin;
       
        Plugin p;
        FileConfiguration config;
        File cfile;
       
        public void setup(Plugin p) {
            config = p.getConfig();
            config.options().copyDefaults(true);
            cfile = new File(p.getDataFolder(), "config.yml");
            saveConfig();
        }
       
        public FileConfiguration getConfig() {
            return config;
        }
       
        public void saveConfig() {
            try {
                config.save(cfile);
            }
            catch (IOException e) {
                Bukkit.getServer().getLogger().severe(ChatColor.RED + "Could not save config.yml!");
            }
        }
       
        public void reloadConfig() {
            config = YamlConfiguration.loadConfiguration(cfile);
        }
       
        public PluginDescriptionFile getDesc() {
            return p.getDescription();
        }
       
        HashMap<UUID, Integer> fine = new HashMap<UUID, Integer>();
       
       
        public Fines(Main instance) {
            plugin = instance;
        }
       
       
        public static Fines getInstance() {
            return new Fines();
        }
     
Thread Status:
Not open for further replies.

Share This Page