fix NPE when iterating over default drops (#10017)

This commit is contained in:
Jake Potrebic 2023-12-10 10:33:36 -08:00
parent 5954b852d8
commit a3a40ecd2b

View file

@ -188,12 +188,12 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
lootCheck.run(); // Paper - advancement triggers before destroying items
- for (org.bukkit.inventory.ItemStack stack : event.getDrops()) {
- if (stack == null || stack.getType() == Material.AIR || stack.getAmount() == 0) continue;
+ // Paper start
+ for (Entity.DefaultDrop drop : drops) {
+ if (drop == null) continue;;
+ final org.bukkit.inventory.ItemStack stack = drop.stack();
+ if (drop == null || stack == null || stack.getType() == Material.AIR || stack.getAmount() == 0) continue;
+ // Paper end
if (stack == null || stack.getType() == Material.AIR || stack.getAmount() == 0) continue;
- world.dropItem(entity.getLocation(), stack); // Paper - note: dropItem already clones due to this being bukkit -> NMS
+ drop.runConsumer(world, entity.getLocation()); // Paper
@ -216,12 +216,12 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
victim.newExp = event.getNewExp();
- for (org.bukkit.inventory.ItemStack stack : event.getDrops()) {
- if (stack == null || stack.getType() == Material.AIR) continue;
+ // Paper start
+ for (Entity.DefaultDrop drop : drops) {
+ if (drop == null) continue;
+ final org.bukkit.inventory.ItemStack stack = drop.stack();
+ if (drop == null || stack == null || stack.getType() == Material.AIR) continue;
+ // Paper end
if (stack == null || stack.getType() == Material.AIR) continue;
- world.dropItem(entity.getLocation(), stack);
+ drop.runConsumer(world, entity.getLocation()); // Paper