All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.pixeloutlaw.minecraft.spigot.plumbing.api.AbstractItemAttributes.kt Maven / Gradle / Ivy

There is a newer version: 8.0.2
Show newest version
package io.pixeloutlaw.minecraft.spigot.plumbing.api

import org.bukkit.attribute.Attribute
import org.bukkit.inventory.EquipmentSlot
import org.bukkit.inventory.ItemStack
import org.bukkit.inventory.meta.ItemMeta

/**
 * Utility for getting default attributes from items.
 */
public abstract class AbstractItemAttributes {
    public abstract val availableAttributes: List

    public abstract val availableEquipmentSlots: List

    /**
     * Creates a copy of the ItemStack with default attributes.
     */
    public fun cloneWithDefaultAttributes(itemStack: ItemStack): ItemStack {
        val originalItemMeta = itemStack.itemMeta ?: return itemStack.clone()
        val itemMeta = originalItemMeta.clone()
        availableEquipmentSlots.forEach { slot ->
            handleEquipmentSlot(itemStack, slot, itemMeta)
        }
        val cloned = itemStack.clone()
        cloned.itemMeta = itemMeta
        return cloned
    }

    public abstract fun handleEquipmentSlot(
        itemStack: ItemStack,
        slot: EquipmentSlot,
        itemMeta: ItemMeta,
    )

    protected fun attributeFromString(name: String): Attribute? = availableAttributes.find { name.endsWith(it.key.key) }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy