public void Execute(IRocketPlayer caller, string[] command) { PlayerHome home; UnturnedPlayer player = (UnturnedPlayer)caller; home = HomesHelper.GetPlayerHome(player.CSteamID, command.ElementAtOrDefault(0)); if (home == null) { UnturnedChat.Say(caller, pluginInstance.Translate("NoHome"), pluginInstance.MessageColor); return; } if (!ValidateTeleportation(player, home)) { return; } if (pluginInstance.PlayerCooldowns.TryGetValue(caller.Id, out DateTime cooldownExpire) && cooldownExpire > DateTime.Now) { UnturnedChat.Say(caller, pluginInstance.Translate("HomeCooldown", System.Math.Round((cooldownExpire - DateTime.Now).TotalSeconds)), pluginInstance.MessageColor); return; } pluginInstance.PlayerCooldowns[caller.Id] = DateTime.Now.AddSeconds(VipHelper.GetPlayerHomeCooldown(caller.Id)); float delay = VipHelper.GetPlayerHomeDelay(player.Id); if (delay > 0) { UnturnedChat.Say(caller, pluginInstance.Translate("HomeDelayWarn", delay), pluginInstance.MessageColor); } TaskDispatcher.QueueOnMainThread(() => { if (!ValidateTeleportation(player, home)) { pluginInstance.PlayerCooldowns.Remove(caller.Id); return; } if (!player.Player.teleportToLocation(home.LivePosition + new Vector3(0f, pluginInstance.Configuration.Instance.TeleportHeight, 0f), player.Rotation)) { UnturnedChat.Say(caller, pluginInstance.Translate("HomeTeleportationFailed", home.Name), pluginInstance.MessageColor); pluginInstance.PlayerCooldowns.Remove(caller.Id); return; } UnturnedChat.Say(caller, pluginInstance.Translate("HomeSuccess", home.Name), pluginInstance.MessageColor); }, delay); }