The bug
If you try to put an item on an armor stand with the off-hand, nothing happens.
Fix
EntityArmorStand.java
public EnumActionResult applyPlayerInteraction(EntityPlayer player, Vec3d vec, EnumHand stack)
{
ItemStack itemstack = player.getHeldItem(stack);
if (!this.hasMarker() && itemstack.getItem() != Items.NAME_TAG)
{
// if (!this.world.isRemote && !player.isSpectator())
++ if (!player.isSpectator())
{
EntityEquipmentSlot entityequipmentslot = EntityLiving.getSlotForItemStack(itemstack);
if (itemstack.isEmpty())
{
EntityEquipmentSlot entityequipmentslot1 = this.getClickedSlot(vec);
EntityEquipmentSlot entityequipmentslot2 = this.isDisabled(entityequipmentslot1) ? entityequipmentslot : entityequipmentslot1;
if (this.hasItemInSlot(entityequipmentslot2))
{
this.swapItem(player, entityequipmentslot2, itemstack, stack);
++ return EnumActionResult.SUCCESS;
}
++ return EnumActionResult.FAIL;
}
else
{
if (this.isDisabled(entityequipmentslot))
{
return EnumActionResult.FAIL;
}
if (entityequipmentslot.getSlotType() == EntityEquipmentSlot.Type.HAND && !this.getShowArms())
{
return EnumActionResult.FAIL;
}
this.swapItem(player, entityequipmentslot, itemstack, stack);
}
return EnumActionResult.SUCCESS;
}
else
{
// return EnumActionResult.SUCCESS;
++ return EnumActionResult.PASS;
}
}
else
{
return EnumActionResult.PASS;
}
}
Fixing this also fixes MC-112995.
Confirmed. Happens even when main hand is empty.