From bcb179a2a195882f292937b27d1d6c01ca037955 Mon Sep 17 00:00:00 2001 From: Business Goose Date: Mon, 28 Mar 2022 22:25:16 +0100 Subject: [PATCH] Add offline tp command --- .../commands/Command_offlinetp.java | 41 +++++++++++++++++++ .../TotalFreedomMod/commands/Commands.java | 1 + src/main/resources/plugin.yml | 6 ++- 3 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_offlinetp.java diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_offlinetp.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_offlinetp.java new file mode 100644 index 0000000..99a01e5 --- /dev/null +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Command_offlinetp.java @@ -0,0 +1,41 @@ +package me.StevenLawson.TotalFreedomMod.commands; + +import org.bukkit.Bukkit; +import org.bukkit.OfflinePlayer; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.ONLY_IN_GAME) +public class Command_offlinetp extends FreedomCommand { + @Override + public boolean run(CommandSender sender, Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + OfflinePlayer target = null; + String searchString = args[0]; + + for (OfflinePlayer offlinePlayer : Bukkit.getOfflinePlayers()) { + if(offlinePlayer.getName().equalsIgnoreCase(searchString)) { + target = offlinePlayer; + break; + } else if (offlinePlayer.getName().startsWith(searchString.toLowerCase())) { + target = offlinePlayer; + break; + } + } + + if(target == null) { + playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND); + return true; + } + + if(target.isOnline()) { + playerMsg(sender, "That player is already online. Use /tp."); + return true; + } + + playerMsg(sender, String.format("Teleporting to %s's last known location...", target.getName())); + sender_p.teleport(target.getPlayer().getLocation()); + + return true; + } +} diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Commands.java b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Commands.java index 248a112..fe15373 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Commands.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/commands/Commands.java @@ -107,5 +107,6 @@ public class Commands { plugin.getCommand("wipeflatlands").setExecutor(new Command_wipeflatlands()); plugin.getCommand("wipeuserdata").setExecutor(new Command_wipeuserdata()); plugin.getCommand("whoami").setExecutor(new Command_whoami()); + plugin.getCommand("offlinetp").setExecutor(new Command_offlinetp()); } } diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 86c3713..7d7f70d 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -333,4 +333,8 @@ commands: usage: '/ >' whoami: description: 'Who am I? Who are you? What am I doing here?' - usage: '/' \ No newline at end of file + usage: '/' + offlinetp: + aliases: ["otp"] + description: 'Teleport to an offline player''s last known location.' + usage: '/ ' \ No newline at end of file