13
0
geforkt von Mirrors/Paper

SPIGOT-5718: Block.BreakBlockNaturally does not reflect tool used

Dieser Commit ist enthalten in:
md_5 2020-05-09 16:05:17 +10:00
Ursprung 214ffea95e
Commit 46a1386066

Datei anzeigen

@ -593,11 +593,14 @@ public class CraftBlock implements Block {
@Override @Override
public boolean breakNaturally(ItemStack item) { public boolean breakNaturally(ItemStack item) {
// Order matters here, need to drop before setting to air so skulls can get their data // Order matters here, need to drop before setting to air so skulls can get their data
net.minecraft.server.Block block = this.getNMSBlock(); net.minecraft.server.IBlockData iblockdata = this.getNMS();
net.minecraft.server.Block block = iblockdata.getBlock();
net.minecraft.server.ItemStack nmsItem = CraftItemStack.asNMSCopy(item);
boolean result = false; boolean result = false;
if (block != null && block != Blocks.AIR) { // Modelled off EntityHuman#hasBlock
net.minecraft.server.Block.dropItems(getNMS(), world.getMinecraftWorld(), position, world.getTileEntity(position), null, CraftItemStack.asNMSCopy(item)); if (block != Blocks.AIR && (iblockdata.getMaterial().isAlwaysDestroyable() || nmsItem.canDestroySpecialBlock(iblockdata))) {
net.minecraft.server.Block.dropItems(iblockdata, world.getMinecraftWorld(), position, world.getTileEntity(position), null, nmsItem);
result = true; result = true;
} }