2022-10-03 13:03:21 +02:00
|
|
|
package net.knarcraft.blacksmith.util;
|
|
|
|
|
2023-01-09 05:03:28 +01:00
|
|
|
import org.bukkit.Material;
|
|
|
|
import org.bukkit.enchantments.EnchantmentTarget;
|
2022-10-03 13:03:21 +02:00
|
|
|
import org.bukkit.inventory.ItemStack;
|
|
|
|
import org.bukkit.inventory.meta.Damageable;
|
|
|
|
|
2023-01-09 05:03:28 +01:00
|
|
|
import java.util.ArrayList;
|
|
|
|
import java.util.List;
|
|
|
|
|
2022-10-03 13:03:21 +02:00
|
|
|
public final class ItemHelper {
|
|
|
|
|
|
|
|
private ItemHelper() {
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Gets the current durability of the given item
|
|
|
|
*
|
|
|
|
* @param itemStack <p>The item to get the durability of</p>
|
|
|
|
* @return <p>The durability of the item</p>
|
|
|
|
*/
|
|
|
|
public static short getDurability(ItemStack itemStack) {
|
|
|
|
Damageable damageable = (Damageable) itemStack.getItemMeta();
|
|
|
|
int maxDurability = itemStack.getType().getMaxDurability();
|
|
|
|
if (damageable != null) {
|
|
|
|
return (short) (maxDurability - damageable.getDamage());
|
|
|
|
} else {
|
|
|
|
return (short) maxDurability;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Gets the damage done to the given item
|
|
|
|
*
|
|
|
|
* @param itemStack <p>The damage done to the item</p>
|
|
|
|
* @return <p>The damage done to the item</p>
|
|
|
|
*/
|
|
|
|
public static short getDamage(ItemStack itemStack) {
|
|
|
|
Damageable damageable = (Damageable) itemStack.getItemMeta();
|
|
|
|
if (damageable != null) {
|
|
|
|
return (short) damageable.getDamage();
|
|
|
|
} else {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-01-09 05:03:28 +01:00
|
|
|
/**
|
|
|
|
* Gets a complete list of all reforge-able materials
|
|
|
|
*
|
|
|
|
* @return <p>A complete list of reforge-able materials</p>
|
|
|
|
*/
|
|
|
|
public static List<Material> getAllReforgeAbleMaterials() {
|
|
|
|
List<Material> reforgeAbleMaterials = new ArrayList<>();
|
|
|
|
for (Material material : Material.values()) {
|
|
|
|
ItemStack item = new ItemStack(material);
|
|
|
|
if (item.getItemMeta() instanceof Damageable && EnchantmentTarget.BREAKABLE.includes(item)) {
|
|
|
|
reforgeAbleMaterials.add(material);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return reforgeAbleMaterials;
|
|
|
|
}
|
|
|
|
|
2022-10-03 13:03:21 +02:00
|
|
|
}
|