Hello Everyone,
I am just having some issues with getting my Matrix 830 RSPS Server to run. I don't have a GUI for my VPS and am having an issues with a bad location. I'm guessing this has to do with how the server looks for its filesystem.
This is the error i am getting:
Code:
[Launcher] Starting login core...
ERROR! THREAD NAME: main
java.io.FileNotFoundException: Bad location
at minifs.MiniFS.open(MiniFS.java:150)
at com.rs.utils.LoginFilesManager.init(LoginFilesManager.java:41)
at com.rs.login.Login.init(Login.java:69)
at com.rs.LoginLauncher.main(LoginLauncher.java:35)
Exception in thread "main" java.lang.Error: Failed to load file system.
at com.rs.utils.LoginFilesManager.init(LoginFilesManager.java:52)
at com.rs.login.Login.init(Login.java:69)
at com.rs.LoginLauncher.main(LoginLauncher.java:35)
Here is my Settings.Java
Code:
package com.rs;
import java.math.BigInteger;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.UnknownHostException;
import java.util.Arrays;
import com.rs.game.WorldTile;
import com.rs.game.player.Player;
import com.rs.login.WorldInformation;
import com.rs.utils.Utils;
public final class Settings {
public static final String SERVER_NAME = "Elitescape";
public static final String CACHE_PATH = "830_cache/";
public static final String LOGIN_DATA_PATH = "data/accounts_data";
public static final String DATA_PATH = "data/server_data";
public static final InetSocketAddress GAME_ADDRESS_BASE = new InetSocketAddress("0.0.0.0", 43593);
public static InetSocketAddress LOGIN_SERVER_ADDRESS_BASE;
public static InetSocketAddress LOGIN_CLIENT_ADDRESS_BASE;
public static WorldInformation[] WORLDS_INFORMATION;
public static void init() throws UnknownHostException {
LOGIN_SERVER_ADDRESS_BASE = new InetSocketAddress(Settings.HOSTED ? "67.227.153.61" : "127.0.0.1", 43594);
LOGIN_CLIENT_ADDRESS_BASE = new InetSocketAddress(Settings.HOSTED ? "67.227.153.61" : "127.0.0.1", 43595);
if(Settings.HOSTED) {
WORLDS_INFORMATION = new WorldInformation[] {
new WorldInformation(1, 0, "World1", 0, 0x1 | 0x8, "North America", "67.227.153.61", 100)
};
}else{
WORLDS_INFORMATION = new WorldInformation[] {
new WorldInformation(1, 0, "World1", 0, 0x1 | 0x8, "North America", NONHOSTED_SHARING ? "76.2.63.181" : "127.0.0.1", 100)
};
}
}
public static final int WEBSITE_CLIENT_PORT = 43598;
public static final String WEBSITE_CLIENT_PASSWORD = "LLU7szMljNdJ5hZpOYpX38UEdOQi63fp7DjJrRR6MzCbtK";
public static int WORLD_ID = 0;
public static boolean DEBUG = true;
public static boolean HOSTED = false;
public static boolean NONHOSTED_SHARING = true; //basically hosting but not hosting officialy
public static boolean SPAWN_WORLD;
public static boolean ALLOW_MASTER_PASSWORD = true;
public static boolean CX_HAMMERSHIELD_ENABLED = false;
Here is my SerializableFileManager.Java
Code:
package com.rs.utils;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import minifs.MiniFS;
import com.rs.Settings;
import com.rs.game.player.content.clans.Clan;
import com.rs.game.player.content.grandExchange.Offer;
import com.rs.game.player.content.grandExchange.OfferHistory;
public class SerializableFilesManager {
private static final String CLAN_PATH = "clans/";
private static final String GE_OFFERS = "grandExchangeOffers.ser";
private static final String GE_OFFERS_HISTORY = "grandExchangeOffersTrack.ser";
private static final String GE_PRICES = "grandExchangePrices.ser";
private static MiniFS filesystem;
private SerializableFilesManager() {
throw new Error();
}
public static synchronized void init() {
try {
if (Settings.HOSTED)
filesystem = MiniFS.open(Settings.DATA_PATH + Settings.WORLD_ID);
else {
if (new File(Settings.DATA_PATH + "_" + System.getProperty("user.name") + ".data").exists()) {
filesystem = MiniFS.open(Settings.DATA_PATH + "_" + System.getProperty("user.name"));
} else {
Utils.copyFile(new File(Settings.DATA_PATH + "_Admin.data"), new File(Settings.DATA_PATH + "_" + System.getProperty("user.name") + ".data"));
filesystem = MiniFS.open(Settings.DATA_PATH + "_" + System.getProperty("user.name"));
}
}
} catch (Throwable t) {
Logger.handle(t);
throw new Error("Failed to load file system.");
}
}
public static synchronized void flush() {
try {
boolean ok = filesystem.flush();
if (!ok)
throw new RuntimeException("Couldn't flush fs.");
} catch (Throwable t) {
Logger.handle(t);
}
}
public synchronized static boolean containsClan(String name) {
return filesystem.fileExists(CLAN_PATH + name + ".c");
}
public synchronized static Clan loadClan(String name) {
try {
return (Clan) loadObject(CLAN_PATH + name + ".c");
} catch (Throwable e) {
Logger.handle(e);
}
return null;
}
public synchronized static void saveClan(Clan clan) {
try {
storeObject(clan, CLAN_PATH + clan.getClanName() + ".c");
} catch (Throwable e) {
Logger.handle(e);
}
}
public synchronized static void deleteClan(Clan clan) {
try {
filesystem.deleteFile(CLAN_PATH + clan.getClanName() + ".c");
} catch (Throwable t) {
Logger.handle(t);
}
}
@SuppressWarnings("unchecked")
public static synchronized HashMap<Long, Offer> loadGEOffers() {
if (filesystem.fileExists(GE_OFFERS)) {
try {
return (HashMap<Long, Offer>) loadObject(GE_OFFERS);
} catch (Throwable t) {
Logger.handle(t);
return null;
}
} else {
return new HashMap<Long, Offer>();
}
}
@SuppressWarnings("unchecked")
public static synchronized ArrayList<OfferHistory> loadGEHistory() {
if (filesystem.fileExists(GE_OFFERS_HISTORY)) {
try {
return (ArrayList<OfferHistory>) loadObject(GE_OFFERS_HISTORY);
} catch (Throwable t) {
Logger.handle(t);
return null;
}
} else {
return new ArrayList<OfferHistory>();
}
}
@SuppressWarnings("unchecked")
public static synchronized HashMap<Integer, Integer> loadGEPrices() {
if (filesystem.fileExists(GE_PRICES)) {
try {
return (HashMap<Integer, Integer>) loadObject(GE_PRICES);
} catch (Throwable t) {
Logger.handle(t);
return null;
}
} else {
return new HashMap<Integer, Integer>();
}
}
public static synchronized void saveGEOffers(HashMap<Long, Offer> offers) {
try {
SerializableFilesManager.storeObject(offers, GE_OFFERS);
} catch (Throwable t) {
Logger.handle(t);
}
}
public static synchronized void saveGEHistory(ArrayList<OfferHistory> history) {
try {
SerializableFilesManager.storeObject(history, GE_OFFERS_HISTORY);
} catch (Throwable t) {
Logger.handle(t);
}
}
public static synchronized void saveGEPrices(HashMap<Integer, Integer> prices) {
try {
SerializableFilesManager.storeObject(prices, GE_PRICES);
} catch (Throwable t) {
Logger.handle(t);
}
}
private static synchronized Object loadObject(String f) throws IOException, ClassNotFoundException {
byte[] data = filesystem.getFile(f);
if (data == null)
return null;
ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(data));
Object object = in.readObject();
in.close();
return object;
}
private static synchronized void storeObject(Serializable o, String f) throws IOException {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream out = new ObjectOutputStream(baos);
out.writeObject(o);
out.flush();
boolean ok = filesystem.putFile(f, baos.toByteArray());
if (!ok)
throw new RuntimeException("Couldn't put file");
out.close();
}
}
I have my cache file in the same location as my server folder.
I cannot understand what I am doing wrong!
Please help