Commits

md_5 authored e9e8ed7530a
SPIGOT-7960: Improve natural item drop methods
No tags

src/main/java/org/bukkit/craftbukkit/inventory/CraftAbstractInventoryView.java

Modified
1 1 package org.bukkit.craftbukkit.inventory;
2 2
3 3 import com.google.common.base.Preconditions;
4 +import net.minecraft.world.InventoryUtils;
5 +import net.minecraft.world.entity.player.EntityHuman;
6 +import org.bukkit.craftbukkit.entity.CraftHumanEntity;
4 7 import org.bukkit.event.inventory.InventoryType;
5 8 import org.bukkit.inventory.Inventory;
6 9 import org.bukkit.inventory.InventoryView;
7 10 import org.bukkit.inventory.ItemStack;
8 11 import org.jetbrains.annotations.NotNull;
9 12 import org.jetbrains.annotations.Nullable;
10 13
11 14 public abstract class CraftAbstractInventoryView implements InventoryView {
12 15
13 16 @Override
14 17 public void setItem(final int slot, @Nullable final ItemStack item) {
15 18 Inventory inventory = getInventory(slot);
16 19 if (inventory != null) {
17 20 inventory.setItem(convertSlot(slot), item);
18 21 } else if (item != null) {
19 - getPlayer().getWorld().dropItemNaturally(getPlayer().getLocation(), item);
22 + EntityHuman handle = ((CraftHumanEntity) getPlayer()).getHandle();
23 + InventoryUtils.dropItemStack(handle.level(), handle.getX(), handle.getY(), handle.getZ(), CraftItemStack.asNMSCopy(item));
20 24 }
21 25 }
22 26
23 27 @Nullable
24 28 @Override
25 29 public ItemStack getItem(final int slot) {
26 30 Inventory inventory = getInventory(slot);
27 31 return (inventory == null) ? null : inventory.getItem(convertSlot(slot));
28 32 }
29 33

Everything looks good. We'll let you know here if there's anything you should know about.

Add shortcut