Basically, all armor is based around the material it’s made of. Every available material has a set of protection stats in the materials.json file. A stat for bash, cut, acid, fire, etc.
Material thickness is the thickness of the materials used in that piece of armor, so if your armor is made of leather with a material thickness of three, then the actual protection value of that armor is the stats for leather multiplied by three. Or something along those lines, it might use a slightly more complicated formula. Dunno how multiple materials works either.
Environmental protection is basically just the armor’s ability to protect you against gas. I’m not aware of anything else it affects.
It’s a really neat way of doing things really. It keeps things semi-realistic, makes it easier to add new items, and makes balancing and rebalancing a breeze. Unfortunately, it makes what you’re trying to do impossible, unless you can find a material with bash resistance and no cut resistance. Unless there’s a way to override it that I’m unaware of.