Skins
Another attachment type you can create are weapon skins.
Example weapon skin from the community-made Simple Skins for Point Blank pack:

To create a weapon skin, you need to create an attachment json file, a skin texture, and a display file for the attachment item.
When creating a skin for a certain weapon, make sure the texture UV mapping is consistent with the gun’s default texture UV mapping.
Example skin attachment json from the Simple Skins for Point Blank pack:
{
"name": "star15_navy",
"type": "Attachment",
"category": "skin",
"groups": [
"star15_skins"
],
"features": [
{
"type":"Skin",
"texture": "textures/item/skin_star15_navy.png"
}
]
}Here, we see the usual suspects. name, type, category, etc..
Inside features we have type Skin which has the texture of the skin assigned to it.
In assets/pointblank/models/item we need to create a new json file for the display data of the skin attachment item. The code will look like this:
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "pointblank:item/star15_navy"
}
}And in assets/pointblank/textures/item you need to assign a 2D icon for the skin attachment item.
Skins for Base Mod Weapons
All of the guns in the base mod come with their own dedicated skin attachment groups, allowing anybody in the community to create content packs with skins that apply to the base mod guns. This is how the Simple Skins pack was made.
List of all skin attachment groups:
"m1911a1_skins"
"tti_viper_skins"
"p30l_skins"
"mk23_skins"
"glock17_skins"
"glock18_skins"
"m9_skins"
"deserteagle_skins"
"rhino_skins"
"m4a1_skins"
"m4a1mod1_skins"
"ro635_skins"
"star15_skins"
"m4sopmodii_skins"
"m16a1_skins"
"hk416_skins"
"scarl_skins"
"xm7_skins"
"xm29_skins"
"g36c_skins"
"g36k_skins"
"sl8_skins"
"mk14ebr_skins"
"uar10_skins"
"ak47_skins"
"ak74_skins"
"ak12_skins"
"an94_skins"
"aug_skins"
"aughbar_skins"
"mp5_skins"
"mp7_skins"
"ump45_skins"
"vector_skins"
"p90_skins"
"tmp_skins"
"m950_skins"
"g41_skins"
"wa2000_skins"
"xm3_skins"
"c14_skins"
"l96a1_skins"
"ballista_skins"
"gm6lynx_skins"
"m590_skins"
"m870_skins"
"spas12_skins"
"m1014_skins"
"aa12_skins"
"citoricxs_skins"
"hs12_skins"
"lamg_skins"
"mk48_skins"
"m249_skins"Of course, if an existing content pack has skin attachment groups for their weapons, in theory you can make your own content pack with skins compatible with their weapons.