Override models with a Minecraft bukkit/spigot plugin?

Solution for Override models with a Minecraft bukkit/spigot plugin?
is Given Below:

I want to make a plugin that allows players to customize their armor models and textures. I want other players on the server be able to see those customizations.

Since I’ve never done texture overriding in plugins, I have no clue on whether this is possible, and I’ve been unable to find anything related online. I know you can make blocks look like other blocks, but nothing about armor.

Do I have to send online players a packet, or is there some other way of doing it? If this is possible, is there a place documenting about how to do this?

As stated in the comments, there are a few ways of going about doing this.

The first is using Forge. Forge has a lot of nice APIs built to help make new mods and items, textures, and models. This makes it perfect for your task, and makes it very simple as you don’t need to mess with small technicalities such as packets or such.

However, you also stated that you can’t use Forge (only vanilla Minecraft/Spigot APIs). If you want to remodel armor in vanilla Minecraft, another solution could be to use invisible Armor Stands holding/wearing blocks in order to replicate a remodel, and constantly teleport these armor stands to the player. Here is a thread explaining how to make a “custom mob” with invisible Armor Stands, you can use this as a base for making a new armor model, then set up an event which teleports the Armor Stands to the player if the player moves (using the PlayerMoveEvent event).

Regarding retexturing, you could use a resource pack which changes the textures of specific armor by certain filters (such as the armor item’s name). The downside of this is that it requires Optifine, although I’d argue that since Optifine is used in just about every Minecraft client, it’s worth using this option. You also noted that you want this to work with the vanilla Minecraft client, although I will point out that Optifine has already released updates for the latest versions (such as 1.17, which is what you said you want to play on).

All this information brings me to the summary:
If you want to make custom armor textures or models in vanilla Minecraft (while keeping the default armor textures as well), then there is no other way than teleporting invisible Armor Stands.