Inventory

Discussion in 'Plugin Development' started by Onlineids, Mar 21, 2014.

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

    Onlineids

    So I am trying to make it so players cant move this gold nugget put into there enderchest ever as it is gonna be used later in the plugin. I set it up with multiple events involving inventory movement and cancelling them but i can still move it all around.

    Code:java
    1. package me.online.Bank;
    2.  
    3. import java.util.ArrayList;
    4.  
    5. import org.bukkit.ChatColor;
    6. import org.bukkit.Material;
    7. import org.bukkit.event.Event.Result;
    8. import org.bukkit.event.EventHandler;
    9. import org.bukkit.event.inventory.InventoryClickEvent;
    10. import org.bukkit.event.inventory.InventoryDragEvent;
    11. import org.bukkit.inventory.ItemStack;
    12.  
    13. public class Events extends Main{
    14. public void onEnable() {
    15. getServer().getPluginManager().registerEvents(this, this);
    16. }
    17.  
    18.  
    19.  
    20. @EventHandler
    21. public void onInventoryDrag(InventoryDragEvent event) {
    22. ItemStack item = new ItemStack(Material.GOLD_NUGGET,1 );
    23. ArrayList<String> lore;
    24. lore = new ArrayList<String>();
    25. lore.add(ChatColor.GOLD + "Right-Click" + ChatColor.GREEN + " to make a Check");
    26. lore.add(ChatColor.GOLD + "Left-Click" + ChatColor.GREEN + " to withdrawal nuggets");
    27. lore.add(ChatColor.GREEN + "Put Gold Nuggets into Bank to Deposit");
    28. item.getItemMeta().setLore(lore);
    29. if(event.getCursor().getItemMeta().getLore().equals(lore)){
    30. event.setResult(Result.DENY);
    31. event.setCancelled(true);
    32. }
    33.  
    34.  
    35.  
    36.  
    37.  
    38. }
    39.  
    40. @EventHandler
    41. public void onMove(InventoryClickEvent event){
    42. ItemStack item = new ItemStack(Material.GOLD_NUGGET,1 );
    43. ArrayList<String> lore;
    44. lore = new ArrayList<String>();
    45. lore.add(ChatColor.GOLD + "Right-Click" + ChatColor.GREEN + " to make a Check");
    46. lore.add(ChatColor.GOLD + "Left-Click" + ChatColor.GREEN + " to withdrawal nuggets");
    47. lore.add(ChatColor.GREEN + "Put Gold Nuggets into Bank to Deposit");
    48. item.getItemMeta().setLore(lore);
    49. if(event.getCursor().getItemMeta().getLore().equals(lore) || event.getCurrentItem().getItemMeta().getLore().equals(lore)){
    50. event.setCancelled(true);
    51. event.setResult(Result.DENY);
    52.  
    53. }
    54. }
    55. }
     
  2. Offline

    97WaterPolo

    Onlineids
    Try InventoryClickEvent, might be a better event, also, cancel shift clicking otherwise you can bypass that.
     
  3. Offline

    Onlineids

    Inventory click event is there (Scroll down) the problem is they dont work i can still move the nugget anywhere around the echest
     
  4. Offline

    tommyhoogstra

    Code:java
    1. if(e.getCurrentItem().getItemMeta().getDisplayName().contains("Golden Nugget")){
    2. e.setCancelled(true);
    3. }
    4.  
    5.  


    Put that into an inventory click event and walaa?

    Edit: actually I think that lets them pick them up and place still,

    I had to add

    Code:java
    1. e.getWhoClicked().closeInventory();
     
  5. Offline

    Onlineids

    Problem is gold nugget is a common item and i have it getting the lore so they can move other gold nuggets
     
  6. Offline

    tommyhoogstra

    Give the nugget a different name?
    E.g. call it Shop
    and change my code to
    Code:
    if(e.getCurrentItem().getItemMeta().getDisplayName().contains("Shop")){
     
  7. Offline

    Onlineids

    Tried that didnt work
    Code:java
    1. package me.online.Bank;
    2.  
    3. import java.util.ArrayList;
    4.  
    5. import org.bukkit.ChatColor;
    6. import org.bukkit.Material;
    7. import org.bukkit.event.Event.Result;
    8. import org.bukkit.event.EventHandler;
    9. import org.bukkit.event.inventory.InventoryClickEvent;
    10. import org.bukkit.event.inventory.InventoryDragEvent;
    11. import org.bukkit.inventory.ItemStack;
    12.  
    13. public class Events extends Main{
    14. public void onEnable() {
    15. getServer().getPluginManager().registerEvents(this, this);
    16. }
    17.  
    18.  
    19.  
    20. @EventHandler
    21. public void onInventoryDrag(InventoryDragEvent event) {
    22. ItemStack item = new ItemStack(Material.GOLD_NUGGET,1 );
    23. ArrayList<String> lore;
    24. lore = new ArrayList<String>();
    25. lore.add(ChatColor.GOLD + "Right-Click" + ChatColor.GREEN + " to make a Check");
    26. lore.add(ChatColor.GOLD + "Left-Click" + ChatColor.GREEN + " to withdrawal nuggets");
    27. lore.add(ChatColor.GREEN + "Put Gold Nuggets into Bank to Deposit");
    28. item.getItemMeta().setLore(lore);
    29. if(event.getCursor().getItemMeta().getDisplayName().contains("nuggets")){
    30. event.setResult(Result.DENY);
    31. event.setCancelled(true);
    32. }
    33.  
    34.  
    35.  
    36.  
    37.  
    38. }
    39.  
    40. @EventHandler
    41. public void onMove(InventoryClickEvent event){
    42. ItemStack item = new ItemStack(Material.GOLD_NUGGET,1 );
    43. ArrayList<String> lore;
    44. lore = new ArrayList<String>();
    45. lore.add(ChatColor.GOLD + "Right-Click Me" + ChatColor.GREEN + " to make a Check");
    46. lore.add(ChatColor.GOLD + "Left-Click Me" + ChatColor.GREEN + " to withdrawal Gold Nuggets");
    47. lore.add(ChatColor.GREEN + "Put Gold Nuggets into Bank to Deposit");
    48. item.getItemMeta().setLore(lore);
    49. if(event.getCursor().getItemMeta().getDisplayName().contains("nuggets") || event.getCurrentItem().getItemMeta().getDisplayName().contains("nuggets")){
    50. event.setCancelled(true);
    51. event.setResult(Result.DENY);
    52. }
    53. }
    54. }
     
Thread Status:
Not open for further replies.

Share This Page