Guest User

Fixing and setting durability/maxdurability | NBT API support

a guest
Dec 9th, 2023
22
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. @EventHandler
  2.     public void onPlayerItemDamage(PlayerItemDamageEvent event) {
  3.         Player player = event.getPlayer();
  4.         SPlayer sPlayer = SPlayer.get(player.getUniqueId());
  5.  
  6.         if (sPlayer != null) {
  7.             ItemStack itemStack = event.getItem();
  8.             updateDurability(player, itemStack, getLevel(sPlayer));
  9.         }
  10.     }
  11.  
  12.     private void updateDurability(Player player, ItemStack itemStack, int currentLevel) {
  13.         // Update NBT lore with new durability
  14.         Durability(itemStack, currentLevel);
  15.  
  16.         player.getInventory().setItemInMainHand(itemStack);
  17.     }
  18.  
  19.     private void Durability(ItemStack itemStack, int durabilityLevel) {
  20.         if (itemStack != null && itemStack.getType() != Material.AIR) {
  21.             NBTItem nbtItem = new NBTItem(itemStack);
  22.             int loreDurability = nbtItem.getInteger("Durability");
  23.             int loreMaxDurability = itemStack.getType().getMaxDurability();
  24.  
  25.             double increaseDurability = durabilityIncrease.getValue();
  26.  
  27.             // Calculate new durability based on skill level
  28.             int newLoreDurability = (int) Math.min(loreMaxDurability, loreDurability - increaseDurability);
  29.             nbtItem.setInteger("Durability", newLoreDurability); // Set new durability
  30.  
  31.             // Adjust the damage to simulate increasing max durability
  32.             int newDamage = loreMaxDurability - newLoreDurability;
  33.             Damageable damageable = (Damageable) itemStack.getItemMeta();
  34.             assert damageable != null;
  35.             damageable.setDamage(newDamage);
  36.             itemStack.setItemMeta((ItemMeta) damageable);
  37.  
  38.             itemStack = nbtItem.getItem();
  39.             ItemMeta itemMeta = itemStack.getItemMeta();
  40.  
  41.             if (itemMeta instanceof Damageable) {
  42.                 damageable = (Damageable) itemMeta; // Use the correct reference
  43.                 int maxDurability = itemStack.getType().getMaxDurability();
  44.                 int currentDurability = maxDurability - damageable.getDamage();
  45.  
  46.                 int newDurability = Math.min(maxDurability, currentDurability + (int) (durabilityIncrease.getValue() * durabilityLevel));
  47.  
  48.                 damageable.setDamage(maxDurability - newDurability);
  49.                 itemStack.setItemMeta(itemMeta);
  50.             }
  51.         }
  52.     }
  53.  
Advertisement
Add Comment
Please, Sign In to add comment