So I've coded a gui, yet it does not seem to work. Can anyone help me with finding the problem. (Note: I'm not 100% sure that the problem is where I create the inventory. It could be somewhere else) Main Class: Code:java package me.zakarls.GUI; import java.util.logging.Logger; import org.bukkit.command.Command;import org.bukkit.command.CommandSender;import org.bukkit.entity.Player;import org.bukkit.plugin.PluginDescriptionFile;import org.bukkit.plugin.PluginManager;import org.bukkit.plugin.java.JavaPlugin; public class GUI extends JavaPlugin { public final Logger logger = Logger.getLogger("Minecraft"); @Override public void onDisable() { PluginDescriptionFile pdfFile = this.getDescription(); this.logger.info(pdfFile.getName() + " Has Been Disabled!"); } @Override public void onEnable() { PluginDescriptionFile pdfFile = this.getDescription(); this.logger.info(pdfFile.getName() + " Version " + pdfFile.getVersion() + " Has Been Enabled!"); PluginManager pm = getServer().getPluginManager(); pm.registerEvents(this.ml, this); } public final MyListener ml = new MyListener(this); public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) { Player player = (Player) sender; if(commandLabel.equalsIgnoreCase("staff")){ ml.show(player); } return false; }} Listener/Inventory Setup Class: Code:java package me.zakarls.GUI; import java.util.Arrays;import java.util.List; import org.bukkit.Bukkit;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 MyListener implements Listener{ private Inventory inv; private ItemStack a, b, c, d, e, f, g, h, i; public MyListener(Plugin p){ inv = Bukkit.getServer().createInventory(null, 9, "Staff"); a = createItem("ZakayPvP", Arrays.asList("Owner"), Material.REDSTONE); b = createItem("QuinayPvP", Arrays.asList("Owner"), Material.NETHER_BRICK_ITEM); c = createItem("aiyera", Arrays.asList("Head-Admin"), Material.CAKE); d = createItem("outpost89not", Arrays.asList("Head-Mod"), Material.SLIME_BALL); e = createItem("CCoesBruins", Arrays.asList("Helper"), Material.COMPASS); f = createItem("SBGamers4", Arrays.asList("Helper"), Material.BEDROCK); g = createItem("xX0Epic_Life0Xx", Arrays.asList("Helper"), Material.DIAMOND_SWORD); h = createItem("Saints980", Arrays.asList("Helper"), Material.SPONGE); i = createItem("SandersDoesMC", Arrays.asList("Helper"), Material.COOKED_CHICKEN); inv.setItem(1, a); inv.setItem(2, b); inv.setItem(3, c); inv.setItem(4, d); inv.setItem(5, e); inv.setItem(6, f); inv.setItem(7, g); inv.setItem(8, h); inv.setItem(9, i); } private ItemStack createItem(String name, List<String> lore, Material material){ ItemStack is = new ItemStack(material, 1); ItemMeta im = i.getItemMeta(); im.setDisplayName(name); im.setLore(lore); is.setItemMeta(im); /////////////////////////////////////////////////// /*ItemStack is = new ItemStack(Material.SKULL_ITEM, 1, (short) 3); SkullMeta im = (SkullMeta) is.getItemMeta(); im.setOwner(name); im.setDisplayName(name); im.setLore(lore); is.setItemMeta(im);*/ ///////////////////////////////////////////// /*ItemStack i = new Wool(dc).toItemStack(1); ItemMeta im = i.getItemMeta(); im.setDisplayName(name); im.setLore(Arrays.asList("Set your gamemode", "to " + name.toLowerCase() + " mode")); i.setItemMeta(im);*/ return is; } public void show(Player p){ p.openInventory(inv); } @EventHandler public void onInventoryClick(InventoryClickEvent event){ if(event.getInventory().getName().equalsIgnoreCase(inv.getName())){ event.setCancelled(true); }; /*if(event.getCurrentItem().getItemMeta().getDisplayName().contains("Survival")){ event.setCancelled(true); event.getWhoClicked().setGameMode(GameMode.SURVIVAL); } if(event.getCurrentItem().getItemMeta().getDisplayName().contains("Creative")){ event.setCancelled(true); event.getWhoClicked().setGameMode(GameMode.CREATIVE); } if(event.getCurrentItem().getItemMeta().getDisplayName().contains("Adventure")){ event.setCancelled(true); event.getWhoClicked().setGameMode(GameMode.ADVENTURE); }*/ }} Thanks for any help with this issue.
zakarls What do you mean "it doesn't work"? Does it throw an error? Does it not open? Is it functioning a way that you don't want? Also Java counts 0 as the starting index, so the first slot of the inventory would be 0.
zakarls I suspect it is throwing an ArrayIndexOutOfBoundsException. Change the slot numbers base on 0 as the first slot of the inventory.
zakarls Don't use Logger.getLogger("Minecraft"), use JavaPlugin#getLogger() Check if sender instanceof Player before casting to Player Indices generally (as in: practically all programming languages) start at 0, not 1