package tc.oc.pgm.kits; import java.util.Map; import java.util.Optional; import org.bukkit.Material; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.registry.Key; import tc.oc.commons.bukkit.item.ItemUtils; import tc.oc.commons.bukkit.util.NMSHacks; import tc.oc.commons.core.inspect.Inspectable; import tc.oc.commons.core.util.MapUtils; public interface ItemKit extends Kit { ItemStack item(); } abstract class BaseItemKit extends Kit.Impl implements ItemKit { @Inspect private Material material() { return item().getType(); } @Inspect private int damage() { return item().getDurability(); } @Inspect private int amount() { return item().getAmount(); } @Inspect private Optional<ItemMeta> meta() { return ItemUtils.tryMeta(item()); } @Inspect private Map<Key, Integer> enchants() { return MapUtils.transformKeys(item().getEnchantments(), enchantment -> NMSHacks.getKey(enchantment)); } }