Doerffel was asked to flip the shirt inside out, but refused.
Then he was taken to the principal's office, and his father was called. He agreed that Doerffel should comply with the request. Doerffel refused again.
"It's kind of ridiculous," he said. "It's not like I can pick a gun off my shirt and shoot it."
So Doerffel was sent to the suspension room for the rest of the day, standard policy for students who violate the dress code and do not cooperate, according to Joyce Mundy, an assistant superintendent with the Centennial School District.
Doerffel said he did not think the shirt was inflammatory enough to warrant hiding the images.
"I just think there's too much hysteria right now with guns," he said.
Mundy said the shirt was a clear violation of the code and that shirts with images such as guns, drugs, and alcohol are all considered inappropriate, though there are no specific examples of banned images written into the policy.
Kermit Roosevelt, a professor at the University of Pennsylvania Law School, said public schools, like other government institutions, are permitted to place certain restrictions on free speech as long as the motivation is to prevent distractions that could undermine productivity.
"As far as the Constitution is concerned, [schools] are allowed to restrict student expression if it threatens to disrupt the educational mission of the school," he said.
Doerffel said he had not heard any student complaints about his shirt, and Mundy did not say who made the initial complaint on Wednesday.
But in a high school with about 1,900 students, she said, staff members try to enforce all aspects of the dress code as consistently as possible, so that outfits do not disrupt the learning environment.
"We try to be consistent, and I think we do a good job in terms of informing students on that," she said.
While Doerffel doesn't see anything wrong with the shirt, he said he isn't planning on wearing it to school again.
Contact Chris Palmer, 609-217-8305, firstname.lastname@example.org, or follow on Twitter, @cs_palmer.