diff --git a/2006Scape Client/src/main/java/ClientSettings.java b/2006Scape Client/src/main/java/ClientSettings.java index 0bfcd058..a7001823 100644 --- a/2006Scape Client/src/main/java/ClientSettings.java +++ b/2006Scape Client/src/main/java/ClientSettings.java @@ -21,7 +21,7 @@ public class ClientSettings { * You don't have to change this, the client will automatically connect to the server * on localhost (Assuming you're running Client and LocalGame respectively) */ - public static String SERVER_IP = "server.2006Scape.org"; + public static String SERVER_IP = "localhost"; /** * The Servers World * This Determines The Port The Server Will Connect On diff --git a/2006Scape Server/ServerConfig.Sample.json b/2006Scape Server/ServerConfig.Sample.json index c51fcd97..db6229bf 100644 --- a/2006Scape Server/ServerConfig.Sample.json +++ b/2006Scape Server/ServerConfig.Sample.json @@ -1,5 +1,6 @@ { "server_name": "2006Scape", + "server_test_version": 2.3, "website_link": "https://2006Scape.org", "server_debug": false, "file_server": true, diff --git a/2006Scape Server/src/main/java/com/rs2/ConfigLoader.java b/2006Scape Server/src/main/java/com/rs2/ConfigLoader.java deleted file mode 100644 index ee925338..00000000 --- a/2006Scape Server/src/main/java/com/rs2/ConfigLoader.java +++ /dev/null @@ -1,110 +0,0 @@ -package com.rs2; - -import com.rs2.integrations.PlayersOnlineWebsite; -import com.rs2.integrations.RegisteredAccsWebsite; -import com.rs2.integrations.discord.JavaCord; -import org.json.JSONArray; -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("server_test_version")) - GameConstants.TEST_VERSION = obj.getDouble("server_test_version"); - 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("variable_xp_rate")) - GameConstants.VARIABLE_XP_RATE = obj.getBoolean("variable_xp_rate"); - if(obj.has("xp_rate")) - GameConstants.XP_RATE = obj.getDouble("xp_rate"); - if(obj.has("max_players")) - GameConstants.MAX_PLAYERS = obj.getInt("max_players"); - if (obj.has("variable_xp_rates")) { - JSONArray rates = obj.optJSONArray("variable_xp_rates"); - for (int i = 0; i < rates.length(); ++i) { - GameConstants.VARIABLE_XP_RATES[i] = rates.optInt(i); - } - } - if(obj.has("website_integration")) - GameConstants.WEBSITE_INTEGRATION = obj.getBoolean("website_integration"); - } - - 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"); - - } - } -} diff --git a/2006Scape Server/src/main/java/com/rs2/ConfigLoader.kt b/2006Scape Server/src/main/java/com/rs2/ConfigLoader.kt new file mode 100644 index 00000000..743587a3 --- /dev/null +++ b/2006Scape Server/src/main/java/com/rs2/ConfigLoader.kt @@ -0,0 +1,83 @@ +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 + +object ConfigLoader { + @JvmStatic + @Throws(IOException::class) + fun loadSettings(config: String?) { + val br = config?.let { FileReader(it) }?.let { BufferedReader(it) } + val out = br?.lines()?.collect(Collectors.joining("\n")) + val obj = JSONObject(out) + if (obj.has("server_name")) GameConstants.SERVER_NAME = obj.getString("server_name") + if (obj.has("server_test_version")) GameConstants.TEST_VERSION = obj.getDouble("server_test_version") + 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("variable_xp_rate")) GameConstants.VARIABLE_XP_RATE = obj.getBoolean("variable_xp_rate") + if (obj.has("xp_rate")) GameConstants.XP_RATE = obj.getDouble("xp_rate") + if (obj.has("max_players")) GameConstants.MAX_PLAYERS = obj.getInt("max_players") + if (obj.has("variable_xp_rates")) { + val rates = obj.optJSONArray("variable_xp_rates") + for (i in 0 until rates.length()) { + GameConstants.VARIABLE_XP_RATES[i] = rates.optInt(i) + } + } + if (obj.has("website_integration")) GameConstants.WEBSITE_INTEGRATION = obj.getBoolean("website_integration") + } + + private fun initialize() { + val main = JSONObject() + main + .put("bot-token", "") + .put("websitepass", "") + .put("erssecret", "") + try { + val br = BufferedWriter(FileWriter("data/secrets.json")) + br.write(main.toString()) + br.close() + } catch (e: IOException) { + e.printStackTrace() + } + } + + @JvmStatic + @Throws(IOException::class) + fun loadSecrets() { + if (!File("data/secrets.json").exists()) { + initialize() + println("Please open \"data/secrets.json\" file and enter your discord token bot there!") + println("Please open \"data/secrets.json\" file and enter your Website Password there!") + } else { + val br = BufferedReader(FileReader("data/secrets.json")) + val out = br.lines().collect(Collectors.joining("\n")) + val obj = 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") + } + } +} \ No newline at end of file diff --git a/2006Scape Server/src/main/java/com/rs2/GameConstants.java b/2006Scape Server/src/main/java/com/rs2/GameConstants.java deleted file mode 100644 index 836788fb..00000000 --- a/2006Scape Server/src/main/java/com/rs2/GameConstants.java +++ /dev/null @@ -1,87 +0,0 @@ -package com.rs2; - -public class GameConstants { - - /** - * 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 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 - * VARIABLE_XP_RATE Allows Players To Choose An XP Rate Set In VARIABLE_XP_RATES - * VARIABLE_XP_RATES Defines The XP Rates That Should Be Available To Players When VARIABLE_XP_RATES is true(Array Must Contain Four Entries) - * XP_RATE Sets The XP Rate Multiplier For All Players/Skills If VARIABLE_XP_RATES is false - * WEBSITE_INTEGRATION Enables/Disables Website Features(Total Accounts Registered & Players Online) - */ - 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, VARIABLE_XP_RATE = false, - WEBSITE_INTEGRATION = false; - public static int[] VARIABLE_XP_RATES = new int[] {1, 2, 5, 10}; - public static double TEST_VERSION = 2.3, XP_RATE = 1.0; - - - /** - * The Variables Below Should Only Be Changed If You Understand What You Are Doing - */ - public final static int ITEM_LIMIT = 15000, MAXITEM_AMOUNT = Integer.MAX_VALUE, - IPS_ALLOWED = 250, CONNECTION_DELAY = 100; - - public final static boolean sendServerPackets = false, SOUND = true, GUILDS = true; - - public static int[] SIDEBARS = { 2423, 3917, 638, 3213, 1644, 5608, 1151, - 18128, 5065, 5715, 2449, 904, 147, 962 }; - - public final static int[] FUN_WEAPONS = { 2460, 2461, 2462, 2463, 2464, - 2465, 2466, 2467, 2468, 2469, 2470, 2471, 2471, 2473, 2474, 2475, - 2476, 2477 }; // fun weapons for dueling - - - public final static int DUELING_RESPAWN_X = 3362; - - public final static int DUELING_RESPAWN_Y = 3263; - - public final static int NO_TELEPORT_WILD_LEVEL = 20; - - public final static int NPC_RANDOM_WALK_DISTANCE = 5; - - public final static int NPC_FOLLOW_DISTANCE = 10; - - public final static String[] UNDEAD = { - "armoured zombie", "ankous", "banshee", "crawling hand", "dried zombie", "ghost", "ghostly warrior", "ghast", - "mummy", "mighty banshee", "reventant imp", "reventant goblin", "reventant icefiend", "reventant pyrefiend", - "reventant hobgoblin", "reventant vampyre", "reventant werewolf", "reventant cyclops", "reventant darkbeast", - "reventant demon", "reventant ork", "reventant hellhound", "reventant knight", "reventant dragon", - "shade", "skeleton", "skeleton brute", "skeleton thug", "skeleton warload", "summoned zombie", - "skorge", "tortured soul", "undead chicken", "undead cow", "undead one", "undead troll", "zombie", "zombie rat", "zogre" - }; - - public final static int CYCLE_TIME = 600; - - public final static int BUFFER_SIZE = 10000; - - public final static int ATTACK = 0, DEFENCE = 1, STRENGTH = 2, - HITPOINTS = 3, RANGED = 4, PRAYER = 5, MAGIC = 6, COOKING = 7, - WOODCUTTING = 8, FLETCHING = 9, FISHING = 10, FIREMAKING = 11, - CRAFTING = 12, SMITHING = 13, MINING = 14, HERBLORE = 15, - AGILITY = 16, THIEVING = 17, SLAYER = 18, FARMING = 19, - RUNECRAFTING = 20; -} diff --git a/2006Scape Server/src/main/java/com/rs2/GameConstants.kt b/2006Scape Server/src/main/java/com/rs2/GameConstants.kt new file mode 100644 index 00000000..723d5426 --- /dev/null +++ b/2006Scape Server/src/main/java/com/rs2/GameConstants.kt @@ -0,0 +1,168 @@ +package com.rs2 + +object GameConstants { + /** + * 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 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 + * VARIABLE_XP_RATE Allows Players To Choose An XP Rate Set In VARIABLE_XP_RATES + * VARIABLE_XP_RATES Defines The XP Rates That Should Be Available To Players When VARIABLE_XP_RATES is true(Array Must Contain Four Entries) + * XP_RATE Sets The XP Rate Multiplier For All Players/Skills If VARIABLE_XP_RATES is false + * WEBSITE_INTEGRATION Enables/Disables Website Features(Total Accounts Registered & Players Online) + */ + @JvmField + var SERVER_NAME = "2006Scape" + @JvmField + var WEBSITE_LINK = "https://2006Scape.org" + @JvmField + var WORLD = 1 + @JvmField + var MAX_PLAYERS = 200 + @JvmField + var TIMEOUT = 60 + @JvmField + var SAVE_TIMER = 120 + @JvmField + var RESPAWN_X = 3222 + @JvmField + var RESPAWN_Y = 3218 + @JvmField + var FILE_SERVER = true + @JvmField + var SERVER_DEBUG = false + @JvmField + var MEMBERS_ONLY = false + @JvmField + var TUTORIAL_ISLAND = false + @JvmField + var PARTY_ROOM_DISABLED = false + @JvmField + var CLUES_ENABLED = true + @JvmField + var ITEM_REQUIREMENTS = true + @JvmField + var ADMIN_CAN_TRADE = false + @JvmField + var ADMIN_DROP_ITEMS = false + @JvmField + var ADMIN_CAN_SELL_ITEMS = false + @JvmField + var VARIABLE_XP_RATE = false + @JvmField + var WEBSITE_INTEGRATION = false + @JvmField + var VARIABLE_XP_RATES = intArrayOf(1, 2, 5, 10) + @JvmField + var TEST_VERSION = 2.3 + @JvmField + var XP_RATE = 1.0 + + /** + * The Variables Below Should Only Be Changed If You Understand What You Are Doing + */ + const val ITEM_LIMIT = 15000 + const val MAXITEM_AMOUNT = Int.MAX_VALUE + const val IPS_ALLOWED = 250 + const val CONNECTION_DELAY = 100 + const val sendServerPackets = false + const val SOUND = true + const val GUILDS = true + @JvmField + var SIDEBARS = intArrayOf( + 2423, 3917, 638, 3213, 1644, 5608, 1151, + 18128, 5065, 5715, 2449, 904, 147, 962 + ) + @JvmField + val FUN_WEAPONS = intArrayOf( + 2460, 2461, 2462, 2463, 2464, + 2465, 2466, 2467, 2468, 2469, 2470, 2471, 2471, 2473, 2474, 2475, + 2476, 2477 + ) // fun weapons for dueling + const val DUELING_RESPAWN_X = 3362 + const val DUELING_RESPAWN_Y = 3263 + const val NO_TELEPORT_WILD_LEVEL = 20 + const val NPC_RANDOM_WALK_DISTANCE = 5 + const val NPC_FOLLOW_DISTANCE = 10 + @JvmField + val UNDEAD = arrayOf( + "armoured zombie", + "ankous", + "banshee", + "crawling hand", + "dried zombie", + "ghost", + "ghostly warrior", + "ghast", + "mummy", + "mighty banshee", + "reventant imp", + "reventant goblin", + "reventant icefiend", + "reventant pyrefiend", + "reventant hobgoblin", + "reventant vampyre", + "reventant werewolf", + "reventant cyclops", + "reventant darkbeast", + "reventant demon", + "reventant ork", + "reventant hellhound", + "reventant knight", + "reventant dragon", + "shade", + "skeleton", + "skeleton brute", + "skeleton thug", + "skeleton warload", + "summoned zombie", + "skorge", + "tortured soul", + "undead chicken", + "undead cow", + "undead one", + "undead troll", + "zombie", + "zombie rat", + "zogre" + ) + const val CYCLE_TIME = 600 + const val BUFFER_SIZE = 10000 + const val ATTACK = 0 + const val DEFENCE = 1 + const val STRENGTH = 2 + const val HITPOINTS = 3 + const val RANGED = 4 + const val PRAYER = 5 + const val MAGIC = 6 + const val COOKING = 7 + const val WOODCUTTING = 8 + const val FLETCHING = 9 + const val FISHING = 10 + const val FIREMAKING = 11 + const val CRAFTING = 12 + const val SMITHING = 13 + const val MINING = 14 + const val HERBLORE = 15 + const val AGILITY = 16 + const val THIEVING = 17 + const val SLAYER = 18 + const val FARMING = 19 + const val RUNECRAFTING = 20 +} \ No newline at end of file diff --git a/2006Scape Server/src/main/java/com/rs2/integrations/discord/DiscordActivity.java b/2006Scape Server/src/main/java/com/rs2/integrations/discord/DiscordActivity.java deleted file mode 100644 index 2cc4e8e3..00000000 --- a/2006Scape Server/src/main/java/com/rs2/integrations/discord/DiscordActivity.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.rs2.integrations.discord; - -import com.rs2.game.players.PlayerHandler; - -public class DiscordActivity { - - public static Boolean playerCount = false; - private static int count = 50; - - public static void updateActivity() { - try { - if (JavaCord.token != null && !JavaCord.token.equals("")) { - if (count == 0) { - if (PlayerHandler.getPlayerCount() != 1) { - JavaCord.api.updateActivity(PlayerHandler.getPlayerCount() + " Players Online"); - System.out.println("Discord Activity Updated"); - count = 100; - } else { - JavaCord.api.updateActivity(PlayerHandler.getPlayerCount() + " Player Online"); - System.out.println("Discord Activity Updated"); - count = 100; - } - } else { - count--; - } - } - - } catch (Exception e) { - System.out.println("Could not set Discord activity: " + e); - System.out.println("Null checks"); - try { - System.out.println("JavaCord.api: " + JavaCord.api); - System.out.println("PlayerHandler.getPlayerCount: " + PlayerHandler.getPlayerCount()); - } catch (Exception e2) { - System.out.println(e2); - } - } - } -} diff --git a/2006Scape Server/src/main/java/com/rs2/integrations/discord/DiscordActivity.kt b/2006Scape Server/src/main/java/com/rs2/integrations/discord/DiscordActivity.kt new file mode 100644 index 00000000..b6308fa6 --- /dev/null +++ b/2006Scape Server/src/main/java/com/rs2/integrations/discord/DiscordActivity.kt @@ -0,0 +1,38 @@ +package com.rs2.integrations.discord + +import com.rs2.game.players.PlayerHandler + +object DiscordActivity { + @JvmField + var playerCount = false + private var count = 50 + @JvmStatic + fun updateActivity() { + try { + if (JavaCord.token != null && JavaCord.token != "") { + if (count == 0) { + if (PlayerHandler.getPlayerCount() != 1) { + JavaCord.api!!.updateActivity(PlayerHandler.getPlayerCount().toString() + " Players Online") + println("Discord Activity Updated") + count = 100 + } else { + JavaCord.api!!.updateActivity(PlayerHandler.getPlayerCount().toString() + " Player Online") + println("Discord Activity Updated") + count = 100 + } + } else { + count-- + } + } + } catch (e: Exception) { + println("Could not set Discord activity: $e") + println("Null checks") + try { + println("JavaCord.api: " + JavaCord.api) + println("PlayerHandler.getPlayerCount: " + PlayerHandler.getPlayerCount()) + } catch (e2: Exception) { + println(e2) + } + } + } +} \ No newline at end of file diff --git a/2006Scape Server/src/main/java/com/rs2/integrations/discord/JavaCord.java b/2006Scape Server/src/main/java/com/rs2/integrations/discord/JavaCord.java deleted file mode 100644 index 16efe793..00000000 --- a/2006Scape Server/src/main/java/com/rs2/integrations/discord/JavaCord.java +++ /dev/null @@ -1,75 +0,0 @@ -package com.rs2.integrations.discord; - -import com.rs2.GameConstants; -import com.rs2.integrations.discord.commands.*; -import com.rs2.integrations.discord.commands.admin.*; -import org.javacord.api.DiscordApi; -import org.javacord.api.DiscordApiBuilder; -import org.javacord.api.entity.channel.TextChannel; -import org.javacord.api.entity.message.MessageBuilder; -import org.javacord.api.util.logging.ExceptionLogger; - -import java.io.IOException; - -/** - * @author Patrity || https://www.rune-server.ee/members/patrity/ - */ - -public class JavaCord { - - public static String serverName = GameConstants.SERVER_NAME; - public static String commandPrefix = "::w" + GameConstants.WORLD; - public static String token; - public static DiscordApi api = null; - - public static void init() throws IOException { - if (token != null && !token.equals("")) { //If the token was loaded by loadSettings: - new DiscordApiBuilder().setToken(token).login().thenAccept(api -> { - try { - JavaCord.api = api; - //System.out.println("You can invite the bot by using the following url: " + api.createBotInvite()); - api.addListener(new Commands()); - api.addListener(new Forum()); - api.addListener(new Hiscores()); - api.addListener(new Issues()); - api.addListener(new Link()); - api.addListener(new Online()); - api.addListener(new Players()); - api.addListener(new Vote()); - api.addListener(new Website()); - //Admin Commands - api.addListener(new AdminCommands()); - api.addListener(new GameKick()); - api.addListener(new MoveHome()); - api.addListener(new Update()); - api.addListener(new Pin()); - api.addListener(new Purge()); - //api.addListener(new Link()); - //api.addListener(new WelcomeMessage()); - if(!DiscordActivity.playerCount) { - api.updateActivity(GameConstants.WEBSITE_LINK); - } - api.addMessageCreateListener(event -> { - }); - - } catch (Exception e) { - e.printStackTrace(); - } - }) - // Log exceptions (might not work now that we try(catch) - .exceptionally(ExceptionLogger.get()); - } else { - System.out.println("Discord Token Not Set So Bot Not Loaded"); - } - } - - public static void sendMessage(String channel, String msg) { - try { - new MessageBuilder() - .append(msg) - .send((TextChannel) api.getTextChannelsByNameIgnoreCase(channel).toArray()[0]); - } catch (Exception e) { - e.printStackTrace(); - } - } -} \ No newline at end of file diff --git a/2006Scape Server/src/main/java/com/rs2/integrations/discord/JavaCord.kt b/2006Scape Server/src/main/java/com/rs2/integrations/discord/JavaCord.kt new file mode 100644 index 00000000..e5e97b69 --- /dev/null +++ b/2006Scape Server/src/main/java/com/rs2/integrations/discord/JavaCord.kt @@ -0,0 +1,74 @@ +package com.rs2.integrations.discord + +import com.rs2.GameConstants +import com.rs2.integrations.discord.commands.* +import com.rs2.integrations.discord.commands.admin.* +import org.javacord.api.DiscordApi +import org.javacord.api.DiscordApiBuilder +import org.javacord.api.entity.channel.TextChannel +import org.javacord.api.entity.message.MessageBuilder +import org.javacord.api.event.message.MessageCreateEvent +import org.javacord.api.util.logging.ExceptionLogger +import java.io.IOException +import java.util.* + + +/** + * @author Patrity || https://www.rune-server.ee/members/patrity/ + */ +object JavaCord { + var serverName: String = GameConstants.SERVER_NAME + var commandPrefix = "::w" + GameConstants.WORLD + @JvmField + var token: String? = null + var api: DiscordApi? = null + @JvmStatic + @Throws(IOException::class) + fun init() { + if (token != null && token != "") { //If the token was loaded by loadSettings: + DiscordApiBuilder().setToken(token).login().thenAccept { api: DiscordApi -> + try { + JavaCord.api = api + //System.out.println("You can invite the bot by using the following url: " + api.createBotInvite()); + api.addListener(Commands()) + api.addListener(Forum()) + api.addListener(Hiscores()) + api.addListener(Issues()) + api.addListener(Link()) + api.addListener(Online()) + api.addListener(Players()) + api.addListener(Vote()) + api.addListener(Website()) + //Admin Commands + api.addListener(AdminCommands()) + api.addListener(GameKick()) + api.addListener(MoveHome()) + api.addListener(Update()) + api.addListener(Pin()) + api.addListener(Purge()) + //api.addListener(new Link()); + //api.addListener(new WelcomeMessage()); + if (!DiscordActivity.playerCount) { + api.updateActivity(GameConstants.WEBSITE_LINK) + } + api.addMessageCreateListener { event: MessageCreateEvent? -> } + } catch (e: Exception) { + e.printStackTrace() + } + } // Log exceptions (might not work now that we try(catch) + .exceptionally(ExceptionLogger.get()) + } else { + println("Discord Token Not Set So Bot Not Loaded") + } + } + + fun sendMessage(channel: String?, msg: String?) { + try { + MessageBuilder() + .append(msg) + .send(api!!.getTextChannelsByNameIgnoreCase(channel).toTypedArray()[0] as TextChannel) + } catch (e: Exception) { + e.printStackTrace() + } + } +} \ No newline at end of file diff --git a/2006Scape Server/src/main/java/com/rs2/integrations/discord/WelcomeMessage.java b/2006Scape Server/src/main/java/com/rs2/integrations/discord/WelcomeMessage.java deleted file mode 100644 index 21d71cfb..00000000 --- a/2006Scape Server/src/main/java/com/rs2/integrations/discord/WelcomeMessage.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.rs2.integrations.discord; - -import com.rs2.GameConstants; -import org.javacord.api.event.server.member.ServerMemberJoinEvent; -import org.javacord.api.listener.server.member.ServerMemberJoinListener; - -public class WelcomeMessage implements ServerMemberJoinListener { - @Override - public void onServerMemberJoin(ServerMemberJoinEvent event) { - String welcomeMessageChannel = "655143683083206667"; - if (GameConstants.WORLD == 1) { - event.getApi().getTextChannelById(welcomeMessageChannel).get(). - sendMessage("Hello " + event.getUser().getMentionTag() + " And Welcome To " + JavaCord.serverName + "."); - } - } -} \ No newline at end of file diff --git a/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/Commands.java b/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/Commands.java deleted file mode 100644 index 3fde1f21..00000000 --- a/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/Commands.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.rs2.integrations.discord.commands; - -import com.rs2.integrations.discord.JavaCord; -import org.javacord.api.entity.message.Message; -import org.javacord.api.event.message.MessageCreateEvent; -import org.javacord.api.listener.message.MessageCreateListener; - -public class Commands implements MessageCreateListener { - @Override - public void onMessageCreate(MessageCreateEvent event) { - Message message = event.getMessage(); - if (message.getContent().equalsIgnoreCase(JavaCord.commandPrefix + " commands")) { - event.getChannel().sendMessage("```fix" - + System.lineSeparator() + - "::link" - + System.lineSeparator() + - "::forum/::forums" - + System.lineSeparator() + - JavaCord.commandPrefix + " gamekick(if account id linked)" - + System.lineSeparator() + - JavaCord.commandPrefix + " hiscores/" + JavaCord.commandPrefix + " highscores" - + System.lineSeparator() + - "::issues/::bugs" - + System.lineSeparator() + - JavaCord.commandPrefix + " online" - + System.lineSeparator() + - "::vote" - + System.lineSeparator() + - "::website/::site" - + "```"); - } - } -} diff --git a/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/Commands.kt b/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/Commands.kt new file mode 100644 index 00000000..4edf4d61 --- /dev/null +++ b/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/Commands.kt @@ -0,0 +1,33 @@ +package com.rs2.integrations.discord.commands + +import com.rs2.integrations.discord.JavaCord +import org.javacord.api.event.message.MessageCreateEvent +import org.javacord.api.listener.message.MessageCreateListener + +class Commands : MessageCreateListener { + override fun onMessageCreate(event: MessageCreateEvent) { + val message = event.message + if (message.content.equals(JavaCord.commandPrefix + " commands", ignoreCase = true)) { + event.channel.sendMessage( + "```fix" + + System.lineSeparator() + + "::link" + + System.lineSeparator() + + "::forum/::forums" + + System.lineSeparator() + + JavaCord.commandPrefix + " gamekick(if account id linked)" + + System.lineSeparator() + + JavaCord.commandPrefix + " hiscores/" + JavaCord.commandPrefix + " highscores" + + System.lineSeparator() + + "::issues/::bugs" + + System.lineSeparator() + + JavaCord.commandPrefix + " online" + + System.lineSeparator() + + "::vote" + + System.lineSeparator() + + "::website/::site" + + "```" + ) + } + } +} \ No newline at end of file diff --git a/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/Forum.java b/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/Forum.java deleted file mode 100644 index 46d26e08..00000000 --- a/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/Forum.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.rs2.integrations.discord.commands; - -import org.javacord.api.entity.message.Message; -import org.javacord.api.event.message.MessageCreateEvent; -import org.javacord.api.listener.message.MessageCreateListener; - -import com.rs2.GameConstants; - -public class Forum implements MessageCreateListener { - @Override - public void onMessageCreate(MessageCreateEvent event) { - Message message = event.getMessage(); - if (message.getContent().equalsIgnoreCase("::forum") || message.getContent().equalsIgnoreCase("::forums")) { - if (GameConstants.WORLD == 1) { - event.getChannel().sendMessage(GameConstants.WEBSITE_LINK + "/forums/index.php"); - } - } - } -} diff --git a/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/Forum.kt b/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/Forum.kt new file mode 100644 index 00000000..3356df73 --- /dev/null +++ b/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/Forum.kt @@ -0,0 +1,20 @@ +package com.rs2.integrations.discord.commands + +import com.rs2.GameConstants +import org.javacord.api.event.message.MessageCreateEvent +import org.javacord.api.listener.message.MessageCreateListener + +class Forum : MessageCreateListener { + override fun onMessageCreate(event: MessageCreateEvent) { + val message = event.message + if (message.content.equals("::forum", ignoreCase = true) || message.content.equals( + "::forums", + ignoreCase = true + ) + ) { + if (GameConstants.WORLD == 1) { + event.channel.sendMessage(GameConstants.WEBSITE_LINK + "/forums/index.php") + } + } + } +} \ No newline at end of file diff --git a/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/Hiscores.java b/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/Hiscores.java deleted file mode 100644 index fc72e2bb..00000000 --- a/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/Hiscores.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.rs2.integrations.discord.commands; - -import com.rs2.integrations.discord.JavaCord; -import org.javacord.api.entity.message.Message; -import org.javacord.api.event.message.MessageCreateEvent; -import org.javacord.api.listener.message.MessageCreateListener; - -import com.rs2.GameConstants; - -public class Hiscores implements MessageCreateListener { - @Override - public void onMessageCreate(MessageCreateEvent event) { - Message message = event.getMessage(); - if (message.getContent().equalsIgnoreCase(JavaCord.commandPrefix + " hiscores") || message.getContent().equalsIgnoreCase(JavaCord.commandPrefix + " highscores")) { - event.getChannel().sendMessage(GameConstants.WEBSITE_LINK + "/hiscores.html"); - } - } -} diff --git a/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/Hiscores.kt b/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/Hiscores.kt new file mode 100644 index 00000000..47c61dea --- /dev/null +++ b/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/Hiscores.kt @@ -0,0 +1,19 @@ +package com.rs2.integrations.discord.commands + +import com.rs2.GameConstants +import com.rs2.integrations.discord.JavaCord +import org.javacord.api.event.message.MessageCreateEvent +import org.javacord.api.listener.message.MessageCreateListener + +class Hiscores : MessageCreateListener { + override fun onMessageCreate(event: MessageCreateEvent) { + val message = event.message + if (message.content.equals(JavaCord.commandPrefix + " hiscores", ignoreCase = true) || message.content.equals( + JavaCord.commandPrefix + " highscores", + ignoreCase = true + ) + ) { + event.channel.sendMessage(GameConstants.WEBSITE_LINK + "/hiscores.html") + } + } +} \ No newline at end of file diff --git a/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/Issues.java b/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/Issues.java deleted file mode 100644 index 7a8c52ff..00000000 --- a/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/Issues.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.rs2.integrations.discord.commands; - -import com.rs2.GameConstants; -import org.javacord.api.entity.message.Message; -import org.javacord.api.event.message.MessageCreateEvent; -import org.javacord.api.listener.message.MessageCreateListener; - -public class Issues implements MessageCreateListener { - @Override - public void onMessageCreate(MessageCreateEvent event) { - Message message = event.getMessage(); - if (message.getContent().equalsIgnoreCase("::issues") || message.getContent().equalsIgnoreCase("::bugs")) { - if (GameConstants.WORLD == 1) { - event.getChannel().sendMessage("https://github.com/2006-Scape/2006Scape/issues"); - } - } - } -} diff --git a/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/Issues.kt b/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/Issues.kt new file mode 100644 index 00000000..fc277241 --- /dev/null +++ b/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/Issues.kt @@ -0,0 +1,20 @@ +package com.rs2.integrations.discord.commands + +import com.rs2.GameConstants +import org.javacord.api.event.message.MessageCreateEvent +import org.javacord.api.listener.message.MessageCreateListener + +class Issues : MessageCreateListener { + override fun onMessageCreate(event: MessageCreateEvent) { + val message = event.message + if (message.content.equals("::issues", ignoreCase = true) || message.content.equals( + "::bugs", + ignoreCase = true + ) + ) { + if (GameConstants.WORLD == 1) { + event.channel.sendMessage("https://github.com/2006-Scape/2006Scape/issues") + } + } + } +} \ No newline at end of file diff --git a/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/Link.java b/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/Link.java deleted file mode 100644 index 98dc1b85..00000000 --- a/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/Link.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.rs2.integrations.discord.commands; - -import org.javacord.api.entity.message.Message; -import org.javacord.api.entity.user.User; -import org.javacord.api.event.message.MessageCreateEvent; -import org.javacord.api.listener.message.MessageCreateListener; - -public class Link implements MessageCreateListener { - @Override - public void onMessageCreate(MessageCreateEvent event) { - Message message = event.getMessage(); - User user = message.getAuthor().asUser().get(); - if (message.getContent().equalsIgnoreCase("::link")) { - event.getChannel().sendMessage(user.getMentionTag() + ", Please check your DM's to continue."); - user.sendMessage("Please copy/paste the following in-game to link your Discord account: \n ```::link " + user.getIdAsString() + "```"); - } - } -} \ No newline at end of file diff --git a/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/Link.kt b/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/Link.kt new file mode 100644 index 00000000..e180163f --- /dev/null +++ b/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/Link.kt @@ -0,0 +1,15 @@ +package com.rs2.integrations.discord.commands + +import org.javacord.api.event.message.MessageCreateEvent +import org.javacord.api.listener.message.MessageCreateListener + +class Link : MessageCreateListener { + override fun onMessageCreate(event: MessageCreateEvent) { + val message = event.message + val user = message.author.asUser().get() + if (message.content.equals("::link", ignoreCase = true)) { + event.channel.sendMessage(user.mentionTag + ", Please check your DM's to continue.") + user.sendMessage("Please copy/paste the following in-game to link your Discord account: \n ```::link " + user.idAsString + "```") + } + } +} \ No newline at end of file diff --git a/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/Online.java b/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/Online.java deleted file mode 100644 index cf0376b5..00000000 --- a/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/Online.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.rs2.integrations.discord.commands; - -import com.rs2.GameConstants; -import org.javacord.api.entity.message.Message; -import org.javacord.api.event.message.MessageCreateEvent; -import org.javacord.api.listener.message.MessageCreateListener; - -import com.rs2.integrations.discord.JavaCord; - -public class Online implements MessageCreateListener { - @Override - public void onMessageCreate(MessageCreateEvent event) { - Message message = event.getMessage(); - if (message.getContent().equalsIgnoreCase(JavaCord.commandPrefix + " online")) { - event.getChannel().sendMessage(":tada: " + JavaCord.serverName + " World:" + GameConstants.WORLD + " is Online! :tada:"); - } - } -} \ No newline at end of file diff --git a/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/Online.kt b/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/Online.kt new file mode 100644 index 00000000..b3ff5854 --- /dev/null +++ b/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/Online.kt @@ -0,0 +1,15 @@ +package com.rs2.integrations.discord.commands + +import com.rs2.GameConstants +import com.rs2.integrations.discord.JavaCord +import org.javacord.api.event.message.MessageCreateEvent +import org.javacord.api.listener.message.MessageCreateListener + +class Online : MessageCreateListener { + override fun onMessageCreate(event: MessageCreateEvent) { + val message = event.message + if (message.content.equals(JavaCord.commandPrefix + " online", ignoreCase = true)) { + event.channel.sendMessage(":tada: " + JavaCord.serverName + " World:" + GameConstants.WORLD + " is Online! :tada:") + } + } +} \ No newline at end of file diff --git a/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/Players.java b/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/Players.java deleted file mode 100644 index 83d95c7e..00000000 --- a/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/Players.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.rs2.integrations.discord.commands; - -import com.rs2.game.players.PlayerHandler; -import com.rs2.integrations.discord.JavaCord; -import org.javacord.api.entity.message.Message; -import org.javacord.api.event.message.MessageCreateEvent; -import org.javacord.api.listener.message.MessageCreateListener; - -public class Players implements MessageCreateListener { - @Override - public void onMessageCreate(MessageCreateEvent event) { - Message message = event.getMessage(); - if (message.getContent().equalsIgnoreCase(JavaCord.commandPrefix + " players")) { - if (PlayerHandler.getPlayerCount() != 1) { - event.getChannel().sendMessage("There are currently " + PlayerHandler.getPlayerCount() + " players online (" + PlayerHandler.getNonPlayerCount() + " staff online)."); - } else { - event.getChannel().sendMessage("There is currently " + PlayerHandler.getPlayerCount() + " player online."); - } - } - } -} diff --git a/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/Players.kt b/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/Players.kt new file mode 100644 index 00000000..fc2cbc53 --- /dev/null +++ b/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/Players.kt @@ -0,0 +1,19 @@ +package com.rs2.integrations.discord.commands + +import com.rs2.game.players.PlayerHandler +import com.rs2.integrations.discord.JavaCord +import org.javacord.api.event.message.MessageCreateEvent +import org.javacord.api.listener.message.MessageCreateListener + +class Players : MessageCreateListener { + override fun onMessageCreate(event: MessageCreateEvent) { + val message = event.message + if (message.content.equals(JavaCord.commandPrefix + " players", ignoreCase = true)) { + if (PlayerHandler.getPlayerCount() != 1) { + event.channel.sendMessage("There are currently " + PlayerHandler.getPlayerCount() + " players online (" + PlayerHandler.getNonPlayerCount() + " staff online).") + } else { + event.channel.sendMessage("There is currently " + PlayerHandler.getPlayerCount() + " player online.") + } + } + } +} \ No newline at end of file diff --git a/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/Vote.java b/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/Vote.java deleted file mode 100644 index 56bcb940..00000000 --- a/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/Vote.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.rs2.integrations.discord.commands; - -import org.javacord.api.entity.message.Message; -import org.javacord.api.event.message.MessageCreateEvent; -import org.javacord.api.listener.message.MessageCreateListener; - -import com.rs2.GameConstants; - -public class Vote implements MessageCreateListener { - @Override - public void onMessageCreate(MessageCreateEvent event) { - Message message = event.getMessage(); - if (message.getContent().equalsIgnoreCase("::vote")) { - if (GameConstants.WORLD == 1) { - event.getChannel().sendMessage("Visit " + GameConstants.WEBSITE_LINK + "/vote.html then type \"::claimvote\" in-game to receive your reward!"); - } - } - } -} - diff --git a/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/Vote.kt b/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/Vote.kt new file mode 100644 index 00000000..26a9ad0a --- /dev/null +++ b/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/Vote.kt @@ -0,0 +1,16 @@ +package com.rs2.integrations.discord.commands + +import com.rs2.GameConstants +import org.javacord.api.event.message.MessageCreateEvent +import org.javacord.api.listener.message.MessageCreateListener + +class Vote : MessageCreateListener { + override fun onMessageCreate(event: MessageCreateEvent) { + val message = event.message + if (message.content.equals("::vote", ignoreCase = true)) { + if (GameConstants.WORLD == 1) { + event.channel.sendMessage("Visit " + GameConstants.WEBSITE_LINK + "/vote.html then type \"::claimvote\" in-game to receive your reward!") + } + } + } +} \ No newline at end of file diff --git a/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/Website.java b/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/Website.java deleted file mode 100644 index f820c865..00000000 --- a/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/Website.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.rs2.integrations.discord.commands; - -import org.javacord.api.entity.message.Message; -import org.javacord.api.event.message.MessageCreateEvent; -import org.javacord.api.listener.message.MessageCreateListener; - -import com.rs2.GameConstants; - -public class Website implements MessageCreateListener { - @Override - public void onMessageCreate(MessageCreateEvent event) { - Message message = event.getMessage(); - if (message.getContent().equalsIgnoreCase("::website") || message.getContent().equalsIgnoreCase("::site")) { - if (GameConstants.WORLD == 1) { - event.getChannel().sendMessage(GameConstants.WEBSITE_LINK); - } - } - } -} diff --git a/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/Website.kt b/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/Website.kt new file mode 100644 index 00000000..46dc7f4d --- /dev/null +++ b/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/Website.kt @@ -0,0 +1,20 @@ +package com.rs2.integrations.discord.commands + +import com.rs2.GameConstants +import org.javacord.api.event.message.MessageCreateEvent +import org.javacord.api.listener.message.MessageCreateListener + +class Website : MessageCreateListener { + override fun onMessageCreate(event: MessageCreateEvent) { + val message = event.message + if (message.content.equals("::website", ignoreCase = true) || message.content.equals( + "::site", + ignoreCase = true + ) + ) { + if (GameConstants.WORLD == 1) { + event.channel.sendMessage(GameConstants.WEBSITE_LINK) + } + } + } +} \ No newline at end of file diff --git a/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/admin/AdminCommands.java b/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/admin/AdminCommands.java deleted file mode 100644 index 2374c2bf..00000000 --- a/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/admin/AdminCommands.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.rs2.integrations.discord.commands.admin; - -import com.rs2.integrations.discord.JavaCord; -import org.javacord.api.entity.message.Message; -import org.javacord.api.event.message.MessageCreateEvent; -import org.javacord.api.listener.message.MessageCreateListener; - -public class AdminCommands implements MessageCreateListener { - @Override - public void onMessageCreate(MessageCreateEvent event) { - Message message = event.getMessage(); - if (message.getContent().equalsIgnoreCase(JavaCord.commandPrefix + " admincommands")) { - if (event.getMessageAuthor().isServerAdmin()) { - event.getChannel().sendMessage("```fix" - + System.lineSeparator() + - "::pin/::unpin(Pins/Un-Pins The Replied Mesage)" - + System.lineSeparator() + - "::purge(Purges The Specified Amount Of Messages From Discord Channel)" - + System.lineSeparator() + - JavaCord.commandPrefix + " gamekick(Kicks The Specified Player From The GameServer)" - + System.lineSeparator() + - JavaCord.commandPrefix + " movehome(Moves The Specified Player To Lumbridge)" - + System.lineSeparator() + - JavaCord.commandPrefix + " update(Triggers A GameServer Update In The Specified Amount Of Seconds)" - + "```"); - } else { - event.getChannel().sendMessage("You do not have permission to perform this command"); - } - } - } -} diff --git a/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/admin/AdminCommands.kt b/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/admin/AdminCommands.kt new file mode 100644 index 00000000..dc3b6036 --- /dev/null +++ b/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/admin/AdminCommands.kt @@ -0,0 +1,31 @@ +package com.rs2.integrations.discord.commands.admin + +import com.rs2.integrations.discord.JavaCord +import org.javacord.api.event.message.MessageCreateEvent +import org.javacord.api.listener.message.MessageCreateListener + +class AdminCommands : MessageCreateListener { + override fun onMessageCreate(event: MessageCreateEvent) { + val message = event.message + if (message.content.equals(JavaCord.commandPrefix + " admincommands", ignoreCase = true)) { + if (event.messageAuthor.isServerAdmin) { + event.channel.sendMessage( + "```fix" + + System.lineSeparator() + + "::pin/::unpin(Pins/Un-Pins The Replied Mesage)" + + System.lineSeparator() + + "::purge(Purges The Specified Amount Of Messages From Discord Channel)" + + System.lineSeparator() + + JavaCord.commandPrefix + " gamekick(Kicks The Specified Player From The GameServer)" + + System.lineSeparator() + + JavaCord.commandPrefix + " movehome(Moves The Specified Player To Lumbridge)" + + System.lineSeparator() + + JavaCord.commandPrefix + " update(Triggers A GameServer Update In The Specified Amount Of Seconds)" + + "```" + ) + } else { + event.channel.sendMessage("You do not have permission to perform this command") + } + } + } +} \ No newline at end of file diff --git a/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/admin/GameKick.java b/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/admin/GameKick.java deleted file mode 100644 index 40bc72dd..00000000 --- a/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/admin/GameKick.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.rs2.integrations.discord.commands.admin; - -import com.rs2.game.players.Client; -import com.rs2.game.players.Player; -import com.rs2.game.players.PlayerHandler; -import com.rs2.integrations.discord.JavaCord; -import org.javacord.api.event.message.MessageCreateEvent; -import org.javacord.api.listener.message.MessageCreateListener; - -import java.util.Objects; - -public class GameKick implements MessageCreateListener { - @Override - public void onMessageCreate(MessageCreateEvent event) { - if (event.getMessageContent().startsWith(JavaCord.commandPrefix + " gamekick")) { - String playerToKick = event.getMessageContent().replace( JavaCord.commandPrefix + " gamekick ", ""); - for (Player player2 : PlayerHandler.players) { - if (player2 != null) { - if (player2.playerName.equalsIgnoreCase(playerToKick)) { - Client c2 = (Client) player2; - if (event.getMessageAuthor().isServerAdmin() || Objects.equals(event.getMessageAuthor().getIdAsString(), c2.discordCode)) { - event.getChannel().sendMessage(playerToKick + " was kicked by " + event.getMessageAuthor().getDisplayName() + "."); - c2.disconnected = true; - c2.logout(true); - } else { - event.getChannel().sendMessage("You do not have permission to perform this command"); - } - break; - } - } - } - } - } -} \ No newline at end of file diff --git a/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/admin/GameKick.kt b/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/admin/GameKick.kt new file mode 100644 index 00000000..342d2273 --- /dev/null +++ b/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/admin/GameKick.kt @@ -0,0 +1,30 @@ +package com.rs2.integrations.discord.commands.admin + +import com.rs2.game.players.Client +import com.rs2.game.players.PlayerHandler +import com.rs2.integrations.discord.JavaCord +import org.javacord.api.event.message.MessageCreateEvent +import org.javacord.api.listener.message.MessageCreateListener + +class GameKick : MessageCreateListener { + override fun onMessageCreate(event: MessageCreateEvent) { + if (event.messageContent.startsWith(JavaCord.commandPrefix + " gamekick")) { + val playerToKick = event.messageContent.replace(JavaCord.commandPrefix + " gamekick ", "") + for (player2 in PlayerHandler.players) { + if (player2 != null) { + if (player2.playerName.equals(playerToKick, ignoreCase = true)) { + val c2 = player2 as Client + if (event.messageAuthor.isServerAdmin || event.messageAuthor.idAsString == c2.discordCode) { + event.channel.sendMessage(playerToKick + " was kicked by " + event.messageAuthor.displayName + ".") + c2.disconnected = true + c2.logout(true) + } else { + event.channel.sendMessage("You do not have permission to perform this command") + } + break + } + } + } + } + } +} \ No newline at end of file diff --git a/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/admin/MoveHome.java b/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/admin/MoveHome.java deleted file mode 100644 index 1dfba022..00000000 --- a/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/admin/MoveHome.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.rs2.integrations.discord.commands.admin; - -import com.rs2.GameConstants; -import com.rs2.game.players.Client; -import com.rs2.game.players.PlayerHandler; -import com.rs2.integrations.discord.JavaCord; -import org.javacord.api.event.message.MessageCreateEvent; -import org.javacord.api.listener.message.MessageCreateListener; - -public class MoveHome implements MessageCreateListener { - - @Override - public void onMessageCreate(MessageCreateEvent event) { - if (event.getMessageContent().startsWith(JavaCord.commandPrefix + " movehome")) { - if (event.getMessageAuthor().isServerAdmin()) { - String teleToMe = event.getMessageContent().replace( JavaCord.commandPrefix + " movehome ", ""); - for (int i = 0; i < PlayerHandler.players.length; i++) { - if (PlayerHandler.players[i] != null) { - if (PlayerHandler.players[i].playerName.equalsIgnoreCase(teleToMe)) { - Client p = (Client) PlayerHandler.players[i]; - event.getChannel().sendMessage(p.playerName + " has been moved to Lumbridge."); - p.getPlayerAssistant().movePlayer(GameConstants.RESPAWN_X, GameConstants.RESPAWN_Y, 0); - } - } - } - } else { - event.getChannel().sendMessage("You do not have permission to perform this command"); - } - } - } -} \ No newline at end of file diff --git a/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/admin/MoveHome.kt b/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/admin/MoveHome.kt new file mode 100644 index 00000000..466c66c0 --- /dev/null +++ b/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/admin/MoveHome.kt @@ -0,0 +1,29 @@ +package com.rs2.integrations.discord.commands.admin + +import com.rs2.GameConstants +import com.rs2.game.players.Client +import com.rs2.game.players.PlayerHandler +import com.rs2.integrations.discord.JavaCord +import org.javacord.api.event.message.MessageCreateEvent +import org.javacord.api.listener.message.MessageCreateListener + +class MoveHome : MessageCreateListener { + override fun onMessageCreate(event: MessageCreateEvent) { + if (event.messageContent.startsWith(JavaCord.commandPrefix + " movehome")) { + if (event.messageAuthor.isServerAdmin) { + val teleToMe = event.messageContent.replace(JavaCord.commandPrefix + " movehome ", "") + for (i in PlayerHandler.players.indices) { + if (PlayerHandler.players[i] != null) { + if (PlayerHandler.players[i].playerName.equals(teleToMe, ignoreCase = true)) { + val p = PlayerHandler.players[i] as Client + event.channel.sendMessage(p.playerName + " has been moved to Lumbridge.") + p.playerAssistant.movePlayer(GameConstants.RESPAWN_X, GameConstants.RESPAWN_Y, 0) + } + } + } + } else { + event.channel.sendMessage("You do not have permission to perform this command") + } + } + } +} \ No newline at end of file diff --git a/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/admin/Pin.java b/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/admin/Pin.java deleted file mode 100644 index 2473e377..00000000 --- a/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/admin/Pin.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.rs2.integrations.discord.commands.admin; - -import com.rs2.GameConstants; -import org.javacord.api.entity.message.Message; -import org.javacord.api.event.message.MessageCreateEvent; -import org.javacord.api.listener.message.MessageCreateListener; - -public class Pin implements MessageCreateListener { - @Override - public void onMessageCreate(MessageCreateEvent event) { - Message message = event.getMessage(); - if (message.getContent().startsWith("::pin")) { - if (event.getMessageAuthor().isServerAdmin()) { - if(GameConstants.WORLD == 1) { - if (message.getReferencedMessage().isPresent()) { - Message messageToPin = message.getReferencedMessage().get(); - messageToPin.pin(); - } - } - } else { - event.getChannel().sendMessage("You do not have permission to perform this command"); - } - } - if (message.getContent().startsWith("::unpin")) { - if (event.getMessageAuthor().isServerAdmin()) { - if(GameConstants.WORLD == 1) { - if (message.getReferencedMessage().isPresent()) { - Message messageToUnpin = message.getReferencedMessage().get(); - messageToUnpin.unpin(); - event.getChannel().sendMessage("Un-Pinned Message: " + messageToUnpin.getLink()); - - } - } - } else { - event.getChannel().sendMessage("You do not have permission to perform this command"); - } - } - } -} diff --git a/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/admin/Pin.kt b/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/admin/Pin.kt new file mode 100644 index 00000000..da5bc181 --- /dev/null +++ b/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/admin/Pin.kt @@ -0,0 +1,36 @@ +package com.rs2.integrations.discord.commands.admin + +import com.rs2.GameConstants +import org.javacord.api.event.message.MessageCreateEvent +import org.javacord.api.listener.message.MessageCreateListener + +class Pin : MessageCreateListener { + override fun onMessageCreate(event: MessageCreateEvent) { + val message = event.message + if (message.content.startsWith("::pin")) { + if (event.messageAuthor.isServerAdmin) { + if (GameConstants.WORLD == 1) { + if (message.referencedMessage.isPresent) { + val messageToPin = message.referencedMessage.get() + messageToPin.pin() + } + } + } else { + event.channel.sendMessage("You do not have permission to perform this command") + } + } + if (message.content.startsWith("::unpin")) { + if (event.messageAuthor.isServerAdmin) { + if (GameConstants.WORLD == 1) { + if (message.referencedMessage.isPresent) { + val messageToUnpin = message.referencedMessage.get() + messageToUnpin.unpin() + event.channel.sendMessage("Un-Pinned Message: " + messageToUnpin.link) + } + } + } else { + event.channel.sendMessage("You do not have permission to perform this command") + } + } + } +} \ No newline at end of file diff --git a/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/admin/Purge.java b/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/admin/Purge.java deleted file mode 100644 index 78838258..00000000 --- a/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/admin/Purge.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.rs2.integrations.discord.commands.admin; - -import com.rs2.GameConstants; -import org.javacord.api.entity.message.Message; -import org.javacord.api.event.message.MessageCreateEvent; -import org.javacord.api.listener.message.MessageCreateListener; - -import java.util.concurrent.ExecutionException; -import java.util.concurrent.TimeUnit; - -public class Purge implements MessageCreateListener { - @Override - public void onMessageCreate(MessageCreateEvent event) { - Message message = event.getMessage(); - if (message.getContent().startsWith("::purge")) { - if (event.getMessageAuthor().isServerAdmin()) { - if(GameConstants.WORLD == 1) { - int messagesToPurge = Integer.parseInt(event.getMessageContent().replace("::purge ", "")); - if (messagesToPurge > 50) { - event.getChannel().sendMessage("Can't purge more than 50 messages at once."); - return; - } - try { - event.getChannel().sendMessage("Purging " + messagesToPurge + " Messages."); - message.getMessagesBefore(messagesToPurge).get().deleteAll(); - Message Purge = message.getMessagesAfter(1).get().getNewestMessage().get(); - Purge.edit("Purged " + messagesToPurge + " Messages."); - TimeUnit.SECONDS.sleep(5); - message.delete(); - Purge.delete(); - } catch (InterruptedException | ExecutionException e) { - e.printStackTrace(); - } - } - } else { - event.getChannel().sendMessage("You do not have permission to perform this command"); - } - } - } -} diff --git a/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/admin/Purge.kt b/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/admin/Purge.kt new file mode 100644 index 00000000..54cd61ff --- /dev/null +++ b/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/admin/Purge.kt @@ -0,0 +1,39 @@ +package com.rs2.integrations.discord.commands.admin + +import com.rs2.GameConstants +import org.javacord.api.event.message.MessageCreateEvent +import org.javacord.api.listener.message.MessageCreateListener +import java.util.concurrent.ExecutionException +import java.util.concurrent.TimeUnit + +class Purge : MessageCreateListener { + override fun onMessageCreate(event: MessageCreateEvent) { + val message = event.message + if (message.content.startsWith("::purge")) { + if (event.messageAuthor.isServerAdmin) { + if (GameConstants.WORLD == 1) { + val messagesToPurge = event.messageContent.replace("::purge ", "").toInt() + if (messagesToPurge > 50) { + event.channel.sendMessage("Can't purge more than 50 messages at once.") + return + } + try { + event.channel.sendMessage("Purging $messagesToPurge Messages.") + message.getMessagesBefore(messagesToPurge).get().deleteAll() + val Purge = message.getMessagesAfter(1).get().newestMessage.get() + Purge.edit("Purged $messagesToPurge Messages.") + TimeUnit.SECONDS.sleep(5) + message.delete() + Purge.delete() + } catch (e: InterruptedException) { + e.printStackTrace() + } catch (e: ExecutionException) { + e.printStackTrace() + } + } + } else { + event.channel.sendMessage("You do not have permission to perform this command") + } + } + } +} \ No newline at end of file diff --git a/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/admin/Update.java b/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/admin/Update.java deleted file mode 100644 index dc7be48f..00000000 --- a/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/admin/Update.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.rs2.integrations.discord.commands.admin; - -import com.rs2.game.players.PlayerHandler; -import com.rs2.integrations.discord.JavaCord; -import org.javacord.api.event.message.MessageCreateEvent; -import org.javacord.api.listener.message.MessageCreateListener; - -public class Update implements MessageCreateListener { - @Override - public void onMessageCreate(MessageCreateEvent event) { - String seconds = event.getMessageContent().replace(JavaCord.commandPrefix + " update ", ""); - if (event.getMessageContent().startsWith(JavaCord.commandPrefix + " update")) { - if (event.getMessageAuthor().isServerAdmin()) { - PlayerHandler.updateSeconds = Integer.parseInt(seconds); - PlayerHandler.updateAnnounced = false; - PlayerHandler.updateRunning = true; - PlayerHandler.updateStartTime = System.currentTimeMillis(); - event.getChannel().sendMessage("Server update will begin in " + seconds + " seconds."); - } else { - event.getChannel().sendMessage("You do not have permission to perform this command"); - } - } - } -} \ No newline at end of file diff --git a/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/admin/Update.kt b/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/admin/Update.kt new file mode 100644 index 00000000..73ce6f33 --- /dev/null +++ b/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/admin/Update.kt @@ -0,0 +1,23 @@ +package com.rs2.integrations.discord.commands.admin + +import com.rs2.game.players.PlayerHandler +import com.rs2.integrations.discord.JavaCord +import org.javacord.api.event.message.MessageCreateEvent +import org.javacord.api.listener.message.MessageCreateListener + +class Update : MessageCreateListener { + override fun onMessageCreate(event: MessageCreateEvent) { + val seconds = event.messageContent.replace(JavaCord.commandPrefix + " update ", "") + if (event.messageContent.startsWith(JavaCord.commandPrefix + " update")) { + if (event.messageAuthor.isServerAdmin) { + PlayerHandler.updateSeconds = seconds.toInt() + PlayerHandler.updateAnnounced = false + PlayerHandler.updateRunning = true + PlayerHandler.updateStartTime = System.currentTimeMillis() + event.channel.sendMessage("Server update will begin in $seconds seconds.") + } else { + event.channel.sendMessage("You do not have permission to perform this command") + } + } + } +} \ No newline at end of file diff --git a/README.md b/README.md index 3af8db86..4a016582 100644 --- a/README.md +++ b/README.md @@ -22,31 +22,14 @@ To compile any module from the command line, run `mvn clean install` -## 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)) -- **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` -- **4:** Put the following in the file -```json -{ - "name": "localhost", - "author": "RedSparr0w", - "version": 1.0, - "client-class": "LocalGame", - "locations":{ - "provider": "pathToYourJar/Provider-1.21.5.jar", - "server": "pathToYourJar/localhost_2006Scape.jar", - "hooks": "http://bdn.parabot.org/data/hooks/carmeuses/2006rebotted_hooks.xml" - } -} -``` -_(you will need to put the path to the jar files yourself)_ -- 5: Run the parabot client with the following args: +## Using Parabot with your local server: +- **1:** Download the latest Parabot Client from [here](https://github.com/2006-Scape/Parabot/releases) +- **2:** Run the parabot client with the following arg: ```fix -java -jar Client-2.8.1.jar -login username password -loadlocal -v -clearcache +java -jar Parabot.jar -local ``` -- **6:** ??? -- **7:** PROFIT +- **3:** ??? +- **4:** PROFIT ### Server source layout