Call Inventory from other class

Discussion in 'Plugin Development' started by maxecito, Apr 22, 2015.

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

    maxecito

    Hey!
    Im currently using 3 inventorys, but having problems with one.
    I want to check for items which are defined in the class where the inventory is created, it IS working, but still throws errors in the console.

    ERROR LOG:
    Code:
    [21:49:51 ERROR]: Could not pass event InventoryClickEvent to SPG_RPG vv1.0
    org.bukkit.event.EventException
    at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:297) ~[Craftbukkit.jar:git-Bukkit-33d5de3]
    at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[Craftbukkit.jar:git-Bukkit-33d5de3]
    at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:501) [Craftbukkit.jar:git-Bukkit-33d5de3]
    at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:486) [Craftbukkit.jar:git-Bukkit-33d5de3]
    at net.minecraft.server.v1_8_R1.PlayerConnection.a(PlayerConnection.java:1521) [Craftbukkit.jar:git-Bukkit-33d5de3]
    at net.minecraft.server.v1_8_R1.PacketPlayInWindowClick.a(SourceFile:31) [Craftbukkit.jar:git-Bukkit-33d5de3]
    at net.minecraft.server.v1_8_R1.PacketPlayInWindowClick.a(SourceFile:9) [Craftbukkit.jar:git-Bukkit-33d5de3]
    at net.minecraft.server.v1_8_R1.PacketHandleTask.run(SourceFile:13) [Craftbukkit.jar:git-Bukkit-33d5de3]
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) [?:1.7.0_71]
    at java.util.concurrent.FutureTask.run(FutureTask.java:262) [?:1.7.0_71]
    at net.minecraft.server.v1_8_R1.MinecraftServer.z(MinecraftServer.java:656) [Craftbukkit.jar:git-Bukkit-33d5de3]
    at net.minecraft.server.v1_8_R1.DedicatedServer.z(DedicatedServer.java:284) [Craftbukkit.jar:git-Bukkit-33d5de3]
    at net.minecraft.server.v1_8_R1.MinecraftServer.y(MinecraftServer.java:609) [Craftbukkit.jar:git-Bukkit-33d5de3]
    at net.minecraft.server.v1_8_R1.MinecraftServer.run(MinecraftServer.java:517) [Craftbukkit.jar:git-Bukkit-33d5de3]
    at java.lang.Thread.run(Thread.java:745) [?:1.7.0_71]
    Caused by: java.lang.NullPointerException
    at at.skyblock.main.Events.onInventoryClickClass(Events.java:302) ~[?:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.7.0_71]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[?:1.7.0_71]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.7.0_71]
    at java.lang.reflect.Method.invoke(Method.java:606) ~[?:1.7.0_71]
    at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:295) ~[Craftbukkit.jar:git-Bukkit-33d5de3]
    ... 14 more
    [21:49:54 ERROR]: Could not pass event InventoryClickEvent to SPG_RPG vv1.0
    org.bukkit.event.EventException
    at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:297) ~[Craftbukkit.jar:git-Bukkit-33d5de3]
    at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[Craftbukkit.jar:git-Bukkit-33d5de3]
    at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:501) [Craftbukkit.jar:git-Bukkit-33d5de3]
    at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:486) [Craftbukkit.jar:git-Bukkit-33d5de3]
    at net.minecraft.server.v1_8_R1.PlayerConnection.a(PlayerConnection.java:1521) [Craftbukkit.jar:git-Bukkit-33d5de3]
    at net.minecraft.server.v1_8_R1.PacketPlayInWindowClick.a(SourceFile:31) [Craftbukkit.jar:git-Bukkit-33d5de3]
    at net.minecraft.server.v1_8_R1.PacketPlayInWindowClick.a(SourceFile:9) [Craftbukkit.jar:git-Bukkit-33d5de3]
    at net.minecraft.server.v1_8_R1.PacketHandleTask.run(SourceFile:13) [Craftbukkit.jar:git-Bukkit-33d5de3]
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) [?:1.7.0_71]
    at java.util.concurrent.FutureTask.run(FutureTask.java:262) [?:1.7.0_71]
    at net.minecraft.server.v1_8_R1.MinecraftServer.z(MinecraftServer.java:656) [Craftbukkit.jar:git-Bukkit-33d5de3]
    at net.minecraft.server.v1_8_R1.DedicatedServer.z(DedicatedServer.java:284) [Craftbukkit.jar:git-Bukkit-33d5de3]
    at net.minecraft.server.v1_8_R1.MinecraftServer.y(MinecraftServer.java:609) [Craftbukkit.jar:git-Bukkit-33d5de3]
    at net.minecraft.server.v1_8_R1.MinecraftServer.run(MinecraftServer.java:517) [Craftbukkit.jar:git-Bukkit-33d5de3]
    at java.lang.Thread.run(Thread.java:745) [?:1.7.0_71]
    Caused by: java.lang.NullPointerException
    at at.skyblock.main.Events.onInventoryClickClass(Events.java:302) ~[?:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.7.0_71]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[?:1.7.0_71]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.7.0_71]
    at java.lang.reflect.Method.invoke(Method.java:606) ~[?:1.7.0_71]
    at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:295) ~[Craftbukkit.jar:git-Bukkit-33d5de3]
    ... 14 more
    
    The error class: (Events)
    Code:
    package at.skyblock.main;
    
    import java.util.ArrayList;
    
    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    import org.bukkit.DyeColor;
    import org.bukkit.Location;
    import org.bukkit.Material;
    import org.bukkit.World;
    import org.bukkit.enchantments.Enchantment;
    import org.bukkit.entity.Arrow;
    import org.bukkit.entity.Entity;
    import org.bukkit.entity.Player;
    import org.bukkit.entity.Villager;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.EventPriority;
    import org.bukkit.event.Listener;
    import org.bukkit.event.entity.EntityDamageByEntityEvent;
    import org.bukkit.event.inventory.InventoryClickEvent;
    import org.bukkit.event.inventory.InventoryOpenEvent;
    import org.bukkit.event.player.PlayerInteractEntityEvent;
    import org.bukkit.event.player.PlayerInteractEvent;
    import org.bukkit.event.player.PlayerJoinEvent;
    import org.bukkit.event.player.PlayerLevelChangeEvent;
    import org.bukkit.event.player.PlayerMoveEvent;
    import org.bukkit.event.player.PlayerQuitEvent;
    import org.bukkit.inventory.ItemStack;
    import org.bukkit.inventory.meta.ItemMeta;
    import org.bukkit.potion.PotionEffect;
    import org.bukkit.potion.PotionEffectType;
    
    public class Events implements Listener {
    
       Main plugin;
       public boolean villager_spawned = false;
    
       public Events(Main instance) {
         plugin = instance;
       }
    
       private int skilltokens;
    
       @EventHandler
       public void onQuit(PlayerQuitEvent e) {
         Player p = e.getPlayer();
         skilltokens = plugin.getConfig().getInt("");
       }
    
       @EventHandler
       public void onPlayerInteractEntityEvent(PlayerInteractEntityEvent event) {
         Player p = event.getPlayer();
         Entity entity = event.getRightClicked();
         if ((entity instanceof Villager))
           event.setCancelled(true);
    
         if (entity.getCustomName().equals("§a§lGaladriel")) {
           if (plugin.getConfig().getBoolean("RPG.quests.elf." + p.getName()) == false) {
             p.sendMessage(ChatColor.GRAY + "[Quest started]");
             p.sendMessage(ChatColor.GRAY + "[1/5] " + ChatColor.DARK_GREEN
                 + "My village! It is on fire!");
             p.sendMessage(ChatColor.GRAY + "[2/5] " + ChatColor.DARK_GREEN
                 + "I were able to escape, but...");
             p.sendMessage(ChatColor.GRAY + "[3/5] " + ChatColor.DARK_GREEN
                 + "our elder. He is too weak!");
             p.sendMessage(ChatColor.GRAY + "[4/5] " + ChatColor.DARK_GREEN
                 + "Please, help me out... Give me a proof he is alive!");
             p.sendMessage(ChatColor.GRAY + "[5/5] " + ChatColor.DARK_GREEN
                 + "He is located in the church, I think...");
    
             plugin.getConfig().set("RPG.quests.elf." + p.getName(), true);
           } else {
             p.sendMessage(ChatColor.RED
                 + "You've already started/done this quest!");
           }
         }
         return;
    
       }
    
       @EventHandler(priority = EventPriority.HIGH)
       public void onPlayerUse(PlayerInteractEvent event) {
         Player p = event.getPlayer();
    
         if (p.getItemInHand().getType() == Material.CHEST) {
           event.setCancelled(true);
           Elf_levelup.open(p);
         }
       }
    
       @EventHandler
       public void onInventoryClickTribe(InventoryClickEvent event) {
         Player p = (Player) event.getWhoClicked();
         ItemStack clicked = event.getCurrentItem();
         org.bukkit.inventory.Inventory inventory = event.getInventory();
         if ((inventory.getName().equals(Tribe_inventory.tribe_selector
             .getName())) && (clicked.getType() == Material.BOW)) {
           plugin.getConfig().set("RPG.folk." + p.getName(), "elf");
           event.setCancelled(true);
           p.closeInventory();
           p.openInventory(Class_inventory.class_selector);
    
         } else if ((inventory.getName().equals(Tribe_inventory.tribe_selector
             .getName())) && (clicked.getType() == Material.IRON_AXE)) {
    
           plugin.getConfig().set("RPG.folk." + p.getName(), "orc");
           event.setCancelled(true);
           p.closeInventory();
           p.openInventory(Class_inventory.class_selector);
    
         } else if ((inventory.getName().equals(Tribe_inventory.tribe_selector
             .getName())) && (clicked.getType() == Material.ANVIL)) {
    
           plugin.getConfig().set("RPG.folk." + p.getName(), "dwarf");
           event.setCancelled(true);
           p.closeInventory();
           p.openInventory(Class_inventory.class_selector);
         } else if ((inventory.getName().equals(Tribe_inventory.tribe_selector
             .getName())) && (clicked.getType() == Material.NETHER_STAR)) {
           plugin.getConfig().set("RPG.folk." + p.getName(), "demon");
           event.setCancelled(true);
           p.closeInventory();
           p.openInventory(Class_inventory.class_selector);
         }
       }
    
       @SuppressWarnings("unused")
       @EventHandler
       public void onInventoryClickClass(InventoryClickEvent event) {
    
         // ITEMS
         // OAKWOOD ELVEN-BOW
         ItemStack elf_bow = new ItemStack(Material.BOW, 1);
         elf_bow.addEnchantment(Enchantment.ARROW_INFINITE, 1);
         ItemMeta elf_bow_meta = elf_bow.getItemMeta();
         elf_bow_meta.setDisplayName(ChatColor.GOLD + "" + ChatColor.BOLD
             + ChatColor.GREEN + "Oakwood elven-bow");
         ArrayList<String> lore = new ArrayList<String>();
         lore.add(ChatColor.AQUA + "Damage: 3-5");
         lore.add(ChatColor.AQUA + "Requires no Level");
         lore.add(ChatColor.AQUA + "Rarity: " + ChatColor.GREEN + "Common");
         elf_bow_meta.setLore(lore);
         elf_bow.setItemMeta(elf_bow_meta);
         // OAKWOOD ORC-AXE
         ItemStack orc_axe = new ItemStack(Material.IRON_AXE, 1);
         ItemMeta orc_axe_meta = orc_axe.getItemMeta();
         orc_axe_meta.setDisplayName(ChatColor.GOLD + "" + ChatColor.BOLD
             + ChatColor.GREEN + "Oakwood Orc-axe");
         ArrayList<String> lore2 = new ArrayList<String>();
         lore2.add(ChatColor.AQUA + "Damage: 4-6");
         lore2.add(ChatColor.AQUA + "Requires no Level");
         lore2.add(ChatColor.AQUA + "Rarity: " + ChatColor.GREEN + "Common");
         orc_axe_meta.setLore(lore2);
         orc_axe.setItemMeta(orc_axe_meta);
    
         // LEATHER TEST DEFENCE (REMOVE AFTER TEST)
         ItemStack orc_axe2 = new ItemStack(Material.LEATHER_CHESTPLATE, 1);
         ItemMeta orc_axe_meta2 = orc_axe2.getItemMeta();
         orc_axe_meta2.setDisplayName(ChatColor.GOLD + "" + ChatColor.BOLD
             + ChatColor.GREEN + "Simple Tunic");
         ArrayList<String> lore3 = new ArrayList<String>();
         lore3.add(ChatColor.AQUA + "+10 Health");
         orc_axe_meta2.setLore(lore3);
         orc_axe2.setItemMeta(orc_axe_meta2);
    
         // ####################
         Player p = (Player) event.getWhoClicked();
         World w = p.getWorld();
    
         // LOCATIONS
         Location elf_loc = new Location(w, -196, 64, 244);
         Location orc_loc = new Location(w, -196, 64, 244);
         Location dwarf_loc = new Location(w, -196, 64, 244);
         Location demon_loc = new Location(w, -196, 64, 244);
         // #########################
         ItemStack elf_levelupchest = new ItemStack(Material.CHEST);
         ItemMeta elf_levelupchest_meta = elf_levelupchest.getItemMeta();
         elf_levelupchest_meta.setDisplayName(ChatColor.GOLD + ""
             + ChatColor.BOLD + "Levelup Skills");
    
         elf_levelupchest.setItemMeta(elf_levelupchest_meta);
    
         ItemStack clicked = event.getCurrentItem();
         org.bukkit.inventory.Inventory inventory = event.getInventory();
         if ((inventory.getName().equals(Class_inventory.class_selector
             .getName())) && (clicked.getType() == Material.BLAZE_POWDER)) {
           plugin.getConfig().set("RPG.folk.class." + p.getName(), "mage");
    
           if (plugin.getConfig().getString("RPG.folk." + p.getName())
               .equals("elf")) {
    
             // p.teleport(elf_loc);
    
             p.getInventory().setItem(0, elf_bow);
             p.getInventory().setItem(8, new ItemStack(Material.ARROW));
             p.getInventory().setChestplate(orc_axe2);
             p.getInventory().setItem(7, elf_levelupchest);
    
           }
           if (plugin.getConfig().getString("RPG.folk." + p.getName())
               .equals("dwarf")) {
    
             // p.teleport(dwarf_loc);
           }
           if (plugin.getConfig().getString("RPG.folk." + p.getName())
               .equals("orc")) {
    
             // p.teleport(orc_loc);
    
             p.getInventory().setItem(0, orc_axe);
           }
           if (plugin.getConfig().getString("RPG.folk." + p.getName())
               .equals("demon")) {
    
             // p.teleport(demon_loc);
           }
    
           p.removePotionEffect(PotionEffectType.BLINDNESS);
           p.removePotionEffect(PotionEffectType.SLOW);
           p.sendMessage(ChatColor.GREEN
               + ""
               + ChatColor.BOLD
               + "Succesfully chose the "
               + plugin.getConfig().getString("RPG.folk." + p.getName())
               + " tribe, as "
               + plugin.getConfig().getString(
                   "RPG.folk.class." + p.getName()));
           event.setCancelled(true);
           p.closeInventory();
    
         } else if ((inventory.getName().equals(Class_inventory.class_selector
             .getName())) && (clicked.getType() == Material.SAPLING)) {
           plugin.getConfig().set("RPG.folk.class." + p.getName(), "shaman");
    
           if (plugin.getConfig().getString("RPG.folk." + p.getName())
               .equals("elf")) {
    
             // p.teleport(elf_loc);
           }
           if (plugin.getConfig().getString("RPG.folk." + p.getName())
               .equals("dwarf")) {
    
             // p.teleport(dwarf_loc);
           }
           if (plugin.getConfig().getString("RPG.folk." + p.getName())
               .equals("orc")) {
    
             // p.teleport(orc_loc);
           }
    
           p.removePotionEffect(PotionEffectType.BLINDNESS);
           p.removePotionEffect(PotionEffectType.SLOW);
           p.sendMessage(ChatColor.GREEN
               + ""
               + ChatColor.BOLD
               + "Succesfully chose the "
               + plugin.getConfig().getString("RPG.folk." + p.getName())
               + " tribe, as "
               + plugin.getConfig().getString(
                   "RPG.folk.class." + p.getName()));
           event.setCancelled(true);
           p.closeInventory();
         } else if ((inventory.getName().equals(Class_inventory.class_selector
             .getName())) && (clicked.getType() == Material.IRON_SWORD)) {
           event.setCancelled(true);
           plugin.getConfig().set("RPG.folk.class." + p.getName(), "warrior");
    
           if (plugin.getConfig().getString("RPG.folk." + p.getName())
               .equals("elf")) {
    
             // p.teleport(elf_loc);
           }
           if (plugin.getConfig().getString("RPG.folk." + p.getName())
               .equals("dwarf")) {
    
             // p.teleport(dwarf_loc);
           }
           if (plugin.getConfig().getString("RPG.folk." + p.getName())
               .equals("orc")) {
    
             // p.teleport(orc_loc);
           }
           if (plugin.getConfig().getString("RPG.folk." + p.getName())
               .equals("demon")) {
    
             // p.teleport(demon_loc);
           }
    
           p.removePotionEffect(PotionEffectType.BLINDNESS);
           p.removePotionEffect(PotionEffectType.SLOW);
           p.sendMessage(ChatColor.GREEN
               + ""
               + ChatColor.BOLD
               + "Succesfully chose the "
               + plugin.getConfig().getString("RPG.folk." + p.getName())
               + " tribe, as "
               + plugin.getConfig().getString(
                   "RPG.folk.class." + p.getName()));
           event.setCancelled(true);
         } else if ((inventory.getName().equals(Elf_levelup.levelup_elf
             .getName()))
             && (clicked.getItemMeta().getDisplayName() //EROR ON THIS LINE
                 .equalsIgnoreCase("Mobility I"))) {
           event.setCancelled(true);
           skilltokens--;
           p.sendMessage("Tokens: "
               + plugin.getConfig().getInt(
                   "RPG." + p.getName() + ".skilltokens"));
           
         }
    
       }
    
       @EventHandler
       public void onEntityDamage(EntityDamageByEntityEvent event) {
         Entity projectile = event.getDamager();
         if (projectile instanceof Arrow) {
           Entity target = event.getEntity();
           Arrow arrow = (Arrow) event.getDamager();
    
           if (arrow.getShooter() instanceof Player) {
    
             Player shooter = (Player) arrow.getShooter();
    
             if (plugin.getConfig().getInt(
                 "RPG.levelups." + shooter.getName() + ".trickshot") == 1) {
    
               if (target instanceof Player) {
                 Player damagd = (Player) target;
                 if (plugin.getConfig().getBoolean(
                     "RPG.marked." + damagd.getName()) == false) {
                   plugin.getConfig().set(
                       "RPG.marked." + damagd.getName(), true);
                   shooter.sendMessage(ChatColor.GREEN + "You marked "
                       + ChatColor.DARK_RED + damagd.getName());
                 } else if (plugin.getConfig().getBoolean(
                     "RPG.marked." + damagd.getName()) == true) {
                   shooter.sendMessage(ChatColor.GREEN
                       + "You activated your mark on "
                       + ChatColor.DARK_RED + damagd.getName());
                   damagd.addPotionEffect(new PotionEffect(
                       PotionEffectType.BLINDNESS, 100, 0));
                   damagd.addPotionEffect(new PotionEffect(
                       PotionEffectType.SLOW, 100, 1));
                   damagd.addPotionEffect(new PotionEffect(
                       PotionEffectType.CONFUSION, 100, 0));
                   plugin.getConfig().set(
                       "RPG.marked." + damagd.getName(), false);
    
                 }
    
               }
             }
           }
         }
    
       }
    
       @SuppressWarnings("deprecation")
       @EventHandler
       public void inventoryOpen(InventoryOpenEvent e) {
    
         Player p = (Player) e.getPlayer();
         ItemStack bought = new ItemStack(Material.WHEAT);
         ItemMeta bought_meta = bought.getItemMeta();
         bought_meta.setDisplayName(ChatColor.GOLD + "" + ChatColor.BOLD
             + "Already owned");
         bought.setItemMeta(bought_meta);
    
         ItemStack mobility = new ItemStack(Material.HARD_CLAY,
             DyeColor.RED.getData(), (short) 1);
         ItemMeta mobility_meta = mobility.getItemMeta();
         mobility_meta.setDisplayName(ChatColor.GOLD + "" + ChatColor.BOLD
             + "Mobility I");
         ArrayList<String> mobility_desc = new ArrayList<String>();
         mobility_desc.add(ChatColor.AQUA + "Speed I for ");
         mobility_desc.add(ChatColor.AQUA + "2 seconds on hit");
         mobility_meta.setLore(mobility_desc);
         mobility.setItemMeta(mobility_meta);
    
         ItemStack trickshot = new ItemStack(Material.BLAZE_POWDER);
         ItemMeta trickshot_meta = trickshot.getItemMeta();
         trickshot_meta.setDisplayName(ChatColor.GOLD + "" + ChatColor.BOLD
             + "Trickshot I");
         ArrayList<String> trickshot_desc = new ArrayList<String>();
         trickshot_desc.add(ChatColor.AQUA + "10% Chance to apply");
         trickshot_desc.add(ChatColor.AQUA + "Blindness I on hit");
         trickshot_meta.setLore(trickshot_desc);
         trickshot.setItemMeta(trickshot_meta);
    
         ItemStack trickshot2 = new ItemStack(Material.BLAZE_POWDER);
         ItemMeta trickshot2_meta = trickshot2.getItemMeta();
         trickshot2_meta.setDisplayName(ChatColor.GOLD + "" + ChatColor.BOLD
             + "Trickshot II");
         ArrayList<String> trickshot2_desc = new ArrayList<String>();
         trickshot2_desc.add(ChatColor.AQUA + "15% Chance to apply");
         trickshot2_desc.add(ChatColor.AQUA + "Blindness I on hit");
         trickshot2_meta.setLore(trickshot2_desc);
         trickshot2.setItemMeta(trickshot2_meta);
    
         /**
          * if (p.getLevel() == 1) { plugin.getConfig().set( "RPG.levelups." +
          * p.getName() + ".trickshot", 1);
          * plugin.getConfig().set("RPG.levelups." + p.getName() + ".mobility",
          * 1); Elf_levelup.levelup_elf.setItem(18, bought);
          * Elf_levelup.levelup_elf.setItem(0, bought);
          * p.sendMessage("You unlocked " + ChatColor.DARK_RED + "" +
          * ChatColor.BOLD + "Mobility lvl. " + plugin.getConfig().getInt(
          * "RPG.levelups." + p.getName() + ".mobility"));
          * p.sendMessage("You unlocked " + ChatColor.DARK_RED + "" +
          * ChatColor.BOLD + " Trickshot lvl. " + plugin.getConfig().getInt(
          * "RPG.levelups." + p.getName() + ".trickshot"));
          *
          * } else if (p.getLevel() == 2) {
          *
          * plugin.getConfig().set( "RPG.levelups." + p.getName() + ".trickshot",
          * 2); Elf_levelup.levelup_elf.setItem(19, bought);
          * Elf_levelup.levelup_elf.setItem(18, bought);
          * p.sendMessage("You unlocked " + ChatColor.DARK_RED + "" +
          * ChatColor.BOLD + " Trickshot lvl. " + plugin.getConfig().getInt(
          *
          * "RPG.levelups." + p.getName() + ".trickshot")); }
          **/
    
       }
    
       @EventHandler
       public void onLevelup(PlayerLevelChangeEvent e) {
         Player p = e.getPlayer();
    
         skilltokens++;
    
         plugin.getConfig().set("RPG." + p.getName() + ".skilltokens",
             skilltokens);
         p.sendMessage(ChatColor.GRAY + "[Level up!]");
         p.sendMessage(ChatColor.GREEN
             + "You now have "
             + plugin.getConfig().getInt(
                 "RPG." + p.getName() + ".skilltokens") + " Skilltokens");
       }
    
       @EventHandler
       public void onSneak(PlayerMoveEvent e) {
         Player p = e.getPlayer();
         if (plugin.getConfig().getInt(
             "RPG.levelups." + p.getName() + ".mobility") == 1) {
           if (p.isSneaking()) {
             if (p.getMaxHealth() == p.getHealth()) {
               for (Player all : Bukkit.getServer().getOnlinePlayers()) {
                 all.hidePlayer(p);
               }
             }
           }
    
         }
       }
    
    }
    
    and the inventory:
    Code:
    package at.skyblock.main;
    
    import java.util.ArrayList;
    
    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    import org.bukkit.DyeColor;
    import org.bukkit.Material;
    import org.bukkit.entity.Player;
    import org.bukkit.inventory.ItemStack;
    import org.bukkit.inventory.meta.ItemMeta;
    
    public class Elf_levelup {
    
       static org.bukkit.inventory.Inventory levelup_elf;
    
       public static void open(Player player) {
    
         levelup_elf = Bukkit.createInventory(player, 27, ChatColor.DARK_GREEN
             + "" + ChatColor.BOLD + "Levelup-manager");
         ItemStack mobility = new ItemStack(Material.WEB);
         ItemMeta mobility_meta = mobility.getItemMeta();
         mobility_meta.setDisplayName(ChatColor.GOLD + "" + ChatColor.BOLD
             + "Mobility I");
         ArrayList<String> mobility_desc = new ArrayList<String>();
         mobility_desc.add(ChatColor.AQUA + "Invisibility upon sneaking");
         mobility_desc.add(ChatColor.AQUA + "until taking damage");
         mobility_meta.setLore(mobility_desc);
         mobility.setItemMeta(mobility_meta);
    
         ItemStack trickshot = new ItemStack(Material.BLAZE_POWDER);
         ItemMeta trickshot_meta = trickshot.getItemMeta();
         trickshot_meta.setDisplayName(ChatColor.GOLD + "" + ChatColor.BOLD
             + "Trickshot I");
         ArrayList<String> trickshot_desc = new ArrayList<String>();
         trickshot_desc.add(ChatColor.AQUA + "10% Chance to apply");
         trickshot_desc.add(ChatColor.AQUA + "Blindness I on hit");
         trickshot_meta.setLore(trickshot_desc);
         trickshot.setItemMeta(trickshot_meta);
    
         ItemStack trickshot2 = new ItemStack(Material.BLAZE_POWDER);
         ItemMeta trickshot2_meta = trickshot2.getItemMeta();
         trickshot2_meta.setDisplayName(ChatColor.GOLD + "" + ChatColor.BOLD
             + "Trickshot II");
         ArrayList<String> trickshot2_desc = new ArrayList<String>();
         trickshot2_desc.add(ChatColor.AQUA + "15% Chance to apply");
         trickshot2_desc.add(ChatColor.AQUA + "Blindness I on hit");
         trickshot2_meta.setLore(trickshot2_desc);
         trickshot2.setItemMeta(trickshot2_meta);
    
         ItemStack trickshot_path = new ItemStack(Material.BOW);
         ItemMeta trickshot_path_meta = trickshot_path.getItemMeta();
         trickshot_path_meta.setDisplayName(ChatColor.GOLD + "" + ChatColor.BOLD
             + "Trickshot Lvlup");
         trickshot_path.setItemMeta(trickshot_path_meta);
    
         ItemStack mobility_path = new ItemStack(Material.WOOD_SWORD);
         ItemMeta mobility_path_meta = mobility_path.getItemMeta();
         mobility_path_meta.setDisplayName(ChatColor.GOLD + "" + ChatColor.BOLD
             + "Mobility Lvlup");
         mobility_path.setItemMeta(mobility_path_meta);
    
         levelup_elf.setItem(0, mobility);
         levelup_elf.setItem(9, trickshot_path);
         levelup_elf.setItem(18, trickshot);
         levelup_elf.setItem(19, trickshot2);
         player.openInventory(levelup_elf);
       }
    
    }
    
    Would be plain awesome if someone could help me,
    - Maxe
     
  2. Offline

    Ivan

    If an item isn't named, it's not safe to use .getItemMeta().getDisplayName() because it might be null (aka non-existent). So you've gotta check if it's not null before continuing there.
     
  3. Offline

    SuperOriginal

    Don't use static inventories. And you're creating a new inventory every time you need to open it? That's very inefficient. As for your error, display names can be null.
     
  4. Offline

    maxecito

    @SuperOriginal Sorry, Im pretty bad in Java.
    The "always-creating new inventory" fail was my bad.
    Should I use getter/setter-stuff instead of statics?

    @Ivan Added a null-check, still not working, now the error is on the check. :3

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Jun 12, 2016
  5. Offline

    SuperOriginal

    Yes
     
  6. Offline

    maxecito

    @SuperOriginal Do you have any ideas to compare the inventorys better? I always get nullpointers, even with a null check
    Btw; Im forced to create a new inventory for each player, because I cant define it outside the methode, it needs the variable player...
     
    Last edited by a moderator: Apr 23, 2015
  7. Offline

    SuperOriginal

    @maxecito
    What do you mean by nullpointers while comparing inventories? Where? Show an example?

    You can create an inventory for each player when they join and store it for when needed.
     
  8. Offline

    maxecito

    SuperOriginal likes this.
Thread Status:
Not open for further replies.

Share This Page