diff --git a/TwosideKeeper.jar b/TwosideKeeper.jar index d451572..db90f06 100644 Binary files a/TwosideKeeper.jar and b/TwosideKeeper.jar differ diff --git a/src/sig/plugin/TwosideKeeper/TwosideKeeper.java b/src/sig/plugin/TwosideKeeper/TwosideKeeper.java index 5bc13b6..7ee9909 100644 --- a/src/sig/plugin/TwosideKeeper/TwosideKeeper.java +++ b/src/sig/plugin/TwosideKeeper/TwosideKeeper.java @@ -3475,7 +3475,10 @@ public class TwosideKeeper extends JavaPlugin implements Listener { if (ev.getCurrentItem()!=null && ev.getCurrentItem().getType()!=Material.AIR) { //player.getLocation().getWorld().dropItemNaturally(player.getLocation(), ev.getCurrentItem()).setPickupDelay(0); - GenericFunctions.giveItem(player, ev.getCurrentItem()); + boolean equipped = AutoEquipItem(ev.getCurrentItem(),player); + if (!equipped) { + GenericFunctions.giveItem(player, ev.getCurrentItem()); + } ev.setCurrentItem(new ItemStack(Material.AIR)); final DecimalFormat df = new DecimalFormat("0.00"); @@ -5066,69 +5069,69 @@ public class TwosideKeeper extends JavaPlugin implements Listener { ev.setCancelled(true); } } - AutoEquipItem(ev, p); + boolean handled = AutoEquipItem(ev.getItem().getItemStack(), p); + if (handled) { + ev.getItem().remove(); + ev.setCancelled(handled); + } } - public void AutoEquipItem(PlayerPickupItemEvent ev, Player p) { - if (ev.getItem().getItemStack().getType().toString().contains("BOOTS") || - ev.getItem().getItemStack().getType().toString().contains("LEGGINGS") || - ev.getItem().getItemStack().getType().toString().contains("CHESTPLATE") || - ev.getItem().getItemStack().getType().toString().contains("HELMET") || - ev.getItem().getItemStack().getType().toString().contains("SHIELD")) { - ItemStack armor = ev.getItem().getItemStack(); + public boolean AutoEquipItem(ItemStack item, Player p) { + if (item.getType().toString().contains("BOOTS") || + item.getType().toString().contains("LEGGINGS") || + item.getType().toString().contains("CHESTPLATE") || + item.getType().toString().contains("HELMET") || + item.getType().toString().contains("SHIELD")) { + ItemStack armor = item; //See if this armor type is not being worn by the player. if (armor.getType().toString().contains("BOOTS") && p.getEquipment().getBoots()==null && (!GenericFunctions.isRanger(p) || (armor.getType().toString().contains("LEATHER")))) { p.getEquipment().setBoots(armor); - p.sendMessage(ChatColor.DARK_AQUA+"Automatically equipped "+ChatColor.YELLOW+(ev.getItem().getItemStack().getItemMeta().hasDisplayName()?ev.getItem().getItemStack().getItemMeta().getDisplayName():GenericFunctions.UserFriendlyMaterialName(ev.getItem().getItemStack()))); + p.sendMessage(ChatColor.DARK_AQUA+"Automatically equipped "+ChatColor.YELLOW+(item.getItemMeta().hasDisplayName()?item.getItemMeta().getDisplayName():GenericFunctions.UserFriendlyMaterialName(item))); p.playSound(p.getLocation(), Sound.ENTITY_ITEM_PICKUP, 1.0f, 1.0f); GenericFunctions.playProperEquipSound(p,armor.getType()); - ev.getItem().remove(); - ev.setCancelled(true); + return true; } else if (armor.getType().toString().contains("LEGGINGS") && p.getEquipment().getLeggings()==null && (!GenericFunctions.isRanger(p) || (armor.getType().toString().contains("LEATHER")))) { p.getEquipment().setLeggings(armor); - p.sendMessage(ChatColor.DARK_AQUA+"Automatically equipped "+ChatColor.YELLOW+(ev.getItem().getItemStack().getItemMeta().hasDisplayName()?ev.getItem().getItemStack().getItemMeta().getDisplayName():GenericFunctions.UserFriendlyMaterialName(ev.getItem().getItemStack()))); + p.sendMessage(ChatColor.DARK_AQUA+"Automatically equipped "+ChatColor.YELLOW+(item.getItemMeta().hasDisplayName()?item.getItemMeta().getDisplayName():GenericFunctions.UserFriendlyMaterialName(item))); p.playSound(p.getLocation(), Sound.ENTITY_ITEM_PICKUP, 1.0f, 1.0f); GenericFunctions.playProperEquipSound(p,armor.getType()); - ev.getItem().remove(); - ev.setCancelled(true); + return true; } else if (armor.getType().toString().contains("CHESTPLATE") && p.getEquipment().getChestplate()==null && (!GenericFunctions.isRanger(p) || (armor.getType().toString().contains("LEATHER")))) { p.getEquipment().setChestplate(armor); - p.sendMessage(ChatColor.DARK_AQUA+"Automatically equipped "+ChatColor.YELLOW+(ev.getItem().getItemStack().getItemMeta().hasDisplayName()?ev.getItem().getItemStack().getItemMeta().getDisplayName():GenericFunctions.UserFriendlyMaterialName(ev.getItem().getItemStack()))); + p.sendMessage(ChatColor.DARK_AQUA+"Automatically equipped "+ChatColor.YELLOW+(item.getItemMeta().hasDisplayName()?item.getItemMeta().getDisplayName():GenericFunctions.UserFriendlyMaterialName(item))); p.playSound(p.getLocation(), Sound.ENTITY_ITEM_PICKUP, 1.0f, 1.0f); GenericFunctions.playProperEquipSound(p,armor.getType()); - ev.getItem().remove(); - ev.setCancelled(true); + return true; } else if (armor.getType().toString().contains("HELMET") && p.getEquipment().getHelmet()==null && (!GenericFunctions.isRanger(p) || (armor.getType().toString().contains("LEATHER")))) { p.getEquipment().setHelmet(armor); - p.sendMessage(ChatColor.DARK_AQUA+"Automatically equipped "+ChatColor.YELLOW+(ev.getItem().getItemStack().getItemMeta().hasDisplayName()?ev.getItem().getItemStack().getItemMeta().getDisplayName():GenericFunctions.UserFriendlyMaterialName(ev.getItem().getItemStack()))); + p.sendMessage(ChatColor.DARK_AQUA+"Automatically equipped "+ChatColor.YELLOW+(item.getItemMeta().hasDisplayName()?item.getItemMeta().getDisplayName():GenericFunctions.UserFriendlyMaterialName(item))); p.playSound(p.getLocation(), Sound.ENTITY_ITEM_PICKUP, 1.0f, 1.0f); GenericFunctions.playProperEquipSound(p,armor.getType()); - ev.getItem().remove(); - ev.setCancelled(true); + return true; } else if (armor.getType().toString().contains("SHIELD") && p.getInventory().getExtraContents()[0]==null && !GenericFunctions.isStriker(p) && (!GenericFunctions.isRanger(p) || (armor.getType().toString().contains("LEATHER")))) { p.getInventory().setExtraContents(new ItemStack[]{armor}); - p.sendMessage(ChatColor.DARK_AQUA+"Automatically equipped "+ChatColor.YELLOW+(ev.getItem().getItemStack().getItemMeta().hasDisplayName()?ev.getItem().getItemStack().getItemMeta().getDisplayName():GenericFunctions.UserFriendlyMaterialName(ev.getItem().getItemStack()))); + p.sendMessage(ChatColor.DARK_AQUA+"Automatically equipped "+ChatColor.YELLOW+(item.getItemMeta().hasDisplayName()?item.getItemMeta().getDisplayName():GenericFunctions.UserFriendlyMaterialName(item))); p.playSound(p.getLocation(), Sound.ENTITY_ITEM_PICKUP, 1.0f, 1.0f); GenericFunctions.playProperEquipSound(p,armor.getType()); - ev.getItem().remove(); - ev.setCancelled(true); + return true; } } + return false; } @EventHandler(priority=EventPriority.LOW,ignoreCancelled = true)