diff --git a/pom.xml b/pom.xml
index bfae19c..1b11cc1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -2,7 +2,7 @@
com.songoda
UltimateStacker
4.0.0
- 2.4.1
+ 2.4.2
clean install
UltimateStacker-${project.version}
@@ -122,7 +122,7 @@
com.songoda
SongodaCore
- 2.6.20
+ 2.6.21
compile
diff --git a/src/main/java/com/songoda/ultimatestacker/listeners/DeathListeners.java b/src/main/java/com/songoda/ultimatestacker/listeners/DeathListeners.java
index 8a6ef9d..eddcebd 100644
--- a/src/main/java/com/songoda/ultimatestacker/listeners/DeathListeners.java
+++ b/src/main/java/com/songoda/ultimatestacker/listeners/DeathListeners.java
@@ -17,6 +17,7 @@ import org.bukkit.entity.EntityType;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
+import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.event.entity.EntityDamageEvent;
@@ -56,12 +57,8 @@ public class DeathListeners implements Listener {
}
- @EventHandler
+ @EventHandler(priority = EventPriority.LOW)
public void onEntityDeath(EntityDeathEvent event) {
- boolean custom = Settings.CUSTOM_DROPS.getBoolean();
-
- if (!custom) return; //Compatibility with other plugins
-
LivingEntity entity = event.getEntity();
if (ServerVersion.isServerVersionAtLeast(ServerVersion.V1_13)
@@ -75,25 +72,28 @@ public class DeathListeners implements Listener {
//Respect MythicMobs
if (plugin.getCustomEntityManager().isCustomEntity(entity)) return;
+ boolean custom = Settings.CUSTOM_DROPS.getBoolean();
+ List drops = custom ? plugin.getLootablesManager().getDrops(event.getEntity())
+ : event.getDrops().stream().map(Drop::new).collect(Collectors.toList());
- List drops = plugin.getLootablesManager().getDrops(event.getEntity());
-
- for (ItemStack item : new ArrayList<>(event.getDrops())) {
- if (shouldDrop(event.getEntity(), item.getType()))
- drops.add(new Drop(item));
+ if (custom) {
+ for (ItemStack item : new ArrayList<>(event.getDrops())) {
+ if (shouldDrop(event.getEntity(), item.getType()))
+ drops.add(new Drop(item));
+ }
}
if (plugin.getCustomEntityManager().getCustomEntity(entity) == null) {
- //replace %player% in drop commands with the last player to damage the entity
//Run commands here, or it will be buggy
runCommands(entity, drops);
if (plugin.getEntityStackManager().isStackedEntity(event.getEntity())) {
- plugin.getEntityStackManager().getStack(event.getEntity()).onDeath(entity, drops, true, event.getDroppedExp(), event);
+ plugin.getEntityStackManager().getStack(event.getEntity()).onDeath(entity, drops, custom, event.getDroppedExp(), event);
} else {
DropUtils.processStackedDrop(event.getEntity(), drops, event);
}
}
+
finalItems.remove(entity.getUniqueId());
}