Hi there :D
I'm currently working on a block that acts kind of like a barrel, where the player can store some items. If the player is holding valid items to store in his hand when he activates the barrel, it will automatically take as much as needed to fill the barrel (64 items) from the stack that is on the player's hand. The problem is that the barrel has different models for its different "fullness states", and I can get it to show that state only using the barrel. I have to feed it with items and then force it to update breaking or placing nearby blocks. I can reference all the code you need, but here is what I tried to use to update the block whenever the player interacts with it.
public void updateBlock(World worldIn, IBlockState state) {
this.markDirty();
worldIn.notifyBlockUpdate(this.getPos(), state, BlockBarrel.changeStateOverFullness(this, worldIn, state, pos), 0x3 );
//Todo remove this, just for testing purposes
world.setBlockState(pos, state);
}