Inventory and config error

Discussion in 'Plugin Development' started by dominikremes, Oct 5, 2016.

Thread Status:
Not open for further replies.
  1. Hello everybody. It is again me. I am progressed with my plugin but now I have a problem with it. Now from some reason it do not want to write in config what it must. It let it empty. i send My full code. With the text in "" are in slovak language because I am doing this for a slovak server.
    Main:
    Code:
    package me.domi.test;
    
    import java.io.File;
    
    import org.bukkit.Bukkit;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Player;
    import org.bukkit.event.Listener;
    import org.bukkit.plugin.PluginManager;
    import org.bukkit.plugin.java.JavaPlugin;
    
    import me.domi.test.common.Files;
    
    public class Main extends JavaPlugin implements Listener {
      
        private Inv inventory;
        public Files clans;
        public Files config;
      
        public void onEnable() {
            config = new Files(getDataFolder(), "config");
            clans = new Files(new File(getDataFolder() + "/Data"), "clans");
          
            if (!config.fileExists()) {
                config.createFile();
                config.loadFile();
                config.saveFile();
            }
          
            if (!clans.fileExists()) {
                clans.createFile();
                clans.loadFile();
                config.saveFile();
            }
            inventory = new Inv(this);
            PluginManager pm = Bukkit.getServer().getPluginManager();
                pm.registerEvents(new Listeners(), this);
                pm.registerEvents(this, this);
        }
      
        public void onDisable() {
    
        }
      
        public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
            Player p = (Player) sender;
            if (cmd.getName().equalsIgnoreCase("test")) {
                inventory.show(p);
                return true;
            }
            return true;
          
        }
      
    }
    Files:
    Code:
    package me.domi.test.common;
    
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.util.List;
    
    import org.bukkit.configuration.InvalidConfigurationException;
    import org.bukkit.configuration.file.YamlConfiguration;
    
    public class Files {
      
        private File folder;
        private File file;
        private YamlConfiguration config;
    
        public Files(File folder, String filename) {
            this.folder = folder;
            this.file = new File(folder, filename + ".yml");
            this.config = new YamlConfiguration();
        }
      
        public Files(File folder, File file) {
            this.folder = folder;
            this.file = file;
            this.config = new YamlConfiguration();
        }
      
        public boolean createFile() {
            if (!folder.exists()) {
                folder.mkdirs();
            }
          
            if (!file.exists()) {
                try {
                    file.createNewFile();
                    return true;
                } catch (Exception e) {
                    e.printStackTrace();
                    return false;
                }
            } else {
                return false;
            }
        }
      
        public boolean fileExists() {
            if (file.exists()) {
                return true;
            } else {
                return false;
            }
        }
      
        public boolean loadFile() {
            try {
                config.load(file);
                return true;
            } catch (FileNotFoundException e) {
                createFile();
                e.printStackTrace();
                return false;
            } catch (IOException e) {
                createFile();
                e.printStackTrace();
                return false;
            } catch (InvalidConfigurationException e) {
                createFile();
                e.printStackTrace();
                return false;
            }
        }
      
        public boolean saveFile() {
          
            try {
                config.save(file);
                return true;
            } catch (IOException e) {
                System.out.println("ERROR Subor " + file.getName() + " sa neulozil. Nahlaste majitelovy!!!");
                return false;
            }
        }
      
        public void set(String path, Object value) {
            config.set(path, value);
        }
      
        public int getInt(String path) {
            return config.getInt(path);
        }
      
        public String getString(String path) {
            return config.getString(path);
        }
      
        public List<String> getStringList(String path) {
            return config.getStringList(path);
        }
      
        public List<Integer> getIntList(String path) {
            return config.getIntegerList(path);
        }
      
        public List<?> getList(String path) {
            return config.getList(path);
        }
      
        public boolean getBoolean(String path) {
            return config.getBoolean(path);
        }
    }
    Msg:
    Code:
    package me.domi.test.common;
    
    import org.bukkit.entity.Player;
    
    import net.md_5.bungee.api.ChatColor;
    
    public class Msg {
    
        public void sendRedMessage(Player p, String s) {
            p.sendMessage(ChatColor.RED + "[" + ChatColor.GOLD + "Klans" + ChatColor.RED + "]" + ChatColor.RED);
        }
      
        public void sendGoldsage(Player p, String s) {
            p.sendMessage(ChatColor.RED + "[" + ChatColor.GOLD + "Klans" + ChatColor.RED + "]" + ChatColor.GOLD);
    
        }
      
      
        public void sendAquaMessage(Player p, String s) {
            p.sendMessage(ChatColor.RED + "[" + ChatColor.GOLD + "Klans" + ChatColor.RED + "]" + ChatColor.AQUA);
        }
       
    }
    Listeners:
    Code:
    package me.domi.test;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.inventory.InventoryClickEvent;
    import org.bukkit.event.player.AsyncPlayerChatEvent;
    
    import me.domi.test.common.Msg;
    import net.md_5.bungee.api.ChatColor;
    
    public class Listeners implements Listener{
    
        public static List<String> klannaming = new ArrayList<>();
        public static List<String> klandisband = new ArrayList<>();
        public Main plugin;
       
        @EventHandler
        public void onInventoryClick(InventoryClickEvent e) {
            if (e.getInventory().getName().equalsIgnoreCase("Klan")) {
                if (e.getCurrentItem().getItemMeta().getDisplayName().contains("Vytvoriť")) {
                    e.setCancelled(true);
                    e.getWhoClicked().closeInventory();
                    Player p = (Player) e.getWhoClicked();
                klannaming.add(p.getName());
                p.sendMessage("Napis meno klanu");
    
    }
            } else if (e.getInventory().getName().equalsIgnoreCase("Tvôj Klan")) {
                if (e.getCurrentItem().getItemMeta().getDisplayName().contains("Rozpustiť")) {
                    e.setCancelled(true);
                    e.getWhoClicked().closeInventory();
                    Player p = (Player) e.getWhoClicked();
                klandisband.add(p.getName());
                p.sendMessage("Napis meno klanu");
                }
            }
        }
                @EventHandler
                    public void onKlanName(AsyncPlayerChatEvent e){
                    Msg msg = new Msg();
                    Player p = e.getPlayer();
                    if (klannaming.contains(p.getName())) {
                        e.setCancelled(true);
                        p.sendMessage(ChatColor.RED + "[" + ChatColor.GOLD + "Klans" + ChatColor.RED + "]" 
                    + ChatColor.GOLD + " Klán " + e.getMessage() + " bol úspešne vytvorený!");
                        klannaming.remove(p.getName());
                        plugin.clans.loadFile();
                        if (plugin.clans.getString(e.getMessage().toLowerCase() + ".owner") == null) {
                            new Clans(plugin).createClan(p.getName(), e.getMessage());
                           
                        }
                    } else {
                        return;
                    }
                    }
               
                @EventHandler
                public void onKlanDisband(AsyncPlayerChatEvent e){
                Msg msg = new Msg();
                Player p = e.getPlayer();
                if (klandisband.contains(p.getName())) {
                    e.setCancelled(true);
                    p.sendMessage(ChatColor.RED + "[" + ChatColor.GOLD + "Klans" + ChatColor.RED + "]" 
                + ChatColor.GOLD + " Klán " + e.getMessage() + " bol úspešne rozpusteny!");
                    klandisband.remove(p.getName());
                    plugin.clans.loadFile();
                    if (plugin.clans.getString(e.getMessage().toLowerCase() + ".owner") == null) {
                        new Clans(plugin).createClan(p.getName(), e.getMessage());
                       
                    } else {
                        msg.sendRedMessage(p, "Tento klan uz existuje!");
                    }
                } else {
                    return;
                }
                }
        }
    
    Inv (Inventory):
    Code:
    package me.domi.test;
    
    import java.util.Arrays;
    
    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    import org.bukkit.DyeColor;
    import org.bukkit.Material;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.inventory.InventoryClickEvent;
    import org.bukkit.event.player.AsyncPlayerChatEvent;
    import org.bukkit.inventory.Inventory;
    import org.bukkit.inventory.ItemStack;
    import org.bukkit.inventory.meta.ItemMeta;
    import org.bukkit.material.Wool;
    import org.bukkit.plugin.Plugin;
    
    public class Inv implements Listener {
    
        private Inventory Meghivasok;
        private Inventory InKlan;
        private Inventory Alap;
      
        public Main main;
        private ItemStack c, b, m, v, r;
      
           public Inv(Plugin p) {
                
                Alap = Bukkit.getServer().createInventory(null, 9, "Klan");
                 
                    c = createItem(DyeColor.GREEN, ChatColor.GREEN + "Vytvoriť");
                    b = createItem(DyeColor.GREEN, ChatColor.YELLOW + "Vstúpiť");
                    m = createItem(DyeColor.RED, ChatColor.RED + "Pozvánky");
                 
                    Alap.setItem(2, c);
                    Alap.setItem(4, b);
                    Alap.setItem(6, m);
                  
                    Meghivasok = Bukkit.getServer().createInventory(null, 54, "Pozvánky");
                  
                    v = createItem2(Material.BARRIER, ChatColor.YELLOW + "Späť");
                    r = createItem2(Material.BARRIER, ChatColor.DARK_RED + "Rozpustiť");
                 
                    Meghivasok.setItem(46, v);
                  
                    InKlan = Bukkit.getServer().createInventory(null, 54, "Tvôj Klan");
                  
                    Bukkit.getServer().getPluginManager().registerEvents(this, p);
            }
         
            private ItemStack createItem(DyeColor dc, String name) {
                    ItemStack i = new Wool(dc).toItemStack(1);
                    ItemMeta im = i.getItemMeta();
                    im.setDisplayName(name);
                    im.setLore(Arrays.asList(""));
                    i.setItemMeta(im);
                    return i;
            }
          
            private ItemStack createItem2(Material mat, String name) {
                ItemStack i = new ItemStack(mat);
                ItemMeta im = i.getItemMeta();
                im.setDisplayName(name);
                im.setLore(Arrays.asList(""));
                i.setItemMeta(im);
                i.setAmount(1);
                return i;
        }
          
            public void show(Player player) {
                player.openInventory(Alap);
        }
    }
    and Clans:
    Code:
    package me.domi.test;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import org.bukkit.entity.Player;
    
    import me.domi.test.common.Msg;
    
    public class Clans {
    
        public Main plugin;
      
        public Clans(Main plugin) {
            this.plugin = plugin;
        }
      
        public void createClan(String player, String name) {
            List<String> members = new ArrayList<String>();
            members.add(player);
            plugin.clans.loadFile();
            plugin.clans.set(name.toLowerCase() + ".owner", player);
            plugin.clans.set(name.toLowerCase() + ".name", name);
            plugin.clans.set(name.toLowerCase() + ".members", members);
            plugin.clans.saveFile();
        }
      
        public void disbandClan(String player, String name) {
          
            plugin.clans.loadFile();
            if (plugin.clans.getString(name.toLowerCase() + ".owner").equals(player)) {
                plugin.clans.set(name.toLowerCase(), null);
                plugin.clans.saveFile();
            } else {
                Player p = plugin.getServer().getPlayer(player);
                    new Msg().sendRedMessage(p, "Nie si velitel tohto klanu, takže nemôžes rozpustiť!");
            }
          
        }
    }
    Error:

    Code:
    >pl
    [13:59:58 INFO]: Plugins (1): MC_Craft_Test
    [14:00:07 INFO]: UUID of player dominikremes is 8bc27b14-3a65-39c6-98e7-4de248973d0d
    [14:00:08 INFO]: dominikremes[/127.0.0.1:63275] logged in with entity id 219 at ([world]-79.70565631163656, 103.0, 259.63856184056215)
    [14:00:15 INFO]: dominikremes issued server command: /test
    [14:00:30 ERROR]: Could not pass event AsyncPlayerChatEvent to MC_Craft_Test v1.0
    org.bukkit.event.EventException
            at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:310) ~[spigot.jar:git-Spigot-e000104-4cb3258]
            at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[spigot.jar:git-Spigot-e000104-4cb3258]
            at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:502) [spigot.jar:git-Spigot-e000104-4cb3258]
            at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:484) [spigot.jar:git-Spigot-e000104-4cb3258]
            at net.minecraft.server.v1_9_R1.PlayerConnection.chat(PlayerConnection.java:1272) [spigot.jar:git-Spigot-e000104-4cb3258]
            at net.minecraft.server.v1_9_R1.PlayerConnection.a(PlayerConnection.java:1210) [spigot.jar:git-Spigot-e000104-4cb3258]
            at net.minecraft.server.v1_9_R1.PacketPlayInChat$1.run(PacketPlayInChat.java:39) [spigot.jar:git-Spigot-e000104-4cb3258]
            at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_101]
            at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_101]
            at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [?:1.8.0_101]
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [?:1.8.0_101]
            at java.lang.Thread.run(Unknown Source) [?:1.8.0_101]
    Caused by: java.lang.NullPointerException
            at me.domi.test.Listeners.onKlanName(Listeners.java:51) ~[?:?]
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_101]
            at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_101]
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_101]
            at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_101]
            at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:306) ~[spigot.jar:git-Spigot-e000104-4cb3258]
    Thanks for Help
     
    Last edited: Oct 7, 2016
  2. Offline

    timtower Administrator Administrator Moderator

    @dominikremes And what do you want it to write in the config then?
    Did you try to debug to see if the code is even running?
     
  3. I want to write there who is in witch clan and witch "rank" is the player. If owner than member + owner if just member then member and later there will be smething bigger then member and smaller then owner and that will be member + everithing wha is smaller than he

    And the error is in line 51 in class Listeners

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Oct 6, 2016
  4. @dominikremes
    Well, you posted the Msg class twice instead of the Listeners class, so it's hard to say what's wrong. Also, show us the full stacktrace of the error.
     
  5. @AlvinB
    Ok sorry I corrected it and there is the error too :)
     
  6. Offline

    Zombie_Striker

    @dominikremes
    If you have an error, post it. Else if your problem has been solved, mark this thread as solved.
     
  7. @Zombie_Striker
    But my error is not sloved I corrected something in post, because I post class msg 2 times and listeners 0 times
     
Thread Status:
Not open for further replies.

Share This Page