9
0
mirror of https://github.com/Auxilor/EcoMobs.git synced 2025-12-20 07:29:21 +00:00

Added BossTryDropItemEvent

This commit is contained in:
Auxilor
2022-02-10 12:07:09 +00:00
parent b152313f87
commit 1e00b28a8b
3 changed files with 42 additions and 6 deletions

View File

@@ -330,7 +330,7 @@ class EcoBoss(
val player = event.killer
for (drop in drops) {
drop.drop(location, player)
drop.drop(this, location, player)
}
xp.modify(event.event)

View File

@@ -0,0 +1,30 @@
package com.willfp.ecobosses.events
import com.willfp.ecobosses.bosses.EcoBoss
import com.willfp.ecobosses.bosses.LivingEcoBoss
import org.bukkit.Location
import org.bukkit.entity.Player
import org.bukkit.event.Event
import org.bukkit.event.HandlerList
import org.bukkit.inventory.ItemStack
class BossTryDropItemEvent(
val boss: EcoBoss,
val location: Location,
var items: MutableCollection<ItemStack>,
var chance: Double,
val player: Player?
): Event() {
override fun getHandlers(): HandlerList {
return HANDLERS
}
companion object {
private val HANDLERS = HandlerList()
@JvmStatic
fun getHandlerList(): HandlerList {
return HANDLERS
}
}
}

View File

@@ -2,6 +2,8 @@ package com.willfp.ecobosses.util
import com.willfp.eco.core.drops.DropQueue
import com.willfp.eco.util.NumberUtils
import com.willfp.ecobosses.bosses.EcoBoss
import com.willfp.ecobosses.events.BossTryDropItemEvent
import org.bukkit.Bukkit
import org.bukkit.Location
import org.bukkit.entity.Player
@@ -12,15 +14,19 @@ data class BossDrop(
val chance: Double,
val drops: Collection<ItemStack>
) {
fun drop(location: Location, player: Player?) {
if (NumberUtils.randFloat(0.0, 100.0) < chance) {
fun drop(boss: EcoBoss, location: Location, player: Player?) {
val event = BossTryDropItemEvent(boss, location, drops.toMutableList(), chance, player)
Bukkit.getPluginManager().callEvent(event)
if (NumberUtils.randFloat(0.0, 100.0) < event.chance) {
if (player != null) {
DropQueue(player)
.setLocation(location)
.addItems(drops)
.setLocation(event.location)
.addItems(event.items)
.push()
} else {
for (drop in drops) {
for (drop in event.items) {
location.world?.dropItemNaturally(location, drop)
}
}