From e93af1a3f9463715dc2d85623b349c2a2aabd525 Mon Sep 17 00:00:00 2001 From: xuyuwtu <3082068984@qq.com> Date: Wed, 28 Jan 2026 22:38:24 +0800 Subject: [PATCH] update PlayerUpdate packet process --- TShockAPI/GetDataHandlers.cs | 26 +++++++++++++-- TShockAPI/Models/PlayerUpdate/MiscDataSet1.cs | 6 ++++ TShockAPI/Models/PlayerUpdate/MiscDataSet3.cs | 32 +++++++++++++++++++ 3 files changed, 61 insertions(+), 3 deletions(-) diff --git a/TShockAPI/GetDataHandlers.cs b/TShockAPI/GetDataHandlers.cs index ff68139c..3f34cf11 100644 --- a/TShockAPI/GetDataHandlers.cs +++ b/TShockAPI/GetDataHandlers.cs @@ -338,6 +338,7 @@ namespace TShockAPI /// Velocity of the player. /// public Vector2 Velocity { get; set; } + public ushort? MountType { get; set; } /// /// Original position of the player when using Potion of Return. /// @@ -346,6 +347,7 @@ namespace TShockAPI /// Home Position of the player for Potion of Return. /// public Vector2? HomePos { get; set; } + public Vector2? NetCameraTarget { get; set; } } /// @@ -363,8 +365,10 @@ namespace TShockAPI byte selectedItem, Vector2 position, Vector2 velocity, + ushort? mountType, Vector2? originalPos, - Vector2? homePos) + Vector2? homePos, + Vector2? netCameraTarget) { if (PlayerUpdate == null) return false; @@ -381,8 +385,10 @@ namespace TShockAPI SelectedItem = selectedItem, Position = position, Velocity = velocity, + MountType = mountType, OriginalPos = originalPos, - HomePos = homePos + HomePos = homePos, + NetCameraTarget = netCameraTarget }; PlayerUpdate.Invoke(null, args); return args.Handled; @@ -2826,7 +2832,15 @@ namespace TShockAPI Vector2 velocity = Vector2.Zero; if (miscData1.HasVelocity) + { velocity = args.Data.ReadVector2(); + } + + ushort? mountType = null; + if (miscData1.IsMountActive) + { + mountType = args.Data.ReadUInt16(); + } Vector2? originalPosition = new Vector2?(); Vector2? homePosition = Vector2.Zero; @@ -2837,7 +2851,13 @@ namespace TShockAPI TShock.Log.ConsoleDebug(GetString("GetDataHandlers / HandlePlayerUpdate home position delta {0}", args.Player.Name)); } - if (OnPlayerUpdate(args.Player, args.Data, playerID, controls, miscData1, miscData2, miscData3, selectedItem, position, velocity, originalPosition, homePosition)) + Vector2? netCameraTarget = null; + if (miscData3.HasNetCameraTarget) + { + netCameraTarget = args.Data.ReadVector2(); + } + + if (OnPlayerUpdate(args.Player, args.Data, playerID, controls, miscData1, miscData2, miscData3, selectedItem, position, velocity, mountType, originalPosition, homePosition, netCameraTarget)) return true; return false; diff --git a/TShockAPI/Models/PlayerUpdate/MiscDataSet1.cs b/TShockAPI/Models/PlayerUpdate/MiscDataSet1.cs index 480353a1..21c23d65 100644 --- a/TShockAPI/Models/PlayerUpdate/MiscDataSet1.cs +++ b/TShockAPI/Models/PlayerUpdate/MiscDataSet1.cs @@ -75,6 +75,12 @@ namespace TShockAPI.Models.PlayerUpdate set => bitsbyte[6] = value; } + public bool IsMountActive + { + get => bitsbyte[7]; + set => bitsbyte[7] = value; + } + /// /// Constructs a new instance of MiscDataSet1 with the given backing BitsByte /// diff --git a/TShockAPI/Models/PlayerUpdate/MiscDataSet3.cs b/TShockAPI/Models/PlayerUpdate/MiscDataSet3.cs index 04a45b6a..b729a5bb 100644 --- a/TShockAPI/Models/PlayerUpdate/MiscDataSet3.cs +++ b/TShockAPI/Models/PlayerUpdate/MiscDataSet3.cs @@ -23,6 +23,38 @@ namespace TShockAPI.Models.PlayerUpdate set => bitsbyte[0] = value; } + public bool AutoReuseAllWeapons + { + get => bitsbyte[1]; + set => bitsbyte[1] = value; + } + public bool ControlDownHold + { + get => bitsbyte[2]; + set => bitsbyte[2] = value; + } + + public bool IsOperatingAnotherEntity + { + get => bitsbyte[3]; + set => bitsbyte[3] = value; + } + public bool ControlUseTile + { + get => bitsbyte[4]; + set => bitsbyte[4] = value; + } + public bool HasNetCameraTarget + { + get => bitsbyte[5]; + set => bitsbyte[5] = value; + } + public bool LastItemUseAttemptSuccess + { + get => bitsbyte[6]; + set => bitsbyte[6] = value; + } + /// /// Constructs a new instance of MiscDataSet3 with the given backing BitsByte ///