Solved {Hat Plugin} Player heads as hat

Discussion in 'Plugin Development' started by SnelleFrikandel, Jun 3, 2014.

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

    SnelleFrikandel

    Hi guys,

    so i am making a Hat plugin for a server. And i want to have some of the players their hat in the menu. So i know that it is something like this.. With the material.SKULL . But how do you use player hats?

    Code:java
    1. ItemStack h30 = new ItemStack(Material.SKULL);
    2. ItemMeta m30 = h30.getItemMeta();
    3. m30.setDisplayName(ChatColor.RED + "");
    4. h30.setItemMeta(m30);
    5. inv.setItem(8, h30);
     
  2. Offline

    xize

    SnelleFrikandel

    lets asume the variable p is the Player instance.

    then just do:

    p.setHelmet(itemstack);

    -edit-
    its p.getInventory().setHelmet(itemstack);
     
  3. Offline

    SnelleFrikandel

    xize I know, Thats easy. The point is how do i get a head (SKULL) of a player...

    And Second of all, If you want to do that you need to make a InventoryClickEvent...
     
  4. Offline

    xize

    SnelleFrikandel

    to make a menu you should use the InventoryClickEvent in a custom one, for the custom skull you could do:

    Code:
    ItemStack item = new ItemStack(MATERIAL.SKULL_ITEM, 1, (short)3);
    SkullMeta meta = (SkullMeta)item.getItemMeta();
    meta.setOwner("123");
    item.setItemMeta(meta);
    
     
  5. Offline

    SnelleFrikandel

    xize Thanks that worked, So this is my PlayerClickInventoryEvent: (Part of it)

    Code:java
    1.  
    2. ItemStack item = new ItemStack(Material.SKULL_ITEM, 1, (short)3);
    3. SkullMeta meta = (SkullMeta)item.getItemMeta();
    4. meta.setOwner("EpicDuck13");
    5. item.setItemMeta(meta);
    6.  
    7. } else {
    8. if (e.getCurrentItem().getType() == Material.SKULL_ITEM) {
    9. p.getInventory().setHelmet(item);
    10. p.sendMessage(ChatColor.GREEN + "[Emporior] " + ChatColor.GRAY + "Enjoy EpicDuck13's hat!");
    11. p.closeInventory();


    And this my PlayerInteractEvent code:

    Code:java
    1. ItemStack h30 = new ItemStack(Material.SKULL_ITEM, 1, (short)3);
    2. SkullMeta m30 = (SkullMeta)h30.getItemMeta();
    3. m30.setDisplayName(ChatColor.RED + "EpicDUck13");
    4. m30.setOwner("EpicDuck13");
    5. h30.setItemMeta(m30);
    6. inv.setItem(4, h30);


    One more thing.. If i am making more player hats, and for al of them is in the inventory the item a skull. How can i check wich one is wich?
     
  6. Offline

    NathanWolf

    I've never seen a player head show up in the inventory ... I know people use these for menus, so maybe it's possible, but I would like to know as well!
     
  7. Offline

    SnelleFrikandel

  8. Offline

    Aqua

    NathanWolf likes this.
  9. Offline

    SnelleFrikandel

    Aqua I saw that, Do you know how i can make that if i use more player hats, and for al of them is in the inventory the item a skull. How can i check wich one is wich?

    fireblast709 Do you know that? Post above,,

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

    Aqua

    SnelleFrikandel
    Code:java
    1.  
    2. String owner = skullMeta.getOwner();
    3.  

    or
    Code:java
    1.  
    2. String owner = skullMeta.getDisplayName(); //This one also returns color codes!
    3.  
     
  11. Offline

    SnelleFrikandel

    Aqua It gives a error...

    Code:java
    1. @EventHandler
    2. public void z(InventoryClickEvent e) {
    3. Player p = (Player) e.getWhoClicked();
    4.  
    5. String owner1 = skullMeta.getOwner();
    6. ItemStack item = new ItemStack(Material.SKULL_ITEM, 1, (short)3);
    7. SkullMeta meta = (SkullMeta)item.getItemMeta();
    8. meta.setOwner(owner1);
    9. item.setItemMeta(meta);
    10.  
    11.  
    12. if(e.getInventory().getName().equalsIgnoreCase(ChatColor.RED + "" + ChatColor.BOLD + "Choose your head!")) {
    13. if(e.getCurrentItem().getType() == Material.SKULL_ITEM) {
    14. p.getInventory().setHelmet(item);
    15. p.sendMessage(ChatColor.GREEN + "[Emporior] " + ChatColor.GRAY + "Enjoy EpicDuck13's hat!");
    16. p.closeInventory();
    17. }
    18. }
    19. }


    This is my code, And the error is under the word skullMeta at skullMeta.getOwner();
     
  12. Offline

    Aqua

    SnelleFrikandel
    replace skullMeta with the meta variable you use for SkullMeta (in this case meta)
     
  13. Offline

    SnelleFrikandel

    Aqua Now the o1 gives a error
    At meta.setOwner(o1);

    Code:java
    1. ItemStack item = new ItemStack(Material.SKULL_ITEM, 1, (short)3);
    2. SkullMeta meta = (SkullMeta)item.getItemMeta();
    3. meta.setOwner(o1);
    4. item.setItemMeta(meta);
    5. String o1 = meta.getOwner();


    Fixed it

    Aqua That workes, Only i get a Steve hat now,,,

    The whole code:

    Code:java
    1. package nl.SnelleFrikandel.Lobby.hats;
    2.  
    3. import org.bukkit.ChatColor;
    4. import org.bukkit.Material;
    5. import org.bukkit.entity.Player;
    6. import org.bukkit.event.EventHandler;
    7. import org.bukkit.event.Listener;
    8. import org.bukkit.event.block.Action;
    9. import org.bukkit.event.inventory.InventoryClickEvent;
    10. import org.bukkit.event.player.PlayerInteractEvent;
    11. import org.bukkit.inventory.Inventory;
    12. import org.bukkit.inventory.ItemStack;
    13. import org.bukkit.inventory.meta.ItemMeta;
    14. import org.bukkit.inventory.meta.SkullMeta;
    15.  
    16. public class Heads implements Listener {
    17. public Inventory inv = null;
    18.  
    19. @EventHandler
    20. public void g(PlayerInteractEvent e) {
    21. Player p = e.getPlayer();
    22. if(e.getAction() == Action.RIGHT_CLICK_AIR || e.getAction() == Action.RIGHT_CLICK_BLOCK) {
    23. if(e.getMaterial().equals(Material.SKULL_ITEM)) {
    24. inv = p.getServer().createInventory(null, 36, ChatColor.RED + "" + ChatColor.BOLD + "Choose your head!");
    25.  
    26. ItemStack h1 = new ItemStack(Material.NETHER_STAR);
    27. ItemMeta m1 = h1.getItemMeta();
    28. m1.setDisplayName(ChatColor.RED + "Remove your hat!");
    29. h1.setItemMeta(m1);
    30. inv.setItem(0, h1);
    31.  
    32. ItemStack h2 = new ItemStack(Material.NETHER_STAR);
    33. ItemMeta m2 = h2.getItemMeta();
    34. m2.setDisplayName(ChatColor.RED + "Remove your hat!");
    35. h2.setItemMeta(m2);
    36. inv.setItem(8, h2);
    37.  
    38. ItemStack h3 = new ItemStack(Material.SKULL_ITEM, 1, (short)3);
    39. SkullMeta m3 = (SkullMeta)h3.getItemMeta();
    40. m3.setDisplayName(ChatColor.GREEN + "[Developer] " + ChatColor.GRAY + "EpicDuck13");
    41. m3.setOwner("EpicDuck13");
    42. h3.setItemMeta(m3);
    43. inv.setItem(10, h3);
    44.  
    45. ItemStack h4 = new ItemStack(Material.SKULL_ITEM, 1, (short)3);
    46. SkullMeta m4 = (SkullMeta)h4.getItemMeta();
    47. m4.setDisplayName(ChatColor.RED + "[Owner] " + ChatColor.GRAY + "MrRedPanda99");
    48. m4.setOwner("MrRedPanda99");
    49. h4.setItemMeta(m4);
    50. inv.setItem(11, h4);
    51.  
    52. ItemStack h5 = new ItemStack(Material.SKULL_ITEM, 1, (short)3);
    53. SkullMeta m5 = (SkullMeta)h5.getItemMeta();
    54. m5.setDisplayName(ChatColor.RED + "[Owner] " + ChatColor.GRAY + "_Schildpad_");
    55. m5.setOwner("_Schildpad_");
    56. h5.setItemMeta(m5);
    57. inv.setItem(12, h5);
    58.  
    59. ItemStack h6 = new ItemStack(Material.SKULL_ITEM, 1, (short)3);
    60. SkullMeta m6 = (SkullMeta)h6.getItemMeta();
    61. m6.setDisplayName(ChatColor.RED + "[Owner] " + ChatColor.GRAY + "Zoiderss");
    62. m6.setOwner("Zoiderss");
    63. h6.setItemMeta(m6);
    64. inv.setItem(13, h6);
    65.  
    66. ItemStack h7 = new ItemStack(Material.SKULL_ITEM, 1, (short)3);
    67. SkullMeta m7 = (SkullMeta)h7.getItemMeta();
    68. m7.setDisplayName(ChatColor.RED + "[Owner] " + ChatColor.GRAY + "Brent038");
    69. m7.setOwner("Brent038");
    70. h7.setItemMeta(m7);
    71. inv.setItem(14, h7);
    72. p.openInventory(inv);
    73. }
    74. }
    75. }
    76.  
    77.  
    78. @EventHandler
    79. public void Hats(InventoryClickEvent e) {
    80. Player p = (Player) e.getWhoClicked();
    81.  
    82. ItemStack item = new ItemStack(Material.SKULL_ITEM, 1, (short)3);
    83. SkullMeta meta = (SkullMeta)item.getItemMeta();
    84. String o1 = meta.getOwner();
    85. meta.setOwner(o1);
    86. item.setItemMeta(meta);
    87.  
    88.  
    89. if(e.getInventory().getName().equalsIgnoreCase(ChatColor.RED + "" + ChatColor.BOLD + "Choose your head!")) {
    90. if(e.getCurrentItem().getType() == Material.SKULL_ITEM) {
    91. p.getInventory().setHelmet(item);
    92. p.sendMessage(ChatColor.GREEN + "[Emporior] " + ChatColor.GRAY + "Enjoy " + o1 + "hat!");
    93. p.closeInventory();
    94. }
    95. }
    96. }
    97.  
    98. }
    99.  


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

    Aqua

    SnelleFrikandel
    SkullMeta meta = (SkullMeta)item.getItemMeta();
    replace this with:
    SkullMeta meta = (SkullMeta)event.getCurrentItem().getItemMeta();

    At line 83 in the above code snippet.
     
  15. Offline

    SnelleFrikandel

    Aqua Thanks! It works
     
Thread Status:
Not open for further replies.

Share This Page