Console error: Code: [15:12:08] [Server thread/INFO]: stazek issued server command: /setupquest [15:12:08] [Server thread/ERROR]: null org.bukkit.command.CommandException: Unhandled exception executing command 'setupquest' in plugin RPGPlugin v1.0 at org.bukkit.command.PluginCommand.execute(PluginCommand.java:47) ~[server.jar:git-Spigot-2040c4c-a1a705e] at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:149) ~[server.jar:git-Spigot-2040c4c-a1a705e] at org.bukkit.craftbukkit.v1_15_R1.CraftServer.dispatchCommand(CraftServer.java:723) ~[server.jar:git-Spigot-2040c4c-a1a705e] at net.minecraft.server.v1_15_R1.PlayerConnection.handleCommand(PlayerConnection.java:1658) ~[server.jar:git-Spigot-2040c4c-a1a705e] at net.minecraft.server.v1_15_R1.PlayerConnection.a(PlayerConnection.java:1498) ~[server.jar:git-Spigot-2040c4c-a1a705e] at net.minecraft.server.v1_15_R1.PacketPlayInChat.a(PacketPlayInChat.java:47) ~[server.jar:git-Spigot-2040c4c-a1a705e] at net.minecraft.server.v1_15_R1.PacketPlayInChat.a(PacketPlayInChat.java:1) ~[server.jar:git-Spigot-2040c4c-a1a705e] at net.minecraft.server.v1_15_R1.PlayerConnectionUtils.lambda$0(PlayerConnectionUtils.java:19) ~[server.jar:git-Spigot-2040c4c-a1a705e] at net.minecraft.server.v1_15_R1.TickTask.run(SourceFile:18) [server.jar:git-Spigot-2040c4c-a1a705e] at net.minecraft.server.v1_15_R1.IAsyncTaskHandler.executeTask(SourceFile:144) [server.jar:git-Spigot-2040c4c-a1a705e] at net.minecraft.server.v1_15_R1.IAsyncTaskHandlerReentrant.executeTask(SourceFile:23) [server.jar:git-Spigot-2040c4c-a1a705e] at net.minecraft.server.v1_15_R1.IAsyncTaskHandler.executeNext(SourceFile:118) [server.jar:git-Spigot-2040c4c-a1a705e] at net.minecraft.server.v1_15_R1.MinecraftServer.ba(MinecraftServer.java:918) [server.jar:git-Spigot-2040c4c-a1a705e] at net.minecraft.server.v1_15_R1.MinecraftServer.executeNext(MinecraftServer.java:911) [server.jar:git-Spigot-2040c4c-a1a705e] at net.minecraft.server.v1_15_R1.IAsyncTaskHandler.awaitTasks(SourceFile:127) [server.jar:git-Spigot-2040c4c-a1a705e] at net.minecraft.server.v1_15_R1.MinecraftServer.sleepForTick(MinecraftServer.java:895) [server.jar:git-Spigot-2040c4c-a1a705e] at net.minecraft.server.v1_15_R1.MinecraftServer.run(MinecraftServer.java:828) [server.jar:git-Spigot-2040c4c-a1a705e] at java.lang.Thread.run(Thread.java:748) [?:1.8.0_141] Caused by: java.lang.NullPointerException at me.stazek.poradnik.PoradnikJava.QUEST1(PoradnikJava.java:219) ~[?:?] at me.stazek.poradnik.PoradnikJava.onCommand(PoradnikJava.java:59) ~[?:?] at org.bukkit.command.PluginCommand.execute(PluginCommand.java:45) ~[server.jar:git-Spigot-2040c4c-a1a705e] ... 17 more And my code: Code:java package me.stazek.poradnik; import org.bukkit.Bukkit;import org.bukkit.ChatColor;import org.bukkit.Material;import org.bukkit.command.Command;import org.bukkit.command.CommandSender;import org.bukkit.enchantments.Enchantment;import org.bukkit.entity.Player;import org.bukkit.event.Listener;import org.bukkit.event.entity.EntityDeathEvent;import org.bukkit.inventory.Inventory;import org.bukkit.inventory.ItemStack;import org.bukkit.inventory.meta.ItemMeta;import org.bukkit.plugin.java.JavaPlugin;import org.jetbrains.annotations.NotNull;import org.json.simple.JSONObject;import org.json.simple.parser.JSONParser; import java.io.File;import java.io.FileReader;import java.io.FileWriter;import java.util.ArrayList; public class PoradnikJava extends JavaPlugin implements Listener{public String pluginFolder = getDataFolder().getAbsolutePath();ArrayList<String> zbr1lore = new ArrayList<>();@Overridepublic void onEnable() {Bukkit.getServer().getPluginManager().registerEvents(this,this);} public boolean onCommand(@NotNull CommandSender sender,@NotNull Command cmd,@NotNull String alias,@NotNull String[] args) {if(alias.equals("kpzbrj")) {if (args[0].equalsIgnoreCase("1")) {KupZbr1((Player)sender);}if (args[0].equalsIgnoreCase("2")) {KupZbr2((Player)sender);}if (args[0].equalsIgnoreCase("3")) {KupZbr3((Player)sender);}if (args[0].equalsIgnoreCase("4")) {KupZbr4((Player)sender);//MainHand x = ((Player) sender).getMainHand(); //ItemStack y = new ItemStack(Material.DIAMOND_AXE); //if(x.equals(y)){}}if (args[0].equalsIgnoreCase("5")) {KupZbr5((Player)sender);}}if(alias.equalsIgnoreCase("q1vp")){QUEST1(((Player) sender));}if(alias.equalsIgnoreCase("setupquest")){writeJSON("JONATAN", sender.getName(), "JONATANENDED", "N");writeJSON("JONATAN", sender.getName(), "JONATANSTARTED", "N");QUEST1((Player) sender); }return true;}public void KupZbr1(Player player){player.closeInventory();ItemStack zbr1 = new ItemStack(Material.LEATHER_CHESTPLATE);Inventory gui = Bukkit.createInventory(null, 9, ChatColor.GOLD + "Wez swoja zbroje wojowniku :)");//Zbroja pierwszaItemMeta zbr1Meta = zbr1.getItemMeta();zbr1Meta.setLore(null);zbr1Meta.setDisplayName(null);zbr1lore.add(ChatColor.DARK_BLUE + "Chyba nie myslales ze bedziesz biegal nago.");zbr1Meta.setDisplayName("SKORZANA TUNIKA ");zbr1Meta.setLore(zbr1lore);zbr1Meta.addEnchant(Enchantment.PROTECTION_ENVIRONMENTAL, 1, true);zbr1Meta.isUnbreakable();zbr1.setItemMeta(zbr1Meta);gui.setItem(4, zbr1);player.openInventory(gui); } public void KupZbr2(Player player){//if(player.getInventory().getHelmet().getItemMeta().getDisplayName()==""){}player.closeInventory();ItemStack zbr1 = new ItemStack(Material.LEATHER_CHESTPLATE);Inventory gui = Bukkit.createInventory(null, 9, ChatColor.GOLD + "Wez swoja zbroje wojowniku :)");//Zbroja pierwszaItemMeta zbr1Meta = zbr1.getItemMeta();zbr1Meta.setLore(null);zbr1Meta.setDisplayName(null);zbr1lore.add(ChatColor.DARK_BLUE + "Teraz jestes juz jak");zbr1lore.add(ChatColor.DARK_BLUE + "najbardziej gotowy na starcie z potworami.");zbr1Meta.setDisplayName("MOCNA ZBROJA ZE SKORY");zbr1Meta.addEnchant(Enchantment.PROTECTION_ENVIRONMENTAL, 2, true);zbr1Meta.isUnbreakable();zbr1Meta.setLore(zbr1lore);zbr1.setItemMeta(zbr1Meta);gui.setItem(4, zbr1);player.openInventory(gui); } public void KupZbr3(Player player){player.closeInventory();ItemStack zbr1 = new ItemStack(Material.GOLD_CHESTPLATE);Inventory gui = Bukkit.createInventory(null, 9, ChatColor.GOLD + "Wez swoja zbroje wojowniku :)");//Zbroja pierwszaItemMeta zbr1Meta = zbr1.getItemMeta();zbr1Meta.setLore(null);zbr1Meta.setDisplayName(null);zbr1lore.add(ChatColor.DARK_BLUE + "Persiwald byl jednym z pierwszych");zbr1lore.add(ChatColor.DARK_BLUE + "ktorzy odwazyli sie eksplorowac expowiska.");zbr1Meta.setDisplayName("NIEDOCENIONA ZBROJA PERSIWALDA");zbr1Meta.setLore(zbr1lore);zbr1Meta.addEnchant(Enchantment.PROTECTION_ENVIRONMENTAL, 3, true);zbr1Meta.isUnbreakable();zbr1Meta.setLore(zbr1lore);zbr1.setItemMeta(zbr1Meta);gui.setItem(4, zbr1);player.openInventory(gui); }public void KupZbr4(Player player){player.closeInventory();ItemStack zbr1 = new ItemStack(Material.GOLD_CHESTPLATE);Inventory gui = Bukkit.createInventory(null, 9, ChatColor.GOLD + "Wez swoja zbroje wojowniku :)");//Zbroja pierwszaItemMeta zbr1Meta = zbr1.getItemMeta();zbr1Meta.setLore(null);zbr1Meta.setDisplayName(null);zbr1lore.add(ChatColor.DARK_BLUE + "Handlarz plakal jak sprzedawal.");zbr1Meta.setDisplayName("LEPSZA ZLOTA ZBROJA");zbr1Meta.addEnchant(Enchantment.PROTECTION_ENVIRONMENTAL, 4, true);zbr1Meta.isUnbreakable();zbr1Meta.setLore(zbr1lore);zbr1.setItemMeta(zbr1Meta);gui.setItem(4, zbr1);player.openInventory(gui); }public void KupZbr5(Player player){player.closeInventory();ItemStack zbr1 = new ItemStack(Material.IRON_CHESTPLATE);Inventory gui = Bukkit.createInventory(null, 9, ChatColor.GOLD + "Wez swoja zbroje wojowniku :)");//Zbroja pierwszaItemMeta zbr1Meta = zbr1.getItemMeta();zbr1Meta.setLore(null);zbr1Meta.setDisplayName(null);zbr1lore.add(ChatColor.DARK_BLUE + "W takich zbrojach");zbr1lore.add(ChatColor.DARK_BLUE+" wystepowali zolnierze broniacy");zbr1lore.add(ChatColor.DARK_BLUE+"wolnych krain przed pustka...");zbr1lore.add(ChatColor.DARK_BLUE+" to zaszczyt nosic jedna z nich.");zbr1Meta.setDisplayName("DUMA RYCERSKOSCI");zbr1Meta.isUnbreakable();zbr1Meta.addEnchant(Enchantment.PROTECTION_ENVIRONMENTAL, 5, true);zbr1Meta.setLore(zbr1lore);zbr1.setItemMeta(zbr1Meta);gui.setItem(4, zbr1);player.openInventory(gui); }public void writeJSON(String fileName, String subPath, String object, String value) {JSONObject main = new JSONObject(); main.put(object, value); try {File file = new File(pluginFolder + File.separator + subPath + fileName + ".json");File filePath = new File(pluginFolder + File.separator + subPath);filePath.mkdirs();if (!file.exists()) {file.createNewFile();}FileWriter fileWriter = new FileWriter(file);fileWriter.write(main.toJSONString());fileWriter.flush();fileWriter.close();} catch (Exception e) {}}public String readJSON(String fileName, String subPath, String object) {String var = null;try {JSONParser parser = new JSONParser(); File file = new File(pluginFolder + File.separator + subPath + fileName + ".json");Object obj = parser.parse(new FileReader(file)); JSONObject jsonObject = (JSONObject) obj; var = (String) jsonObject.get(object); } catch (Exception e) {}return var;} public void MobDied(EntityDeathEvent e){if(e.getEntity().getKiller() instanceof Player){if(readJSON("JONATAN",e.getEntity().getName(),"JONATANSTARTED") == "T"){int x = Integer.parseInt(readJSON("JONTAN",e.getEntity().getName(),"MOBSKILLED"));int y = x+1;writeJSON("JONATAN",e.getEntity().getName(),"MOBSKILLED",Integer.toString(y));if(Integer.parseInt(readJSON("JONATAN",e.getEntity().getName(),"MOBSKILLED")) == 150){writeJSON("JONATAN",e.getEntity().getName(),"JONATANENDEN","T");e.getEntity().sendMessage(ChatColor.GOLD+"ZABILES 150 POTWOROW - WROC DO JONATANA");}}}}public void QUEST1(@NotNull Player player){if (readJSON("JONATAN",player.getName(),"JONATANSTARTED").equalsIgnoreCase("N")){player.sendMessage( ChatColor.GOLD + "[Ty]" +ChatColor.YELLOW +" Witaj, podobno szukasz osob chetnych do wziecia udzialu w twojej ekspedycji. Chcialbym do niej dolaczyc.");player.sendMessage(ChatColor.GOLD + "[Jonatan] "+ ChatColor.YELLOW + "Ciesze sie, jednak to niebezpieczna misja. Będziesz musial udowodnic swoja siłe na placu boju. Pozwole ci wstapic do mojej druzyny, po tym jak zabijesz 150 potworów.");player.sendMessage(ChatColor.GOLD + "[Ty] "+ChatColor.YELLOW + "Rozumiem wroce do ciebie niebawem.");player.sendMessage(ChatColor.DARK_RED + "Porada: aby pojawić się w lokacji w której wykonywać będziesz zlecenie Jonatana, kliknij na jego postać prawym przyciskiem myszy (jeśli zdecydujesz się wrócić na spawn, zawsze możesz teleportować się ponownie na lokacje potrzebną do wykonania tego zadania. Osiągniesz to klikając prawym przyciskiem myszy na postać Jonatana. Analogicznie działa teleportowanie do wszystkich lokacji związanych z questami).");writeJSON("JONATAN", player.getName(), "JONATANSTARTED", "T");writeJSON("JONATAN",player.getName(),"MOBSKILLED","0");}if (readJSON("JONATAN",player.getName(),"JONATANSTARTED").equalsIgnoreCase("T") && readJSON("JONATAN",player.getName(),"JONATANENDED") == "N"){Bukkit.getServer().dispatchCommand(getServer().getConsoleSender(), "/tp " + player.getName() + " 1 1 1");}}} What should i change?
@stazek Your error is on line 219, your code does not have that line... Is the posted code the same code as is in the server?
On line 219 is "{". Code: public void QUEST1(@NotNull Player player){ if (readJSON("JONATAN",player.getName(),"JONATANSTARTED").equalsIgnoreCase("N")){ player.sendMessage( ChatColor.GOLD + "[Ty]" +ChatColor.YELLOW +" Witaj, podobno szukasz osob chetnych do wziecia udzialu w twojej ekspedycji. Chcialbym do niej dolaczyc."); player.sendMessage(ChatColor.GOLD + "[Jonatan] "+ ChatColor.YELLOW + "Ciesze sie, jednak to niebezpieczna misja. Będziesz musial udowodnic swoja siłe na placu boju. Pozwole ci wstapic do mojej druzyny, po tym jak zabijesz 150 potworów."); player.sendMessage(ChatColor.GOLD + "[Ty] "+ChatColor.YELLOW + "Rozumiem wroce do ciebie niebawem."); player.sendMessage(ChatColor.DARK_RED + "Porada: aby pojawić się w lokacji w której wykonywać będziesz zlecenie Jonatana, kliknij na jego postać prawym przyciskiem myszy (jeśli zdecydujesz się wrócić na spawn, zawsze możesz teleportować się ponownie na lokacje potrzebną do wykonania tego zadania. Osiągniesz to klikając prawym przyciskiem myszy na postać Jonatana. Analogicznie działa teleportowanie do wszystkich lokacji związanych z questami)."); writeJSON("JONATAN", player.getName(), "JONATANSTARTED", "T"); writeJSON("JONATAN",player.getName(),"MOBSKILLED","0"); } <- 219 if (readJSON("JONATAN",player.getName(),"JONATANSTARTED").equalsIgnoreCase("T") && readJSON("JONATAN",player.getName(),"JONATANENDED") == "N"){ Bukkit.getServer().dispatchCommand(getServer().getConsoleSender(), "/tp " + player.getName() + " 1 1 1"); } } }
And why? Because there is nothing there what can throw the error. Full code in pastebin, in a way that is readable (so format it please) Full server log in pastebin. Make sure that you export and test the plugin before getting the log.