Fixed stuck command and added home teleport command (#647)

With my custom print stream PR, this will also automatically log the player stuck command usage to a log file.
This commit is contained in:
ipkpjersi
2024-09-20 23:20:51 -04:00
committed by GitHub
parent 0120892521
commit 4fe3f446a4
2 changed files with 26 additions and 1 deletions
@@ -75,6 +75,7 @@ import org.apollo.util.security.IsaacRandom;
public abstract class Player {
public byte buffer[] = null;
private long lastHomeTeleport = 0;
public String lastConnectedFrom;
public int xpRate = 1;
public String discordCode;
@@ -168,6 +169,14 @@ public abstract class Player {
public void setXPRate(int xpRate) { this.xpRate = xpRate; }
public long getLastHomeTeleport() {
return lastHomeTeleport;
}
public void setLastHomeTeleport(long lastHomeTeleport) {
this.lastHomeTeleport = lastHomeTeleport;
}
public String getDiscordCode() { return discordCode; }
public void setDiscordCode(String code) { this.discordCode = code; }
@@ -20,6 +20,7 @@ import com.rs2.world.clip.Region;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.concurrent.TimeUnit;
public class Commands implements PacketType {
@@ -49,10 +50,25 @@ public class Commands implements PacketType {
switch (playerCommand.toLowerCase()) {
case "stuck":
if(JavaCord.token != null) {
if (JavaCord.api.getTextChannelById(JavaCord.logChannelId).isPresent())
if (JavaCord.api != null && JavaCord.api.getTextChannelById(JavaCord.logChannelId).isPresent())
JavaCord.api.getTextChannelById(JavaCord.logChannelId).get().sendMessage(player.playerName + " used ::stuck at X/Y: " + player.absX + "/" + player.absY);
}
System.err.println("Player " + player.playerName + " used ::stuck at X/Y: " + player.absX + "/" + player.absY);
player.getPlayerAssistant().spellTeleport(Constants.RESPAWN_X, Constants.RESPAWN_Y, 0);
break;
case "home":
long currentTime = System.currentTimeMillis();
long cooldown = 30 * 60 * 1000; // 30 minutes in milliseconds
if (player.getLastHomeTeleport() == 0 || (currentTime - player.getLastHomeTeleport() >= cooldown)) {
player.getPlayerAssistant().spellTeleport(Constants.RESPAWN_X, Constants.RESPAWN_Y, 0);
player.setLastHomeTeleport(currentTime); // Update the last teleport time
} else {
long remainingTime = cooldown - (currentTime - player.getLastHomeTeleport());
long minutesLeft = TimeUnit.MILLISECONDS.toMinutes(remainingTime);
long secondsLeft = TimeUnit.MILLISECONDS.toSeconds(remainingTime) - TimeUnit.MINUTES.toSeconds(minutesLeft);
player.getPacketSender().sendMessage("You need to wait " + minutesLeft + " minutes and " + secondsLeft + " seconds to use home teleport again.");
}
break;
case "link":
player.setDiscordCode(arguments[0]);
player.getPacketSender().sendMessage("Your Account has now been linked with Discord User ID:");