If i put the vanilla-files from the 1.7.2.jar to the 1.7.2.jar-file in versions-folder, i get rid of TMI but i loose optifine, too.
WEll not exactly sure what you are doing, but there is a .json file which contains some text info that tells the launcher, how to load the optifine files, or forge or liteloader, they are known as tweak mods
--tweakClass optifine.OptiFineTweaker"
...tells launcher that it needs to load optifine before anything else (well sortof)
libraries": [
{
"name": "optifine:OptiFine:1.8_HD_U_B6"
}
..... the path to the optifine file... to decode it, it means that it will look for the file here ".minecraft\libraries\optifine\OptiFine\1.8_HD_U_B6\OptiFine-1.8_HD_U_B6.jar"
Anyway here is what you could do....
get 1.38...
btw only reason I use ".minecraft" as a folder is because that is by default location to where mojangs own minecraft laucnher installs, so that is where I would put this portable launcher when isntalling mods ... and because of that, its also where other mod installers look for minecraft. you can later move the folder etc
Minecraft Launcher> [Mod/Addons]>[Mod Packs]> download "1.7.2-Forge10.12.2.1127" it comes with a bunch of other mods which you can rename or delete... ".minecraft\1.7.2-Forge10.12.2.1127\mods\"
one is "OptiFine_1.7.2_HD_U_D1.jar" which you can find in here ".minecraft\1.7.2-Forge10.12.2.1127\mods\OptiFine_1.7.2_HD_U_D1.jar"
".minecraft\versions\1.7.2-Forge10.12.2.1127\1.7.2-Forge10.12.2.1127.jar" <<that jar file will contain TMI, so to remove it, you will need to download vanilla 1.7.2
launcher>Settings>[Minecraft Releases], look for 1.7.2 and download if you haven't already got it.
Then copy that jar file....
".minecraft\versions\1.7.2\1.7.2.jar"
or rename it to: "1.7.2-Forge10.12.2.1127.jar"
And copy it to this folder ".minecraft\versions\1.7.2-Forge10.12.2.1127\"
ie overwrite the other existing file "1.7.2-Forge10.12.2.1127.jar" which has TMI basemod files inside..... that way you have a vanilla 1.7.2 jar without any modifications to the actual jar.
It is important NOT to replace the "1.7.2-Forge10.12.2.1127.json" leave that as is.
.minecraft-folder-install-methode:
Which files are change normally by mods?
But no mods actually modifier the minecraft.jar file anymore, (well except a few like TMI base mods) , most make changes to the .json file found in the \versions\<version>" folder. Like liteloader,forge and optifine, they known as tweak mods. Mods made for forge/liteloader etc all go into the \mods\ folder now and are loaded up when minecraft startsup.
The hardest part is getting modloaders like forge\liteloader and other mods like optifine all working nicely, some versions of optifine can work fine just being extracted out of the installer and putting in the \mods\ folder,... just not really easier to make a guide on doing this for every case and version.
Yeah I still use my minecraft portable launcher, for the most part it works, though mojang made a change late last year to the .json files, whereby the .json file does not need to list all the library files for that modded version of minecraft.
Easier to give example
If you use an optifine installer, it will create a copy of the minecraft jar into its own folder like this, (side note: optifine installer extracts its optifine version to ".minecraft\libraries\optifine\OptiFine\<version>" sometimes the jar file from that, can be copied to the \mods\ folder, and it will be loaded up by forge\liteloader if thats installed)
In this example : "versions\1.8-OptiFine_HD_U_B6-ShadersMod2.4.6"
inside that folder would be a json file "1.8-OptiFine_HD_U_B6-ShadersMod2.4.6.json" which contains....
{
"id": "1.8-OptiFine_HD_U_B6-ShadersMod2.4.6",
"time": "2014-09-02T08:24:35+00:00",
"releaseTime": "2014-09-02T08:24:35+00:00",
"type": "release",
"minecraftArguments": "--username ${auth_player_name} --version ${version_name} --gameDir ${game_directory} --assetsDir ${assets_root} --assetIndex ${assets_index_name} --uuid ${auth_uuid} --accessToken ${auth_access_token} --userProperties ${user_properties} --userType ${user_type} --tweakClass optifine.OptiFineTweaker --tweakClass shadersmod.launch.SMCTweaker",
"minimumLauncherVersion": 14,
"assets": "1.8",
"libraries": [
{
"name": "shadersmodcore:ShadersModCore:2.4.6mc1.8"
},
{
"name": "net.minecraft:launchwrapper:1.9"
},
{
"name": "org.ow2.asm:asm-all:4.1"
},
{
"name": "optifine:OptiFine:1.8_HD_U_B6"
}
],
"mainClass": "net.minecraft.launchwrapper.Launch",
"inheritsFrom": "1.8"
}
....well its a problem because my portable launcher doesn't yet know what .... "inheritsFrom": "1.8" .. means.
If you look at the the original 1.8 \versions\1.8\
it also has a .json file..
{
"id": "1.8",
"time": "2014-09-02T08:24:35+00:00",
"releaseTime": "2014-09-02T08:24:35+00:00",
"type": "release",
"minecraftArguments": "--username ${auth_player_name} --version ${version_name} --gameDir ${game_directory} --assetsDir ${assets_root} --assetIndex ${assets_index_name} --uuid ${auth_uuid} --accessToken ${auth_access_token} --userProperties ${user_properties} --userType ${user_type}",
"minimumLauncherVersion": 14,
"assets": "1.8",
"libraries": [
{
"name": "java3d:vecmath:1.5.2"
},
{
"name": "net.sf.trove4j:trove4j:3.0.3"
},
{
"name": "com.ibm.icu:icu4j-core-mojang:51.2"
},
{
"name": "net.sf.jopt-simple:jopt-simple:4.6"
},
{
"name": "com.paulscode:codecjorbis:20101023"
},
{
"name": "com.paulscode:codecwav:20101023"
},
{
"name": "com.paulscode:libraryjavasound:20101123"
},
{
"name": "com.paulscode:librarylwjglopenal:20100824"
},
{
"name": "com.paulscode:soundsystem:20120107"
},
{
"name": "io.netty:netty-all:4.0.15.Final"
},
{
"name": "com.google.guava:guava:17.0"
},
{
"name": "org.apache.commons:commons-lang3:3.3.2"
},
{
"name": "commons-io:commons-io:2.4"
},
{
"name": "commons-codec:commons-codec:1.9"
},
{
"name": "net.java.jinput:jinput:2.0.5"
},
{
"name": "net.java.jutils:jutils:1.0.0"
},
{
"name": "com.google.code.gson:gson:2.2.4"
},
{
"name": "com.mojang:authlib:1.5.17"
},
{
"name": "com.mojang:realms:1.5.4"
},
{
"name": "org.apache.commons:commons-compress:1.8.1"
},
{
"name": "org.apache.httpcomponents:httpclient:4.3.3"
},
{
"name": "commons-logging:commons-logging:1.1.3"
},
{
"name": "org.apache.httpcomponents:httpcore:4.3.2"
},
{
"name": "org.apache.logging.log4j:log4j-api:2.0-beta9"
},
{
"name": "org.apache.logging.log4j:log4j-core:2.0-beta9"
},
{
"name": "org.lwjgl.lwjgl:lwjgl:2.9.1",
"rules": [
{
"action": "allow"
},
{
"action": "disallow",
"os": {
"name": "osx"
}
}
]
},
{
"name": "org.lwjgl.lwjgl:lwjgl_util:2.9.1",
"rules": [
{
"action": "allow"
},
{
"action": "disallow",
"os": {
"name": "osx"
}
}
]
},
{
"name": "org.lwjgl.lwjgl:lwjgl-platform:2.9.1",
"natives": {
"linux": "natives-linux",
"windows": "natives-windows",
"osx": "natives-osx"
},
"extract": {
"exclude": [
"META-INF/"
]
},
"rules": [
{
"action": "allow"
},
{
"action": "disallow",
"os": {
"name": "osx"
}
}
]
},
{
"name": "org.lwjgl.lwjgl:lwjgl:2.9.2-nightly-20140822",
"rules": [
{
"action": "allow",
"os": {
"name": "osx"
}
}
]
},
{
"name": "org.lwjgl.lwjgl:lwjgl_util:2.9.2-nightly-20140822",
"rules": [
{
"action": "allow",
"os": {
"name": "osx"
}
}
]
},
{
"name": "org.lwjgl.lwjgl:lwjgl-platform:2.9.2-nightly-20140822",
"natives": {
"linux": "natives-linux",
"windows": "natives-windows",
"osx": "natives-osx"
},
"extract": {
"exclude": [
"META-INF/"
]
},
"rules": [
{
"action": "allow",
"os": {
"name": "osx"
}
}
]
},
{
"name": "net.java.jinput:jinput-platform:2.0.5",
"natives": {
"linux": "natives-linux",
"windows": "natives-windows",
"osx": "natives-osx"
},
"extract": {
"exclude": [
"META-INF/"
]
}
},
{
"name": "tv.twitch:twitch:6.5"
},
{
"name": "tv.twitch:twitch-platform:6.5",
"rules": [
{
"action": "allow"
},
{
"action": "disallow",
"os": {
"name": "linux"
}
}
],
"natives": {
"linux": "natives-linux",
"windows": "natives-windows-${arch}",
"osx": "natives-osx"
},
"extract": {
"exclude": [
"META-INF/"
]
}
},
{
"name": "tv.twitch:twitch-external-platform:4.5",
"rules": [
{
"action": "allow",
"os": {
"name": "windows"
}
}
],
"natives": {
"windows": "natives-windows-${arch}"
},
"extract": {
"exclude": [
"META-INF/"
]
}
}
],
"mainClass": "net.minecraft.client.main.Main"
}
Notice the difference in size, well.... "inheritsFrom": "1.8" .. means that the minecraft jar from "versions\1.8-OptiFine_HD_U_B6-ShadersMod2.4.6"
....needs to include all the library files from the base 1.8 minecraft install.. My launcher doesn't understand that, its not a problem to fix manually, you can just copy the the text from "libraries": [ ....down the end ] from the main 1.8 or from which version "inheritsFrom" shows... and put it into a installer version of minecraft json file.
The merged result would look like this
{
"id": "1.8-OptiFine_HD_U_B6-ShadersMod2.4.6",
"time": "2014-09-02T08:24:35+00:00",
"releaseTime": "2014-09-02T08:24:35+00:00",
"type": "release",
"minecraftArguments": "--username ${auth_player_name} --version ${version_name} --gameDir ${game_directory} --assetsDir ${assets_root} --assetIndex ${assets_index_name} --uuid ${auth_uuid} --accessToken ${auth_access_token} --userProperties ${user_properties} --userType ${user_type} --tweakClass optifine.OptiFineTweaker --tweakClass shadersmod.launch.SMCTweaker",
"minimumLauncherVersion": 14,
"assets": "1.8",
"libraries": [
{
"name": "shadersmodcore:ShadersModCore:2.4.6mc1.8"
},
{
"name": "net.minecraft:launchwrapper:1.9"
},
{
"name": "org.ow2.asm:asm-all:4.1"
},
{
"name": "optifine:OptiFine:1.8_HD_U_B6"
},
{
"name": "java3d:vecmath:1.5.2"
},
{
"name": "net.sf.trove4j:trove4j:3.0.3"
},
{
"name": "com.ibm.icu:icu4j-core-mojang:51.2"
},
{
"name": "net.sf.jopt-simple:jopt-simple:4.6"
},
{
"name": "com.paulscode:codecjorbis:20101023"
},
{
"name": "com.paulscode:codecwav:20101023"
},
{
"name": "com.paulscode:libraryjavasound:20101123"
},
{
"name": "com.paulscode:librarylwjglopenal:20100824"
},
{
"name": "com.paulscode:soundsystem:20120107"
},
{
"name": "io.netty:netty-all:4.0.15.Final"
},
{
"name": "com.google.guava:guava:17.0"
},
{
"name": "org.apache.commons:commons-lang3:3.3.2"
},
{
"name": "commons-io:commons-io:2.4"
},
{
"name": "commons-codec:commons-codec:1.9"
},
{
"name": "net.java.jinput:jinput:2.0.5"
},
{
"name": "net.java.jutils:jutils:1.0.0"
},
{
"name": "com.google.code.gson:gson:2.2.4"
},
{
"name": "com.mojang:authlib:1.5.17"
},
{
"name": "com.mojang:realms:1.5.4"
},
{
"name": "org.apache.commons:commons-compress:1.8.1"
},
{
"name": "org.apache.httpcomponents:httpclient:4.3.3"
},
{
"name": "commons-logging:commons-logging:1.1.3"
},
{
"name": "org.apache.httpcomponents:httpcore:4.3.2"
},
{
"name": "org.apache.logging.log4j:log4j-api:2.0-beta9"
},
{
"name": "org.apache.logging.log4j:log4j-core:2.0-beta9"
},
{
"name": "org.lwjgl.lwjgl:lwjgl:2.9.1",
"rules": [
{
"action": "allow"
},
{
"action": "disallow",
"os": {
"name": "osx"
}
}
]
},
{
"name": "org.lwjgl.lwjgl:lwjgl_util:2.9.1",
"rules": [
{
"action": "allow"
},
{
"action": "disallow",
"os": {
"name": "osx"
}
}
]
},
{
"name": "org.lwjgl.lwjgl:lwjgl-platform:2.9.1",
"natives": {
"linux": "natives-linux",
"windows": "natives-windows",
"osx": "natives-osx"
},
"extract": {
"exclude": [
"META-INF/"
]
},
"rules": [
{
"action": "allow"
},
{
"action": "disallow",
"os": {
"name": "osx"
}
}
]
},
{
"name": "org.lwjgl.lwjgl:lwjgl:2.9.2-nightly-20140822",
"rules": [
{
"action": "allow",
"os": {
"name": "osx"
}
}
]
},
{
"name": "org.lwjgl.lwjgl:lwjgl_util:2.9.2-nightly-20140822",
"rules": [
{
"action": "allow",
"os": {
"name": "osx"
}
}
]
},
{
"name": "org.lwjgl.lwjgl:lwjgl-platform:2.9.2-nightly-20140822",
"natives": {
"linux": "natives-linux",
"windows": "natives-windows",
"osx": "natives-osx"
},
"extract": {
"exclude": [
"META-INF/"
]
},
"rules": [
{
"action": "allow",
"os": {
"name": "osx"
}
}
]
},
{
"name": "net.java.jinput:jinput-platform:2.0.5",
"natives": {
"linux": "natives-linux",
"windows": "natives-windows",
"osx": "natives-osx"
},
"extract": {
"exclude": [
"META-INF/"
]
}
},
{
"name": "tv.twitch:twitch:6.5"
},
{
"name": "tv.twitch:twitch-platform:6.5",
"rules": [
{
"action": "allow"
},
{
"action": "disallow",
"os": {
"name": "linux"
}
}
],
"natives": {
"linux": "natives-linux",
"windows": "natives-windows-${arch}",
"osx": "natives-osx"
},
"extract": {
"exclude": [
"META-INF/"
]
}
},
{
"name": "tv.twitch:twitch-external-platform:4.5",
"rules": [
{
"action": "allow",
"os": {
"name": "windows"
}
}
],
"natives": {
"windows": "natives-windows-${arch}"
},
"extract": {
"exclude": [
"META-INF/"
]
}
}
],
"mainClass": "net.minecraft.launchwrapper.Launch"
}
Anyway might shed some light on problems you might have getting mods to work, its not easy to explain all this stuff, but its totally possible to install minecraft mods and do everything with the portable launcher that you could with real minecraft launcher, its just some extra work copy pasting things like the above json code.
At the end of the day I just make the launcher for my own use and know how it works. To code the launcher to be exactly like the mojang launcher, and keep up with changes they make, or how other mod developers release there own mod installers, is just more of a hassle than it is worth.. bare in mind I only made it for my convenience, and many people use the portable launcher don't even play on Kraftzone. Its kinda phased out as portable launcher and really only kept working to the extent its usable for myself.