Jack Moore

Email: jack(at)jmoore53.com
Project Updates

Runescape Private Server

31 Dec 2020 » system configuration, cloudinit, homelab, networking, cluster, kubernetes

Java, Java everywhere. There were a lot of null pointer issues to say the least.

Install

This is going to be brief - the install is relatively quick. Basically I followed the guide 2009scape had on their website.

The only real gotcha as a part of the entire install is ensuring to have an X11 session flag passed to the ssh session to open intellij-idea-community ide.

Xampp was easy to install with a wget from the site.

There’s also a build.sh and run.sh command in the project to make sure the project is built properly.

XAMPP

Install is pretty easy - need to make sure to allow access to phpmyadmin via /opt/lampp/etc/extra/httpd-xampp.conf

# since XAMPP 1.4.3
<Directory "/opt/lampp/phpmyadmin">
    AllowOverride AuthConfig Limit
    # Require local
    Require all granted # <- Need this line
    ErrorDocument 403 /error/XAMPP_FORBIDDEN.html.var
</Directory>

Running the Game

Start the Management Server and Server

./run.sh --build server Server/worldprops/default.json
./run/sh ms
scp -r ubuntu@10.0.1.26:/home/ubuntu/testscape/Server/data/cache /home/jack/.runite_rs/runescape/

Problems

From the client I’ve had to remove the cache a few times.

Also it looks like there’s a null pointer error when trying to load the character in the client gui.

I had to run many -rlcache in the management server and delete ~/.runite_rs, ~/.java and ~/.cache from the client side.

The problem I ran into that won’t load the character.

java.lang.NullPointerException
        at core.game.system.mysql.impl.PlayerSQLHandler.create(PlayerSQLHandler.java:80)
        at core.game.system.mysql.SQLEntryHandler.read(SQLEntryHandler.java:76)
        at core.game.node.entity.player.info.portal.PlayerSQLManager.parse(PlayerSQLManager.java:78)
        at core.game.node.entity.player.info.PlayerDetails.parse(PlayerDetails.java:114)
        at core.game.node.entity.player.info.PlayerDetails.getDetails(PlayerDetails.java:136)
        at core.game.system.communication.ClanRepository.get(ClanRepository.java:376)
        at core.game.system.communication.ClanRepository.get(ClanRepository.java:359)
        at core.game.system.communication.CommunicationInfo.sync(CommunicationInfo.java:259)
        at core.game.node.entity.player.info.login.LoginConfiguration.sendGameConfiguration(LoginConfiguration.java:225)
        at core.game.node.entity.player.info.login.LoginConfiguration.configureGameWorld(LoginConfiguration.java:135)
        at plugin.interaction.inter.LoginInterfacePlugin$1.pulse(LoginInterfacePlugin.java:38)
        at core.game.system.task.Pulse.update(Pulse.java:80)
        at core.game.world.PulseRunner$Runner.run(PulseRunner.kt:55)
        at core.worker.MajorUpdateWorker.run(MajorUpdateWorker.kt:28)
        at core.worker.MajorUpdateWorker$start$1.run(MajorUpdateWorker.kt:21)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)

Launcher

The 2009scape discord basically told me nothing as they don’t support setting up our your own instance of the game.

That somewhat left me stranded.

I tried using the launcher, but also couldnt get it to work with my private instance. I may circle back on this in a few months of development. I’ve always wanted a private runescape server..

© Jack Moore