Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -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)
}
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -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)
}
}
//}
}

}
Expand Down
Original file line number Diff line number Diff line change
@@ -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)
)
}
}

}
Original file line number Diff line number Diff line change
@@ -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)
)
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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
}
Expand Down