diff --git a/src/main/kotlin/com/skillw/itemsystem/internal/feature/compat/mythicmobs/MobListener.kt b/src/main/kotlin/com/skillw/itemsystem/internal/feature/compat/mythicmobs/MobListener.kt index 8ba305c..db60e79 100644 --- a/src/main/kotlin/com/skillw/itemsystem/internal/feature/compat/mythicmobs/MobListener.kt +++ b/src/main/kotlin/com/skillw/itemsystem/internal/feature/compat/mythicmobs/MobListener.kt @@ -1,40 +1,19 @@ package com.skillw.itemsystem.internal.feature.compat.mythicmobs -import com.skillw.asahi.api.AsahiAPI.analysis import com.skillw.itemsystem.internal.feature.ItemDrop -import com.skillw.itemsystem.internal.feature.compat.mythicmobs.MobUtils.drop import com.skillw.itemsystem.internal.feature.compat.mythicmobs.MobUtils.equip -import ink.ptms.um.event.MobDeathEvent import ink.ptms.um.event.MobSpawnEvent import org.bukkit.entity.LivingEntity -import org.bukkit.util.Vector import taboolib.common.platform.event.SubscribeEvent -import taboolib.common5.Coerce object MobListener { @SubscribeEvent fun spawn(event: MobSpawnEvent) { val mob = event.mob val equipments = mob.config.getConfigurationSection("ItemSystem")?.getStringList("Equipment") ?: return - (mob.entity as? LivingEntity)?.let { ItemDrop.DropData(it, mob.id).equip(equipments) } - } - - @SubscribeEvent - fun drop(event: MobDeathEvent) { - val mob = event.mob - val killer = event.killer ?: return - val options = mob.config.getConfigurationSection("ItemSystem") ?: return - val drops = options.getStringList("Drops") - val effect = options.getBoolean("Effect") - val x = Coerce.toDouble(options.getString("offsetX", "0.0")!!.analysis()) - val y = Coerce.toDouble(options.getString("offsetY", "0.0")!!.analysis()) - val z = Coerce.toDouble(options.getString("offsetZ", "0.0")!!.analysis()) (mob.entity as? LivingEntity)?.let { - ItemDrop.DropData(it, mob.id, killer).drop( - drops, - effect, - Vector(x, y, z) - ) + ItemDrop.DropData(it, mob.id).equip(equipments) } } + } diff --git a/src/main/kotlin/com/skillw/itemsystem/internal/feature/compat/mythicmobs/MobUtils.kt b/src/main/kotlin/com/skillw/itemsystem/internal/feature/compat/mythicmobs/MobUtils.kt index 4c0b964..ef16d8b 100644 --- a/src/main/kotlin/com/skillw/itemsystem/internal/feature/compat/mythicmobs/MobUtils.kt +++ b/src/main/kotlin/com/skillw/itemsystem/internal/feature/compat/mythicmobs/MobUtils.kt @@ -50,13 +50,13 @@ internal object MobUtils { val slot = BukkitEquipment.fromString(slotId) if (slot == null) normalDrop(dropLine) else equipmentDrop(slot, dropLine.substringAfter(' ')) }.run { - if (effect) { - effectDrop(RandomItemEffect(location.toProxyLocation()), vector, this@drop) - } else { + //if (effect) { + //有BUG,先别用effectDrop(RandomItemEffect(location.toProxyLocation()), vector, this@drop) + //} else { forEach { it.drop(location, this@drop) } - } + //} } } diff --git a/src/main/kotlin/com/skillw/itemsystem/internal/feature/compat/mythicmobs/common/MMVListener.kt b/src/main/kotlin/com/skillw/itemsystem/internal/feature/compat/mythicmobs/common/MMVListener.kt new file mode 100644 index 0000000..359b013 --- /dev/null +++ b/src/main/kotlin/com/skillw/itemsystem/internal/feature/compat/mythicmobs/common/MMVListener.kt @@ -0,0 +1,44 @@ +package com.skillw.itemsystem.internal.feature.compat.mythicmobs.common + +import com.skillw.asahi.api.AsahiAPI.analysis +import com.skillw.itemsystem.internal.feature.ItemDrop +import com.skillw.itemsystem.internal.feature.compat.mythicmobs.MobUtils.drop +import com.skillw.itemsystem.internal.feature.compat.mythicmobs.MobUtils.equip +import io.lumine.mythic.bukkit.events.MythicMobDeathEvent +import io.lumine.mythic.bukkit.events.MythicMobSpawnEvent +import org.bukkit.entity.LivingEntity +import org.bukkit.util.Vector +import taboolib.common.platform.event.SubscribeEvent +import taboolib.common5.Coerce + +object MMVListener { + + @SubscribeEvent + fun onMobSpawn(event: MythicMobSpawnEvent) { + val mob = event.mob.type + val equipments = mob.config.getNestedConfig("ItemSystem")?.getStringList("Equipment") ?: return + (event.mob.entity.bukkitEntity as? LivingEntity)?.let { + ItemDrop.DropData(it, event.mob.type.internalName).equip(equipments) + } + } + + @SubscribeEvent + fun onMobDeath(event: MythicMobDeathEvent) { + val mob = event.mob.type + val killer = event.killer ?: return + val options = mob.config.getNestedConfig("ItemSystem") ?: return + val drops = options.getStringList("Drops") + val effect = options.getBoolean("Effect") + val x = Coerce.toDouble(options.getString("offsetX", "0.0")!!.analysis()) + val y = Coerce.toDouble(options.getString("offsetY", "0.0")!!.analysis()) + val z = Coerce.toDouble(options.getString("offsetZ", "0.0")!!.analysis()) + (event.mob.entity.bukkitEntity as? LivingEntity)?.let { + ItemDrop.DropData(it, mob.internalName, killer).drop( + drops, + effect, + Vector(x, y, z) + ) + } + } + +} \ No newline at end of file diff --git a/src/main/kotlin/com/skillw/itemsystem/internal/feature/compat/mythicmobs/legacy/FourListener.kt b/src/main/kotlin/com/skillw/itemsystem/internal/feature/compat/mythicmobs/legacy/FourListener.kt new file mode 100644 index 0000000..b7dc07f --- /dev/null +++ b/src/main/kotlin/com/skillw/itemsystem/internal/feature/compat/mythicmobs/legacy/FourListener.kt @@ -0,0 +1,43 @@ +package com.skillw.itemsystem.internal.feature.compat.mythicmobs.legacy + +import com.skillw.asahi.api.AsahiAPI.analysis +import com.skillw.itemsystem.internal.feature.ItemDrop +import com.skillw.itemsystem.internal.feature.compat.mythicmobs.MobUtils.drop +import com.skillw.itemsystem.internal.feature.compat.mythicmobs.MobUtils.equip +import io.lumine.xikage.mythicmobs.api.bukkit.events.MythicMobDeathEvent +import io.lumine.xikage.mythicmobs.api.bukkit.events.MythicMobSpawnEvent +import org.bukkit.entity.LivingEntity +import org.bukkit.util.Vector +import taboolib.common.platform.event.SubscribeEvent +import taboolib.common5.Coerce + +object FourListener { + + @SubscribeEvent + fun onMobSpawn(event: MythicMobSpawnEvent) { + val mob = event.mob.type + val equipments = mob.config.getNestedConfig("ItemSystem")?.getStringList("Equipment") ?: return + (event.mob.entity.bukkitEntity as? LivingEntity)?.let { + ItemDrop.DropData(it, event.mob.type.internalName).equip(equipments) + } + } + + @SubscribeEvent + fun onMobDeath(event: MythicMobDeathEvent) { + val mob = event.mob.type + val killer = event.killer ?: return + val options = mob.config.getNestedConfig("ItemSystem") ?: return + val drops = options.getStringList("Drops") + val effect = options.getBoolean("Effect") + val x = Coerce.toDouble(options.getString("offsetX", "0.0")!!.analysis()) + val y = Coerce.toDouble(options.getString("offsetY", "0.0")!!.analysis()) + val z = Coerce.toDouble(options.getString("offsetZ", "0.0")!!.analysis()) + (event.mob.entity.bukkitEntity as? LivingEntity)?.let { + ItemDrop.DropData(it, mob.internalName, killer).drop( + drops, + effect, + Vector(x, y, z) + ) + } + } +} \ No newline at end of file diff --git a/src/main/kotlin/com/skillw/itemsystem/internal/feature/effect/RandomItemEffect.kt b/src/main/kotlin/com/skillw/itemsystem/internal/feature/effect/RandomItemEffect.kt index 030363d..d24564b 100644 --- a/src/main/kotlin/com/skillw/itemsystem/internal/feature/effect/RandomItemEffect.kt +++ b/src/main/kotlin/com/skillw/itemsystem/internal/feature/effect/RandomItemEffect.kt @@ -36,7 +36,9 @@ class RandomItemEffect(val origin: Location) { fun play() { var count = 0 submitAsync(period = 1) { - items.removeIf { it.isDead || it.isOnGround || it.isInWater } + items.removeIf { + it.isDead || it.isOnGround || it.isInWater + } list.forEach(ParticleObj::show) if (count++ >= 100 || items.isEmpty()) return@submitAsync }