-
Notifications
You must be signed in to change notification settings - Fork 20
Items
Gabriel Souza edited this page Jul 26, 2020
·
5 revisions
All ItemStack extensions you can find on ExItemStack.kt.
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)
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)
fun ItemStack.displayName(displayName: String): ItemStack
fun ItemStack.lore(lore: List<String>): ItemStack
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)
}