Hello, I was wondering how I could take for say, minecraft 1.8.9, edit the json, and make it so that the name of the version is customized, so instead of 1.8.9, for say, Release Concrete, I also need it to not re-download the jar and json each time, as I want to edit the assets, thanks.
It is very easy to make a custom version - make a copy of the version that you want to edit and change the names of the folder and ther jar and json files to the same name, then open the json and look for "id": "version", where "version" is the version you are editing, and change that to match the name you gave to the files. If you are modding the jar you also have to delete the downloads section that includes a URL to "client.jar" (part of a long URL); a sit happens both of these parts are right next to one another, as shown below (using 1.6.4 and my own modded version as an example):
After editing (note the removal of the entire "downloads" section and changing of the version ID):
"assets": "legacy", "id": "TMCWv4",
Launcher game output (from an older version of the launcher but this has worked the same since 2016, 2013 for everything except for removing the "downloads"):
Also, if by "editing assets" you are referring to the assets in the .minecraft folder, you are not supposed to change those files - that's what resource packs are for; the assets for 1.6.4 (legacy) even includes a note to this effect (otherwise, I presume that you are referring to replacing class files, aka modding the game):
Everything in this folder that does not belong here will be deleted.
This folder will be kept sync with the Launcher at every run.
If you wish to modify assets/resources in any way, use Resource Packs.
That said, you might be able to edit the json to make the game use different assets (as shown above the json has an "assets" entry which specifies the assets used; I only included it to show the removal of the "downloads" section).