I'm not completely sure about everything here, but as far as eating goes, it's REALLY normal for toddlers to not want to eat. They don't need to eat much at that age, and as far as I'm concerned, if he's hungry enough, he'll eat. He wont let you starve him.

Another thing I would say for eating meals is to not let him snack much. If he snacks a lot during the day, eating things here and there at random times, then he will be much less likely to eat at mealtimes. If they don't get a bunch of snacks then when you make dinner, they'll be happy for it and want to eat when you set it out. But if that's not a problem with you, then I'd still say if he's hungry enough, his body will tell him when he needs to eat and he'll do it.
As for the way he acts up.... I have to say just consistancy. I understand you've tried to punish him in all the ways but it doesn't seem to work for him. I'm not sure how it goes every day for you, but if you sit him in a time out (and MAKE HIM STAY THERE lol) for a specific amount of minutes EVERY time he does something you know is unnacceptable, rather than waiting until it really bothers you after he's BEEN doing it, then he might start to understand that he'll never get away with it, and he wont try to sometimes do it. And I would stick with the same thing too, like time outs every time or losing a certain thing every time whatever.
That's just what I was thinking, I hope it helps.
