@SuppressWarnings("deprecation") @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) public void onPlayerPickupTrident(PlayerPickupArrowEvent e) { if (e.getItem().getItemStack().getType() != Material.TRIDENT || !e.getItem().getItemStack().hasItemMeta()) { return; } ItemStack tridentItem = e.getItem().getItemStack(); ItemMeta itemMeta = tridentItem.getItemMeta(); if (!itemMeta.hasLore() || itemMeta.getLore().isEmpty()) { return; } try { UUID uuid = UUID.fromString(itemMeta.getLore().get(0)); ItemStack realItem = removeLocalItemStack(uuid); if (realItem != null) { if (realItem.getType() == Material.AIR) { e.getArrow().setPickupStatus(Arrow.PickupStatus.DISALLOWED); e.getArrow().setPersistent(false); e.setCancelled(true); Bukkit.getScheduler().runTaskLater(RPGItems.plugin, () -> e.getArrow().remove(), 100L); } else { RPGItem.updateItemStack(realItem); e.getItem().setItemStack(realItem); } } } catch (IllegalArgumentException ex) { logger.log(Level.WARNING, "Exception when PlayerPickupArrowEvent. May be harmless.", ex); } }