Move OnGemLockToggle -> Bouncer
This commit is contained in:
parent
de017f2d41
commit
748d7f7fab
3 changed files with 39 additions and 25 deletions
|
|
@ -79,6 +79,7 @@ Putting this stuff down here so things don't conflict as often.
|
|||
* Added `TSPlayer` to `GetDataHandlers.PlayerAnimation`. (@hakusaro)
|
||||
* Added `GetDataHandlers.MassWireOperation` hook and related arguments. (@hakusaro)
|
||||
* Added `GetDataHandlers.PlaceTileEntity` hook and related arguments. (@hakusaro)
|
||||
* Added `TSPlayer` to `GetDataHandlers.GemLockToggle`. (@hakusaro)
|
||||
|
||||
## TShock 4.3.25
|
||||
* Fixed a critical exploit in the Terraria protocol that could cause massive unpreventable world corruption as well as a number of other problems. Thanks to @bartico6 for reporting. Fixed by the efforts of @QuiCM, @hakusaro, and tips in the right directioon from @bartico6.
|
||||
|
|
|
|||
|
|
@ -41,6 +41,7 @@ namespace TShockAPI
|
|||
{
|
||||
// Setup hooks
|
||||
|
||||
GetDataHandlers.GemLockToggle.Register(OnGemLockToggle);
|
||||
GetDataHandlers.PlaceTileEntity.Register(OnPlaceTileEntity);
|
||||
GetDataHandlers.PlayerAnimation.Register(OnPlayerAnimation);
|
||||
GetDataHandlers.NPCStrike.Register(OnNPCStrike);
|
||||
|
|
@ -61,6 +62,36 @@ namespace TShockAPI
|
|||
GetDataHandlers.TileEdit.Register(OnTileEdit);
|
||||
}
|
||||
|
||||
/// <summary>Handles the anti-cheat components of gem lock toggles.</summary>
|
||||
/// <param name="sender">The object that triggered the event.</param>
|
||||
/// <param name="args">The packet arguments that the event has.</param>
|
||||
internal void OnGemLockToggle(object sender, GetDataHandlers.GemLockToggleEventArgs args)
|
||||
{
|
||||
if (args.X < 0 || args.Y < 0 || args.X >= Main.maxTilesX || args.Y >= Main.maxTilesY)
|
||||
{
|
||||
args.Handled = true;
|
||||
return;
|
||||
}
|
||||
|
||||
if (!TShock.Utils.TilePlacementValid(args.X, args.Y) || (args.Player.Dead && TShock.Config.PreventDeadModification))
|
||||
{
|
||||
args.Handled = true;
|
||||
return;
|
||||
}
|
||||
|
||||
if (TShock.CheckIgnores(args.Player))
|
||||
{
|
||||
args.Handled = true;
|
||||
return;
|
||||
}
|
||||
|
||||
if (TShock.CheckTilePermission(args.Player, args.X, args.Y))
|
||||
{
|
||||
args.Handled = true;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>Fired when a PlaceTileEntity occurs for basic anti-cheat on perms and range.</summary>
|
||||
/// <param name="sender">The object that triggered the event.</param>
|
||||
/// <param name="args">The packet arguments that the event has.</param>
|
||||
|
|
|
|||
|
|
@ -3080,14 +3080,16 @@ namespace TShockAPI
|
|||
/// </summary>
|
||||
public class GemLockToggleEventArgs : HandledEventArgs
|
||||
{
|
||||
/// <summary>The TSPlayer that triggered the event.</summary>
|
||||
public TSPlayer Player { get; set; }
|
||||
/// <summary>
|
||||
/// X Location
|
||||
/// </summary>
|
||||
public Int32 X { get; set; }
|
||||
public short X { get; set; }
|
||||
/// <summary>
|
||||
/// Y Location
|
||||
/// </summary>
|
||||
public Int32 Y { get; set; }
|
||||
public short Y { get; set; }
|
||||
/// <summary>
|
||||
/// On status
|
||||
/// </summary>
|
||||
|
|
@ -3099,7 +3101,7 @@ namespace TShockAPI
|
|||
/// </summary>
|
||||
public static HandlerList<GemLockToggleEventArgs> GemLockToggle;
|
||||
|
||||
private static bool OnGemLockToggle(Int32 x, Int32 y, bool on)
|
||||
private static bool OnGemLockToggle(short x, short y, bool on)
|
||||
{
|
||||
if (GemLockToggle == null)
|
||||
return false;
|
||||
|
|
@ -3116,15 +3118,10 @@ namespace TShockAPI
|
|||
|
||||
private static bool HandleGemLockToggle(GetDataHandlerArgs args)
|
||||
{
|
||||
var x = (int)args.Data.ReadInt16();
|
||||
var y = (int)args.Data.ReadInt16();
|
||||
var x = args.Data.ReadInt16();
|
||||
var y = args.Data.ReadInt16();
|
||||
var on = args.Data.ReadBoolean();
|
||||
|
||||
if (x < 0 || y < 0 || x >= Main.maxTilesX || y >= Main.maxTilesY)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
if (OnGemLockToggle(x, y, on))
|
||||
{
|
||||
return true;
|
||||
|
|
@ -3135,21 +3132,6 @@ namespace TShockAPI
|
|||
return false;
|
||||
}
|
||||
|
||||
if (!TShock.Utils.TilePlacementValid(x, y) || (args.Player.Dead && TShock.Config.PreventDeadModification))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
if (TShock.CheckIgnores(args.Player))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
if (TShock.CheckTilePermission(args.Player, x, y))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue