Preserve data if possible when dropping Items from entities. Partial solution for BUKKIT-15

This commit is contained in:
Tahg 2012-03-01 22:57:30 -05:00
parent bcf979b2a6
commit eddefa6c50

View File

@ -288,8 +288,16 @@ public class CraftEventFactory {
victim.expToDrop = event.getDroppedExp(); victim.expToDrop = event.getDroppedExp();
for (org.bukkit.inventory.ItemStack stack : event.getDrops()) { for (org.bukkit.inventory.ItemStack stack : event.getDrops()) {
if (stack == null || stack.getType() == Material.AIR) continue;
if (stack instanceof CraftItemStack) {
// Use the internal item to preserve possible data.
victim.a(((CraftItemStack) stack).getHandle(), 0.0f);
}
else {
world.dropItemNaturally(entity.getLocation(), stack); world.dropItemNaturally(entity.getLocation(), stack);
} }
}
return event; return event;
} }
@ -310,8 +318,14 @@ public class CraftEventFactory {
for (org.bukkit.inventory.ItemStack stack : event.getDrops()) { for (org.bukkit.inventory.ItemStack stack : event.getDrops()) {
if (stack == null || stack.getType() == Material.AIR) continue; if (stack == null || stack.getType() == Material.AIR) continue;
if (stack instanceof CraftItemStack) {
// Use the internal item to preserve possible data.
victim.a(((CraftItemStack) stack).getHandle(), 0.0f);
}
else {
world.dropItemNaturally(entity.getLocation(), stack); world.dropItemNaturally(entity.getLocation(), stack);
} }
}
return event; return event;
} }