I've been trying to make a custom inventory plugin that lets admins change certain aspects of the server through a custom inventory menu which can be opened by typing /admin in chat. Eclipse nor the console is giving me any errors apart from saying that the plugin could "not be found" in the plugins folder even though it is there (I've checked countless times). Any help is appreciated! Code: package me.rf2minecraft.AdminControls; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.DyeColor; import org.bukkit.Material; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; 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.material.Wool; import org.bukkit.plugin.java.JavaPlugin; public final class AdminControls extends JavaPlugin implements Listener { private Inventory main; private Inventory timeChange; public ItemStack dayItem, nightItem; public AdminControls() { Bukkit.getServer().getPluginManager().registerEvents(this, this); main = Bukkit.getServer().createInventory(null, 9, "Admin Controls"); ItemMeta tim = main.getItem(2).getItemMeta(); ItemMeta wim = main.getItem(6).getItemMeta(); tim.setDisplayName(ChatColor.DARK_RED + "Change Time"); wim.setDisplayName(ChatColor.DARK_RED + "Change Weather"); main.getItem(2).setItemMeta(tim); main.getItem(6).setItemMeta(wim); main.setItem(2, new ItemStack(Material.WATCH, 1)); main.setItem(6, new ItemStack(Material.BLAZE_ROD, 1)); timeChange = Bukkit.getServer().createInventory(null, 9, "Admin Controls"); dayItem = createItem(DyeColor.GREEN, ChatColor.DARK_RED + "Day"); nightItem = createItem(DyeColor.BLACK, ChatColor.DARK_RED + "Night"); timeChange.setItem(2, dayItem); // Sets item in slot 2 to green wool timeChange.setItem(6, nightItem); // Sets item in slot 6 to black wool } private ItemStack createItem(DyeColor dc, String name) { ItemStack i = new Wool(dc).toItemStack(1); ItemMeta im = i.getItemMeta(); im.setDisplayName(name); i.setItemMeta(im); return i; } @EventHandler public void onInventoryClick(InventoryClickEvent e) { if(!e.getInventory().getName().equalsIgnoreCase(main.getName())) return; if(e.getCurrentItem().getItemMeta() == null) return; if(e.getCurrentItem().getItemMeta().getDisplayName().contains("Change Time")) { e.setCancelled(true); e.getWhoClicked().closeInventory(); e.getWhoClicked().openInventory(timeChange); } } public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { if(cmd.getName().equalsIgnoreCase("admin")) { Player p = (Player) sender; p.openInventory(main); } return true; } }
Code:java @Overridepublic void onDisable() { } @Overridepublic void onEnable() { } May be it EDIT: @Forseth11 beat me to it
Code: name: AdminControls version: 1.0 main: me.rf2minecraft.AdminControls.AdminControls commands: admin: description: Opens controls.
All console is giving me is: 18:52:17 [SEVERE] Could not load 'plugins\AdminControls.jar' in folder 'plugins' And heres the updated code: Code: package me.rf2minecraft.AdminControls; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.DyeColor; import org.bukkit.Material; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; 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.material.Wool; import org.bukkit.plugin.java.JavaPlugin; public final class AdminControls extends JavaPlugin implements Listener { public static Inventory main; public static Inventory timeChange; public ItemStack dayItem, nightItem; public void onEnable() { Bukkit.getServer().getPluginManager().registerEvents(this, this); } public AdminControls() { main = Bukkit.getServer().createInventory(null, 9, "Admin Controls"); ItemMeta tim = main.getItem(2).getItemMeta(); ItemMeta wim = main.getItem(6).getItemMeta(); tim.setDisplayName(ChatColor.DARK_RED + "Change Time"); wim.setDisplayName(ChatColor.DARK_RED + "Change Weather"); main.getItem(2).setItemMeta(tim); main.getItem(6).setItemMeta(wim); main.setItem(2, new ItemStack(Material.WATCH, 1)); main.setItem(6, new ItemStack(Material.BLAZE_ROD, 1)); timeChange = Bukkit.getServer().createInventory(null, 9, "Admin Controls"); dayItem = createItem(DyeColor.GREEN, ChatColor.DARK_RED + "Day"); nightItem = createItem(DyeColor.BLACK, ChatColor.DARK_RED + "Night"); timeChange.setItem(2, dayItem); // Sets item in slot 2 to green wool timeChange.setItem(6, nightItem); // Sets item in slot 6 to black wool } private ItemStack createItem(DyeColor dc, String name) { ItemStack i = new Wool(dc).toItemStack(1); ItemMeta im = i.getItemMeta(); im.setDisplayName(name); i.setItemMeta(im); return i; } @EventHandler public void onInventoryClick(InventoryClickEvent e) { if(!e.getInventory().getName().equalsIgnoreCase(main.getName())) return; if(e.getCurrentItem().getItemMeta() == null) return; if(e.getCurrentItem().getItemMeta().getDisplayName().contains("Change Time")) { e.setCancelled(true); e.getWhoClicked().closeInventory(); e.getWhoClicked().openInventory(timeChange); } } public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { if(cmd.getName().equalsIgnoreCase("admin")) { Player p = (Player) sender; p.openInventory(main); } return true; } } all thats been changed is that a onEnable has been added and the events register was moved into there. Also the inventories have been changed the public static instead of private.
I did notice in your plugin.yml that you are missing an indentation. It should be like this, unless that's just a formatting issue on the forums: Code: name: AdminControls version: 1.0 main: me.rf2minecraft.AdminControls.AdminControls commands: admin: description: Opens controls.
rf2minecraft check the build path for your other plugins, or temporary remove other plugins. If that does not work give us a screen shot of you exporting it. Edit: Also try removing 'final' for the class. I don't know if that can be it, but I know that I never have mine set up that way.
rf2minecraft What is the full stacktrace? Also, your plugin is not supposed to have a constructor, you can just have initializer braces or a method that you call in the onEnable().
rf2minecraft Okay got it. Use this for your plugin.yml: Code: name: AdminControls version: 1.0 main: me.rf2minecraft.AdminControls.AdminControls commands: admin: description: Opens controls. And use this code: Code:java package me.rf2minecraft.AdminControls; import org.bukkit.Bukkit;import org.bukkit.ChatColor;import org.bukkit.DyeColor;import org.bukkit.Material;import org.bukkit.command.Command;import org.bukkit.command.CommandSender;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.material.Wool;import org.bukkit.plugin.java.JavaPlugin; public final class AdminControls extends JavaPlugin implements Listener { public static Inventory main; public static Inventory timeChange; public ItemStack dayItem, nightItem; public void onEnable() { Bukkit.getServer().getPluginManager().registerEvents(this, this); } public AdminControls() { main = Bukkit.getServer().createInventory(null, 9, "Admin Controls"); /*ItemMeta tim = main.getItem(2).getItemMeta(); ItemMeta wim = main.getItem(6).getItemMeta();*/ //These two line will cause a nullPointer. Be sure to check if it is not null. /*tim.setDisplayName(ChatColor.DARK_RED + "Change Time"); wim.setDisplayName(ChatColor.DARK_RED + "Change Weather"); main.getItem(2).setItemMeta(tim); main.getItem(6).setItemMeta(wim); main.setItem(2, new ItemStack(Material.WATCH, 1)); main.setItem(6, new ItemStack(Material.BLAZE_ROD, 1));*/ timeChange = Bukkit.getServer().createInventory(null, 9, "Admin Controls"); dayItem = createItem(DyeColor.GREEN, ChatColor.DARK_RED + "Day"); nightItem = createItem(DyeColor.BLACK, ChatColor.DARK_RED + "Night"); timeChange.setItem(2, dayItem); // Sets item in slot 2 to green wool timeChange.setItem(6, nightItem); // Sets item in slot 6 to black wool } private ItemStack createItem(DyeColor dc, String name) { ItemStack i = new Wool(dc).toItemStack(1); ItemMeta im = i.getItemMeta(); im.setDisplayName(name); i.setItemMeta(im); return i; } @EventHandler public void onInventoryClick(InventoryClickEvent e) { if(!e.getInventory().getName().equalsIgnoreCase(main.getName())) return; if(e.getCurrentItem().getItemMeta() == null) return; if(e.getCurrentItem().getItemMeta().getDisplayName().contains("Change Time")) { e.setCancelled(true); e.getWhoClicked().closeInventory(); e.getWhoClicked().openInventory(timeChange); } } public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { if(cmd.getName().equalsIgnoreCase("admin")) { Player p = (Player) sender; p.openInventory(main); } return true; }}
Code: package me.rf2minecraft.AdminControls; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.DyeColor; import org.bukkit.Material; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; 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.material.Wool; import org.bukkit.plugin.java.JavaPlugin; public final class AdminControls extends JavaPlugin implements Listener { public static Inventory main; public static Inventory timeChange; public ItemStack dayItem, nightItem; public void onEnable() { Bukkit.getServer().getPluginManager().registerEvents(this, this); } public AdminControls() { main = Bukkit.getServer().createInventory(null, 9, "Admin Controls"); /*ItemMeta tim = main.getItem(2).getItemMeta(); ItemMeta wim = main.getItem(6).getItemMeta();*/ //These two line will cause a nullPointer. Be sure to check if it is not null. /*tim.setDisplayName(ChatColor.DARK_RED + "Change Time"); wim.setDisplayName(ChatColor.DARK_RED + "Change Weather"); main.getItem(2).setItemMeta(tim); main.getItem(6).setItemMeta(wim);*/ main.setItem(2, new ItemStack(Material.WATCH, 1)); main.setItem(6, new ItemStack(Material.BLAZE_ROD, 1)); timeChange = Bukkit.getServer().createInventory(null, 9, "Admin Controls"); dayItem = createItem(DyeColor.GREEN, ChatColor.DARK_RED + "Day"); nightItem = createItem(DyeColor.BLACK, ChatColor.DARK_RED + "Night"); timeChange.setItem(2, dayItem); // Sets item in slot 2 to green wool timeChange.setItem(6, nightItem); // Sets item in slot 6 to black wool } private ItemStack createItem(DyeColor dc, String name) { ItemStack i = new Wool(dc).toItemStack(1); ItemMeta im = i.getItemMeta(); im.setDisplayName(name); i.setItemMeta(im); return i; } @EventHandler public void onInventoryClick(InventoryClickEvent e) { if(!e.getInventory().getName().equalsIgnoreCase(main.getName())) return; if(e.getCurrentItem().getItemMeta() == null) return; if(e.getCurrentItem().getItemMeta().getDisplayName().contains("Change Time")) { e.setCancelled(true); e.getWhoClicked().closeInventory(); e.getWhoClicked().openInventory(timeChange); } } public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { if(cmd.getName().equalsIgnoreCase("admin")) { Player p = (Player) sender; p.openInventory(main); } return true; } } try this.
rf2minecraft He commented out the part here you add items to the inventory. Uncomment lines 37-38 but the others need to be set before adding ItemMeta
rf2minecraft I took those lines out because they caused a null pointer. You need to make sure the item exists. rf2minecraft Oh and just to let you know your problem was with you plugin.yml. On the 4th line you had a blank space. I took that away and it works. EDIT by Moderator: merged posts, please use the edit button instead of double posting.
I know. I uncommented them aswell as fixing the item meta arrangement. ;/ Still doesn't work. I've done that, still doesn't work? There is no stacktrace. all it was saying was it could not be found. EDIT by Moderator: merged posts, please use the edit button instead of double posting.