Mojira Archive
MC-40380

Replacing heads still drop as an item

The bug

Replacing heads using the /setblock or /fill command (or /clone move) drops them as items.

Note: For versions >= 17w47 flower pots are no longer affected because they are not using a block entity anymore.

How to reproduce

  1. Place one of the affected blocks
  2. Use the following command while standing on them
    /setblock ~ ~ ~ air replace
    

    → The head will still drop as an item, even though the command is set to replace and not destroy

Code analysis

The following is based on a decompiled version of Minecraft 1.9 using MCP 9.24 beta.

For flower pots the reason for this is that they do not implement the interface net.minecraft.inventory.IInventory and therefor the method net.minecraft.inventory.IInventory.clear() does not exist and is not called to clear the contained items.

For skulls the problem is that currently the method net.minecraft.block.BlockSkull.breakBlock(World, BlockPos, IBlockState) drops the skull (should be rather called "onBlockRemoved"). Instead the method net.minecraft.block.BlockSkull.dropBlockAsItemWithChance(World, BlockPos, IBlockState, float, int) should do this. The problem with this is that the former method removes the tile entity first. The order of this should be probably changed.