/** * Inflicts damage to an item. Unbreaking enchantment is applied if present. * * @param player the player holding the item, or null if held by a dispenser * @param holding the item * * @return the updated item stack */ public static ItemStack damageItem(GlowPlayer player, ItemStack holding) { if (player != null && player.getGameMode() == GameMode.CREATIVE) { return holding; } // Apply unbreaking enchantment. // TODO: Armor has a different formula for chance to avoid damage int durability = holding.getEnchantmentLevel(Enchantment.DURABILITY); if (durability > 0 && ThreadLocalRandom.current().nextDouble() < 1 / (durability + 1)) { return holding; } holding.setDurability((short) (holding.getDurability() + 1)); if (holding.getDurability() == holding.getType().getMaxDurability() + 1) { if (player != null) { EventFactory.getInstance() .callEvent(new PlayerItemBreakEvent(player, holding)); } return createEmptyStack(); } return holding; }
@EventHandler public void onItemBreak(PlayerItemBreakEvent event) { if (BetonQuest.getInstance().getConfig().getString("quest_items_unbreakable").equalsIgnoreCase("false")) { return; } // prevent quest items from breaking if (Utils.isQuestItem(event.getBrokenItem())) { ItemStack original = event.getBrokenItem(); original.setDurability((short) 0); ItemStack copy = original.clone(); event.getPlayer().getInventory().removeItem(original); event.getPlayer().getInventory().addItem(copy); } }
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onItemBreak(PlayerItemBreakEvent e) { sendDelayedArmorUpdate(e.getPlayer()); }
@EventHandler public void onItemBreak(PlayerItemBreakEvent e) { if (Talisman.checkFor(e, SlimefunItem.getByID("ANVIL_TALISMAN"))) e.getBrokenItem().setAmount(1); }
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onPlayerItemBreak(PlayerItemBreakEvent event) { Player player = event.getPlayer(); NormalAchievements category = NormalAchievements.ITEMBREAKS; if (!shouldIncreaseBeTakenIntoAccount(player, category)) { return; } updateStatisticAndAwardAchievementsIfAvailable(player, category, 1); } }