Solved Inventory gui help

Discussion in 'Plugin Development' started by winitro, Aug 28, 2014.

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

    winitro

    Why is it that if a player clicks any item it opens the inventory...? when it's only supposed to be a book?
    Code:java
    1. package me.winitro.kits;
    2.  
    3. import org.bukkit.Bukkit;
    4. import org.bukkit.ChatColor;
    5. import org.bukkit.Material;
    6. import org.bukkit.entity.Player;
    7. import org.bukkit.event.EventHandler;
    8. import org.bukkit.event.Listener;
    9. import org.bukkit.event.block.Action;
    10. import org.bukkit.event.inventory.InventoryClickEvent;
    11. import org.bukkit.event.player.PlayerInteractEvent;
    12. import org.bukkit.event.player.PlayerJoinEvent;
    13. import org.bukkit.event.player.PlayerRespawnEvent;
    14. import org.bukkit.inventory.Inventory;
    15. import org.bukkit.inventory.ItemStack;
    16. import org.bukkit.inventory.meta.ItemMeta;
    17. import org.bukkit.plugin.java.JavaPlugin;
    18.  
    19.  
    20. public class Test extends JavaPlugin implements Listener {
    21.  
    22. public void onEnable() {
    23. getServer().getPluginManager().registerEvents(this, this);
    24. }
    25.  
    26. private void openGUI(Player player) {
    27. Inventory inv = Bukkit.createInventory(null, 9, ChatColor.AQUA +
    28. "[" + ChatColor.BLUE + player.getName() + ChatColor.AQUA + "] " + ChatColor.DARK_AQUA + "Your kits");
    29.  
    30. ItemStack sniper = new ItemStack(Material.BOW);
    31. ItemMeta sniperMeta = sniper.getItemMeta();
    32.  
    33. ItemStack archer = new ItemStack(Material.ARROW);
    34. ItemMeta archerMeta = archer.getItemMeta();
    35.  
    36. ItemStack stomper = new ItemStack(Material.IRON_BOOTS);
    37. ItemMeta stomperMeta = stomper.getItemMeta();
    38.  
    39. if(player.hasPermission("kits.sniper") || player.isOp()){
    40. sniperMeta.setDisplayName(ChatColor.GREEN + "Sniper");
    41. }else{
    42. sniperMeta.setDisplayName(ChatColor.RED + "Sniper");
    43. }
    44. if(player.hasPermission("kits.archer") || player.isOp()){
    45. archerMeta.setDisplayName(ChatColor.GREEN + "Archer");
    46. }else{
    47. archerMeta.setDisplayName(ChatColor.RED + "Archer");
    48. }
    49. if(player.hasPermission("kits.stomper") || player.isOp()){
    50. stomperMeta.setDisplayName(ChatColor.GREEN + "Stomper");
    51. }else{
    52. stomperMeta.setDisplayName(ChatColor.RED + "Stomper");
    53. }
    54.  
    55. sniper.setItemMeta(sniperMeta);
    56. archer.setItemMeta(archerMeta);
    57. stomper.setItemMeta(stomperMeta);
    58.  
    59. inv.setItem(0, sniper);
    60. inv.setItem(8, archer);
    61. inv.setItem(4, stomper);
    62.  
    63. player.openInventory(inv);
    64. }
    65.  
    66. @EventHandler
    67. public void onInventoryClick(InventoryClickEvent event) {
    68. Player player = (Player) event.getWhoClicked();
    69. if (!ChatColor.stripColor(event.getInventory().getName())
    70. .equalsIgnoreCase("[" + player.getName() + "] " + "Your kits"))
    71. return;
    72. event.setCancelled(true);
    73.  
    74. if (event.getCurrentItem() == null
    75. || event.getCurrentItem().getType() == Material.AIR
    76. || !event.getCurrentItem().hasItemMeta()) {
    77. player.closeInventory();
    78. return;
    79. }
    80.  
    81. switch (event.getCurrentItem().getType()) {
    82. case BOW:
    83. player.closeInventory();
    84. if(player.hasPermission("kits.sniper")){
    85. player.sendMessage("Stomper message sent");
    86. }else{
    87. if(!player.hasPermission("kits.sniper")){
    88. player.sendMessage(ChatColor.DARK_RED + player.getName() + " You do not have perms to that kit");
    89. }
    90. }
    91. break;
    92. case ARROW:
    93. player.closeInventory();
    94. if(player.hasPermission("kits.archer")){
    95. player.sendMessage("Archer message sent");
    96. }else{
    97. if(!player.hasPermission("kits.archer")){
    98. player.sendMessage(ChatColor.DARK_RED + player.getName() + " You do not have perms to that kit");
    99. }
    100. }
    101. break;
    102. case IRON_BOOTS:
    103. player.closeInventory();
    104. if(player.hasPermission("kits.stomper")){
    105. player.sendMessage("Stomper message sent");
    106. }else{
    107. if(!player.hasPermission("kits.stomper")){
    108. player.sendMessage(ChatColor.DARK_RED + player.getName() + " You do not have perms to that kit");
    109. }
    110. }
    111. break;
    112.  
    113.  
    114.  
    115. default:
    116. player.closeInventory();
    117. break;
    118. }
    119. }
    120.  
    121. @EventHandler
    122. public void onPlayerJoin(PlayerJoinEvent event) {
    123. Player player = event.getPlayer();
    124. ItemStack book = new ItemStack(Material.BOOK);
    125. ItemMeta tm = book.getItemMeta();
    126. tm.setDisplayName( "§2[" + "§a" + player.getName() + "§2] " + "§bKit selector");
    127. book.setItemMeta(tm);
    128. player.getInventory().addItem(new ItemStack(book));
    129.  
    130. }
    131. @EventHandler
    132. public void onPlayerRespawn(PlayerRespawnEvent e){
    133. Player player = e.getPlayer();
    134. ItemStack book = new ItemStack(Material.BOOK);
    135. ItemMeta tm = book.getItemMeta();
    136. tm.setDisplayName( "§2[" + "§a" + player.getName() + "§2] " + "§bKit selector");
    137. book.setItemMeta(tm);
    138. player.getInventory().addItem(new ItemStack(book));
    139.  
    140. }
    141.  
    142. @EventHandler
    143. public void onPlayerInteract(PlayerInteractEvent event) {
    144. Action a = event.getAction();
    145. ItemStack is = event.getItem();
    146.  
    147. if (is.getType() == Material.BOOK);
    148. openGUI(event.getPlayer());
    149.  
    150. if (a == Action.PHYSICAL || is == null || is.getType() == Material.AIR)
    151. return;
    152.  
    153. if (is.getType() == Material.BOOK);
    154. openGUI(event.getPlayer());
    155.  
    156. }
    157. }
     
  2. Offline

    Skionz

    All your ifs have semicolons after then not start brackets, try this on interact.
    Try
    Code:
    if (event.getPlayer().getItemInHand().getType() == Material.BOOK) {
      //open inv and stuff
    }
     
  3. Offline

    winitro

    It didn't work.

    It can still be opened with any item

    Nvm it did work :p I just forgot to remove something thanks for the help!

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Jun 10, 2016
Thread Status:
Not open for further replies.

Share This Page