I am going to be a bit harsh now.
Stop describing yourself as soft-hearted. That's you fooling yourself into thinking you are this super lovely kind person. So super super lovely and fluffy you are mega kind to everyone, oh you are such a good person. You take him back, you love him, because you are so good and kind and lovely. That is bollocks.
You have been trained from birth to stuff down your emotions, do what the angry man says, never question the angry man, appease, appease, appease. That's not softhearted that beaten into submission so much you can't even tell right from wrong any more.
You are enabling a drug addict. Stop it.
You feel comfortable when you are pandering to an abusive man. It is your normal. See it, change it.
You don't know who you are except in relation to the abusive person in your life you are trying to fix. Your supposed break up message was a list of things he has to do to fix himself. Stop it. You are not his therapist. You are not the all knowing fixer of men. Stop yourself telling others how to live their lives, how to be "good" according to your definition.
Why do people like to hurt others? I don't care. It is irrelevant to your situation. Your question should be why do I let people hurt me more than once. It is not because you are nice. Nice people don't enable abusers to abuse.
I don't think you know what the problem is at all. You do need counselling. You are here describing yourself in soft lovely euphemisms while blaming you being in a bad relationship on him being on coke. Years ago I went on dates with men who were dickheads. I am not here blaming my bad relationship with them on their addiction. That's because I am not in a relationship with them. I dumped them.
Read up on codependency. You can change your life and start having good relationships if you recognise how horribly you depend on codependency and even confuse it with being nice and softhearted. You can get over it. Life is much better without that millstone.