Skip to content
Gabriel Souza edited this page Jul 26, 2020 · 5 revisions

All ItemStack extensions you can find on ExItemStack.kt.

Item builder

fun item(
        material: Material,
        amount: Int = 1,
        data: Short = 0,
        meta: ItemMeta.() -> Unit = {}
): ItemStack

// usage
val myItem = item(Material.DIAMOND, 64)
val myItem2 = item(Material.DIRT, data = 2)

Items extensions

Material

fun Material.asItemStack(
        amount: Int = 1,
        data: Short = 0,
        meta: ItemMeta.() -> Unit = {}
): ItemStack

//usage
val item = Material.DIAMOND.asItemStack()

fun Material.asMaterialData(data: Byte = 0): MaterialData

//usage
val materialData = Material.WOOL.asMaterialData(5)

ItemStack

fun ItemStack.displayName(displayName: String): ItemStack

fun ItemStack.lore(lore: List<String>): ItemStack

ItemMeta builder

Kotlin has some features that help us never use ItemBuilders again, extension functions is one, because when can just add any function to the ItemStack. Other one is "build blocks" like apply and with.

fun <T : ItemMeta> ItemStack.meta(
        block: T.() -> Unit
): ItemStack

// usage

val myItem = item(Material.DIAMOND).apply {
  meta<ItemMeta> {
    displayName = "${ChatColor.BLUE}Gem"
  }
}
val myItem2 = item(Material.ENCHANTED_BOOK).meta<EnchantmentStorageMeta> {
  displayName = "The powerful BOOK"
  addStoredEnchant(Enchantment.DAMAGE_ALL, 10, true)
}

For the second Item the KotlinBukkitAPI was other builder called metadataItem

fun <T : ItemMeta> metadataItem(
        material: Material,
        amount: Int = 1,
        data: Short = 0,
        meta: T.() -> Unit
): ItemStack

// usage

val myItem2 = metadataItem<EnchantmentStorageMeta>(Material.ENCHANTED_BOOK) {
  displayName = "The powerful BOOK"
  addStoredEnchant(Enchantment.DAMAGE_ALL, 10, true)
}
Clone this wiki locally