From 860adc8194607c114bb79729f0d3b311a5bbf648 Mon Sep 17 00:00:00 2001 From: Josh Shippam Date: Thu, 27 Jan 2022 01:32:17 +0000 Subject: [PATCH] Various Changes (#523) * Discord Bot Update Updated JavaCord To Latest Changed Some Commands To No Longer Be World Specific Added An "AdminCommands" Command * Update Some Server Libs * Added Purge & Pin/Un-Pin To Commands Discord Bot * Fixed -dev & -no-crc Client Args * Add Discord User ID Linking Support(Useless For Now) * Added Support For User's Kicking Own Accounts Through Discord Bot * Merge Website Integration Stuff Into One Var --- 2006Scape Client/src/main/java/Main.java | 22 ++++---- 2006Scape Server/ServerConfig.Sample.json | 2 +- 2006Scape Server/pom.xml | 32 ++++++------ .../src/main/java/com/rs2/ConfigLoader.java | 4 +- .../src/main/java/com/rs2/GameConstants.java | 3 +- .../src/main/java/com/rs2/GameEngine.java | 51 +++++++++---------- .../java/com/rs2/game/players/Player.java | 5 ++ .../java/com/rs2/game/players/PlayerSave.java | 5 ++ .../rs2/integrations/discord/JavaCord.java | 9 ++-- .../integrations/discord/WelcomeMessage.java | 16 ++++++ .../discord/commands/Commands.java | 10 ++-- .../integrations/discord/commands/Forum.java | 7 +-- .../integrations/discord/commands/Issues.java | 8 +-- .../integrations/discord/commands/Vote.java | 5 +- .../discord/commands/Website.java | 7 +-- .../discord/commands/admin/AdminCommands.java | 31 +++++++++++ .../discord/commands/admin/GameKick.java | 22 ++++---- .../discord/commands/admin/Pin.java | 39 ++++++++++++++ .../discord/commands/admin/Purge.java | 40 +++++++++++++++ .../com/rs2/net/packets/impl/Commands.java | 5 ++ 20 files changed, 237 insertions(+), 86 deletions(-) create mode 100644 2006Scape Server/src/main/java/com/rs2/integrations/discord/WelcomeMessage.java create mode 100644 2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/admin/AdminCommands.java create mode 100644 2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/admin/Pin.java create mode 100644 2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/admin/Purge.java diff --git a/2006Scape Client/src/main/java/Main.java b/2006Scape Client/src/main/java/Main.java index 4c599152..c91b9422 100644 --- a/2006Scape Client/src/main/java/Main.java +++ b/2006Scape Client/src/main/java/Main.java @@ -15,6 +15,18 @@ public final class Main { try { // Process server/ip address to connect to for (int i = 0; i < args.length; i++) { + switch(args[i]) { + case "-dev" : + case "-local": + case "-offline": + ClientSettings.SERVER_IP = "localhost"; + ClientSettings.CHECK_CRC = false; + break; + case "-no-crc": + case "-no-cache-crc": + ClientSettings.CHECK_CRC = false; + break; + } if (args[i].startsWith("-") && (i + 1) < args.length && !args[i + 1].startsWith("-")) { switch(args[i]) { case "-s": @@ -22,16 +34,6 @@ public final class Main { case "-ip": ClientSettings.SERVER_IP = args[++i]; break; - case "-no-crc": - case "-no-cache-crc": - ClientSettings.CHECK_CRC = false; - break; - case "-dev" : - case "-local": - case "-offline": - ClientSettings.SERVER_IP = "localhost"; - ClientSettings.CHECK_CRC = false; - break; } } } diff --git a/2006Scape Server/ServerConfig.Sample.json b/2006Scape Server/ServerConfig.Sample.json index 9ac53e36..c51fcd97 100644 --- a/2006Scape Server/ServerConfig.Sample.json +++ b/2006Scape Server/ServerConfig.Sample.json @@ -19,5 +19,5 @@ "timeout": 60, "item_requirements": true, "max_players": 200, - "website_total_characters_integration": false + "website_integration": false } \ No newline at end of file diff --git a/2006Scape Server/pom.xml b/2006Scape Server/pom.xml index a68b0c01..76e307b0 100644 --- a/2006Scape Server/pom.xml +++ b/2006Scape Server/pom.xml @@ -10,7 +10,7 @@ jar - 1.5.31 + 1.6.0 true @@ -38,19 +38,19 @@ com.fasterxml.jackson.core jackson-annotations - 2.10.1 + 2.13.1 com.fasterxml.jackson.core jackson-core - 2.10.1 + 2.13.1 com.fasterxml.jackson.core jackson-databind - 2.10.5.1 + 2.13.1 @@ -62,7 +62,7 @@ com.squareup.okhttp3 logging-interceptor - 4.3.1 + 4.9.3 @@ -74,25 +74,25 @@ mysql mysql-connector-java - 8.0.18 + 8.0.25 io.netty netty-all - 4.1.44.Final + 4.1.72.Final com.neovisionaries nv-websocket-client - 2.9 + 2.14 com.squareup.okhttp3 okhttp - 4.3.1 + 4.9.3 @@ -104,19 +104,19 @@ org.slf4j slf4j-api - 1.7.25 + 1.7.32 org.slf4j slf4j-simple - 1.7.25 + 1.7.32 org.slf4j slf4j-log4j12 - 1.7.30 + 1.7.32 @@ -128,25 +128,25 @@ com.thoughtworks.xstream xstream - 1.4.17 + 1.4.18 org.javacord javacord-api - 3.1.1 + 3.3.2 org.javacord javacord-core - 3.1.1 + 3.3.2 com.google.code.gson gson - 2.8.6 + 2.8.9 com.everythingrs diff --git a/2006Scape Server/src/main/java/com/rs2/ConfigLoader.java b/2006Scape Server/src/main/java/com/rs2/ConfigLoader.java index 6e01ec09..ee925338 100644 --- a/2006Scape Server/src/main/java/com/rs2/ConfigLoader.java +++ b/2006Scape Server/src/main/java/com/rs2/ConfigLoader.java @@ -64,8 +64,8 @@ public class ConfigLoader { GameConstants.VARIABLE_XP_RATES[i] = rates.optInt(i); } } - if(obj.has("website_total_characters_integration")) - GameConstants.WEBSITE_TOTAL_CHARACTERS_INTEGRATION = obj.getBoolean("website_total_characters_integration"); + if(obj.has("website_integration")) + GameConstants.WEBSITE_INTEGRATION = obj.getBoolean("website_integration"); } private static void initialize() { diff --git a/2006Scape Server/src/main/java/com/rs2/GameConstants.java b/2006Scape Server/src/main/java/com/rs2/GameConstants.java index 0da4b947..836788fb 100644 --- a/2006Scape Server/src/main/java/com/rs2/GameConstants.java +++ b/2006Scape Server/src/main/java/com/rs2/GameConstants.java @@ -26,6 +26,7 @@ public class GameConstants { * 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, @@ -33,7 +34,7 @@ public class GameConstants { 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_TOTAL_CHARACTERS_INTEGRATION = 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; diff --git a/2006Scape Server/src/main/java/com/rs2/GameEngine.java b/2006Scape Server/src/main/java/com/rs2/GameEngine.java index ee92341b..987305ba 100644 --- a/2006Scape Server/src/main/java/com/rs2/GameEngine.java +++ b/2006Scape Server/src/main/java/com/rs2/GameEngine.java @@ -52,7 +52,7 @@ import org.apollo.jagcached.FileServer; /** * Server.java - * + * * @author Sanity * @author Graham * @author Blake @@ -60,10 +60,10 @@ import org.apollo.jagcached.FileServer; * @author Integration Julian. */ public class GameEngine { - + private static long minutesCounter; - + private static void startMinutesCounter() { try { minuteFile = new BufferedReader(new FileReader( @@ -102,13 +102,12 @@ public class GameEngine { public static void schedule(Tick tick) { getScheduler().schedule(tick); } - public static String ersSecret; - public static int[] cannonsX = new int [50]; - public static int[] cannonsY = new int [50]; - public static String[] cannonsO = new String [50]; + public static int[] cannonsX = new int[50]; + public static int[] cannonsY = new int[50]; + public static String[] cannonsO = new String[50]; public static boolean sleeping; public static boolean updateServer = false; public static long lastMassSave = System.currentTimeMillis(); @@ -127,7 +126,7 @@ public class GameEngine { public static ObjectManager objectManager = new ObjectManager(); public static FightCaves fightCaves = new FightCaves(); private static PestControl pestControl = new PestControl(); - public static Trawler trawler = new Trawler(); + public static Trawler trawler = new Trawler(); private final static ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1); private final static Lock lock = new ReentrantLock(); @@ -138,12 +137,11 @@ public class GameEngine { public static void main(java.lang.String[] args) 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]) { + 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]); @@ -161,9 +159,8 @@ public class GameEngine { System.out.println("@@@@ DEBUG MODE IS ENABLED @@@@"); } - if (!new File("data").exists()) - { - System.out.println("************************************"); + if (!new File("data").exists()) { + System.out.println("************************************"); System.out.println("************************************"); System.out.println("************************************"); System.out.println("WARNING: I could not find the /data folder. You are LIKELY running this in the wrong directory!"); @@ -183,7 +180,7 @@ public class GameEngine { /** * Starts The File Server If Enabled In GameConstants */ - if(GameConstants.FILE_SERVER) { + if (GameConstants.FILE_SERVER) { FileServer fs = new FileServer(); try { fs.start(); @@ -194,7 +191,7 @@ public class GameEngine { /** * Start Integration Services - **/ + **/ ConfigLoader.loadSecrets(); JavaCord.init(); @@ -240,11 +237,11 @@ public class GameEngine { /** * Main Server Tick - * + * * This scheduler will tick once every 600ms. If the previous tick takes * 300ms to execute, this scheduler will wait 300ms only before the next * tick. - * + * * scheduleAtFixedRate() does not invoke concurrent Runnables. */ scheduler.scheduleAtFixedRate(new Runnable() { @@ -267,11 +264,11 @@ public class GameEngine { objectHandler.process(); MageTrainingArena.process(); CycleEventHandler.getSingleton().process(); - PlayersOnlineWebsite.addUpdatePlayersOnlineTask(); - if(GameConstants.WEBSITE_TOTAL_CHARACTERS_INTEGRATION) { - RegisteredAccsWebsite.addUpdateRegisteredUsersTask(); + if (GameConstants.WEBSITE_INTEGRATION) { + PlayersOnlineWebsite.addUpdatePlayersOnlineTask(); + RegisteredAccsWebsite.addUpdateRegisteredUsersTask(); } - if(DiscordActivity.playerCount) { + if (DiscordActivity.playerCount) { DiscordActivity.updateActivity(); } if (System.currentTimeMillis() - lastMassSave > 300000) { @@ -304,13 +301,13 @@ public class GameEngine { } } }, 0, GameConstants.CYCLE_TIME, TimeUnit.MILLISECONDS); - + /* * I'd recommend disabling this until I can be bothered to implement it * properly. */ // CommandConsole.getInstance(); - + try { while (!scheduler.awaitTermination(60, TimeUnit.SECONDS)) { // TODO @@ -319,7 +316,7 @@ public class GameEngine { } catch (InterruptedException e) { e.printStackTrace(); } - + acceptor = null; connectionHandler = null; sac = null; @@ -328,6 +325,4 @@ public class GameEngine { public static boolean playerExecuted = false; private static BufferedReader minuteFile; - - -} +} \ No newline at end of file diff --git a/2006Scape Server/src/main/java/com/rs2/game/players/Player.java b/2006Scape Server/src/main/java/com/rs2/game/players/Player.java index 5803e681..fdd418fa 100644 --- a/2006Scape Server/src/main/java/com/rs2/game/players/Player.java +++ b/2006Scape Server/src/main/java/com/rs2/game/players/Player.java @@ -75,6 +75,7 @@ public abstract class Player { public byte buffer[] = null; public String lastConnectedFrom; public static int xpRate = 1; + public String discordCode; private Compost compost = new Compost(this); private Allotments allotment = new Allotments(this); private Flowers flower = new Flowers(this); @@ -155,6 +156,10 @@ public abstract class Player { public void setXPRate(int xpRate) { this.xpRate = xpRate; } + public String getDiscordCode() { return discordCode; } + + public void setDiscordCode(String code) { this.discordCode = code; } + public boolean isPreaching() { return preaching; } diff --git a/2006Scape Server/src/main/java/com/rs2/game/players/PlayerSave.java b/2006Scape Server/src/main/java/com/rs2/game/players/PlayerSave.java index 9e9c5130..b5984e2c 100644 --- a/2006Scape Server/src/main/java/com/rs2/game/players/PlayerSave.java +++ b/2006Scape Server/src/main/java/com/rs2/game/players/PlayerSave.java @@ -433,6 +433,9 @@ public class PlayerSave { case "unlocked-bones-to-peaches": player.unlockedBonesToPeaches = Boolean.parseBoolean(token2); break; + case "discord-user-id": + player.discordCode = token2; + break; } break; case 3: @@ -823,6 +826,8 @@ public class PlayerSave { } characterfile.write("void = " + voidStatus.trim()); characterfile.newLine(); + characterfile.write("discord-user-id = " + player.discordCode); + characterfile.newLine(); characterfile.newLine(); /* EQUIPMENT */ 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 index 1b5c8ec1..f4548c76 100644 --- a/2006Scape Server/src/main/java/com/rs2/integrations/discord/JavaCord.java +++ b/2006Scape Server/src/main/java/com/rs2/integrations/discord/JavaCord.java @@ -2,9 +2,7 @@ package com.rs2.integrations.discord; import com.rs2.GameConstants; import com.rs2.integrations.discord.commands.*; -import com.rs2.integrations.discord.commands.admin.GameKick; -import com.rs2.integrations.discord.commands.admin.MoveHome; -import com.rs2.integrations.discord.commands.admin.Update; +import com.rs2.integrations.discord.commands.admin.*; import org.javacord.api.DiscordApi; import org.javacord.api.DiscordApiBuilder; import org.javacord.api.entity.channel.TextChannel; @@ -39,9 +37,14 @@ public class JavaCord { 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); } 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 new file mode 100644 index 00000000..21d71cfb --- /dev/null +++ b/2006Scape Server/src/main/java/com/rs2/integrations/discord/WelcomeMessage.java @@ -0,0 +1,16 @@ +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 index 7ad8a966..e08c7f79 100644 --- 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 @@ -12,17 +12,19 @@ public class Commands implements MessageCreateListener { if (message.getContent().equalsIgnoreCase(JavaCord.commandPrefix + " commands")) { event.getChannel().sendMessage("```fix" + System.lineSeparator() + - JavaCord.commandPrefix + " forum/" + JavaCord.commandPrefix + " forums" + "::forum/::forums" + + System.lineSeparator() + + JavaCord.commandPrefix + " gamekick(if account id linked)" + System.lineSeparator() + JavaCord.commandPrefix + " hiscores/" + JavaCord.commandPrefix + " highscores" + System.lineSeparator() + - JavaCord.commandPrefix + " issues/" + JavaCord.commandPrefix + " bugs" + "::issues/::bugs" + System.lineSeparator() + JavaCord.commandPrefix + " online" + System.lineSeparator() + - JavaCord.commandPrefix + " vote" + "::vote" + System.lineSeparator() + - JavaCord.commandPrefix + " website/" + JavaCord.commandPrefix + " site" + "::website/::site" + "```"); } } 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 index d5a6991c..46d26e08 100644 --- 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 @@ -1,6 +1,5 @@ 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; @@ -11,8 +10,10 @@ public class Forum implements MessageCreateListener { @Override public void onMessageCreate(MessageCreateEvent event) { Message message = event.getMessage(); - if (message.getContent().equalsIgnoreCase(JavaCord.commandPrefix + " forum") || message.getContent().equalsIgnoreCase(JavaCord.commandPrefix + " forums")) { - event.getChannel().sendMessage(GameConstants.WEBSITE_LINK + "/forums/index.php"); + 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/Issues.java b/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/Issues.java index 43e2668d..7a8c52ff 100644 --- 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 @@ -1,6 +1,6 @@ package com.rs2.integrations.discord.commands; -import com.rs2.integrations.discord.JavaCord; +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; @@ -9,8 +9,10 @@ public class Issues implements MessageCreateListener { @Override public void onMessageCreate(MessageCreateEvent event) { Message message = event.getMessage(); - if (message.getContent().equalsIgnoreCase(JavaCord.commandPrefix + " issues") || message.getContent().equalsIgnoreCase(JavaCord.commandPrefix+ " bugs")) { - event.getChannel().sendMessage("https://github.com/2006-Scape/2006Scape/issues"); + 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/Vote.java b/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/Vote.java index 88587bc8..56bcb940 100644 --- 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 @@ -1,6 +1,5 @@ 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; @@ -11,8 +10,10 @@ public class Vote implements MessageCreateListener { @Override public void onMessageCreate(MessageCreateEvent event) { Message message = event.getMessage(); - if (message.getContent().equalsIgnoreCase(JavaCord.commandPrefix + " vote")) { + 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/Website.java b/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/Website.java index 73ded7eb..f820c865 100644 --- 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 @@ -1,6 +1,5 @@ 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; @@ -11,8 +10,10 @@ public class Website implements MessageCreateListener { @Override public void onMessageCreate(MessageCreateEvent event) { Message message = event.getMessage(); - if (message.getContent().equalsIgnoreCase(JavaCord.commandPrefix + " website") || message.getContent().equalsIgnoreCase(JavaCord.commandPrefix + " site")) { - event.getChannel().sendMessage(GameConstants.WEBSITE_LINK); + 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/admin/AdminCommands.java b/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/admin/AdminCommands.java new file mode 100644 index 00000000..2374c2bf --- /dev/null +++ b/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/admin/AdminCommands.java @@ -0,0 +1,31 @@ +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/GameKick.java b/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/admin/GameKick.java index 42b45fe3..40bc72dd 100644 --- 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 @@ -7,25 +7,27 @@ 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")) { - if (event.getMessageAuthor().isServerAdmin()) { - 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; - event.getChannel().sendMessage( playerToKick+ " was kicked by " + event.getMessageAuthor().getDisplayName() + "."); + 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); - break; + } else { + event.getChannel().sendMessage("You do not have permission to perform this command"); } + break; } } - } 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.java b/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/admin/Pin.java new file mode 100644 index 00000000..2473e377 --- /dev/null +++ b/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/admin/Pin.java @@ -0,0 +1,39 @@ +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/Purge.java b/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/admin/Purge.java new file mode 100644 index 00000000..78838258 --- /dev/null +++ b/2006Scape Server/src/main/java/com/rs2/integrations/discord/commands/admin/Purge.java @@ -0,0 +1,40 @@ +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/net/packets/impl/Commands.java b/2006Scape Server/src/main/java/com/rs2/net/packets/impl/Commands.java index 4c644aeb..b721cb1b 100644 --- a/2006Scape Server/src/main/java/com/rs2/net/packets/impl/Commands.java +++ b/2006Scape Server/src/main/java/com/rs2/net/packets/impl/Commands.java @@ -44,6 +44,11 @@ public class Commands implements PacketType { public static void playerCommands(Player player, String playerCommand, String[] arguments) { switch (playerCommand.toLowerCase()) { + case "link": + player.setDiscordCode(arguments[0]); + player.getPacketSender().sendMessage("Your Account has now been linked with Discord User ID:"); + player.getPacketSender().sendMessage(player.getDiscordCode()); + break; case "myxprate": case "checkxprate": if(GameConstants.VARIABLE_XP_RATE) {