Help with shift click

Discussion in 'Plugin Development' started by arnie231, Aug 16, 2012.

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

    arnie231

    Some I'm trying to stop users from wearing a certain armour which i did but when 1,3 update came users could shift click to get the armour on how can i do that

    here is what i have already

    Code:java
    1. package com.arnie231.sip.Listeners;
    2.  
    3. import com.arnie231.sip.Main;
    4. import com.arnie231.sip.Util.Chat;
    5. import org.bukkit.entity.Player;
    6. import org.bukkit.event.EventHandler;
    7. import org.bukkit.event.EventPriority;
    8. import org.bukkit.event.Listener;
    9. import org.bukkit.event.inventory.InventoryClickEvent;
    10.  
    11.  
    12.  
    13. public class ArmourControl implements Listener
    14. {
    15.  
    16. @EventHandler(priority=EventPriority.NORMAL)
    17. public void onInventoryClick(InventoryClickEvent event)
    18. {
    19. Player player = (Player) event.getWhoClicked();
    20.  
    21. if ((Main.Config.getBoolean("Control.Armour") == true))
    22. {
    23. if ((event.getSlotType().name().equals("HELMET")) || (event.getSlotType().name().equals("ARMOR")) || (event.getSlotType().name().equals("LEGGINGS")) || (event.getSlotType().name().equals("BOOTS")))
    24. {
    25. if (event.getCursor() != null){
    26. int item = event.getCursor().getTypeId();
    27. if (!player.hasPermission("SIP.Armour.Leather"))
    28. {
    29. {
    30. Chat.ArmourMessage(player);
    31. event.setCancelled(true);
    32. }
    33. }
    34. if (!player.hasPermission("SIP.Armour.Iron"))
    35. {
    36. if ((item == 306) || (item == 307) || (item == 308) || (item == 309))
    37. {
    38. Chat.ArmourMessage(player);
    39. event.setCancelled(true);
    40. }
    41. }
    42. if (!player.hasPermission("SIP.Armour.Gold"))
    43. {
    44. if ((item == 314) || (item == 315) || (item == 316) || (item == 317))
    45. {
    46. Chat.ArmourMessage(player);
    47. event.setCancelled(true);
    48. }
    49. }
    50. if (!player.hasPermission("SIP.Armour.Chainmail"))
    51. {
    52. if ((item == 302) || (item == 303) || (item == 304) || (item == 305))
    53. {
    54. Chat.ArmourMessage(player);
    55. event.setCancelled(true);
    56. }
    57. }
    58. if (!player.hasPermission("SIP.Armour.Diamond"))
    59. {
    60. if ((item == 310) || (item == 311) || (item == 312) || (item == 313))
    61. {
    62. Chat.ArmourMessage(player);
    63. event.setCancelled(true);
    64. }
    65. }
    66. }
    67. }
    68. }
    69. }
    70. }


    anyone ?

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: May 27, 2016
  2. Offline

    zachoooo

    Code:
    @EventHandler
        public void onInventoryClick(InventoryClickEvent event) {
                Inventory inventory = event.getInventory();
                if (inventory.getType() == InventoryType.PLAYER) {
                    int rs = event.getRawSlot();
                    ItemStack stack = null;
                    if (rs >= 0) {
                        stack = event.getCurrentItem();
                    }
                    SlotType st = event.getSlotType();
     
                    if (st == SlotType.ARMOR && stack != null) {
                        if (blockedMaterials.contains(stack.getType())) {
                            event.setCancelled(true);
                            return;
                        }
                    }
                }
        }
    That code should stop people from moving armor in their inventory the only thing you need to do is make a List of blockedMaterials

    Edit: Changed SlotType.RESULT to SlotType.ARMOR
     
  3. Offline

    arnie231

    Instead of alist how would ihave it so it checked a certain permission and item ?
     
  4. Offline

    zachoooo

    You could just create a method for checking if the event should be cancelled.
     
Thread Status:
Not open for further replies.

Share This Page