3
0
Mirror von https://github.com/PaperMC/Paper.git synchronisiert 2024-11-15 12:30:06 +01:00

SPIGOT-5641: Add Block.getDrops(ItemStack, Entity)

Dieser Commit ist enthalten in:
md_5 2020-04-05 16:52:06 +10:00
Ursprung e25a2272f8
Commit f325b9beac

Datei anzeigen

@ -38,9 +38,11 @@ import org.bukkit.block.data.BlockData;
import org.bukkit.craftbukkit.CraftFluidCollisionMode; import org.bukkit.craftbukkit.CraftFluidCollisionMode;
import org.bukkit.craftbukkit.CraftWorld; import org.bukkit.craftbukkit.CraftWorld;
import org.bukkit.craftbukkit.block.data.CraftBlockData; import org.bukkit.craftbukkit.block.data.CraftBlockData;
import org.bukkit.craftbukkit.entity.CraftEntity;
import org.bukkit.craftbukkit.inventory.CraftItemStack; import org.bukkit.craftbukkit.inventory.CraftItemStack;
import org.bukkit.craftbukkit.util.CraftMagicNumbers; import org.bukkit.craftbukkit.util.CraftMagicNumbers;
import org.bukkit.craftbukkit.util.CraftRayTraceResult; import org.bukkit.craftbukkit.util.CraftRayTraceResult;
import org.bukkit.entity.Entity;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.bukkit.metadata.MetadataValue; import org.bukkit.metadata.MetadataValue;
import org.bukkit.plugin.Plugin; import org.bukkit.plugin.Plugin;
@ -612,12 +614,17 @@ public class CraftBlock implements Block {
@Override @Override
public Collection<ItemStack> getDrops(ItemStack item) { public Collection<ItemStack> getDrops(ItemStack item) {
return getDrops(item, null);
}
@Override
public Collection<ItemStack> getDrops(ItemStack item, Entity entity) {
IBlockData iblockdata = getNMS(); IBlockData iblockdata = getNMS();
net.minecraft.server.ItemStack nms = CraftItemStack.asNMSCopy(item); net.minecraft.server.ItemStack nms = CraftItemStack.asNMSCopy(item);
// Modelled off EntityHuman#hasBlock // Modelled off EntityHuman#hasBlock
if (iblockdata.getMaterial().isAlwaysDestroyable() || nms.canDestroySpecialBlock(iblockdata)) { if (iblockdata.getMaterial().isAlwaysDestroyable() || nms.canDestroySpecialBlock(iblockdata)) {
return net.minecraft.server.Block.getDrops(iblockdata, (WorldServer) world.getMinecraftWorld(), position, world.getTileEntity(position), null, nms) return net.minecraft.server.Block.getDrops(iblockdata, (WorldServer) world.getMinecraftWorld(), position, world.getTileEntity(position), entity == null ? null : ((CraftEntity) entity).getHandle(), nms)
.stream().map(CraftItemStack::asBukkitCopy).collect(Collectors.toList()); .stream().map(CraftItemStack::asBukkitCopy).collect(Collectors.toList());
} else { } else {
return Collections.emptyList(); return Collections.emptyList();