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();