Ok So I recently made a plugin just patching some bugs the plugin will be out soon, and then I am basically finished with the Development but then I am able to edit the GUI? I know the test server isn't lagging but can someone please see why I am able to take the items out of the gui? Code: Code: package me.s1ant.infoplugin; import java.util.ArrayList; 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.entity.Player; import org.bukkit.event.EventHandler; 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.java.JavaPlugin; public class InfoPlugin extends JavaPlugin{ @Override public void onEnable() { System.out.println("InfoPlugin Has Been Enabled!"); reloadConfig(); saveConfig(); } @Override public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { if(cmd.getName().equalsIgnoreCase("info")){ if( sender instanceof Player){ if(args.length == 0){ Player p = (Player) sender; String website = getConfig().getString("website"); String ts = getConfig().getString("teamspeak"); ItemStack TS = new ItemStack(Material.PAPER); ItemMeta TSMeta = TS.getItemMeta(); ArrayList<String> tslore = new ArrayList<String>(); tslore.add(ts); TSMeta.setDisplayName(ChatColor.BLUE + "TEAMSPEAK"); TSMeta.setLore(tslore); TS.setItemMeta(TSMeta); ItemStack SITE = new ItemStack(Material.PAPER); ItemMeta SITEMeta = TS.getItemMeta(); ArrayList<String> sitelore = new ArrayList<String>(); sitelore.add(website); SITEMeta.setDisplayName(ChatColor.BLUE + "WEBSITE"); SITEMeta.setLore(sitelore); SITE.setItemMeta(SITEMeta); Inventory inv = Bukkit.createInventory(null, 9, ChatColor.RED + "TeamSpeak/Website"); p.openInventory(inv); inv.setItem(2, TS); inv.setItem(6, SITE); }else if(args.length == 1){ if(args[0].equalsIgnoreCase("reload")){ reloadConfig(); saveConfig(); sender.sendMessage(ChatColor.DARK_BLUE + "Configuration has been reloaded!"); }else { sender.sendMessage(ChatColor.RED + "Invalid SubCommand! Did you mean /info? Did you mean /info reload?"); } return true; } } } return true; } @EventHandler public void onClick (InventoryClickEvent e){ if(e.getInventory().getTitle().equals(ChatColor.RED + "TeamSpeak/Website")){ e.setCancelled(true); } } } If you also see anything that could also possibly lead to a bug then please let me know, THANKS!
@S1ant You are forgetting to register the Listener. Let the class inplement Listener and register the class.
Ok, I'm trying this now.... I Implemented Listener but, it still doesn't seem to work? Can you please help me some more? Here is My updated code: Code: package me.s1ant.infoplugin; import java.util.ArrayList; 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.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.java.JavaPlugin; public class InfoPlugin extends JavaPlugin implements Listener{ @Override public void onEnable() { System.out.println("InfoPlugin Has Been Enabled!"); reloadConfig(); saveConfig(); } @Override public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { if(cmd.getName().equalsIgnoreCase("info")){ if( sender instanceof Player){ if(args.length == 0){ Player p = (Player) sender; String website = getConfig().getString("website"); String ts = getConfig().getString("teamspeak"); ItemStack TS = new ItemStack(Material.PAPER); ItemMeta TSMeta = TS.getItemMeta(); ArrayList<String> tslore = new ArrayList<String>(); tslore.add(ts); TSMeta.setDisplayName(ChatColor.BLUE + "TEAMSPEAK"); TSMeta.setLore(tslore); TS.setItemMeta(TSMeta); ItemStack SITE = new ItemStack(Material.PAPER); ItemMeta SITEMeta = TS.getItemMeta(); ArrayList<String> sitelore = new ArrayList<String>(); sitelore.add(website); SITEMeta.setDisplayName(ChatColor.BLUE + "WEBSITE"); SITEMeta.setLore(sitelore); SITE.setItemMeta(SITEMeta); Inventory inv = Bukkit.createInventory(null, 9, ChatColor.RED + "TeamSpeak/Website"); p.openInventory(inv); inv.setItem(2, TS); inv.setItem(6, SITE); }else if(args.length == 1){ if(args[0].equalsIgnoreCase("reload")){ reloadConfig(); saveConfig(); sender.sendMessage(ChatColor.DARK_BLUE + "Configuration has been reloaded!"); }else { sender.sendMessage(ChatColor.RED + "Invalid SubCommand! Did you mean /info? Did you mean /info reload?"); } return true; } } } return true; } @EventHandler public void onClick (InventoryClickEvent e){ if(e.getInventory().getTitle().equals(ChatColor.RED + "TeamSpeak/Website")){ e.setCancelled(true); } } } THANKS
@S1ant Put this in your onEnable Code: Bukkit.getPluginManager().registerEvents(this, this); I'm guessing you're new at coding because this is pretty easy. I learned from youtube, books, and online.
@mehboss I did that but it didn't work it gave me an error message :/ Im not that stupid coding wise but I'll try anyways
@S1ant Your event is in your onEnable class so it should work. If it is not in your main do: Code: Bukkit.getPluginManager().getPlugin("yourplugin"); or get your main class from it.
getServer().getPluginManager().registerEvents(this,this); getServer().getPluginManager().registerEvents(new <classname>(),this);
@Disgastings Please post atleast some description of what each line does, whether to use one or both lines, or atleast say what it is meant to achieve.
@mehboss Thanks that worked! I had to mess with some things but I have now successfully published the Plugin!
Thanks to All who helped it is Successful!!! https://mods.curse.com/bukkit-plugins/minecraft/258830-iplugin THANKS BROS!!