Solved Open an inventory from another class

Discussion in 'Plugin Help/Development/Requests' started by MinionDoesMC, Oct 24, 2015.

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

    MinionDoesMC

    Hello!

    I am working on a GUI plugin. I am trying to open an inventory from another class, but when I do, it get an error.

    "I clicked on the item after I did /admin"

    Code:
    11:17:18 AM [INFO] Minion_Does_MC issued server command: /admin
    11:17:19 AM [ERROR] Could not pass event InventoryClickEvent to InvEssentials v1.0
    11:17:19 AM org.bukkit.event.EventException
    11:17:19 AM at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:310) ~[spigot_server.jar:git-Spigot-5f38d38-18fbb24]
    11:17:19 AM at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[spigot_server.jar:git-Spigot-5f38d38-18fbb24]
    11:17:19 AM at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:502) [spigot_server.jar:git-Spigot-5f38d38-18fbb24]
    11:17:19 AM at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:487) [spigot_server.jar:git-Spigot-5f38d38-18fbb24]
    11:17:19 AM at net.minecraft.server.v1_8_R3.PlayerConnection.a(PlayerConnection.java:1630) [spigot_server.jar:git-Spigot-5f38d38-18fbb24]
    11:17:19 AM at net.minecraft.server.v1_8_R3.PacketPlayInWindowClick.a(SourceFile:31) [spigot_server.jar:git-Spigot-5f38d38-18fbb24]
    11:17:19 AM at net.minecraft.server.v1_8_R3.PacketPlayInWindowClick.a(SourceFile:9) [spigot_server.jar:git-Spigot-5f38d38-18fbb24]
    11:17:19 AM at net.minecraft.server.v1_8_R3.PlayerConnectionUtils$1.run(SourceFile:13) [spigot_server.jar:git-Spigot-5f38d38-18fbb24]
    11:17:19 AM at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_51]
    11:17:19 AM at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_51]
    11:17:19 AM at net.minecraft.server.v1_8_R3.SystemUtils.a(SourceFile:44) [spigot_server.jar:git-Spigot-5f38d38-18fbb24]
    11:17:19 AM at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:715) [spigot_server.jar:git-Spigot-5f38d38-18fbb24]
    11:17:19 AM at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:374) [spigot_server.jar:git-Spigot-5f38d38-18fbb24]
    11:17:19 AM at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:654) [spigot_server.jar:git-Spigot-5f38d38-18fbb24]
    11:17:19 AM at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:557) [spigot_server.jar:git-Spigot-5f38d38-18fbb24]
    11:17:19 AM at java.lang.Thread.run(Unknown Source) [?:1.8.0_51]
    11:17:19 AM Caused by: java.lang.NullPointerException
    11:17:19 AM at org.bukkit.craftbukkit.v1_8_R3.entity.CraftHumanEntity.openInventory(CraftHumanEntity.java:176) ~[spigot_server.jar:git-Spigot-5f38d38-18fbb24]
    11:17:19 AM at com.miniondoesmc.invessentials.Menu.onInventoryClick(Menu.java:64) ~[?:?]
    11:17:19 AM at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_51]
    11:17:19 AM at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_51]
    11:17:19 AM at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_51]
    11:17:19 AM at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_51]
    11:17:19 AM at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:306) ~[spigot_server.jar:git-Spigot-5f38d38-18fbb24]
    11:17:19 AM ... 15 more
    Here is my code

    Main:
    Code:
    package com.miniondoesmc.invessentials;
    
    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.event.Listener;
    import org.bukkit.plugin.java.JavaPlugin;
    
    public class Main extends JavaPlugin implements Listener {
    
        private Menu menu;
      
        public void onEnable() {
            menu = new Menu(this);
            Bukkit.getConsoleSender().sendMessage(ChatColor.GOLD + "[InvEssentials]: " + ChatColor.DARK_GREEN + "Enabled! Version: " + getDescription().getVersion());
            Bukkit.getServer().getPluginManager().registerEvents(this, this);
        }
      
        public void onDisable () {
            Bukkit.getConsoleSender().sendMessage(ChatColor.GOLD + "[InvEssentials]: " + ChatColor.DARK_GREEN + "Disabled!");
        }
      
        public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
            if(!(sender instanceof Player)) {
                return false;
            }
          
            Player player = (Player) sender;
          
            if(cmd.getName().equalsIgnoreCase("admin")) {
                if(sender.hasPermission("invessentials.use")) {
                    player.openInventory(Menu.inv);
                    return true;
                }else
                    player.sendMessage(ChatColor.RED + "You need permission to do this...");
            }
            return true;
        }
    }
    First Inventory:
    Code:
    package com.miniondoesmc.invessentials;
    
    import java.util.Arrays;
    
    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    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.inventory.Inventory;
    import org.bukkit.inventory.ItemStack;
    import org.bukkit.inventory.meta.ItemMeta;
    import org.bukkit.plugin.Plugin;
    
    public class Menu implements Listener {
      
        public static Inventory inv;
      
        public Menu(Plugin p) {
            inv = Bukkit.getServer().createInventory(null, 9, "Inv Essentials");
          
            //Gamemode
            ItemStack gm = new ItemStack(Material.BOOK);
            ItemMeta gmMeta = gm.getItemMeta();
            gmMeta.setDisplayName(ChatColor.RED + "Gamemode");
            gmMeta.setLore(Arrays.asList("Change your gamemode"));
            gm.setItemMeta(gmMeta);
          
            //Teleport
            ItemStack tp = new ItemStack(Material.COMPASS);
            ItemMeta tpMeta = tp.getItemMeta();
            tpMeta.setDisplayName(ChatColor.RED + "Teleport");
            tpMeta.setLore(Arrays.asList("Teleport to a player"));
            tp.setItemMeta(tpMeta);
          
            //Kick or Ban
            ItemStack kickBan = new ItemStack(Material.ICE);
            ItemMeta kickBanMeta = kickBan.getItemMeta();
            kickBanMeta.setDisplayName(ChatColor.RED + "Kick or Ban");
            kickBanMeta.setLore(Arrays.asList("Kick or ban a player"));
            kickBan.setItemMeta(kickBanMeta);
          
            inv.setItem(2, gm);
            inv.setItem(4, tp);
            inv.setItem(6, kickBan);
          
            Bukkit.getServer().getPluginManager().registerEvents(this, p);
        }
      
        public void show(Player p) {
            p.openInventory(inv);
        }
        @EventHandler
        public void onInventoryClick(InventoryClickEvent e) {
                if (!e.getInventory().getName().equalsIgnoreCase(inv.getName())) return;
                if (e.getCurrentItem().getItemMeta() == null) return;
                if (e.getCurrentItem().getItemMeta().getDisplayName().contains("Gamemode")) {
                        e.setCancelled(true);
                        e.getWhoClicked().closeInventory();
                        e.getWhoClicked().openInventory(GameModeGUI.gmInv);
                }
        }
    }
    The inventory I want the book to go to:
    Code:
    package com.miniondoesmc.invessentials.GameMode;
    
    import java.util.Arrays;
    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    import org.bukkit.GameMode;
    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.inventory.Inventory;
    import org.bukkit.inventory.ItemStack;
    import org.bukkit.inventory.meta.ItemMeta;
    import org.bukkit.plugin.Plugin;
    
    public class GameModeGUI implements Listener {
    
        public static Inventory gmInv;
      
        public GameModeGUI(Plugin p) {
            gmInv = Bukkit.getServer().createInventory(null, 9, "Gamemode Changer");
          
                    ItemStack gm1 = new ItemStack(Material.WOOL);
                    ItemMeta gm1Meta = gm1.getItemMeta();
                    gm1Meta.setDisplayName(ChatColor.RED + "Creative");
                    gm1Meta.setLore(Arrays.asList("Change your gamemode to " + ChatColor.AQUA + "Creative"));
                    gm1.setItemMeta(gm1Meta);
                  
                    ItemStack gm2 = new ItemStack(Material.WOOL);
                    ItemMeta gm2Meta = gm2.getItemMeta();
                    gm2Meta.setDisplayName(ChatColor.RED + "Survival");
                    gm2Meta.setLore(Arrays.asList("Change your gamemode to " + ChatColor.AQUA + "Survival"));
                    gm2.setItemMeta(gm2Meta);
                  
                    ItemStack gm3 = new ItemStack(Material.WOOL);
                    ItemMeta gm3Meta = gm3.getItemMeta();
                    gm3Meta.setDisplayName(ChatColor.RED + "Adventure");
                    gm3Meta.setLore(Arrays.asList("Change your gamemode to " + ChatColor.AQUA + "Adventure"));
                    gm3.setItemMeta(gm3Meta);
                  
                    gmInv.setItem(2, gm1);
                    gmInv.setItem(4, gm2);
                    gmInv.setItem(6, gm3);
                  
                    Bukkit.getServer().getPluginManager().registerEvents(this, p);
        }
      
        public void show(Player p) {
            p.openInventory(gmInv);
        }
      
        @EventHandler
        public void onInventoryClick2(InventoryClickEvent e) {
                if (!e.getInventory().getName().equalsIgnoreCase(gmInv.getName())) return;
                if (e.getCurrentItem().getItemMeta() == null) return;
                if (e.getCurrentItem().getItemMeta().getDisplayName().contains("Creative")) {
                        e.setCancelled(true);
                        e.getWhoClicked().setGameMode(GameMode.CREATIVE);
                        e.getWhoClicked().closeInventory();
                        e.getWhoClicked().sendMessage(ChatColor.WHITE + "Your game mode has been updated");
                }
                if (e.getCurrentItem().getItemMeta().getDisplayName().contains("Survival")) {
                        e.setCancelled(true);
                        e.getWhoClicked().setGameMode(GameMode.SURVIVAL);
                        e.getWhoClicked().closeInventory();
                        e.getWhoClicked().sendMessage(ChatColor.WHITE + "Your game mode has been updated");
                }
                if (e.getCurrentItem().getItemMeta().getDisplayName().contains("Adventure")) {
                        e.setCancelled(true);
                        e.getWhoClicked().setGameMode(GameMode.ADVENTURE);
                        e.getWhoClicked().closeInventory();
                        e.getWhoClicked().sendMessage(ChatColor.WHITE + "Your game mode has been updated");
              }  
        }
    }
     
    Last edited: Oct 24, 2015
  2. Offline

    MinionDoesMC

    I found the issue.

    *Marked as solved*
     
Thread Status:
Not open for further replies.

Share This Page