LeBron James has finally snapped after Charles Barkley’s long-time criticism of the Cleveland Cavaliers star, telling reporters: “I’m tired of biting my tongue. There’s a new sheriff in town.”

Last week Barkley used his role as a TV pundit to describe James as “inappropriate, whiny, all of the above” after the NBA champion complained about the lack of depth at the Cavaliers. Barkley has also compared James unfavorably in the past to the likes of Michael Jordan and Wilt Chamberlain.

On Monday, ESPN asked James about Barkley’s latest comments and the question lit a fuse. “I’m not going to let him disrespect my legacy like that,” James said. “I’m not the one who threw somebody through a window. I never spit on a kid. I never had unpaid debt in Las Vegas. I never said, ‘I’m not a role model.’ I never showed up to All-Star Weekend on Sunday because I was in Vegas all weekend partying.

“All I’ve done for my entire career is represent the NBA the right way. Fourteen years, never got in trouble. Respected the game. Print that.”

James also issued an invitation to Barkley. “I know he wanted to retire a long time ago, but he can’t,” James said. “He’s stuck up on that stage every week. And if this makes him want to talk to me, the schedule’s out there. He knows every road arena I’ll be in. Don’t just come up to me at All-Star and shake my hand and smile.”

Barkley responded in an interview on ESPN Radio’s Waddle & Silvy show on Tuesday.

“I stick by what I said, I’m not going to make this personal ... he was all whiny last week,” Barkley said. “I’m good and I’m straightforward, I’m never going to get personal on an NBA player.”

He added: “My criticism was fair and I’m good with that.”

James did not limit his comments to Barkley. Earlier this season, the New York Knicks president, Phil Jackson, referred to James’s business associates as his “posse”, which was widely seen as a racially loaded term for a group of African American men.

“I went to see [Carmelo Anthony] at the Garden two years ago when we were in New York, they played Portland. I went up to a suite at half-time, and Phil Jackson didn’t say one word to me.

James added: “I’m here to win ballgames and take care of my team-mates and take care of my, what’s that word, oh, my ‘posse.’”

Dwyane Wade, a good friend of James, welcomed the comments.

“Thank God [James] finally said something,” the Chicago Bulls star told reporters on Monday. “LeBron, a lot of guys take a lot of shots at him, for whatever reason ... He just has kept his mouth closed, continued to focus on what he need to. But it’s about time he said something. Guys ride him, especially ex-players. When you got a history, when you can go and google your history, you need to be a little careful with what you say. Sometimes when guys get on a microphone in front of their face they just talk and talk and talk and forget about their history.

“We all make that mistake, but especially that guy on TV. He acts like he just walked on water. I like the fact that Bron called him out ... We all have flaws, but when your flaws are a little bit more then you should shut up. So I’m glad LJ finally said something and stood up for himself from that standpoint. He said there’s a new sheriff in town so I’m excited to see what’s next.”

The Cavaliers lost to the Dallas Mavericks on Monday night, but still retain first place in the Eastern Conference.