The actual question here is why are you not using PlayerInventory::setArmorContents() instead? And yes, you can cancel it using DataPacketSendEvent.
I want to show different armors to different players. How can I do it with DataPacketSendEvent? Can u give me an example?
On data packet send even check if the event packet is instance of mob armor equipment packet, then just cancel the event like you do with a typical event.