Solved Open Gui with Command

Discussion in 'Plugin Development' started by TheLittleDeveloper, Nov 5, 2014.

Thread Status:
Not open for further replies.
  1. Hey,
    can someone help me?

    i want that the gui opens with a command!
    can someone make that with this code
    |
    |
    |
    Code:java
    1. package me.barslecht.tlcmenu;
    2.  
    3. import org.bukkit.Bukkit;
    4. import org.bukkit.ChatColor;
    5. import org.bukkit.Location;
    6. import org.bukkit.Material;
    7. import org.bukkit.entity.Player;
    8. import org.bukkit.event.EventHandler;
    9. import org.bukkit.event.Listener;
    10. import org.bukkit.event.block.Action;
    11. import org.bukkit.event.inventory.InventoryClickEvent;
    12. import org.bukkit.event.player.PlayerInteractEvent;
    13. import org.bukkit.event.player.PlayerJoinEvent;
    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. public class Menu extends JavaPlugin implements Listener {
    20.  
    21. public void onEnable() {
    22. getServer().getPluginManager().registerEvents(this, this);
    23. }
    24.  
    25. private void teleportInWorld(Player player,int x,int y,int z){
    26. player.teleport(new Location(player.getWorld(), x, y, z));
    27. }
    28.  
    29. private void openGui(Player player){
    30. Inventory inv = Bukkit.createInventory(null, 9, ChatColor.DARK_GREEN + "Server Selector");
    31.  
    32. ItemStack SurvivalGames = new ItemStack (Material.DIAMOND_SWORD);
    33. ItemMeta SurvivalGamesMeta = SurvivalGames.getItemMeta();
    34.  
    35. ItemStack RunFormTheBeast = new ItemStack (Material.QUARTZ);
    36. ItemMeta RunFormTheBeastMeta = SurvivalGames.getItemMeta();
    37.  
    38. SurvivalGamesMeta.setDisplayName(ChatColor.GREEN + "SurvivalGames");
    39. SurvivalGames.setItemMeta(SurvivalGamesMeta);
    40.  
    41. RunFormTheBeastMeta.setDisplayName(ChatColor.AQUA + "Run Form The Beast");
    42. RunFormTheBeast.setItemMeta(RunFormTheBeastMeta);
    43.  
    44. inv.setItem(3, SurvivalGames);
    45. inv.setItem(5, RunFormTheBeast);
    46.  
    47. player.openInventory(inv);
    48. }
    49.  
    50. @EventHandler
    51. public void onInventoryClick(InventoryClickEvent event) {
    52. if(!ChatColor.stripColor(event.getInventory().getName()).equalsIgnoreCase("Server Selector"))
    53. return;
    54. Player player = (Player) event.getWhoClicked();
    55. event.setCancelled(true);
    56.  
    57. if(event.getCurrentItem()==null || event.getCurrentItem().getType()==Material.AIR||!event.getCurrentItem().hasItemMeta()){
    58. player.closeInventory();
    59. return;
    60. }
    61.  
    62. switch (event.getCurrentItem().getType()) {
    63. case DIAMOND_SWORD:
    64. teleportInWorld(player, 631, 501, 832);
    65. player.closeInventory();
    66. break;
    67. case QUARTZ:
    68. teleportInWorld(player, 50, 1240, 674);
    69. player.closeInventory();
    70. break;
    71. default:
    72. player.closeInventory();
    73. break;
    74. }
    75. }
    76.  
    77. @EventHandler
    78. public void onPlayerJoin(PlayerJoinEvent event){
    79. event.getPlayer().getInventory().addItem(new ItemStack(Material.COMPASS));
    80. }
    81.  
    82. @EventHandler
    83. public void onPlayerInteract(PlayerInteractEvent event) {
    84. Action a = event.getAction();
    85. ItemStack is = event.getItem();
    86.  
    87. if(a == Action.PHYSICAL || is == null || is.getType()==Material.AIR)
    88. return;
    89.  
    90. if (is.getType() == Material.COMPASS)
    91. openGui(event.getPlayer());
    92. }
    93. }


    Thanks for helping me!

    greetis littledeveloper
     
  2. Offline

    Watto

    TheLittleDeveloper

    I don't really know what your problem is but onPlayerInteract you need to make sure event.getItem doesn't equal null. If the player has nothing in there hand it returns null.
     
  3. i want that i can open that inventory gui with a command like /gui or something
     
  4. Offline

    Watto

    TheLittleDeveloper

    ... :confused:

    look at the onCommand method...?
    How much of that code is yours? The first thing most people learn when it comes to Bukkit programming is the onCommand method.. xD
     
  5. yes but this is with a inventory gui and not with a Command for items do you now?
     
  6. Offline

    Unica

    TheLittleDeveloper

    Code:java
    1. onCommand(){
    2. if(command.equals("openGui"){
    3. openGui(player);
    4. }
    5. }


    Pseudo code ^
     
  7. and where must i paste this?
     
  8. Offline

    jimbo8

    That code won't work. openGui is a method you have to create. To create a GUI, you need to make an inventory first. Create the itemstacks you want for the gui, then add them to the inventory with the correct meta.

    When you have created the display, you need to listen for the inventory click event, check the item clicked and do what you want it to do from there.
     
  9. Can you help me with that?
     
  10. Offline

    Watto

  11. Code:java
    1. package me.barslecht.slaghomemenu;
    2.  
    3. import org.bukkit.Bukkit;
    4. import org.bukkit.ChatColor;
    5. import org.bukkit.Location;
    6. import org.bukkit.Material;
    7. import org.bukkit.command.Command;
    8. import org.bukkit.command.CommandSender;
    9. import org.bukkit.entity.Player;
    10. import org.bukkit.event.EventHandler;
    11. import org.bukkit.event.Listener;
    12. import org.bukkit.event.block.Action;
    13. import org.bukkit.event.inventory.InventoryClickEvent;
    14. import org.bukkit.event.player.PlayerInteractEvent;
    15. import org.bukkit.event.player.PlayerJoinEvent;
    16. import org.bukkit.inventory.Inventory;
    17. import org.bukkit.inventory.ItemStack;
    18. import org.bukkit.inventory.meta.ItemMeta;
    19. import org.bukkit.plugin.java.JavaPlugin;
    20.  
    21. public class Menu extends JavaPlugin implements Listener {
    22.  
    23. public void onEnable() {
    24. getServer().getPluginManager().registerEvents(this, this);
    25. }
    26.  
    27. private void teleportInWorld(Player player,int x,int y,int z){
    28. player.teleport(new Location(player.getWorld(), x, y, z));
    29. }
    30.  
    31. private void openGui(Player player){
    32. Inventory inv = Bukkit.createInventory(null, 9, ChatColor.DARK_GREEN + "Minigames");
    33.  
    34. ItemStack aa = new ItemStack (Material.PAINTING);
    35. ItemMeta aaMeta = aa.getItemMeta();
    36.  
    37. ItemStack ab = new ItemStack (Material.PAPER);
    38. ItemMeta abMeta = aa.getItemMeta();
    39.  
    40. ItemStack kick = new ItemStack (Material.IRON_DOOR);
    41. ItemMeta kickMeta = aa.getItemMeta();
    42.  
    43. aaMeta.setDisplayName(ChatColor.GREEN + "SurvivalGames");
    44. aa.setItemMeta(aaMeta);
    45.  
    46. abMeta.setDisplayName(ChatColor.AQUA + "Run Form The Beast");
    47. ab.setItemMeta(abMeta);
    48.  
    49. kickMeta.setDisplayName(ChatColor.AQUA + "Get Kicked from the Server");
    50. kick.setItemMeta(kickMeta);
    51.  
    52. inv.setItem(1, aa);
    53. inv.setItem(2, ab);
    54. inv.setItem(3, kick);
    55.  
    56. player.openInventory(inv);
    57. }
    58.  
    59. @EventHandler
    60. public void onInventoryClick(InventoryClickEvent event) {
    61. if(!ChatColor.stripColor(event.getInventory().getName()).equalsIgnoreCase("Minigames"))
    62. return;
    63. Player player = (Player) event.getWhoClicked();
    64. event.setCancelled(true);
    65.  
    66. if(event.getCurrentItem()==null || event.getCurrentItem().getType()==Material.AIR||!event.getCurrentItem().hasItemMeta()){
    67. player.closeInventory();
    68. return;
    69. }
    70.  
    71. switch (event.getCurrentItem().getType()) {
    72. case PAINTING:
    73. teleportInWorld(player, 100, 530, 4753);
    74. player.sendMessage(ChatColor.AQUA + "TESTING MESSAGE");
    75. player.closeInventory();
    76. break;
    77. case DIAMOND_SWORD:
    78. player.sendMessage(ChatColor.AQUA + "You have been teleported to SurvivalGames");
    79. player.performCommand("openstatus");
    80. player.closeInventory();
    81. break;
    82. case IRON_DOOR:
    83. player.kickPlayer("");;
    84. player.closeInventory();
    85. break;
    86. default:
    87. player.closeInventory();
    88. break;
    89. }
    90. }
    91.  
    92. @EventHandler
    93. public void onPlayerJoin(PlayerJoinEvent event){
    94. event.getPlayer().getInventory().clear();
    95. event.getPlayer().getInventory().addItem(new ItemStack(Material.COMPASS));
    96. event.getPlayer().performCommand("spawn");
    97. }
    98.  
    99. @EventHandler
    100. public void onPlayerInteract(PlayerInteractEvent event) {
    101. Action a = event.getAction();
    102. ItemStack is = event.getItem();
    103.  
    104. if(a == Action.PHYSICAL || is == null || is.getType()==Material.AIR)
    105. return;
    106.  
    107. if (is.getType() == Material.COMPASS)
    108. openGui(event.getPlayer());
    109. }
    110. public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
    111. Player player = (Player) sender;
    112. if(commandLabel.equalsIgnoreCase("opengui")){
    113. player.hasPermission("gui.use");
    114. openGui(player);
    115. }
    116. return false;
    117. }
    118. }
     
  12. Offline

    haydenaa

    All you need to do is:
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
    Player player = (Player) sender;
    if(cmd.getName().equalsIgnoreCase("commandnamehere") {
    openGui(player);
    }
    Or as TheLittleDeveloper said it

    Oops sorry forgot the last } at the end of the onCommand statement :p

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Jun 14, 2016
  13. Offline

    JordyPwner

    You probably dont know java? check if its a player before castin >.< and it is: p.openinventory(inventoryname);
     
  14. Offline

    haydenaa

    JordyPwnerI know java probably as well as you do. True, I forgot to check if the sender was an instance of player, but both openGui and p.openinventory work. I have a plugin on my server that does this, but I use the openGui method.
     
Thread Status:
Not open for further replies.

Share This Page