I don't have a complete fix, but I can point you in the right direction. I know that the MySQL is completely unrelated. If you look at the Constants.java, you will see an algorithm that creates paths to the folders containing character data, which are all empty by default. There are methods in PlayerLoading.java that create and read the files (all of the data is serialized, so the files aren't directly editable using text). I believe there was an anti-leech put in, or some of the developers deleted some code, because you can see a couple questionable comments on line ~113 on PlayerLoading.java where something could have been removed.
Here is a list of all the associated *server* files and how parts of them function:
RS2LoginDecoder.java -
This is where it tells world.java to start the login process and fills PlayerDetails with the credentials entered in the client: line ~113:
Code:
World.getWorld().loadPlayer(new PlayerDetails(context.getChannel(), username, password, version, inCipher, outCipher));
Player.java -
This file is too huge to be helpful, but I found this constructor that was called in one of the beforementioned files: line ~879
Code:
public Player(Channel channel) {
World.java -
Under the loadPlayer method, there will be a system of string checking that will validate the credentials, but there is no formal line of code saying to create a new account if one doesn't already match...I think this is where the problem is. There is already a method in PlayerLoading that *might* be able to flawlessly create a player file when called.
PlayerLoading.java -
This just handles all the IO and sets the player credentials in the player class.
The client sends the login request directly to the server and waits for a response. The client will then be sent a code to say what the display message will be, and whether or not the client will log a player in. The method starts at line ~8855 (Private void login()) of client.java (client file). Int k represents the returned server response saying what to do. If the code is 2, it is a successful login, otherwise, there are unique error messages for each scenario.
This is all I got, and I haven't been able to successfully make it work either (it has been a few hours

). You will probably have to type new code, but try to focus on accessing the existing methods in PlayerLading.java. Good luck friend! if you find a solution, lemme know
