ItemStacks.kt

Branches > main > a68f328 > files / src / main / kotlin / net / bowmap / server / item / ItemStacks.kt

/// Itemstack interop functions
package net.bowmap.server.item

import org.bukkit.inventory.ItemStack

fun toItemStack(item: Item): ItemStack {
  // TODO custommodeldata
  val itemStack = ItemStack(material(item.type), item.amount)
  val meta = itemStack.getItemMeta()

  // itemName is not editable via an anvil, which is the desired behavior
  // TODO make sure its not italics!
  meta.itemName(item.name)
  meta.lore(computeLore(item))

  itemStack.setItemMeta(meta)
  return itemStack
}

fun toItemStacks(items: List<Item>): List<ItemStack> {
  return items.map(::toItemStack)
}

/// Turns a vanilla ItemStack into a Bowmap item.
/// This function is the inverse of toItemStack, so that toItem(toItemStack(x)) == x
fun toItem(itemStack: ItemStack): Item {
  // TODO custommodeldata
  // See the above itemName comment
  // val meta = itemStack.getItemMeta()
  return Item(
    // TODO right now this won't work with any custom materials
    // It'll have to be stored somwhere on the item :)
    type = MaterialItemType(itemStack.type),
    amount = itemStack.amount,
  )
}