Add new Respawn command

This commit is contained in:
stacey 2021-07-31 13:59:24 -04:00 committed by GitHub
parent 3ba1e7419d
commit 818e9ce24b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -599,6 +599,10 @@ namespace TShockAPI
{
HelpText = "Sends all tiles from the server to the player to resync the client with the actual world state."
});
add(new Command(Permissions.respawn, Respawn, "respawn")
{
HelpText = "Respawn yourself or another player."
});
#endregion
add(new Command(Aliases, "aliases")
@ -5632,6 +5636,57 @@ namespace TShockAPI
plr.SendErrorMessage("{0} just killed you!", args.Player.Name);
}
}
private static void Respawn(CommandArgs args)
{
TSPlayer playerToRespawn;
if (args.Parameters.Count > 0)
{
if (!args.Player.HasPermission(Permissions.respawnother))
{
args.Player.SendErrorMessage("You do not have permission to respawn another player.");
return;
}
string plStr = String.Join(" ", args.Parameters);
var players = TSPlayer.FindByNameOrID(plStr);
if (players.Count == 0)
{
args.Player.SendErrorMessage($"Could not find any player named \"{plStr}\"");
return;
}
else if (players.Count > 1)
{
args.Player.SendMultipleMatchError(players.Select(p => p.Name));
return;
}
else
playerToRespawn = players[0];
}
else if (!args.Player.RealPlayer)
{
args.Player.SendErrorMessage("You can't respawn the server console!");
return;
}
else
playerToRespawn = args.Player;
if (!playerToRespawn.Dead)
{
args.Player.SendErrorMessage($"{(playerToRespawn == args.Player ? "You" : playerToRespawn.Name)} {(playerToRespawn == args.Player ? "are" : "is")} not dead.");
return;
}
else
playerToRespawn.Spawn(PlayerSpawnContext.ReviveFromDeath);
if (playerToRespawn != args.Player)
{
args.Player.SendSuccessMessage($"You have respawned {playerToRespawn.Name}");
if (!args.Silent)
playerToRespawn.SendSuccessMessage($"{args.Player.Name} has respawned you.");
}
else
playerToRespawn.SendSuccessMessage("You have respawned yourself.");
}
private static void Butcher(CommandArgs args)
{