From 939d1582f5506f014a38510e1809309abd97cd5e Mon Sep 17 00:00:00 2001 From: Cai <13110818005@qq.com> Date: Sun, 15 Jun 2025 22:39:57 +0800 Subject: [PATCH] feat(GetDataHandler): add `ForceItemIntoNearestChest` --- TShockAPI/GetDataHandlers.cs | 37 ++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/TShockAPI/GetDataHandlers.cs b/TShockAPI/GetDataHandlers.cs index 6ed0f8de..d587515c 100644 --- a/TShockAPI/GetDataHandlers.cs +++ b/TShockAPI/GetDataHandlers.cs @@ -130,6 +130,7 @@ namespace TShockAPI { PacketTypes.NumberOfAnglerQuestsCompleted, HandleNumberOfAnglerQuestsCompleted }, { PacketTypes.PlaceObject, HandlePlaceObject }, { PacketTypes.LoadNetModule, HandleLoadNetModule }, + { PacketTypes.ForceItemIntoNearestChest, HandleForceItemIntoNearestChest }, { PacketTypes.PlaceTileEntity, HandlePlaceTileEntity }, { PacketTypes.PlaceItemFrame, HandlePlaceItemFrame }, { PacketTypes.UpdateItemDrop, HandleItemDrop }, @@ -1790,6 +1791,30 @@ namespace TShockAPI return args.Handled; } + /// For use in a ForceItemIntoNearestChest event. + public class ForceItemIntoNearestChestEventArgs : GetDataHandledEventArgs + { + /// The slot index of the item being attempted to put into a chest. + public short Slot { get; set; } + + } + + /// Fired when a ForceItemIntoNearestChest event occurs. + public static HandlerList ForceItemIntoNearestChest = new HandlerList(); + private static bool OnForceItemIntoNearest(TSPlayer player, MemoryStream data, short slot) + { + + var args = new ForceItemIntoNearestChestEventArgs + { + Player = player, + Data = data, + Slot = slot + }; + + ForceItemIntoNearestChest.Invoke(null, args); + return args.Handled; + } + /// For use in a PlaceTileEntity event. public class PlaceTileEntityEventArgs : GetDataHandledEventArgs { @@ -4088,6 +4113,18 @@ namespace TShockAPI return false; } + private static bool HandleForceItemIntoNearestChest(GetDataHandlerArgs args) + { + var slot = args.Data.ReadInt16(); + + if (OnForceItemIntoNearest(args.Player, args.Data, slot)) + { + return true; + } + + return false; + } + private static bool HandlePlaceTileEntity(GetDataHandlerArgs args) { var x = args.Data.ReadInt16();