Files
KSpigot/src/main/kotlin/net/axay/kspigot/items/CustomItemIdentifier.kt
2020-10-18 18:36:49 +02:00

42 lines
1.3 KiB
Kotlin

package net.axay.kspigot.items
import org.bukkit.Material
import org.bukkit.inventory.ItemStack
import org.bukkit.inventory.meta.ItemMeta
/**
* This class defines a material in combination
* with a specific custom model data value.
*
* It is useful if you work with custom items
* defined in resourcepacks, where you do not
* only need a material to define a specific item
* type, but the value of the custom model data
* aswell.
*/
data class CustomItemIdentifier(val customModelData: Int, val placeHolderMaterial: Material) {
constructor(itemStack: ItemStack) :
this(
kotlin.run {
val itemMeta = itemStack.itemMeta
if (itemMeta != null && itemMeta.hasCustomModelData()) {
return@run itemMeta.customModelData
}
return@run 0
},
itemStack.type
)
val itemStack: ItemStack?
get() {
val itemStack = ItemStack(placeHolderMaterial, 1)
val itemMeta: ItemMeta? = itemStack.itemMeta
return if (itemMeta != null) {
itemMeta.setCustomModelData(customModelData)
itemStack.itemMeta = itemMeta
itemStack
} else null
}
}