Minor refactors

This commit is contained in:
Chris 2020-06-02 17:19:00 +09:30
parent 93a7b0aafe
commit c7a6d044f4
5 changed files with 18 additions and 25 deletions

View file

@ -47,7 +47,7 @@ namespace TShockAPI
GetDataHandlers.SendTileSquare += STSHandler.OnReceive; GetDataHandlers.SendTileSquare += STSHandler.OnReceive;
NetModuleHandler = new Handlers.NetModules.NetModulePacketHandler(); NetModuleHandler = new Handlers.NetModules.NetModulePacketHandler();
GetDataHandlers.LoadNetModule += NetModuleHandler.OnReceive; GetDataHandlers.ReadNetModule += NetModuleHandler.OnReceive;
// Setup hooks // Setup hooks
GetDataHandlers.GetSection += OnGetSection; GetDataHandlers.GetSection += OnGetSection;

View file

@ -1954,7 +1954,7 @@ namespace TShockAPI
/// <summary> /// <summary>
/// Used when a net module is loaded /// Used when a net module is loaded
/// </summary> /// </summary>
public class LoadNetModuleEventArgs : GetDataHandledEventArgs public class ReadNetModuleEventArgs : GetDataHandledEventArgs
{ {
/// <summary> /// <summary>
/// The type of net module being loaded /// The type of net module being loaded
@ -1963,25 +1963,25 @@ namespace TShockAPI
} }
/// <summary> /// <summary>
/// Called when a net module is loaded /// Called when a net module is received
/// </summary> /// </summary>
public static HandlerList<LoadNetModuleEventArgs> LoadNetModule = new HandlerList<LoadNetModuleEventArgs>(); public static HandlerList<ReadNetModuleEventArgs> ReadNetModule = new HandlerList<ReadNetModuleEventArgs>();
private static bool OnLoadNetModule(TSPlayer player, MemoryStream data, NetModuleType moduleType) private static bool OnLoadNetModule(TSPlayer player, MemoryStream data, NetModuleType moduleType)
{ {
if (LoadNetModule == null) if (ReadNetModule == null)
{ {
return false; return false;
} }
var args = new LoadNetModuleEventArgs var args = new ReadNetModuleEventArgs
{ {
Player = player, Player = player,
Data = data, Data = data,
ModuleType = moduleType ModuleType = moduleType
}; };
LoadNetModule.Invoke(null, args); ReadNetModule.Invoke(null, args);
return args.Handled; return args.Handled;
} }
@ -2242,11 +2242,10 @@ namespace TShockAPI
else if ((Main.ServerSideCharacter) && (args.Player.sX > 0) && (args.Player.sY > 0) && (args.TPlayer.SpawnX > 0) && ((args.TPlayer.SpawnX != args.Player.sX) && (args.TPlayer.SpawnY != args.Player.sY))) else if ((Main.ServerSideCharacter) && (args.Player.sX > 0) && (args.Player.sY > 0) && (args.TPlayer.SpawnX > 0) && ((args.TPlayer.SpawnX != args.Player.sX) && (args.TPlayer.SpawnY != args.Player.sY)))
{ {
args.Player.sX = args.TPlayer.SpawnX; args.Player.sX = args.TPlayer.SpawnX;
args.Player.sY = args.TPlayer.SpawnY; args.Player.sY = args.TPlayer.SpawnY;
if (((Main.tile[args.Player.sX, args.Player.sY - 1].active() && Main.tile[args.Player.sX, args.Player.sY - 1].type == 79)) && (WorldGen.StartRoomCheck(args.Player.sX, args.Player.sY - 1))) if (((Main.tile[args.Player.sX, args.Player.sY - 1].active() && Main.tile[args.Player.sX, args.Player.sY - 1].type == TileID.Beds)) && (WorldGen.StartRoomCheck(args.Player.sX, args.Player.sY - 1)))
{ {
args.Player.Teleport(args.Player.sX * 16, (args.Player.sY * 16) - 48); args.Player.Teleport(args.Player.sX * 16, (args.Player.sY * 16) - 48);
TShock.Log.ConsoleDebug("GetDataHandlers / HandleSpawn force teleport phase 1 {0}", args.Player.Name); TShock.Log.ConsoleDebug("GetDataHandlers / HandleSpawn force teleport phase 1 {0}", args.Player.Name);
@ -2255,7 +2254,7 @@ namespace TShockAPI
else if ((Main.ServerSideCharacter) && (args.Player.sX > 0) && (args.Player.sY > 0)) else if ((Main.ServerSideCharacter) && (args.Player.sX > 0) && (args.Player.sY > 0))
{ {
if (((Main.tile[args.Player.sX, args.Player.sY - 1].active() && Main.tile[args.Player.sX, args.Player.sY - 1].type == 79)) && (WorldGen.StartRoomCheck(args.Player.sX, args.Player.sY - 1))) if (((Main.tile[args.Player.sX, args.Player.sY - 1].active() && Main.tile[args.Player.sX, args.Player.sY - 1].type == TileID.Beds)) && (WorldGen.StartRoomCheck(args.Player.sX, args.Player.sY - 1)))
{ {
args.Player.Teleport(args.Player.sX * 16, (args.Player.sY * 16) - 48); args.Player.Teleport(args.Player.sX * 16, (args.Player.sY * 16) - 48);
TShock.Log.ConsoleDebug("GetDataHandlers / HandleSpawn force teleport phase 2 {0}", args.Player.Name); TShock.Log.ConsoleDebug("GetDataHandlers / HandleSpawn force teleport phase 2 {0}", args.Player.Name);

View file

@ -31,7 +31,7 @@ namespace TShockAPI.Handlers.NetModules
/// <param name="rejectPacket"></param> /// <param name="rejectPacket"></param>
public void HandlePacket(TSPlayer player, out bool rejectPacket) public void HandlePacket(TSPlayer player, out bool rejectPacket)
{ {
if (!CheckPermission(PowerType, player)) if (!HasPermission(PowerType, player))
{ {
rejectPacket = true; rejectPacket = true;
return; return;
@ -46,7 +46,7 @@ namespace TShockAPI.Handlers.NetModules
/// <param name="powerType"></param> /// <param name="powerType"></param>
/// <param name="player"></param> /// <param name="player"></param>
/// <returns></returns> /// <returns></returns>
public static bool CheckPermission(CreativePowerTypes powerType, TSPlayer player) public static bool HasPermission(CreativePowerTypes powerType, TSPlayer player)
{ {
if (!PowerToPermissionMap.ContainsKey(powerType)) if (!PowerToPermissionMap.ContainsKey(powerType))
{ {

View file

@ -30,6 +30,9 @@ namespace TShockAPI.Handlers.NetModules
/// <param name="data"></param> /// <param name="data"></param>
public void Deserialize(MemoryStream data) public void Deserialize(MemoryStream data)
{ {
// For whatever reason Terraria writes '0' to the stream at the beginning of this packet.
// If this value is not 0 then its been crafted by a non-vanilla client.
// We don't actually know why the 0 is written, so we're just going to call this UnknownField for now
UnknownField = data.ReadInt8(); UnknownField = data.ReadInt8();
if (UnknownField == 0) if (UnknownField == 0)
{ {

View file

@ -8,7 +8,7 @@ namespace TShockAPI.Handlers.NetModules
/// <summary> /// <summary>
/// Handles packet 82 - Load Net Module packets /// Handles packet 82 - Load Net Module packets
/// </summary> /// </summary>
public class NetModulePacketHandler : IPacketHandler<LoadNetModuleEventArgs> public class NetModulePacketHandler : IPacketHandler<ReadNetModuleEventArgs>
{ {
/// <summary> /// <summary>
/// Maps net module types to handlers for the net module type. Add to or edit this dictionary to customise handling /// Maps net module types to handlers for the net module type. Add to or edit this dictionary to customise handling
@ -29,7 +29,7 @@ namespace TShockAPI.Handlers.NetModules
/// </summary> /// </summary>
/// <param name="sender"></param> /// <param name="sender"></param>
/// <param name="args"></param> /// <param name="args"></param>
public void OnReceive(object sender, LoadNetModuleEventArgs args) public void OnReceive(object sender, ReadNetModuleEventArgs args)
{ {
INetModuleHandler handler; INetModuleHandler handler;
@ -39,17 +39,8 @@ namespace TShockAPI.Handlers.NetModules
} }
else else
{ {
// As of 1.4.x.x, this is now used for more things: // We don't have handlers for NetModuleType.Ping and NetModuleType.Particles.
// NetCreativePowersModule // These net modules are fairly innocuous and can be processed normally by the game
// NetCreativePowerPermissionsModule
// NetLiquidModule
// NetParticlesModule
// NetPingModule
// NetTeleportPylonModule
// NetTextModule
// I (particles) have disabled the original return here, which means that we need to
// handle this more. In the interm, this unbreaks parts of vanilla. Originally
// we just blocked this because it was a liquid exploit.
args.Handled = false; args.Handled = false;
return; return;
} }