diff --git a/TShockAPI/GetDataHandlers.cs b/TShockAPI/GetDataHandlers.cs index e22181f4..49d796f2 100755 --- a/TShockAPI/GetDataHandlers.cs +++ b/TShockAPI/GetDataHandlers.cs @@ -1213,6 +1213,7 @@ namespace TShockAPI {PacketTypes.LiquidSet, HandleLiquidSet}, {PacketTypes.PlayerSpawn, HandleSpawn}, {PacketTypes.ChestGetContents, HandleChestOpen}, + {PacketTypes.ChestOpen, HandleChestActive}, {PacketTypes.ChestItem, HandleChestItem}, {PacketTypes.SignNew, HandleSign}, {PacketTypes.PlayerSlot, HandlePlayerSlot}, @@ -2772,6 +2773,17 @@ namespace TShockAPI return false; } + private static bool HandleChestActive(GetDataHandlerArgs args) + { + var id = args.Data.ReadInt16(); + var x = args.Data.ReadInt32(); + var y = args.Data.ReadInt32(); + + args.Player.ActiveChest = id; + + return false; + } + private static bool HandleChestItem(GetDataHandlerArgs args) { var id = args.Data.ReadInt16(); diff --git a/TShockAPI/TSPlayer.cs b/TShockAPI/TSPlayer.cs index b393a433..edd67a7c 100755 --- a/TShockAPI/TSPlayer.cs +++ b/TShockAPI/TSPlayer.cs @@ -797,12 +797,21 @@ namespace TShockAPI } private DateTime LastDisableNotification = DateTime.UtcNow; + public int ActiveChest = -1; + public virtual void Disable(string reason = "", bool displayConsole = true) { LastThreat = DateTime.UtcNow; SetBuff(33, 330, true); //Weak SetBuff(32, 330, true); //Slow SetBuff(23, 330, true); //Cursed + SetBuff(47, 330, true); //Frozen + + if (ActiveChest != -1) + { + SendData(PacketTypes.ChestOpen, "", -1); + } + if (!string.IsNullOrEmpty(reason)) { if ((DateTime.UtcNow - LastDisableNotification).TotalMilliseconds > 5000)