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 ef31bdca..613a042a 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
@@ -99,6 +99,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);
@@ -171,6 +172,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) {