diff --git a/gradle.properties b/gradle.properties index 6717812..b845979 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,3 +1,3 @@ group=ink.ptms.um version=1.0.8 -taboolib_version=6.1.1-beta12 +taboolib_version=6.1.1 diff --git a/project/common/src/main/kotlin/ink/ptms/um/Mythic.kt b/project/common/src/main/kotlin/ink/ptms/um/Mythic.kt index 3357559..4121d1c 100644 --- a/project/common/src/main/kotlin/ink/ptms/um/Mythic.kt +++ b/project/common/src/main/kotlin/ink/ptms/um/Mythic.kt @@ -20,7 +20,7 @@ interface Mythic { fun getItemId(itemStack: ItemStack): String? /** 获取 MythicItem 实例并构建到 ItemStack */ - fun getItemStack(name: String): ItemStack? + fun getItemStack(name: String, player: Player? = null): ItemStack? /** 获取 MythicItem ID 列表 */ fun getItemIDList(): List diff --git a/project/implementation-v4/src/main/kotlin/ink/ptms/um/impl4/Mythic4.kt b/project/implementation-v4/src/main/kotlin/ink/ptms/um/impl4/Mythic4.kt index 90bf4b2..c9caad7 100644 --- a/project/implementation-v4/src/main/kotlin/ink/ptms/um/impl4/Mythic4.kt +++ b/project/implementation-v4/src/main/kotlin/ink/ptms/um/impl4/Mythic4.kt @@ -1,12 +1,15 @@ package ink.ptms.um.impl4 -import ink.ptms.um.* +import ink.ptms.um.Mythic import ink.ptms.um.Skill import io.lumine.xikage.mythicmobs.MythicMobs +import io.lumine.xikage.mythicmobs.adapters.bukkit.BukkitAdapter +import io.lumine.xikage.mythicmobs.drops.DropMetadata import io.lumine.xikage.mythicmobs.io.MythicConfig import io.lumine.xikage.mythicmobs.io.MythicLineConfig import io.lumine.xikage.mythicmobs.items.ItemManager import io.lumine.xikage.mythicmobs.items.MythicItem +import io.lumine.xikage.mythicmobs.mobs.GenericCaster import io.lumine.xikage.mythicmobs.mobs.MobManager import io.lumine.xikage.mythicmobs.mobs.MythicMob import io.lumine.xikage.mythicmobs.skills.SkillManager @@ -62,8 +65,11 @@ internal class Mythic4 : Mythic { return getItemList().firstOrNull { item -> itemStack.getName().equals(item.displayName, true) }?.internalName } - override fun getItemStack(name: String): ItemStack? { - return itemManager.getItemStack(name) + override fun getItemStack(name: String, player: Player?): ItemStack? { + val target = player?.let { BukkitAdapter.adapt(it) } + val meta = target?.let { DropMetadata(GenericCaster(target), target) } + return meta?.let { itemManager.getItem(name)?.get()?.generateItemStack(it, 1)?.toBukkit() } + ?: itemManager.getItemStack(name) } override fun getItemIDList(): List { diff --git a/project/implementation-v5/src/main/kotlin/ink/ptms/um/impl5/Mythic5.kt b/project/implementation-v5/src/main/kotlin/ink/ptms/um/impl5/Mythic5.kt index 95ecc90..6d1fd63 100644 --- a/project/implementation-v5/src/main/kotlin/ink/ptms/um/impl5/Mythic5.kt +++ b/project/implementation-v5/src/main/kotlin/ink/ptms/um/impl5/Mythic5.kt @@ -3,11 +3,14 @@ package ink.ptms.um.impl5 import ink.ptms.um.Mythic import ink.ptms.um.Skill import io.lumine.mythic.api.MythicProvider +import io.lumine.mythic.api.mobs.GenericCaster import io.lumine.mythic.api.mobs.MythicMob import io.lumine.mythic.api.skills.SkillTrigger +import io.lumine.mythic.bukkit.BukkitAdapter import io.lumine.mythic.bukkit.MythicBukkit import io.lumine.mythic.core.config.MythicConfigImpl import io.lumine.mythic.core.config.MythicLineConfigImpl +import io.lumine.mythic.core.drops.DropMetadataImpl import io.lumine.mythic.core.items.MythicItem import io.lumine.mythic.core.mobs.MobExecutor import io.lumine.mythic.core.utils.MythicUtil @@ -27,7 +30,7 @@ import java.util.* import kotlin.jvm.optionals.getOrNull /** - * universal-mythic ink.ptms.um.impl4.Mythic4 + * universal-mythic ink.ptms.um.impl5.Mythic5 * * @author 坏黑 * @since 2022/7/12 13:47 @@ -49,8 +52,11 @@ internal class Mythic5 : Mythic { return itemStack.getItemTag()["MYTHIC_TYPE"]?.asString() } - override fun getItemStack(name: String): ItemStack? { - return api.itemManager?.getItem(name)?.get()?.generateItemStack(1)?.toBukkit() + override fun getItemStack(name: String, player: Player?): ItemStack? { + val target = player?.let { BukkitAdapter.adapt(it) } + val meta = target?.let { DropMetadataImpl(GenericCaster(target), target) } + return meta?.let { api.itemManager?.getItem(name)?.get()?.generateItemStack(it, 1)?.toBukkit() } + ?: api.itemManager?.getItem(name)?.get()?.generateItemStack(1)?.toBukkit() } override fun getItemIDList(): List {