Solved GUI Plugin having issues...

Discussion in 'Plugin Development' started by CodePlaysMC, May 16, 2014.

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

    CodePlaysMC

    So I've been creating a special GUI plugin for a server I'm developer on and for some reason, my plugin keeps having issues.

    Issues:
    1. Lores wont show up on openGUI.
    2. When given the item WATCH on player join, it isn't renaming itself to "MiniGame Selector"
    Here's the Main class:
    Code:java
    1. package me.CodePlaysMC.TeamCubedGUI;
    2.  
    3. import java.util.ArrayList;
    4. import java.util.Arrays;
    5.  
    6. import org.bukkit.Bukkit;
    7. import org.bukkit.ChatColor;
    8. import org.bukkit.Location;
    9. import org.bukkit.Material;
    10. import org.bukkit.entity.Player;
    11. import org.bukkit.event.EventHandler;
    12. import org.bukkit.event.Listener;
    13. import org.bukkit.event.block.Action;
    14. import org.bukkit.event.inventory.InventoryClickEvent;
    15. import org.bukkit.event.player.PlayerInteractEvent;
    16. import org.bukkit.event.player.PlayerJoinEvent;
    17. import org.bukkit.event.player.PlayerQuitEvent;
    18. import org.bukkit.inventory.Inventory;
    19. import org.bukkit.inventory.ItemStack;
    20. import org.bukkit.inventory.meta.ItemMeta;
    21. import org.bukkit.plugin.java.JavaPlugin;
    22.  
    23. public class Main extends JavaPlugin implements Listener {
    24.  
    25. public void onEnable() {
    26. getLogger().info("TeamCubedGUI has been enabled.");
    27. getServer().getPluginManager().registerEvents(this, this);
    28. getCommand("tcgui").setExecutor(new PlayerCommands());
    29. }
    30. private void teleportInWorld(Player player, int x, int y, int z) {
    31. player.teleport(new Location(player.getWorld(), x, y, z));
    32. }
    33.  
    34. private void openGUI(Player player) {
    35. Inventory inv = Bukkit.createInventory(null, 9, ChatColor.DARK_GREEN
    36. + "TeamCubed MiniGames");
    37.  
    38. ItemStack factions = new ItemStack(Material.IRON_SWORD);
    39. ItemMeta factionsMeta = factions.getItemMeta();
    40. ItemStack survival = new ItemStack(Material.WORKBENCH);
    41. ItemMeta survivalMeta = factions.getItemMeta();
    42. ItemStack mineZ = new ItemStack(Material.SKULL_ITEM, 1, (short) 2);
    43. ItemMeta mineZMeta = mineZ.getItemMeta();
    44. ItemStack oitc = new ItemStack(Material.BOW);
    45. ItemMeta oitcMeta = oitc.getItemMeta();
    46. ItemStack spleef = new ItemStack(Material.DIAMOND_SPADE);
    47. ItemMeta spleefMeta = spleef.getItemMeta();
    48. ItemStack sg = new ItemStack(Material.DIAMOND_SWORD);
    49. ItemMeta sgMeta = sg.getItemMeta();
    50.  
    51. survivalMeta.setDisplayName(ChatColor.GREEN + "Survival");
    52. survival.setItemMeta(survivalMeta);
    53. survivalMeta.setLore(Arrays.asList("Survive in the wilderness"));
    54.  
    55. factionsMeta.setDisplayName(ChatColor.GREEN + "Factions");
    56. factions.setItemMeta(factionsMeta);
    57.  
    58. mineZMeta.setDisplayName(ChatColor.GREEN + "Mine" + ChatColor.DARK_RED
    59. + "Z");
    60. mineZ.setItemMeta(mineZMeta);
    61. mineZMeta.setLore(Arrays.asList("Coming Soon!"));
    62.  
    63. oitcMeta.setDisplayName(ChatColor.GREEN + "One In The Chamber");
    64. oitc.setItemMeta(oitcMeta);
    65.  
    66. spleefMeta.setDisplayName(ChatColor.GREEN + "Spleef");
    67. spleef.setItemMeta(spleefMeta);
    68. spleefMeta.setLore(Arrays.asList("Coming Soon!"));
    69.  
    70. sgMeta.setDisplayName(ChatColor.GREEN + "Survival Games");
    71. sg.setItemMeta(sgMeta);
    72. sgMeta.setLore(Arrays.asList("Coming Soon!"));
    73.  
    74. inv.setItem(3, factions);
    75. inv.setItem(5, survival);
    76. inv.setItem(4, mineZ);
    77. inv.setItem(2, oitc);
    78. inv.setItem(6, spleef);
    79. inv.setItem(7, sg);
    80.  
    81. player.openInventory(inv);
    82. }
    83.  
    84. @EventHandler
    85. public void onInventoryClick(InventoryClickEvent event) {
    86. if (!ChatColor.stripColor(event.getInventory().getName())
    87. .equalsIgnoreCase("TeamCubed MiniGames"))
    88. return;
    89.  
    90. Player player = (Player) event.getWhoClicked();
    91. event.setCancelled(true);
    92.  
    93. if (event.getCurrentItem() == null
    94. || event.getCurrentItem().getType() == Material.AIR
    95. || !event.getCurrentItem().hasItemMeta()) {
    96. player.closeInventory();
    97. return;
    98. }
    99.  
    100. switch (event.getCurrentItem().getType()) {
    101. case IRON_SWORD:
    102. teleportInWorld(player, 70, 50, 20);
    103. player.closeInventory();
    104. player.sendMessage(ChatColor.GREEN + "Minigame"
    105. + ChatColor.DARK_GRAY + " >> " + ChatColor.GRAY
    106. + "You have been teleported to " + ChatColor.DARK_AQUA
    107. + "Factions" + ChatColor.GRAY + ".");
    108. break;
    109. case DIAMOND_SPADE:
    110. teleportInWorld(player, 70, 75, 20);
    111. player.closeInventory();
    112. player.sendMessage(ChatColor.GREEN + "Minigame"
    113. + ChatColor.DARK_GRAY + " >> " + ChatColor.GRAY
    114. + "You have been teleported to " + ChatColor.DARK_AQUA
    115. + "Spleef" + ChatColor.GRAY + ".");
    116. break;
    117. case WORKBENCH:
    118. player.performCommand("warp Survival");
    119. player.closeInventory();
    120. player.sendMessage(ChatColor.GREEN + "Minigame"
    121. + ChatColor.DARK_GRAY + " >> " + ChatColor.GRAY
    122. + "You have been teleported to " + ChatColor.DARK_AQUA
    123. + "Survival" + ChatColor.GRAY + ".");
    124. break;
    125. case SKULL_ITEM:
    126. player.performCommand("warp MineZ");
    127. player.closeInventory();
    128. player.sendMessage(ChatColor.GREEN + "Minigame"
    129. + ChatColor.DARK_GRAY + " >> " + ChatColor.GRAY
    130. + "You have been teleported to " + ChatColor.DARK_AQUA
    131. + "Mine" + ChatColor.DARK_RED + "Z" + ChatColor.GRAY + ".");
    132. break;
    133. case BOW:
    134. player.performCommand("warp OITC");
    135. player.closeInventory();
    136. player.sendMessage(ChatColor.GREEN + "Minigame"
    137. + ChatColor.DARK_GRAY + " >> " + ChatColor.GRAY
    138. + "You have been teleported to " + ChatColor.DARK_AQUA
    139. + "OITC" + ChatColor.GRAY + ".");
    140. break;
    141. case DIAMOND_SWORD:
    142. teleportInWorld(player, 1186, 108, 48);
    143. player.closeInventory();
    144. player.sendMessage(ChatColor.GREEN + "Minigame"
    145. + ChatColor.DARK_GRAY + " >> " + ChatColor.GRAY
    146. + "You have been teleported to " + ChatColor.DARK_AQUA
    147. + "Survival Games" + ChatColor.GRAY + ".");
    148. break;
    149. default:
    150. player.closeInventory();
    151. break;
    152. }
    153. }
    154.  
    155. @EventHandler
    156. public void clearInventory(PlayerQuitEvent event) {
    157. event.getPlayer().getInventory().clear();
    158. }
    159. public void onPlayerJoin(PlayerJoinEvent event) {
    160. ItemStack gui = new ItemStack(Material.WATCH);
    161. ItemMeta guiMeta = gui.getItemMeta();
    162. ArrayList<String> name = new ArrayList<String>();
    163. guiMeta.setDisplayName(ChatColor.DARK_GREEN + "MiniGame Selector");
    164. name.add(ChatColor.GREEN + "Select A MiniGame");
    165. guiMeta.setLore(name);
    166.  
    167. event.getPlayer().getInventory().addItem(new ItemStack(gui));
    168. }
    169.  
    170. @EventHandler
    171. public void onPlayerInteract(PlayerInteractEvent event) {
    172. Action a = event.getAction();
    173. ItemStack is = event.getItem();
    174.  
    175. if (a == Action.PHYSICAL || is == null || is.getType() == Material.AIR)
    176. return;
    177.  
    178. if (is.getType() == Material.WATCH);
    179. openGUI(event.getPlayer());
    180. }
    181. public void onDisable() {
    182. getLogger().info("TeamCubedGUI has been disabled.");
    183. }
    184. }


    Please help, I need to get this plugin done ASAP.
     
  2. 1. Try setting the lore before setting the meta to the item :)

    2. Your onPlayerJoin is missing the @EventHandler annotation
     
  3. Offline

    caseif

    Please post only relevant code, as it's a bit annoying to have to sift through the entire class. In regard to your issues, try debugging to see how far into the code the execution gets.

    Edit: Ninja'd, but keep the debugging comment in mind for any future problems.
     
    AdamQpzm likes this.
  4. ShadyPotato Potatoes aren't know for their speed :) But +1 for debugging - always the best way to start.
     
  5. Offline

    CodePlaysMC

    Thanks for the help!

    I put @EventHandler above it and it still didn't work :/

    But setting the lore before the item meta did work, so thanks!
     
  6. CodePlaysMC In your original snippet, you never set the meta
     
  7. Offline

    CodePlaysMC

    Thanks so much! I would have never guessed to put the item meta in it, thanks so much!!! :D
     
  8. Offline

    Commander9292

    CodePlaysMC
    By the way your code could be so much more efficient and better to look at.
    Code:
    public ItemStack createItem(Material material, int amount, short data, String name, List<String> lore) {
            ItemStack i = new ItemStack(material, amount, data);
            ItemMeta im = i.getItemMeta();
     
            if(name != null) {
                im.setDisplayName(name);
            }
     
            if(lore != null) {
                im.setLore(lore);
            }
         
            i.setItemMeta(im);
            return i;
        }
    Then you would use:
    Code:
    ItemStack itemStackName = createItem(Material, amount, data, name, lore);
    You can then add that item to the player's inventory like you normally would.
     
Thread Status:
Not open for further replies.

Share This Page