mirror of
https://github.com/2006-Scape/2006Scape.git
synced 2026-07-02 16:49:03 +00:00
Merge The File&Game Servers Into One Module (#519)
* Merge The File&Game Servers Into One Module * Make SettingsLoader A GameConstants ConfigLoader If A Config File Isn't Used, The Server Will Fall Back To The Defaults Set In GameConstants.java Config Files Can Be Loaded With The "-c/-config configfilelocation.json" Added A Default Prefilled ServerConfig.json * Update ConfigLoader * Bring Back Independant "Secrets" Loader For External Password Stuff * Added A Bunch More Vars To The ConfigLoader * Included A Sample "Server Config" * Also Updated README.md As Parabot Is No Longer Maintained & We No Longer Have A FileServer Module * Bundle FileServer with Server (docker) * Remove /udp and http port * Update .gitignore * Move FileServer from `org.apollo.jagcached` → `org/apollo/jagcached` * Tidy GameConstants & Add More Vars To ConfigLoader * Organised Up GameConstants A Little To Separate ConfigLoader Vars From The Rest * Added Some More Variables To Be Loaded Through The ConfigLoader * Fix A Derp Caused By Laziness * Add -c/-config arg to README.md * Enable FileServer By Default Co-authored-by: Danial <admin@redsparr0w.com>
This commit is contained in:
@@ -12,3 +12,6 @@
|
|||||||
2006Scape Client/bin/
|
2006Scape Client/bin/
|
||||||
*.prefs
|
*.prefs
|
||||||
*.classpath
|
*.classpath
|
||||||
|
|
||||||
|
# Ignore any json files in the server root (should only be config files, the sample file should still be updated)
|
||||||
|
2006Scape Server/*.json
|
||||||
|
|||||||
@@ -0,0 +1,20 @@
|
|||||||
|
{
|
||||||
|
"server_name": "2006Scape",
|
||||||
|
"website_link": "https://2006Scape.org",
|
||||||
|
"server_debug": false,
|
||||||
|
"file_server": true,
|
||||||
|
"world_id": 1,
|
||||||
|
"members_only": false,
|
||||||
|
"tutorial_island_enabled": false,
|
||||||
|
"party_room_enabled": true,
|
||||||
|
"clues_enabled": true,
|
||||||
|
"admin_can_trade": false,
|
||||||
|
"admin_can_sell": false,
|
||||||
|
"respawn_x": 3222,
|
||||||
|
"respawn_y": 3218,
|
||||||
|
"save_timer": 120,
|
||||||
|
"timeout": 60,
|
||||||
|
"item_requirements": true,
|
||||||
|
"xp_rate": 1.0,
|
||||||
|
"max_players": 200
|
||||||
|
}
|
||||||
Vendored
Vendored
Vendored
Vendored
Vendored
Vendored
Vendored
@@ -160,6 +160,12 @@
|
|||||||
<artifactId>google-collections</artifactId>
|
<artifactId>google-collections</artifactId>
|
||||||
<version>1.0</version>
|
<version>1.0</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>io.netty</groupId>
|
||||||
|
<artifactId>netty</artifactId>
|
||||||
|
<version>3.6.6.Final</version>
|
||||||
|
<scope>compile</scope>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
<build>
|
<build>
|
||||||
|
|||||||
@@ -0,0 +1,97 @@
|
|||||||
|
package com.rs2;
|
||||||
|
|
||||||
|
import com.rs2.integrations.PlayersOnlineWebsite;
|
||||||
|
import com.rs2.integrations.RegisteredAccsWebsite;
|
||||||
|
import com.rs2.integrations.discord.JavaCord;
|
||||||
|
import org.json.JSONObject;
|
||||||
|
|
||||||
|
import java.io.*;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
public class ConfigLoader {
|
||||||
|
|
||||||
|
public static void loadSettings(String config) throws IOException {
|
||||||
|
BufferedReader br = new BufferedReader(new FileReader(config));
|
||||||
|
String out = br.lines().collect(Collectors.joining("\n"));
|
||||||
|
JSONObject obj = new JSONObject(out);
|
||||||
|
|
||||||
|
if(obj.has("server_name"))
|
||||||
|
GameConstants.SERVER_NAME = obj.getString("server_name");
|
||||||
|
if(obj.has("website_link"))
|
||||||
|
GameConstants.WEBSITE_LINK = obj.getString("website_link");
|
||||||
|
if(obj.has("debug"))
|
||||||
|
GameConstants.SERVER_DEBUG = obj.getBoolean("debug");
|
||||||
|
if(obj.has("file_server"))
|
||||||
|
GameConstants.FILE_SERVER = obj.getBoolean("file_server");
|
||||||
|
if(obj.has("world_id"))
|
||||||
|
GameConstants.WORLD = obj.getInt("world_id");
|
||||||
|
if(obj.has("members_only"))
|
||||||
|
GameConstants.MEMBERS_ONLY = obj.getBoolean("members_only");
|
||||||
|
if(obj.has("tutorial_island_enabled"))
|
||||||
|
GameConstants.TUTORIAL_ISLAND = obj.getBoolean("tutorial_island_enabled");
|
||||||
|
if(obj.has("party_room_enabled"))
|
||||||
|
GameConstants.PARTY_ROOM_DISABLED = !obj.getBoolean("party_room_enabled");
|
||||||
|
if(obj.has("clues_enabled"))
|
||||||
|
GameConstants.CLUES_ENABLED = obj.getBoolean("clues_enabled");
|
||||||
|
if(obj.has("admin_can_trade"))
|
||||||
|
GameConstants.ADMIN_CAN_TRADE = obj.getBoolean("admin_can_trade");
|
||||||
|
if(obj.has("admin_can_drop_items"))
|
||||||
|
GameConstants.ADMIN_DROP_ITEMS = obj.getBoolean("admin_can_drop_items");
|
||||||
|
if(obj.has("admin_can_sell"))
|
||||||
|
GameConstants.ADMIN_CAN_SELL_ITEMS = obj.getBoolean("admin_can_sell");
|
||||||
|
if(obj.has("respawn_x"))
|
||||||
|
GameConstants.RESPAWN_X = obj.getInt("respawn_x");
|
||||||
|
if(obj.has("respawn_y"))
|
||||||
|
GameConstants.RESPAWN_Y = obj.getInt("respawn_y");
|
||||||
|
if(obj.has("save_timer"))
|
||||||
|
GameConstants.SAVE_TIMER = obj.getInt("save_timer");
|
||||||
|
if(obj.has("timeout"))
|
||||||
|
GameConstants.TIMEOUT = obj.getInt("timeout");
|
||||||
|
if(obj.has("item_requirements"))
|
||||||
|
GameConstants.ITEM_REQUIREMENTS = obj.getBoolean("item_requirements");
|
||||||
|
if(obj.has("xp_rate"))
|
||||||
|
GameConstants.XP_RATE = obj.getDouble("xp_rate");
|
||||||
|
if(obj.has("max_players"))
|
||||||
|
GameConstants.MAX_PLAYERS = obj.getInt("max_players");
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void initialize() {
|
||||||
|
JSONObject main = new JSONObject();
|
||||||
|
main
|
||||||
|
.put("bot-token", "")
|
||||||
|
.put("websitepass", "")
|
||||||
|
.put("erssecret", "");
|
||||||
|
try {
|
||||||
|
BufferedWriter br = new BufferedWriter(new FileWriter("data/secrets.json"));
|
||||||
|
br.write(main.toString());
|
||||||
|
br.close();
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void loadSecrets() throws IOException {
|
||||||
|
if (!new File("data/Secrets.json").exists()) {
|
||||||
|
initialize();
|
||||||
|
System.out.println("Please open \"data/secrets.json\" file and enter your discord token bot there!");
|
||||||
|
System.out.println("Please open \"data/secrets.json\" file and enter your Website Password there!");
|
||||||
|
|
||||||
|
} else {
|
||||||
|
BufferedReader br = new BufferedReader(new FileReader("data/secrets.json"));
|
||||||
|
String out = br.lines().collect(Collectors.joining("\n"));
|
||||||
|
JSONObject obj = new JSONObject(out);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Sets External Services Vars
|
||||||
|
*/
|
||||||
|
if(obj.has("bot-token"))
|
||||||
|
JavaCord.token = obj.getString("bot-token");
|
||||||
|
if(obj.has("websitepass"))
|
||||||
|
PlayersOnlineWebsite.password = obj.getString("websitepass");
|
||||||
|
RegisteredAccsWebsite.password = obj.getString("websitepass");
|
||||||
|
if(obj.has("erssecret"))
|
||||||
|
GameEngine.ersSecret = obj.getString("erssecret");
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -2,43 +2,60 @@ package com.rs2;
|
|||||||
|
|
||||||
public class GameConstants {
|
public class GameConstants {
|
||||||
|
|
||||||
public final static boolean SERVER_DEBUG = false;
|
/**
|
||||||
|
* The Variables Below Can Be Also Changed On Server Startup By Using The ConfigLoader
|
||||||
|
*
|
||||||
|
* SERVER_NAME Sets The Name The Server Will Use
|
||||||
|
* WEBSITE_LINK Defines The Server Website Links
|
||||||
|
* WORLD Sets The Servers World ID
|
||||||
|
* MAX_PLAYERS Sets The Maximum Amount Of Players Allow To Be Logged In At Once
|
||||||
|
* TIMEOUT Sets The Amount Of Time Before A Player Timeouts From A Bad Connection
|
||||||
|
* SAVE_TIMER Sets In Seconds How Often The Server Shouls Auto-Save All Characters
|
||||||
|
* RESPAWN_X Sets The X Coordinate That You Will Respawn At After Death
|
||||||
|
* RESPAWN_Y Sets The Y Coordinate That You Will Respawn At After Death
|
||||||
|
* FILE_SERVER Sets Whether The FileServer Should Run With The Server
|
||||||
|
* SERVER_DEBUG Sets Whether The Server Should Start In Debug Mode
|
||||||
|
* MEMBERS_ONLY Sets Whether The World Is Members Only
|
||||||
|
* TUTORIAL_ISLAND Sets Enables/Disables Tutorial Island For Players On First Login
|
||||||
|
* PARTY_ROOM_DISABLED Enables/Disables The Party Room Should Be Disabled
|
||||||
|
* CLUES_ENABLED Enables/Disables Clue Scrolls
|
||||||
|
* ITEM_REQUIREMENTS Enables/Disables Item Requirements for All Players
|
||||||
|
* ADMIN_CAN_TRADE Defines Whether Admins Can Trade
|
||||||
|
* ADMIN_DROP_ITEMS Defines Whether Admins Can Drop Items
|
||||||
|
* ADMIN_CAN_SELL_ITEMS Defines Whether Admins Can Sell Items
|
||||||
|
* XP_RATE Sets The XP Rate Multiplier For All Players/Skills
|
||||||
|
*/
|
||||||
|
public static String SERVER_NAME = "2006Scape", WEBSITE_LINK = "https://2006Scape.org";
|
||||||
|
public static int WORLD = 1, MAX_PLAYERS = 200, TIMEOUT = 60, SAVE_TIMER = 120,
|
||||||
|
RESPAWN_X = 3222, RESPAWN_Y = 3218;
|
||||||
|
public static boolean FILE_SERVER = true, SERVER_DEBUG = false, MEMBERS_ONLY = false, TUTORIAL_ISLAND = false,
|
||||||
|
PARTY_ROOM_DISABLED = false, CLUES_ENABLED = true, ITEM_REQUIREMENTS = true,
|
||||||
|
ADMIN_CAN_TRADE = false, ADMIN_DROP_ITEMS = false, ADMIN_CAN_SELL_ITEMS = false;
|
||||||
|
public static double XP_RATE = 1;
|
||||||
|
|
||||||
public final static String SERVER_NAME = "2006Scape", SERVER_VERSION = "Server Stage v " + GameConstants.TEST_VERSION + ".";
|
|
||||||
|
|
||||||
public final static String WEBSITE_LINK = "https://2006Scape.org";
|
/**
|
||||||
|
* The Variables Below Should Only Be Changed If You Understand What You Are Doing
|
||||||
|
*/
|
||||||
|
|
||||||
|
public final static String SERVER_VERSION = "Server Stage v " + GameConstants.TEST_VERSION + ".";
|
||||||
public final static boolean WEBSITE_TOTAL_CHARACTERS_INTEGRATION = false;
|
public final static boolean WEBSITE_TOTAL_CHARACTERS_INTEGRATION = false;
|
||||||
public final static double TEST_VERSION = 2.3;
|
public final static double TEST_VERSION = 2.3;
|
||||||
|
|
||||||
public final static int ITEM_LIMIT = 15000, MAXITEM_AMOUNT = Integer.MAX_VALUE, CLIENT_VERSION = 999999,
|
public final static int ITEM_LIMIT = 15000, MAXITEM_AMOUNT = Integer.MAX_VALUE, CLIENT_VERSION = 999999,
|
||||||
WORLD = 1, IPS_ALLOWED = 250, CONNECTION_DELAY = 100,
|
IPS_ALLOWED = 250, CONNECTION_DELAY = 100,
|
||||||
MESSAGE_DELAY = 6000, MAX_PLAYERS = 200, REQ_AMOUNT = 150;
|
MESSAGE_DELAY = 6000, REQ_AMOUNT = 150;
|
||||||
|
|
||||||
public final static boolean SOUND = true,
|
public final static boolean sendServerPackets = false, SOUND = true, GUILDS = true,
|
||||||
GUILDS = true,
|
|
||||||
PARTY_ROOM_DISABLED = false,
|
|
||||||
PRINT_OBJECT_ID = false, EXPERIMENTS = false;
|
PRINT_OBJECT_ID = false, EXPERIMENTS = false;
|
||||||
|
|
||||||
public static int[] SIDEBARS = { 2423, 3917, 638, 3213, 1644, 5608, 1151,
|
public static int[] SIDEBARS = { 2423, 3917, 638, 3213, 1644, 5608, 1151,
|
||||||
18128, 5065, 5715, 2449, 904, 147, 962 };
|
18128, 5065, 5715, 2449, 904, 147, 962 };
|
||||||
|
|
||||||
public static boolean TUTORIAL_ISLAND = false,
|
|
||||||
MEMBERS_ONLY = false, sendServerPackets = false,
|
|
||||||
CLUES_ENABLED = true;
|
|
||||||
|
|
||||||
public final static int[] FUN_WEAPONS = { 2460, 2461, 2462, 2463, 2464,
|
public final static int[] FUN_WEAPONS = { 2460, 2461, 2462, 2463, 2464,
|
||||||
2465, 2466, 2467, 2468, 2469, 2470, 2471, 2471, 2473, 2474, 2475,
|
2465, 2466, 2467, 2468, 2469, 2470, 2471, 2471, 2473, 2474, 2475,
|
||||||
2476, 2477 }; // fun weapons for dueling
|
2476, 2477 }; // fun weapons for dueling
|
||||||
|
|
||||||
public static boolean ADMIN_CAN_TRADE = false; // can admins trade?
|
|
||||||
|
|
||||||
public final static boolean ADMIN_DROP_ITEMS = false;
|
|
||||||
|
|
||||||
public final static boolean ADMIN_CAN_SELL_ITEMS = false;
|
|
||||||
|
|
||||||
public final static int RESPAWN_X = 3222; // when dead respawn here
|
|
||||||
|
|
||||||
public final static int RESPAWN_Y = 3218;
|
|
||||||
|
|
||||||
public final static int DUELING_RESPAWN_X = 3362;
|
public final static int DUELING_RESPAWN_X = 3362;
|
||||||
|
|
||||||
@@ -46,16 +63,10 @@ public class GameConstants {
|
|||||||
|
|
||||||
public final static int NO_TELEPORT_WILD_LEVEL = 20;
|
public final static int NO_TELEPORT_WILD_LEVEL = 20;
|
||||||
|
|
||||||
public final static boolean ITEM_REQUIREMENTS = true;
|
|
||||||
|
|
||||||
public final static int CASTLE_WARS_X = 2439;
|
public final static int CASTLE_WARS_X = 2439;
|
||||||
|
|
||||||
public final static int CASTLE_WARS_Y = 3087;
|
public final static int CASTLE_WARS_Y = 3087;
|
||||||
|
|
||||||
public static double XP_RATE = 1;
|
|
||||||
|
|
||||||
public final static int SAVE_TIMER = 120; // save every x seconds
|
|
||||||
|
|
||||||
public final static int NPC_RANDOM_WALK_DISTANCE = 5;
|
public final static int NPC_RANDOM_WALK_DISTANCE = 5;
|
||||||
|
|
||||||
public final static int NPC_FOLLOW_DISTANCE = 10;
|
public final static int NPC_FOLLOW_DISTANCE = 10;
|
||||||
@@ -69,8 +80,6 @@ public class GameConstants {
|
|||||||
"skorge", "tortured soul", "undead chicken", "undead cow", "undead one", "undead troll", "zombie", "zombie rat", "zogre"
|
"skorge", "tortured soul", "undead chicken", "undead cow", "undead one", "undead troll", "zombie", "zombie rat", "zogre"
|
||||||
};
|
};
|
||||||
|
|
||||||
public final static int TIMEOUT = 60;
|
|
||||||
|
|
||||||
public final static int CYCLE_TIME = 600;
|
public final static int CYCLE_TIME = 600;
|
||||||
|
|
||||||
public final static int BUFFER_SIZE = 10000;
|
public final static int BUFFER_SIZE = 10000;
|
||||||
|
|||||||
@@ -35,7 +35,6 @@ import com.rs2.game.players.PlayerSave;
|
|||||||
import com.rs2.game.shops.ShopHandler;
|
import com.rs2.game.shops.ShopHandler;
|
||||||
import com.rs2.integrations.PlayersOnlineWebsite;
|
import com.rs2.integrations.PlayersOnlineWebsite;
|
||||||
import com.rs2.integrations.RegisteredAccsWebsite;
|
import com.rs2.integrations.RegisteredAccsWebsite;
|
||||||
import com.rs2.integrations.SettingsLoader;
|
|
||||||
import com.rs2.integrations.discord.DiscordActivity;
|
import com.rs2.integrations.discord.DiscordActivity;
|
||||||
import com.rs2.integrations.discord.JavaCord;
|
import com.rs2.integrations.discord.JavaCord;
|
||||||
import com.rs2.net.ConnectionHandler;
|
import com.rs2.net.ConnectionHandler;
|
||||||
@@ -49,6 +48,7 @@ import com.rs2.world.ObjectHandler;
|
|||||||
import com.rs2.world.ObjectManager;
|
import com.rs2.world.ObjectManager;
|
||||||
import com.rs2.world.clip.ObjectDefinition;
|
import com.rs2.world.clip.ObjectDefinition;
|
||||||
import com.rs2.world.clip.RegionFactory;
|
import com.rs2.world.clip.RegionFactory;
|
||||||
|
import org.apollo.jagcached.FileServer;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Server.java
|
* Server.java
|
||||||
@@ -141,6 +141,24 @@ public class GameEngine {
|
|||||||
|
|
||||||
public static void main(java.lang.String[] args)
|
public static void main(java.lang.String[] args)
|
||||||
throws NullPointerException, IOException {
|
throws NullPointerException, IOException {
|
||||||
|
for (int i = 0; i < args.length; i++) {
|
||||||
|
if (args[i].startsWith("-") && (i + 1) < args.length && !args[i + 1].startsWith("-")) {
|
||||||
|
switch(args[i]) {
|
||||||
|
case "-c":
|
||||||
|
case "-config":
|
||||||
|
try {
|
||||||
|
//TODO Load A Default Config File When Arg Not Used
|
||||||
|
System.out.println("Loading External Config..");
|
||||||
|
ConfigLoader.loadSettings(args[++i]);
|
||||||
|
System.out.println("Loaded Config File " + args[i]);
|
||||||
|
} catch (IOException e) {
|
||||||
|
System.out.println("Config File Not Found");
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
System.out.println("Starting game engine..");
|
System.out.println("Starting game engine..");
|
||||||
if (GameConstants.SERVER_DEBUG) {
|
if (GameConstants.SERVER_DEBUG) {
|
||||||
System.out.println("@@@@ DEBUG MODE IS ENABLED @@@@");
|
System.out.println("@@@@ DEBUG MODE IS ENABLED @@@@");
|
||||||
@@ -163,12 +181,24 @@ public class GameEngine {
|
|||||||
/**
|
/**
|
||||||
* Starting Up Server
|
* Starting Up Server
|
||||||
*/
|
*/
|
||||||
System.out.println("Launching " + GameConstants.SERVER_NAME + "...");
|
System.out.println("Launching " + GameConstants.SERVER_NAME + " World: " + GameConstants.WORLD + "...");
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Starts The File Server If Enabled In GameConstants
|
||||||
|
*/
|
||||||
|
if(GameConstants.FILE_SERVER) {
|
||||||
|
FileServer fs = new FileServer();
|
||||||
|
try {
|
||||||
|
fs.start();
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Start Integration Services
|
* Start Integration Services
|
||||||
**/
|
**/
|
||||||
SettingsLoader.loadSettings();
|
ConfigLoader.loadSecrets();
|
||||||
JavaCord.init();
|
JavaCord.init();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import com.rs2.game.players.PlayerHandler;
|
|||||||
|
|
||||||
public class PlayersOnlineWebsite {
|
public class PlayersOnlineWebsite {
|
||||||
|
|
||||||
static String password;
|
public static String password;
|
||||||
private static boolean hasntwared = true;
|
private static boolean hasntwared = true;
|
||||||
|
|
||||||
private static void setWebsitePlayersOnline(int amount) throws IOException {
|
private static void setWebsitePlayersOnline(int amount) throws IOException {
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import java.net.URL;
|
|||||||
import com.rs2.GameConstants;
|
import com.rs2.GameConstants;
|
||||||
|
|
||||||
public class RegisteredAccsWebsite {
|
public class RegisteredAccsWebsite {
|
||||||
static String password;
|
public static String password;
|
||||||
private static boolean hasntwarned = true;
|
private static boolean hasntwarned = true;
|
||||||
|
|
||||||
private static void setAccountsRegistered(int amount) throws IOException {
|
private static void setAccountsRegistered(int amount) throws IOException {
|
||||||
|
|||||||
@@ -1,45 +0,0 @@
|
|||||||
package com.rs2.integrations;
|
|
||||||
|
|
||||||
import org.json.JSONObject;
|
|
||||||
|
|
||||||
import com.rs2.GameEngine;
|
|
||||||
import com.rs2.integrations.discord.JavaCord;
|
|
||||||
|
|
||||||
import java.io.*;
|
|
||||||
import java.util.stream.Collectors;
|
|
||||||
|
|
||||||
public class SettingsLoader {
|
|
||||||
private static void initialize() {
|
|
||||||
JSONObject main = new JSONObject();
|
|
||||||
main
|
|
||||||
.put("bot-token", "")
|
|
||||||
.put("websitepass", "")
|
|
||||||
.put("erssecret", "");
|
|
||||||
try {
|
|
||||||
BufferedWriter br = new BufferedWriter(new FileWriter("data/secrets.json"));
|
|
||||||
br.write(main.toString());
|
|
||||||
br.close();
|
|
||||||
} catch (IOException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void loadSettings() throws IOException {
|
|
||||||
if (!new File("data/secrets.json").exists()) {
|
|
||||||
initialize();
|
|
||||||
System.out.println("Please open \"data/secrets.json\" file and enter your discord token bot there!");
|
|
||||||
System.out.println("Please open \"data/secrets.json\" file and enter your Website Password there!");
|
|
||||||
|
|
||||||
} else {
|
|
||||||
BufferedReader br = new BufferedReader(new FileReader("data/secrets.json"));
|
|
||||||
String out = br.lines().collect(Collectors.joining("\n"));
|
|
||||||
JSONObject obj = new JSONObject(out);
|
|
||||||
|
|
||||||
JavaCord.token = obj.getString("bot-token");
|
|
||||||
PlayersOnlineWebsite.password = obj.getString("websitepass");
|
|
||||||
RegisteredAccsWebsite.password = obj.getString("websitepass");
|
|
||||||
GameEngine.ersSecret = obj.getString("erssecret");
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
+1
-1
@@ -14,7 +14,7 @@ public final class Constants {
|
|||||||
/**
|
/**
|
||||||
* The directory of the file system.
|
* The directory of the file system.
|
||||||
*/
|
*/
|
||||||
public static final String FILE_SYSTEM_DIR = "./cache/";
|
public static final String FILE_SYSTEM_DIR = "./data/cache/";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Default private constructor to prevent instantiation.
|
* Default private constructor to prevent instantiation.
|
||||||
+5
-4
@@ -69,14 +69,15 @@ public final class FileServer {
|
|||||||
* @throws Exception if an error occurs.
|
* @throws Exception if an error occurs.
|
||||||
*/
|
*/
|
||||||
public void start() throws Exception {
|
public void start() throws Exception {
|
||||||
if (!new File("cache").exists())
|
if (!new File(Constants.FILE_SYSTEM_DIR).exists())
|
||||||
{
|
{
|
||||||
|
System.out.println("Working Directory = " + System.getProperty("user.dir"));
|
||||||
System.out.println("************************************");
|
System.out.println("************************************");
|
||||||
System.out.println("************************************");
|
System.out.println("************************************");
|
||||||
System.out.println("************************************");
|
System.out.println("************************************");
|
||||||
System.out.println("WARNING: I could not find the /cache folder. You are LIKELY running this in the wrong directory!");
|
System.out.println("WARNING: I could not find the data/cache folder. You are LIKELY running this in the wrong directory!");
|
||||||
System.out.println("In IntelliJ, fix it by clicking \"FileServer\" > Edit Configurations at the top of your screen");
|
System.out.println("In IntelliJ, fix it by clicking \"GameEngine\" > Edit Configurations at the top of your screen");
|
||||||
System.out.println("Then changing the \"Working Directory\" to be in \"2006Scape/2006Scape file_server\", instead of just \"2006Scape\"");
|
System.out.println("Then changing the \"Working Directory\" to be in \"2006Scape/2006Scape Server\", instead of just \"2006Scape\"");
|
||||||
System.out.println("************************************");
|
System.out.println("************************************");
|
||||||
System.out.println("************************************");
|
System.out.println("************************************");
|
||||||
System.out.println("************************************");
|
System.out.println("************************************");
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
/bin/
|
|
||||||
*.iml
|
|
||||||
/target/
|
|
||||||
file_server-1.0-jar-with-dependencies.jar
|
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,118 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
|
||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
||||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
|
||||||
<parent>
|
|
||||||
<artifactId>2006Scape</artifactId>
|
|
||||||
<groupId>com.rs2</groupId>
|
|
||||||
<version>1.0</version>
|
|
||||||
</parent>
|
|
||||||
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
|
||||||
<artifactId>file_server</artifactId>
|
|
||||||
<version>1.0</version>
|
|
||||||
<packaging>jar</packaging>
|
|
||||||
|
|
||||||
<repositories>
|
|
||||||
<repository>
|
|
||||||
<id>libs-local</id>
|
|
||||||
<name>libs</name>
|
|
||||||
<url>file://${project.basedir}/libs</url>
|
|
||||||
</repository>
|
|
||||||
</repositories>
|
|
||||||
|
|
||||||
<dependencies>
|
|
||||||
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.apache.commons</groupId>
|
|
||||||
<artifactId>commons-lang3</artifactId>
|
|
||||||
<version>3.1</version>
|
|
||||||
</dependency>
|
|
||||||
<!-- https://mvnrepository.com/artifact/org.apache.mina/mina-core -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.apache.mina</groupId>
|
|
||||||
<artifactId>mina-core</artifactId>
|
|
||||||
<version>1.1.7</version>
|
|
||||||
</dependency>
|
|
||||||
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>mysql</groupId>
|
|
||||||
<artifactId>mysql-connector-java</artifactId>
|
|
||||||
<version>8.0.16</version>
|
|
||||||
</dependency>
|
|
||||||
<!-- https://mvnrepository.com/artifact/io.netty/netty -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>io.netty</groupId>
|
|
||||||
<artifactId>netty</artifactId>
|
|
||||||
<version>3.6.6.Final</version>
|
|
||||||
</dependency>
|
|
||||||
<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.slf4j</groupId>
|
|
||||||
<artifactId>slf4j-api</artifactId>
|
|
||||||
<version>1.5.8</version>
|
|
||||||
</dependency>
|
|
||||||
<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-nop -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.slf4j</groupId>
|
|
||||||
<artifactId>slf4j-nop</artifactId>
|
|
||||||
<version>1.5.8</version>
|
|
||||||
<scope>test</scope>
|
|
||||||
</dependency>
|
|
||||||
<!-- https://mvnrepository.com/artifact/com.thoughtworks.xstream/xstream -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>com.thoughtworks.xstream</groupId>
|
|
||||||
<artifactId>xstream</artifactId>
|
|
||||||
<version>1.4.17</version>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>javac</groupId>
|
|
||||||
<artifactId>javac</artifactId>
|
|
||||||
<version>1.0</version>
|
|
||||||
<scope>system</scope>
|
|
||||||
<systemPath>${project.basedir}/libs/javac++.jar</systemPath>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.xmlpull.v1</groupId>
|
|
||||||
<artifactId>xpp3</artifactId>
|
|
||||||
<version>1.1.4c</version>
|
|
||||||
<scope>system</scope>
|
|
||||||
<systemPath>${project.basedir}/libs/xpp3-1.1.4c.jar</systemPath>
|
|
||||||
</dependency>
|
|
||||||
</dependencies>
|
|
||||||
|
|
||||||
<build>
|
|
||||||
<plugins>
|
|
||||||
<plugin>
|
|
||||||
<groupId>org.apache.maven.plugins</groupId>
|
|
||||||
<artifactId>maven-compiler-plugin</artifactId>
|
|
||||||
<configuration>
|
|
||||||
<source>8</source>
|
|
||||||
<target>8</target>
|
|
||||||
</configuration>
|
|
||||||
</plugin>
|
|
||||||
<plugin>
|
|
||||||
<artifactId>maven-assembly-plugin</artifactId>
|
|
||||||
<configuration>
|
|
||||||
<archive>
|
|
||||||
<manifest>
|
|
||||||
<mainClass>org.apollo.jagcached.FileServer</mainClass>
|
|
||||||
</manifest>
|
|
||||||
</archive>
|
|
||||||
<descriptorRefs>
|
|
||||||
<descriptorRef>jar-with-dependencies</descriptorRef>
|
|
||||||
</descriptorRefs>
|
|
||||||
</configuration>
|
|
||||||
<executions>
|
|
||||||
<execution>
|
|
||||||
<id>make-assembly</id> <!-- this is used for inheritance merges -->
|
|
||||||
<phase>package</phase> <!-- bind to the packaging phase -->
|
|
||||||
<goals>
|
|
||||||
<goal>single</goal>
|
|
||||||
</goals>
|
|
||||||
</execution>
|
|
||||||
</executions>
|
|
||||||
</plugin>
|
|
||||||
</plugins>
|
|
||||||
</build>
|
|
||||||
</project>
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
echo This is meant to be run by the live server admin! You probably don\'t want to do this!
|
|
||||||
for i in {0..50}
|
|
||||||
do
|
|
||||||
cp target/file_server-1.0-jar-with-dependencies.jar ./fserver.jar
|
|
||||||
java -jar fserver.jar
|
|
||||||
done
|
|
||||||
@@ -4,8 +4,7 @@
|
|||||||
|
|
||||||
## How to Play
|
## How to Play
|
||||||
|
|
||||||
### Client (non-bottable download): https://github.com/2006-Scape/2006Scape/releases/
|
### Client/Launcher Download: https://2006Scape.org/
|
||||||
### Parabot client (recommended): https://www.parabot.org/community/
|
|
||||||
### Rune-Server project thread: [Project thread](https://www.rune-server.ee/runescape-development/rs2-server/projects/686444-2006rebotted-remake-server-will-allow-supply-creatable-bots.html)
|
### Rune-Server project thread: [Project thread](https://www.rune-server.ee/runescape-development/rs2-server/projects/686444-2006rebotted-remake-server-will-allow-supply-creatable-bots.html)
|
||||||
|
|
||||||
# Installation + Running (Developers)
|
# Installation + Running (Developers)
|
||||||
@@ -14,17 +13,16 @@
|
|||||||
|
|
||||||
2. Hit File > Project Settings > Set SDK to Java 8 (Download [Java 8 SDK](https://adoptopenjdk.net/?variant=openjdk8) if you don't have one already)
|
2. Hit File > Project Settings > Set SDK to Java 8 (Download [Java 8 SDK](https://adoptopenjdk.net/?variant=openjdk8) if you don't have one already)
|
||||||
|
|
||||||
2. Navigate to `2006Scape file_server` > `src` > `main` > `java` > `org.apollo.jagcached`, right click FileServer and hit Run [Image](https://i.imgur.com/tsg9q1Z.png)
|
|
||||||
|
|
||||||
3. Navigate to `2006Scape Server` > `src` > `main` > `java` > `com.rs2`, right click GameEngine and hit Run [Image](https://i.imgur.com/HHooeVu.png)
|
3. Navigate to `2006Scape Server` > `src` > `main` > `java` > `com.rs2`, right click GameEngine and hit Run [Image](https://i.imgur.com/HHooeVu.png)
|
||||||
|
|
||||||
4. Navigate to `2006Scape Client` > `src` > `main` > `java`, right click Client and hit Run [Image](https://i.imgur.com/gSmqGLn.png)
|
[(You Can Also Run The Server With The -c/-config Argument)](https://wiki.2006scape.org/books/getting-setup/page/server-arguments)
|
||||||
|
5. Navigate to `2006Scape Client` > `src` > `main` > `java`, right click Client and hit Run [Image](https://i.imgur.com/gSmqGLn.png)
|
||||||
|
|
||||||
*Advanced*
|
*Advanced*
|
||||||
|
|
||||||
To compile any module from the command line, run `mvn clean install`
|
To compile any module from the command line, run `mvn clean install`
|
||||||
|
|
||||||
## Using Parabot with your local server:
|
## Using Parabot with your local server: (OUTDATED)
|
||||||
- **1:** Download the latest `localhost_2006Scape.jar` from [here](https://github.com/2006-Scape/2006Scape/releases) (or, if testing server changes, compile it yourself like [this](https://i.imgur.com/uDrF0gl.png))
|
- **1:** Download the latest `localhost_2006Scape.jar` from [here](https://github.com/2006-Scape/2006Scape/releases) (or, if testing server changes, compile it yourself like [this](https://i.imgur.com/uDrF0gl.png))
|
||||||
- **2:** Download the latest `Provider-version.jar` file from [here](http://v3.bdn.parabot.org/api/bot/download/default-provider?nightly=false)
|
- **2:** Download the latest `Provider-version.jar` file from [here](http://v3.bdn.parabot.org/api/bot/download/default-provider?nightly=false)
|
||||||
- **3:** Create a file called `localhost.json` in `{user}\Documents\Parabot\servers`
|
- **3:** Create a file called `localhost.json` in `{user}\Documents\Parabot\servers`
|
||||||
@@ -55,7 +53,6 @@ java -jar Client-2.8.1.jar -login username password -loadlocal -v -clearcache
|
|||||||
- `2006Scape Server` contains all the server code; mark `src` as the Sources directory
|
- `2006Scape Server` contains all the server code; mark `src` as the Sources directory
|
||||||
- `2006Scape Client` contains all the client code; likewise mark `src`
|
- `2006Scape Client` contains all the client code; likewise mark `src`
|
||||||
- If more than 2 arguments are passed in (can be anything), the client runs locally
|
- If more than 2 arguments are passed in (can be anything), the client runs locally
|
||||||
- `2006Scape file_server` contains the file server code that is *required* to be running before a client can connect to a server. It must be running locally before a client can connect. `src` is the Sources directory
|
|
||||||
|
|
||||||
## Building from command line
|
## Building from command line
|
||||||
|
|
||||||
|
|||||||
+3
-15
@@ -10,26 +10,14 @@ services:
|
|||||||
working_dir: /usr/src/2006scape
|
working_dir: /usr/src/2006scape
|
||||||
restart: "no"
|
restart: "no"
|
||||||
|
|
||||||
rsps-2006scape-file-server:
|
|
||||||
image: openjdk:8-alpine
|
|
||||||
container_name: rsps-2006scape-file-server
|
|
||||||
command: ["java", "-jar", "target/file_server-1.0-jar-with-dependencies.jar"]
|
|
||||||
volumes:
|
|
||||||
- ./2006Scape file_server:/usr/src/fileserver
|
|
||||||
working_dir: /usr/src/fileserver
|
|
||||||
ports:
|
|
||||||
- 8080:8080 # web panel
|
|
||||||
- 43595-43596:43595-43596 # File Server
|
|
||||||
restart: unless-stopped
|
|
||||||
|
|
||||||
rsps-2006scape-server:
|
rsps-2006scape-server:
|
||||||
image: openjdk:8-alpine
|
image: openjdk:8-alpine
|
||||||
container_name: rsps-2006scape-server
|
container_name: rsps-2006scape-server
|
||||||
command: ["java", "-jar", "target/server-1.0-jar-with-dependencies.jar"]
|
command: ["java", "-jar", "target/server-1.0-jar-with-dependencies.jar", "-c", "ServerConfig.json"]
|
||||||
volumes:
|
volumes:
|
||||||
- ./2006Scape Server:/usr/src/server
|
- ./2006Scape Server:/usr/src/server
|
||||||
working_dir: /usr/src/server
|
working_dir: /usr/src/server
|
||||||
ports:
|
ports: # You will need to open other ports if your world ID is not 1 (43597 for world 2)
|
||||||
- 43594:43594 # Server
|
- 43594:43594 # Server
|
||||||
- 43594:43594/udp # Server
|
- 43595-43596:43595-43596 # File Server
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|||||||
Reference in New Issue
Block a user