[solved] Can't save plugin string list in config.

Discussion in 'Plugin Development' started by woutwoot, Jun 1, 2012.

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

    woutwoot

    I can't get my plugin to save the list of Strings. Please help me, I've been searching for hours.
    Main class:
    Code:
    package be.mc.woutwoot.NoobResponce;
     
     
    import org.bukkit.plugin.java.JavaPlugin;
     
    public class NoobResponce extends JavaPlugin{
       
        private NoobResponceCommandExecutor myExecutor;
        public PlayerChatListener pcls = new PlayerChatListener();
        public ConfigLoader cfgloader = new ConfigLoader();
       
        @Override
        public void onEnable(){
            myExecutor = new NoobResponceCommandExecutor();
            getCommand("nr").setExecutor(myExecutor);
            getServer().getPluginManager().registerEvents(pcls, this);
        }
       
        @Override
        public void onDisable(){
            this.saveConfig();
        }
       
    }
    
    CommandExecutor class:
    Code:
    package be.mc.woutwoot.NoobResponce;
     
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandExecutor;
    import org.bukkit.command.CommandSender;
     
    public class NoobResponceCommandExecutor implements CommandExecutor{
       
        public ConfigLoader config = new ConfigLoader();
       
        @Override
        public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
            if(command.getName().equalsIgnoreCase("nr")){
                if(args.length >= 3){
                    if(args[0].equals("add")){
                            //TODO add item
                            sender.sendMessage("The following responce has been added:");   
                            sender.sendMessage(args[2].replace("_", " ").toLowerCase());
                            sender.sendMessage("When a player types:");
                            sender.sendMessage(args[1].replace("_", " ").toLowerCase());
                            return true;
                    }   
                }else if(args.length == 2){
                    if(args[0].equals("rem")){
                        sender.sendMessage("The following item has been removed:");   
                        sender.sendMessage(args[1].replace("_", " "));
                        //TODO remove item
                        return true;
                    }
                } else if(args.length == 1){
                    if(args[0].equals("lst")){
                        sender.sendMessage("TODO:list");
                        //TODO Show all responses
                        return true;
                    }
                    if(args[0].equals("save")){
                        sender.sendMessage("fqifhqhfq");
                        //config.saveIt();
                        return true;
                    }
                }
                //TODO help text
                sender.sendMessage("TODO: DISPLAY HELP TEXT");
                return true;
                }       
            return true;
        }
    }
    
    Chatlistener:
    Code:
    package be.mc.woutwoot.NoobResponce;
     
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.List;
     
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.player.PlayerChatEvent;
    import org.bukkit.plugin.java.JavaPlugin;
     
    public class PlayerChatListener extends JavaPlugin implements Listener{
       
        public ResponceHandler resp = new ResponceHandler();
        public ConfigLoader cfgloader = new ConfigLoader();
        public List<String> list;
        @EventHandler
        public void onPlayerChat(PlayerChatEvent event)
        {
            Player p = event.getPlayer();
            String message = event.getMessage();
           
            list = new ArrayList<String>(Arrays.asList("can i get op:No!", "what is the website:Our website is mc.woutwoot.be", "woutwoot:Don't overask woutwoot, he has a lot to do!"));
            cfgloader.saveIt(list);
            resp.checkWithConfig(message, p, list);
            return;
        }
    }
    ResponceHandler class:
    Code:
    package be.mc.woutwoot.NoobResponce;
     
     
     
    import java.util.List;
     
    import org.bukkit.ChatColor;
    import org.bukkit.entity.Player;
    import org.bukkit.plugin.java.JavaPlugin;
     
    public class ResponceHandler extends JavaPlugin{
        public boolean checkWithConfig(String message, Player player, List<String> triggers){
            boolean result = false;
     
            for (int i = 0; i < triggers.size(); i++)
            {
                String currentMsg = triggers.get(i).toLowerCase();
                String[] parameters = currentMsg.split(":");
               
                if (message.toLowerCase().contains(parameters[0]))
                {
                    player.sendMessage(ChatColor.RED + parameters[1]);
                    result = true;
                }
            }
            return result;
        }
    }
    
    Configloader Class:
    Code:
    package be.mc.woutwoot.NoobResponce;
     
    import java.util.List;
     
    import org.bukkit.plugin.java.JavaPlugin;
     
     
    public class ConfigLoader extends JavaPlugin{
        public void saveIt(List<String> list){
            this.getConfig().set("messages", list);
            this.saveConfig();
        }
    }
    ERROR:
    Code:
    22:52:32 [SEVERE] Could not pass event PlayerChatEvent to NoobResponce
    org.bukkit.event.EventException
            at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.ja
    va:304)
            at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.jav
    a:62)
            at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.j
    ava:459)
            at net.minecraft.server.NetServerHandler.chat(NetServerHandler.java:786)
     
            at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:764)
            at net.minecraft.server.Packet3Chat.handle(Packet3Chat.java:34)
            at net.minecraft.server.NetworkManager.b(NetworkManager.java:229)
            at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:113)
            at net.minecraft.server.NetworkListenThread.a(NetworkListenThread.java:7
    8)
            at net.minecraft.server.MinecraftServer.w(MinecraftServer.java:567)
            at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:459)
            at net.minecraft.server.ThreadServerApplication.run(SourceFile:492)
    Caused by: java.lang.IllegalArgumentException: File cannot be null
            at org.apache.commons.lang.Validate.notNull(Validate.java:203)
            at org.bukkit.configuration.file.YamlConfiguration.loadConfiguration(Yam
    lConfiguration.java:169)
            at org.bukkit.plugin.java.JavaPlugin.reloadConfig(JavaPlugin.java:117)
            at org.bukkit.plugin.java.JavaPlugin.getConfig(JavaPlugin.java:111)
            at be.mc.woutwoot.NoobResponce.ConfigLoader.saveIt(ConfigLoader.java:10)
     
            at be.mc.woutwoot.NoobResponce.PlayerChatListener.onPlayerChat(PlayerCha
    tListener.java:25)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
            at java.lang.reflect.Method.invoke(Unknown Source)
            at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.ja
    va:302)
            ... 11 more
     
  2. Offline

    BobbyD441

    You extend a lot of classes to JavaPlugin, lets keep that only at the NoobResponse.. For the other classes create a constructor that looks like this
    Code:
    public class Example implements Listener{
       NoobResponse nr;
      public Example(NoobResponse nr)
      {
          this.nr = nr;
       }
    }
    Now you can use nr everywhere you need as the main plugin class =)
     
  3. Offline

    the_merciless

    Are you making a plugin that responds to ppls questions, i have made 1 which u can use if u like. Unless you want to continue for learning purposes?
     
  4. Offline

    -_Husky_-

    Please remove that embedded video, it takes up the whole screen so i cant see replies
     
  5. Offline

    woutwoot

    Yes, that's what I'm trying to make. But as you guessed, I'm just making it to learn plugin development, because I have another very good idea which doesn't exist yet. First I wanted to do something simple. But can someone plz find out why i can't save the config?

    WTF, I don't see any video?
     
  6. He wasn't referring to you. He was talking about the signature of BobbyD441.
    -_Husky_- : next time tag the people if you aren't referring to the thread creator.
     
  7. Offline

    woutwoot

    Thanks for helping, I'll just start over.
     
Thread Status:
Not open for further replies.

Share This Page