diff --git a/TShockAPI/GetDataHandlers.cs b/TShockAPI/GetDataHandlers.cs
index db514d10..bb595a5c 100644
--- a/TShockAPI/GetDataHandlers.cs
+++ b/TShockAPI/GetDataHandlers.cs
@@ -135,6 +135,38 @@ namespace TShockAPI
return args.Handled;
}
+ ///
+ /// For use in a PlayerTeam event
+ ///
+ public class PlayerTeamEventArgs : HandledEventArgs
+ {
+ ///
+ /// The Terraria player ID of the player
+ ///
+ public byte PlayerId { get; set; }
+ ///
+ /// Enable/disable pvp?
+ ///
+ public byte Team { get; set; }
+ }
+ ///
+ /// TogglePvp - called when a player toggles pvp
+ ///
+ public static HandlerList PlayerTeam;
+ private static bool OnPlayerTeam(byte _id, byte _team)
+ {
+ if (PlayerTeam == null)
+ return false;
+
+ var args = new PlayerTeamEventArgs
+ {
+ PlayerId = _id,
+ Team = _team,
+ };
+ PlayerTeam.Invoke(null, args);
+ return args.Handled;
+ }
+
///
/// For use in a PlayerSlot event
///
@@ -1091,6 +1123,7 @@ namespace TShockAPI
{PacketTypes.TileSendSquare, HandleSendTileSquare},
{PacketTypes.ProjectileNew, HandleProjectileNew},
{PacketTypes.TogglePvp, HandleTogglePvp},
+ {PacketTypes.PlayerTeam, HandlePlayerTeam},
{PacketTypes.TileKill, HandleTileKill},
{PacketTypes.PlayerKillMe, HandlePlayerKillMe},
{PacketTypes.LiquidSet, HandleLiquidSet},
@@ -1774,6 +1807,25 @@ namespace TShockAPI
return true;
}
+ private static bool HandlePlayerTeam(GetDataHandlerArgs args)
+ {
+ byte id = args.Data.ReadInt8();
+ byte team = args.Data.ReadInt8();
+ if (OnPlayerTeam(id, team))
+ return true;
+
+ if (id != args.Player.Index)
+ {
+ return true;
+ }
+
+ args.TPlayer.team = team;
+
+ NetMessage.SendData((int)PacketTypes.PlayerTeam, -1, -1, "", args.Player.Index);
+
+ return true;
+ }
+
private static bool HandlePlayerUpdate(GetDataHandlerArgs args)
{
var plr = args.Data.ReadInt8();