Skip to content

API

YeeGemAPI

kotlin
interface IYeeGemAPI {

    /**
     * 添加玩家宝石源
     * @param player 玩家
     * @param source
     * @param items 物品
     */
    fun addGemSource(player: Player, source: String, items: List<ItemStack?>)

    /**
     * 获取宝石源
     * @param player 玩家
     * @return 宝石源<源,物品列表>
     */
    fun getAllGemSource(player: Player): Map<String, List<ItemStack?>>

    /**
     * 更新宝石属性
     * @param player 玩家
     */
    fun updateAttribute(player: Player)

    /**
     * 获取玩家宝石套装信息
     * @param player 玩家
     * @param extraItems 额外宝石源
     * @return 套装信息
     */

    fun getSuitInfo(player: Player, extraItems: List<ItemStack?>): MutableList<String>

    /**
     * 获取物品上的宝石列表
     * @param itemStack 物品
     */
    fun getGems(itemStack: ItemStack): MutableList<GemTag>

    /**
     * 设置物品上的宝石信息
     * @param itemStack 物品
     * @param gems 宝石列表
     */
    fun setGems(itemStack: ItemStack, gems: List<GemTag>)

    /**
     * 获取宝石孔
     * @param itemStack 物品
     */
    fun getGemConfig(player: Player, itemStack: ItemStack?): GemConfig?

    /**
     * 获取物品宝石孔列表
     * @param itemStack 物品
     * @return GemSlot(宝石槽)和GemTag(宝石标签)列表
     */
    fun getGemSlots(itemStack: ItemStack?): LinkedList<GemSlot>

    /**
     * 镶嵌宝石
     * @param itemStack 物品
     * @param gemTag 宝石信息
     * @param index 宝石顺序
     * @param editNBT 是否将本次镶嵌信息写入nbt
     */
    fun inlayGem(itemStack: ItemStack, gemTag: GemTag, index: Int = 0, editNBT: Boolean = true): Boolean

    /**
     * 拆卸物品中的宝石
     * @param itemStack 装备
     * @param gemTag 宝石
     * @return 拆卸结果
     */
    fun takeGem(itemStack: ItemStack, gemTag: GemTag): Boolean

    /**
     * 获取宝石道具
     * @param itemStack 物品
     * @return 道具配置
     */
    fun getGemProp(player: Player, itemStack: ItemStack?): GemProp?
}

宝石标签

kotlin
/**
 * 宝石标签
 */
class GemTag {
    // 标签Id
    var id: String = ""

    // 镶嵌识别Lore
    var inlay: String = ""

    // 宝石新增Lore
    var lore: MutableList<String> = mutableListOf()

    // 宝石Id
    var gemId: String = ""

    // 槽位Id
    var slotId: String = ""

    // 原槽位lore
    var rawLore: String = ""

    // 原宝石 Base64
    var rawGem: String = ""

    // 镶嵌者
    var owner: String = ""

    // 宝石新增的附魔效果
    var enchantment: Map<String, Int> = mapOf()
    
    
    /**
     * 获取原宝石物品
     */
    fun getRawGemItem(): ItemStack {
        return rawGem.deserializeToItemStack()
    }
}