This post is outdated, slightly. Some of the information is incorrect. I have chose to rewrite this post and will post it some time later. (The way Minecraft starts has been changing pretty rapidly for a while now). It has been shown to me that this link (http://wiki.vg) is of great use to anyone wanting as much information on this subject as possible.
Background
Over the past few weeks I have been coding a custom launcher for my server. Once 1.6 was released for Minecraft, it completely changed the way my program launches. The new changes they have made make it slightly more complicated than before. I assume it provides an easier or more dynamic way for them to update specific files. When I went to go look up and learn how it launches, I found that there were a lot of unanswered questions of this. So I decided to share my discoveries with everyone.
Upon discovering all of this information, it began to concern me. I'm not quite sure, but I think Minecraft isn't programmed to protect against people who haven't bought Minecraft yet. Unless, the only protection level is to prevent them from playing multiplayer. So, by that sense, Mojang only sells Minecraft to get a multiplayer pass?
In the effort to protect myself from legal issues and being in general trouble, I read the following;
The One Major Rule
Do not distribute anything we've made. This includes, but not limited to, the client or the server software for the game. This also includes modified versions of anything we've made. Also, you may not resell any gift codes or licence keys - but of course you can give gift codes as gifts. This is necessary so that we can help stop piracy and fraud - and especially users buying keys that have been fraudulently obtained.
In order to ensure integrity of the game, we need all game downloads to come from a single central source: us. We hope you understand. It's also important for us that 3rd party tools/services don't seem "too official" as we can't guarantee their quality. Make sure to read through our brand guidelines. If you wish to make something pertaining to anything we've made we're humbled, but please make sure that it can't be interpreted as being official. Do not make commercial use of anything we've made unless specifically authorized by us in our brand and assets usage guidelines (which you should read as each of these policies form part of these Terms of Use).
and interpreted it with the idea that since I'm essentially getting the resources and files from them in the same fashion as their own launcher, that I am not "redistributing" their game. But, with all of this, it is still a slight concern. So, just to make sure I am contributing to the idea that Mojang deserves every penny, I am only going to allow my launcher to do its work under an authorized user. Although, since I'm making an open source launcher, this could be circumvented by a well knowledged individual. With that, I add, that I am not responsible for anyone that changes my code.
If you have any questions about how to play Minecraft without an account, don't bother. I do not support pirates. Mojang made an awesome game! Show support by buying their game. No Exceptions!
If anyone has any more info regarding this subject. I would absolutely love to know it and, in turn, will add it to this.
To properly show you how the Vanilla Minecraft Launcher starts the game, we'll just go through it step by step in the order that I believe its using. Or something extremely close to it. With the following info, it can help you figure out how to launch from batch, C#, or other code languages. (This excludes profiles but, if you can learn to do all of this, then profiles probably wont be that hard after this.)
- Step 1
Check online for the latest version.json of Minecraft.
The location of version.json is at http://s3.amazonaws....s/versions.json.
This file contains a list of all the minecraft versions, as well as which one is the latest version.
- Step 2
Allow user to change settings.
The settings that one could do with all the data from this tutorial, if not more, could be:
CMD Screen, Whether to display it or not.
java
javaw
Starting Ram, The ram can increment by measurements of 512.
-Xms512m
Max Ram
-Xmx1024m
What version to play.
1.6.2
1.5.2
alpha
beta
etc
Where to place the saves/mods/configs separate from other profiles.
Where to save the .minecraft files.
Whether to play offline or online. Include or exclude the Session ID from the command line.
- Step 3
Get username and password and use them to retrieve a Session ID for the authenticated user.
When you click the login button, the very next thing the launcher does is probably to check online to see if you have logged in recently and compare if your current session is still valid. If not, it might save an expiration date and compare against it. If you don't have a Session ID yet, it will then of course login to https://login.minecraft.net/ and retrieve it.
More info can be found here.
--------------------------------------------------------------------------- The New Method
As of 1.6 they changed how the session ID works. Its now referred to as the "Client Token", "Access Token", and the "UUID"
This new method can be used in place of the Session ID for all versions. So as to maintain backwards compatibility, I assume.
As of 1.7 Its now required.
For how to use these new Tokens proceed to reading this and read to step 5.
- Step 4
If #.#.#.json doesn't exist, download it.
This file can be found in the same place as the ".jar". The location is at http://s3.amazonaws.....6.2/1.6.2.jsonWhere it says 1.6.2 it can be replaced by any version you might have chosen from the settings menu in the past. So for example, if you decided you want to play "b1.7.3" then that might read as http://s3.amazonaws....7.3/b1.7.3.json.
This file is usually saved in the versions folder.
C:\LOCATION\.minecraft\versions\1.6.2\1.6.2.json
- Step 5
Parse #.#.#.json, retrieve the data, then assign it to various variables on the launcher.
This file contains data needed for the command line, native files, and library files.
The command line needs the value from minecraftArguments and mainClass.
In minecraftArguments you should see text that looks like "${text}." What those are used for should be fairly straight forward. But, if you don't know, it replaces those segments with the appropriate data from earlier. So, for example: We start with
is replaced with the players username. (I suggest using the one from login.minecraft.net, to be more precise.)
${auth_session}
is replaced with the Session ID retrieved from login.
----------------------------------------------------------------
If you decided to use the new 1.6 method from Step 3 and the only field present is the auth_session, then this is how you input the Access Token and the UUID.
token:${auth_access_token}:${auth_uuid}
Simple replace the ${auth_session} with this. Which in turn is replaced with the Access Token and UUID.
${version_name}
is replaced with the version you chose from the settings menu.
${game_directory}
is replaced with the directory for which you wish everything to be saved. This can select a different area to create a "safe" area of saving worlds related to a profile or mod packs.
${game_assets}
is replaced with the directory that contains all the files Minecraft uses for sound and etc.
${auth_uuid}
is replaced with the UUID obtained by the new 1.6 login process. This is an ID assigned to the player. Which should never change.
${auth_access_token}
is replaced with the access token that should have been saved on last login. This can be reassigned so long as this account wasn't logged in by another client that doesn't use the correct methods. For more information read the link in Step 3.
-------------------------
The mainClass is a parameter that is fed to java and is part of the command that is issued.
The list of "libraries" is all the files needed for Minecraft to run correctly.
You'll notice that some of the libraries have the key of "rules" on it. This section describes which OS can use what. So for example, if it says "allow" and has nothing under it, then every OS can download it. But, if it also says "disallow" then it has "os" right below and it lists a specific OS, then that OS cannot use that. I'm assuming that if it says "allow" and there happens to be some listed under the "os" there, then only those may use that file.
The ones that represent native files usually have the key "natives" associated with it. You'll download these, but you will not run directly from these.
Each of these library files are named in a unique way. To translate it to a usable form, you take the original of
"A.B.C.D:1:2"
and change it to
"A\B\C\D\1\2\1-2.jar"
- Step 6
Scan and look for all the files required for Minecraft to function. If missing, download them.
Minecraft needs 4 things. Assets, Libraries, Natives, and the Jar.
Be aware that the Minecraft.Resources has multiple pages. In order to get the next page, place ?marker=Last\Key\Of\Previous\Page
at the end of https://s3.amazonaws...craft.Resources
and you'll get the next page. You'll know that your on the last page when "isTruncated" is false.
---------------------------
The libraries are obtained by getting that list of "libraries" from earlier and doing the same thing as the assets. Except, we get all of them from https://s3.amazonaws...load/libraries/
An example of that would be https://s3.amazonaws...s-lang3-3.1.jar
These are saved usually in the libraries folder. Much like
---------------------------
While downloading the Natives from within the "libraries" list, you'll notice that under the "natives" key it lists strings associated with specific Operating Systems. You'll need the one your downloading for, in this case windows, and attach it to the end of the download strings. But right before the ".jar" on the link.
For example: https://s3.amazonaws...ves-windows.jar
if ${arch} is at the end of any of these natives or libraries, then you'll need to replace that with 64 or 32. What ever type of CPU you may have. 64bit or 32bit.
---------------------------
The Jar is found very easily and is probably the easiest. As I have said before, it can be found right next to the json. http://s3.amazonaws....nload/versions/VERSION/VERSION.jar
An example of that would be http://s3.amazonaws....1.4.7/1.4.7.jar
This file is usually saved in the versions folder. Like
C:\LOCATION\.minecraft\versions\1.6.2\1.6.2.jar
- Step 7
Extract the natives from the libraries.
The natives, the ones that have the key "natives" assigned to it back in #.#.#.json, are to be extracted/unzipped to a directory. The place everyone usually puts them is right next to the jar in the versions directory. In my launcher, I plan on having them extract to the folder "1.6.2-natives-AL74". The AL74 means nothing, other than the fact that my launcher created it.
So it should be at
Be sure to extract everything and exclude the "META-INF" folder.
- Step 8
Take all the data and variables and create a command to run Minecraft from.
Lets create the command line. So first we start by calling java. Java can be called with or without a CMD Prompt. Lets go without. ("java" is with a CMD Prompt")
javaw
Then we tell it how much ram to start with.
-Xms512m
Then lets tell it where to stop giving it ram.
-Xmx1024m
Now we need to tell it where we extracted the natives to.
Then Add the list of libraries to it. Remember! Only the libraries, do not add the natives to this list. Also! Be sure to add a ";" between each entry instead of a space. Its the separator.
Then attach the jar file to the end of the libraries with a ";" between them. Just remember not to end with the ";" or you might get an error.
;C:\LOCATION\.minecraft\versions\1.6.2\1.6.2.jar
Insert the parameter into the command Line "mainClass" which in this case represents
net.minecraft.client.main.Main
Finally, insert the arguments. Assuming, of course, that you already replaced all the data within the line. "minecraftArguments" which, at this point, would represent
If your curious to see all of these steps in action, Check out my C# project (Atom Launcher). It can launch any version of minecraft, without needing the vanilla launcher.
Please, if you know anything that is missing, or could be useful, let me know. I would be happy to add it.
Also posted at TrinaryAtom.com. (Facebook, Twitter, Google Plus, Blog)
Updated: 10/28/2013 Minecraft Version: 1.7.2
Random Notices:
I have updated this thread with the information necessary for 1.7
They are now enforcing the new UUID system in 1.7. So beware, this just made it harder to code for. Not impossible, just harder. (I'm mainly talking about people who are using batch/cmd to create a custom launcher.)
One way to bypass it is to maybe get the access token and UUID from the vanilla launcher's profile.
---------------------------
If your having trouble with getting your code working and your absolutely sure you did everything right, check the file paths to each part of the command. If it contains spaces you'll need to put quotation marks around each one that does. So that way it knows that the space is part of the the file path. Rather than signifying the next parameter in the command.
So, by following all this, we could theoretically make a "launcher" which lets a player logs in, and it will create the profile for them - So you can designate where all the files are saved to?
Save location and minecraft version for me are the two essentials for a custom launcher. I want people to be able to run my launcher, it will switch them to Forge, and change the save location (so I can download my own server.dat without overriding their existing one).
So, by following all this, we could theoretically make a "launcher" which lets a player logs in, and it will create the profile for them - So you can designate where all the files are saved to?
Save location and minecraft version for me are the two essentials for a custom launcher. I want people to be able to run my launcher, it will switch them to Forge, and change the save location (so I can download my own server.dat without overriding their existing one).
Good find!
Saving profiles (in a different programming language) would most likely be easier using your own methods. But, given the effort, you could theoretically create or edit the profiles file so that way the vanilla launcher could see them too.
Ive got a working C# one of these, complete with verification, but one issue... For some reason it cant load the class net.minecraft.client.main.Main, OR net.minecraft.main.Main! :S
I seem to have this issue too.. when running the profile in vanilla launcher first it works, then it will work on my launcher.
I love this information.
I wanna build a VB launcher from it, can you make a little tutorial to help me on my way?
I can certainly attempt to. Two problems, I don't know very much about VB and I don't have much personal time. So what I'll do is probably make a couple tutorial videos of how to do it in C#. Hopefully you'll be able to still follow along with the C# videos while your coding VB. I imagine that most programming is basically similar in the facts that they all have forms of "functions", "variables", and Logic. I'll try to make the videos as basic as possible to help this.
On the fact that I don't have much personal time seeing as I have work and other responsibility, It might be a while before I'm done with this task. It could very well be months.
Can you help me making my launcher?
I got everything working except voor my play button. The starting minecraft part.
If starting minecraft doesn't work, as in running the start command and it doesn't go anywhere makes me think that somewhere there is a problem within the command itself. For example; a Library missing, natives not defined, jar not add, or incorrect syntax.
What helps me narrow down the problem is to build the command in a bat file. Then try to rebuild that same command, in a dynamic way, in C#.
If you need you can look over my launcher (of which i just added to my signature and edited to OP) I have been coding. It launches minecraft just fine. (Atom Launcher)
I got everything working except voor my play button. The starting minecraft part.
If your having trouble with getting your code working and your absolutely sure you did everything right, check the file paths to each part of the command. If it contains spaces you'll need to put quotation marks around each one that does. So that way it knows that the space is part of the the file path. Rather than signifying the next parameter in the command.
I just found this problem in my code and fixed it. I don't have spaces in my file paths, that's why I didn't notice until now.
I tested you launcher and it all works fine.
But when i put the launcher on my Desktop and run it. It creates some files and a folder called logs.
Is there a way to put this folder called "logs" in the Minecraft data folder?
I cant find it in the source code..
First of all, I would request that anything about my launcher having "issues" to please get reported on the source code issues page.
Anywho, now on to your issue.
The files are needed for the launcher for saving User Data, Game Data, and Launcher data. I might change where those go. I might not. But for now they stay there. If you want them to be somewhere else your more than welcome to change the location for yourself. Beauty of open source.
The Folder named "logs" was being created by minecraft. When it started minecraft, it was assuming the working directory was at the launcher. As I type this, that has been resolved. It now works at the location defined in the Game Settings. Enjoy.
I have updated this thread with the information necessary for 1.7
They are now enforcing the new UUID system in 1.7. So beware, this just made it harder to code for. Not impossible, just harder. (I'm mainly talking about people who are using batch/cmd to create a custom launcher.
Iam tying to build in a server status part for my 4 servers, but i cant get it to work. I want a simple ping to the server and respond in offline or online. Can you help me with that?
I am also interested in this, but, am currently busy doing higher priority projects and responsibilities. What I will tell you is to look elsewhere for the answers you seek as I would take to long to answer your question.
That one is odd. The only two thoughts that come to mind are;
1. Why is it in a folder named "client"? That might cause Read/Write errors due to windows not allowing java to do much without the proper permissions. Try letting minecraft run where its suppose to go and see if that works. (appdata folder).
2. Try launching in administrator mode. ".imageio.IIOException: Can't read input file!at javax.imageio.ImageIO.read" sounds like an issue with a missing file, corrupt file, cant find file, or inadequate read permission. (Don't quote me on that i'm not sure what that means for Java.)
I love your open source launcher!
Can you test my launcher ?
...[snip]...
I have tested it and it works as mine does.
I love that you have taken an interest in my launcher! It makes me happy to see what I made being used by someone else! That's Awesome! Good luck in your coding endeavors!
On a side note: May I see the source code to it? I'm curious to see what you have changed precisely. Who knows, you may end up teaching me a new technique ;).
------------------------------
I haven't stopped coding, I have a huge update coming. Its almost here.
Whats your email, then ill send it to you.
I dont change much, onley edited the design and added the server status of my servers
Sent you a private message.
I'm still interested in some of the small stuff. Actually more curious to see what you did with the server list. Might end up adding something like that in the future.
Yeah I know. I updated and changed my files to reflect this. I just haven't had the time to update the post yet. But, thanks for the help.
Out of curiosity how did you discover it? I removed the internet connect as the vanilla launcher was downloading in order to get it to error with the URL in the error message.
I probably could have figured it out using wireshark or something but was to lazy. Lol
This is still a learning process for me. So, inevitably, there will be mistakes. Hopefully not to much.
I corrected a rather stupid assumption of how the specific library and native files get selected. (Step 5)
Also included what I forgot to include when I first wrote this. How to download the natives in the first place. (Step 6)
Also included a new thing they have added on top of the files when downloading them. More specifically, declaring CPU Arch type on download. (${arch}, Step 6)
I installed a packet sniffer/analyzer and discovered the address in one of the packets the launcher was sending.
Ah, right on. I figured wireshark was the best way to go. Just wasn't sure if was going to be a waste of time or not. Or maybe I just felt like doing the hard way. Sometimes I wonder why I make certain decisions only later to tell my self that it was stupid in the fist place. lol
The Meaning of Life, the Universe, and Everything.
Join Date:
11/15/2013
Posts:
49
Member Details
Could I customise a launcher of my own by following the steps given? Cuz it seems amazing! I'm an amateur coder, but I'm puzzled by the instructions :|
The Meaning of Life, the Universe, and Everything.
Join Date:
11/15/2013
Posts:
49
Member Details
Btw how do I write a client? Cuz I want to try and make one but I am puzzled (again) by the instructions on http://wiki.vg/How_to_Write_a_Client . Plz help ._.
Rollback Post to RevisionRollBack
To post a comment, please login or register a new account.
Background
---------------------------------------------------------------------------
Concerns
In the effort to protect myself from legal issues and being in general trouble, I read the following;
and interpreted it with the idea that since I'm essentially getting the resources and files from them in the same fashion as their own launcher, that I am not "redistributing" their game. But, with all of this, it is still a slight concern. So, just to make sure I am contributing to the idea that Mojang deserves every penny, I am only going to allow my launcher to do its work under an authorized user. Although, since I'm making an open source launcher, this could be circumvented by a well knowledged individual. With that, I add, that I am not responsible for anyone that changes my code.
If you have any questions about how to play Minecraft without an account, don't bother. I do not support pirates. Mojang made an awesome game! Show support by buying their game. No Exceptions!
If anyone has any more info regarding this subject. I would absolutely love to know it and, in turn, will add it to this.
---------------------------------------------------------------------------
The How To
To properly show you how the Vanilla Minecraft Launcher starts the game, we'll just go through it step by step in the order that I believe its using. Or something extremely close to it. With the following info, it can help you figure out how to launch from batch, C#, or other code languages. (This excludes profiles but, if you can learn to do all of this, then profiles probably wont be that hard after this.)
- Step 1
Check online for the latest version.json of Minecraft.
http://s3.amazonaws....s/versions.json.
This file contains a list of all the minecraft versions, as well as which one is the latest version.
- Step 2
Allow user to change settings.
- Step 3
Get username and password and use them to retrieve a Session ID for the authenticated user.
More info can be found here.
---------------------------------------------------------------------------
The New Method
As of 1.6 they changed how the session ID works. Its now referred to as the "Client Token", "Access Token", and the "UUID"
This new method can be used in place of the Session ID for all versions. So as to maintain backwards compatibility, I assume.
As of 1.7 Its now required.
For how to use these new Tokens proceed to reading this and read to step 5.
- Step 4
If #.#.#.json doesn't exist, download it.
http://s3.amazonaws.....6.2/1.6.2.jsonWhere it says 1.6.2 it can be replaced by any version you might have chosen from the settings menu in the past. So for example, if you decided you want to play "b1.7.3" then that might read as
http://s3.amazonaws....7.3/b1.7.3.json.
This file is usually saved in the versions folder.
- Step 5
Parse #.#.#.json, retrieve the data, then assign it to various variables on the launcher.
The command line needs the value from minecraftArguments and mainClass.
In minecraftArguments you should see text that looks like "${text}." What those are used for should be fairly straight forward. But, if you don't know, it replaces those segments with the appropriate data from earlier. So, for example: We start with
--username ${auth_player_name} --session ${auth_session} --version ${version_name} --gameDir ${game_directory} --assetsDir ${game_assets}Or
--username ${auth_player_name} --version ${version_name} --gameDir ${game_directory} --assetsDir ${game_assets} --uuid ${auth_uuid} --accessToken ${auth_access_token}and should end up with something close to this
Or this
- ${auth_player_name}
is replaced with the players username. (I suggest using the one from login.minecraft.net, to be more precise.)- ${auth_session}
is replaced with the Session ID retrieved from login.----------------------------------------------------------------
If you decided to use the new 1.6 method from Step 3 and the only field present is the auth_session, then this is how you input the Access Token and the UUID.
token:${auth_access_token}:${auth_uuid}
Simple replace the ${auth_session} with this. Which in turn is replaced with the Access Token and UUID.
- ${version_name}
is replaced with the version you chose from the settings menu.- ${game_directory}
is replaced with the directory for which you wish everything to be saved. This can select a different area to create a "safe" area of saving worlds related to a profile or mod packs.- ${game_assets}
is replaced with the directory that contains all the files Minecraft uses for sound and etc.- ${auth_uuid}
is replaced with the UUID obtained by the new 1.6 login process. This is an ID assigned to the player. Which should never change.- ${auth_access_token}
is replaced with the access token that should have been saved on last login. This can be reassigned so long as this account wasn't logged in by another client that doesn't use the correct methods. For more information read the link in Step 3.-------------------------
The mainClass is a parameter that is fed to java and is part of the command that is issued.
The list of "libraries" is all the files needed for Minecraft to run correctly.
You'll notice that some of the libraries have the key of "rules" on it. This section describes which OS can use what. So for example, if it says "allow" and has nothing under it, then every OS can download it. But, if it also says "disallow" then it has "os" right below and it lists a specific OS, then that OS cannot use that. I'm assuming that if it says "allow" and there happens to be some listed under the "os" there, then only those may use that file.
The ones that represent native files usually have the key "natives" associated with it. You'll download these, but you will not run directly from these.
Each of these library files are named in a unique way. To translate it to a usable form, you take the original ofand change it to
- Step 6
Scan and look for all the files required for Minecraft to function. If missing, download them.
The Assets are obtained by parsing the xml file at
https://s3.amazonaws...craft.Resources
and for each "Key", download it. Where it downloads each Key is relative to that xml file. An example would be
https://s3.amazonaws.../icon_16x16.png
These are saved usually in the assets folder.
Be aware that the Minecraft.Resources has multiple pages. In order to get the next page, place
?marker=Last\Key\Of\Previous\Page
at the end of
https://s3.amazonaws...craft.Resources
and you'll get the next page. You'll know that your on the last page when "isTruncated" is false.
---------------------------
The libraries are obtained by getting that list of "libraries" from earlier and doing the same thing as the assets. Except, we get all of them from
https://s3.amazonaws...load/libraries/
An example of that would be
https://s3.amazonaws...s-lang3-3.1.jar
These are saved usually in the libraries folder. Much like
---------------------------
While downloading the Natives from within the "libraries" list, you'll notice that under the "natives" key it lists strings associated with specific Operating Systems. You'll need the one your downloading for, in this case windows, and attach it to the end of the download strings. But right before the ".jar" on the link.
For example:
https://s3.amazonaws...ves-windows.jar
if ${arch} is at the end of any of these natives or libraries, then you'll need to replace that with 64 or 32. What ever type of CPU you may have. 64bit or 32bit.
---------------------------
The Jar is found very easily and is probably the easiest. As I have said before, it can be found right next to the json.
http://s3.amazonaws....nload/versions/VERSION/VERSION.jar
An example of that would be
http://s3.amazonaws....1.4.7/1.4.7.jar
This file is usually saved in the versions folder. Like
- Step 7
Extract the natives from the libraries.
So it should be at
Be sure to extract everything and exclude the "META-INF" folder.
- Step 8
Take all the data and variables and create a command to run Minecraft from.
Then we tell it how much ram to start with.
Then lets tell it where to stop giving it ram.
Now we need to tell it where we extracted the natives to.
Then Add the list of libraries to it. Remember! Only the libraries, do not add the natives to this list. Also! Be sure to add a ";" between each entry instead of a space. Its the separator.
one of the files could be
Then attach the jar file to the end of the libraries with a ";" between them. Just remember not to end with the ";" or you might get an error.
Insert the parameter into the command Line "mainClass" which in this case represents
Finally, insert the arguments. Assuming, of course, that you already replaced all the data within the line. "minecraftArguments" which, at this point, would represent
Or
- Step 9
Run command.
Or with
This is what it would look like if I changed the spaces (that separates each parameter) into a new line.
Or
---------------------------------------------------------------------------
If your curious to see all of these steps in action, Check out my C# project (Atom Launcher). It can launch any version of minecraft, without needing the vanilla launcher.
Please, if you know anything that is missing, or could be useful, let me know. I would be happy to add it.
Also posted at TrinaryAtom.com. (Facebook, Twitter, Google Plus, Blog)
Updated: 10/28/2013
Minecraft Version: 1.7.2
Random Notices:
I have updated this thread with the information necessary for 1.7
They are now enforcing the new UUID system in 1.7. So beware, this just made it harder to code for. Not impossible, just harder. (I'm mainly talking about people who are using batch/cmd to create a custom launcher.)
One way to bypass it is to maybe get the access token and UUID from the vanilla launcher's profile.
---------------------------
If your having trouble with getting your code working and your absolutely sure you did everything right, check the file paths to each part of the command. If it contains spaces you'll need to put quotation marks around each one that does. So that way it knows that the space is part of the the file path. Rather than signifying the next parameter in the command.
www.TrinaryAtom.com
-
View User Profile
-
View Posts
-
Send Message
Curse PremiumSave location and minecraft version for me are the two essentials for a custom launcher. I want people to be able to run my launcher, it will switch them to Forge, and change the save location (so I can download my own server.dat without overriding their existing one).
Good find!
Saving profiles (in a different programming language) would most likely be easier using your own methods. But, given the effort, you could theoretically create or edit the profiles file so that way the vanilla launcher could see them too.
www.TrinaryAtom.com
-
View User Profile
-
View Posts
-
Send Message
Curse PremiumI seem to have this issue too.. when running the profile in vanilla launcher first it works, then it will work on my launcher.
Ban me, I dare you
On the fact that I don't have much personal time seeing as I have work and other responsibility, It might be a while before I'm done with this task. It could very well be months.
www.TrinaryAtom.com
If starting minecraft doesn't work, as in running the start command and it doesn't go anywhere makes me think that somewhere there is a problem within the command itself. For example; a Library missing, natives not defined, jar not add, or incorrect syntax.
What helps me narrow down the problem is to build the command in a bat file. Then try to rebuild that same command, in a dynamic way, in C#.
If you need you can look over my launcher (of which i just added to my signature and edited to OP) I have been coding. It launches minecraft just fine. (Atom Launcher)
www.TrinaryAtom.com
If your having trouble with getting your code working and your absolutely sure you did everything right, check the file paths to each part of the command. If it contains spaces you'll need to put quotation marks around each one that does. So that way it knows that the space is part of the the file path. Rather than signifying the next parameter in the command.
I just found this problem in my code and fixed it. I don't have spaces in my file paths, that's why I didn't notice until now.
(Added to OP)
www.TrinaryAtom.com
First of all, I would request that anything about my launcher having "issues" to please get reported on the source code issues page.
Anywho, now on to your issue.
The files are needed for the launcher for saving User Data, Game Data, and Launcher data. I might change where those go. I might not. But for now they stay there. If you want them to be somewhere else your more than welcome to change the location for yourself. Beauty of open source.
The Folder named "logs" was being created by minecraft. When it started minecraft, it was assuming the working directory was at the launcher. As I type this, that has been resolved. It now works at the location defined in the Game Settings. Enjoy.
www.TrinaryAtom.com
They are now enforcing the new UUID system in 1.7. So beware, this just made it harder to code for. Not impossible, just harder. (I'm mainly talking about people who are using batch/cmd to create a custom launcher.
Step 3 Updated!
Step 5 Updated!
Step 6 Updated!
www.TrinaryAtom.com
I am also interested in this, but, am currently busy doing higher priority projects and responsibilities. What I will tell you is to look elsewhere for the answers you seek as I would take to long to answer your question.
This might help you get started tho.
www.TrinaryAtom.com
-
View User Profile
-
View Posts
-
Send Message
Curse PremiumThanks!
Just about to add in the last bit of code for minecraft and It should be complete.
The minecraft part that is.
www.TrinaryAtom.com
Thank you! Glad it helped
I am assuming sound is working now. Due to fixing the assets "s". Good
That one is odd. The only two thoughts that come to mind are;
1. Why is it in a folder named "client"? That might cause Read/Write errors due to windows not allowing java to do much without the proper permissions. Try letting minecraft run where its suppose to go and see if that works. (appdata folder).
2. Try launching in administrator mode. ".imageio.IIOException: Can't read input file!at javax.imageio.ImageIO.read" sounds like an issue with a missing file, corrupt file, cant find file, or inadequate read permission. (Don't quote me on that i'm not sure what that means for Java.)
www.TrinaryAtom.com
I have tested it and it works as mine does.
I love that you have taken an interest in my launcher! It makes me happy to see what I made being used by someone else! That's Awesome! Good luck in your coding endeavors!
On a side note: May I see the source code to it? I'm curious to see what you have changed precisely. Who knows, you may end up teaching me a new technique ;).
------------------------------
I haven't stopped coding, I have a huge update coming. Its almost here.
www.TrinaryAtom.com
I'm still interested in some of the small stuff. Actually more curious to see what you did with the server list. Might end up adding something like that in the future.
www.TrinaryAtom.com
Yeah I know. I updated and changed my files to reflect this. I just haven't had the time to update the post yet. But, thanks for the help.
Out of curiosity how did you discover it? I removed the internet connect as the vanilla launcher was downloading in order to get it to error with the URL in the error message.
I probably could have figured it out using wireshark or something but was to lazy. Lol
www.TrinaryAtom.com
This is still a learning process for me. So, inevitably, there will be mistakes. Hopefully not to much.
I corrected a rather stupid assumption of how the specific library and native files get selected. (Step 5)
Also included what I forgot to include when I first wrote this. How to download the natives in the first place. (Step 6)
Also included a new thing they have added on top of the files when downloading them. More specifically, declaring CPU Arch type on download. (${arch}, Step 6)
www.TrinaryAtom.com
Ah, right on. I figured wireshark was the best way to go. Just wasn't sure if was going to be a waste of time or not. Or maybe I just felt like doing the hard way. Sometimes I wonder why I make certain decisions only later to tell my self that it was stupid in the fist place. lol
www.TrinaryAtom.com