I said to send a Block packet. Learn more about packets and how to send them. I've never looked into sending block packets, so someone else will have to help you with that.
Level::sendBlocks() But that's terrible. Other players will just see a real block. I think what he is asking is like wearing a pumpkin. If you can, just wear the item like wearing a normal helmet. If you can't, there is no way you can.
A player can't actually "wear" a block in MCPE, but you can spawn a falling block on the player's head.
You can only wear Pumpkins and hats. I started CustomHatPE, where you can use /hat to set the item in your hand as your hat. The items won't show up as "head block", but they are in the head slot.
Yup, I tried modifying and adding isHelmet() to the block too and tried equipping myself with a block. The block would be worn (would be in the helmet slot) but the block wouldn't be shown!
Even if the client accepts it, you should be using Item::get(), not Block::get(). You are setting helmet as a block item, not an item.
I see another answer "//new Hat($this->$this->getAPI()), TODO: Implement when MCPE implements "Block-Hat rendering" ~ EssentialsPE