Add verbose logging to rest of GetDataHandlers

Should help put the nail in the coffin of many 1.4 bugs
This commit is contained in:
Lucas Nicodemus 2020-05-22 21:06:16 -07:00
parent 03e41a521e
commit f227a2a1e4
No known key found for this signature in database
GPG key ID: A07BD9023D1664DB

View file

@ -1880,12 +1880,14 @@ namespace TShockAPI
if (OnPlayerInfo(args.Player, args.Data, playerid, hair, skinVariant, difficulty, name)) if (OnPlayerInfo(args.Player, args.Data, playerid, hair, skinVariant, difficulty, name))
{ {
TShock.Log.ConsoleDebug("GetDataHandlers / HandlePlayerInfo rejected plugin phase {0}", name);
args.Player.Kick("A plugin on this server stopped your login.", true, true); args.Player.Kick("A plugin on this server stopped your login.", true, true);
return true; return true;
} }
if (name.Trim().Length == 0) if (name.Trim().Length == 0)
{ {
TShock.Log.ConsoleDebug("GetDataHandlers / HandlePlayerInfo rejected name length 0");
args.Player.Kick("You have been Bounced.", true, true); args.Player.Kick("You have been Bounced.", true, true);
return true; return true;
} }
@ -1914,11 +1916,13 @@ namespace TShockAPI
} }
if (TShock.Config.MediumcoreOnly && difficulty < 1) if (TShock.Config.MediumcoreOnly && difficulty < 1)
{ {
TShock.Log.ConsoleDebug("GetDataHandlers / HandlePlayerInfo rejected mediumcore required");
args.Player.Kick("You need to join with a mediumcore player or higher.", true, true); args.Player.Kick("You need to join with a mediumcore player or higher.", true, true);
return true; return true;
} }
if (TShock.Config.HardcoreOnly && difficulty < 2) if (TShock.Config.HardcoreOnly && difficulty < 2)
{ {
TShock.Log.ConsoleDebug("GetDataHandlers / HandlePlayerInfo rejected hardcore required");
args.Player.Kick("You need to join with a hardcore player.", true, true); args.Player.Kick("You need to join with a hardcore player.", true, true);
return true; return true;
} }
@ -1950,6 +1954,7 @@ namespace TShockAPI
return true; return true;
if (args.Player.IgnoreSSCPackets) if (args.Player.IgnoreSSCPackets)
{ {
TShock.Log.ConsoleDebug("GetDataHandlers / HandlePlayerSlot rejected ignore ssc packets");
args.Player.SendData(PacketTypes.PlayerSlot, "", args.Player.Index, slot, prefix); args.Player.SendData(PacketTypes.PlayerSlot, "", args.Player.Index, slot, prefix);
return true; return true;
} }
@ -2055,6 +2060,7 @@ namespace TShockAPI
if (TShock.Utils.GetActivePlayerCount() + 1 > TShock.Config.MaxSlots && if (TShock.Utils.GetActivePlayerCount() + 1 > TShock.Config.MaxSlots &&
!args.Player.HasPermission(Permissions.reservedslot)) !args.Player.HasPermission(Permissions.reservedslot))
{ {
TShock.Log.ConsoleDebug("GetDataHandlers / HandleGetSection rejected reserve slot");
args.Player.Kick(TShock.Config.ServerFullReason, true, true); args.Player.Kick(TShock.Config.ServerFullReason, true, true);
return true; return true;
} }
@ -2067,6 +2073,7 @@ namespace TShockAPI
{ {
if (args.Player.Dead && args.Player.RespawnTimer > 0) if (args.Player.Dead && args.Player.RespawnTimer > 0)
{ {
TShock.Log.ConsoleDebug("GetDataHandlers / HandleSpawn rejected dead player spawn request {0}", args.Player.Name);
return true; return true;
} }
@ -2084,6 +2091,7 @@ namespace TShockAPI
args.Player.sX = Main.spawnTileX; args.Player.sX = Main.spawnTileX;
args.Player.sY = Main.spawnTileY; args.Player.sY = Main.spawnTileY;
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 'vanilla spawn' {0}", args.Player.Name);
} }
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))) 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)))
@ -2093,13 +2101,19 @@ namespace TShockAPI
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 == 79)) && (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);
}
} }
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 == 79)) && (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);
}
} }
if (respawnTimer > 0) if (respawnTimer > 0)
@ -2135,6 +2149,7 @@ namespace TShockAPI
{ {
originalPosition = new Vector2?(args.Data.ReadVector2()); originalPosition = new Vector2?(args.Data.ReadVector2());
homePosition = new Vector2?(args.Data.ReadVector2()); homePosition = new Vector2?(args.Data.ReadVector2());
TShock.Log.ConsoleDebug("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)) if (OnPlayerUpdate(args.Player, args.Data, playerID, controls, miscData1, miscData2, miscData3, selectedItem, position, velocity, originalPosition, homePosition))
@ -2154,6 +2169,7 @@ namespace TShockAPI
if (max > TShock.Config.MaxHP && !args.Player.HasPermission(Permissions.ignorehp)) if (max > TShock.Config.MaxHP && !args.Player.HasPermission(Permissions.ignorehp))
{ {
TShock.Log.ConsoleDebug("GetDataHandlers / HandlePlayerHp rejected over max hp {0}", args.Player.Name);
args.Player.Disable("Maximum HP beyond limit", DisableFlags.WriteToLogAndConsole); args.Player.Disable("Maximum HP beyond limit", DisableFlags.WriteToLogAndConsole);
return true; return true;
} }
@ -2202,11 +2218,13 @@ namespace TShockAPI
if (x >= Main.maxTilesX || y >= Main.maxTilesY || x < 0 || y < 0) // Check for out of range if (x >= Main.maxTilesX || y >= Main.maxTilesY || x < 0 || y < 0) // Check for out of range
{ {
TShock.Log.ConsoleDebug("GetDataHandlers / HandleDoorUse rejected out of range door {0}", args.Player.Name);
return true; return true;
} }
if (type < 0 || type > 5) if (type < 0 || type > 5)
{ {
TShock.Log.ConsoleDebug("GetDataHandlers / HandleDoorUse rejected type 0 5 check {0}", args.Player.Name);
return true; return true;
} }
@ -2216,6 +2234,7 @@ namespace TShockAPI
&& tileType != TileID.TallGateClosed && tileType != TileID.TallGateOpen && tileType != TileID.TallGateClosed && tileType != TileID.TallGateOpen
&& tileType != TileID.TrapdoorClosed && tileType != TileID.TrapdoorOpen) && tileType != TileID.TrapdoorClosed && tileType != TileID.TrapdoorOpen)
{ {
TShock.Log.ConsoleDebug("GetDataHandlers / HandleDoorUse rejected door gap check {0}", args.Player.Name);
return true; return true;
} }
@ -2310,6 +2329,7 @@ namespace TShockAPI
{ {
args.Player.SendErrorMessage("You do not have permission to hurt this NPC."); args.Player.SendErrorMessage("You do not have permission to hurt this NPC.");
args.Player.SendData(PacketTypes.NpcUpdate, "", id); args.Player.SendData(PacketTypes.NpcUpdate, "", id);
TShock.Log.ConsoleDebug("GetDataHandlers / HandleNpcStrike rejected npc strike {0}", args.Player.Name);
return true; return true;
} }
@ -2334,6 +2354,7 @@ namespace TShockAPI
if (type == ProjectileID.Tombstone) if (type == ProjectileID.Tombstone)
{ {
TShock.Log.ConsoleDebug("GetDataHandlers / HandleProjectileKill rejected tombstone {0}", args.Player.Name);
args.Player.RemoveProjectile(ident, owner); args.Player.RemoveProjectile(ident, owner);
return true; return true;
} }
@ -2344,8 +2365,11 @@ namespace TShockAPI
// https://github.com/Pryaxis/TShock/commit/a5aa9231239926f361b7246651e32144bbf28dda // https://github.com/Pryaxis/TShock/commit/a5aa9231239926f361b7246651e32144bbf28dda
if (type == ProjectileID.Bomb || type == ProjectileID.DeathLaser) if (type == ProjectileID.Bomb || type == ProjectileID.DeathLaser)
{ {
TShock.Log.ConsoleDebug("GetDataHandlers / HandleProjectileKill permitted skeletron prime exemption {0}", args.Player.Name);
TShock.Log.ConsoleDebug("If this was not skeletron prime related, please report to TShock what happened.");
return false; return false;
} }
TShock.Log.ConsoleDebug("GetDataHandlers / HandleProjectileKill rejected banned projectile {0}", args.Player.Name);
args.Player.RemoveProjectile(ident, owner); args.Player.RemoveProjectile(ident, owner);
return true; return true;
} }
@ -2363,11 +2387,15 @@ namespace TShockAPI
return true; return true;
if (id != args.Player.Index) if (id != args.Player.Index)
{
TShock.Log.ConsoleDebug("GetDataHandlers / HandleTogglePvp rejected index mismatch {0}", args.Player.Name);
return true; return true;
}
string pvpMode = TShock.Config.PvPMode.ToLowerInvariant(); string pvpMode = TShock.Config.PvPMode.ToLowerInvariant();
if (pvpMode == "disabled" || pvpMode == "always" || (DateTime.UtcNow - args.Player.LastPvPTeamChange).TotalSeconds < 5) if (pvpMode == "disabled" || pvpMode == "always" || (DateTime.UtcNow - args.Player.LastPvPTeamChange).TotalSeconds < 5)
{ {
TShock.Log.ConsoleDebug("GetDataHandlers / HandleTogglePvp rejected fastswitch {0}", args.Player.Name);
args.Player.SendData(PacketTypes.TogglePvp, "", id); args.Player.SendData(PacketTypes.TogglePvp, "", id);
return true; return true;
} }
@ -2402,6 +2430,7 @@ namespace TShockAPI
item.netDefaults(type); item.netDefaults(type);
if (stacks > item.maxStack) if (stacks > item.maxStack)
{ {
TShock.Log.ConsoleDebug("GetDataHandlers / HandleChestItem rejected max stacks {0}", args.Player.Name);
return true; return true;
} }
@ -2426,6 +2455,7 @@ namespace TShockAPI
if (!args.Player.HasBuildPermission(x, y) && TShock.Config.RegionProtectChests) if (!args.Player.HasBuildPermission(x, y) && TShock.Config.RegionProtectChests)
{ {
TShock.Log.ConsoleDebug("GetDataHandlers / HandleChestActive rejected build permission and region check {0}", args.Player.Name);
args.Player.SendData(PacketTypes.ChestOpen, "", -1); args.Player.SendData(PacketTypes.ChestOpen, "", -1);
return true; return true;
} }
@ -2450,6 +2480,7 @@ namespace TShockAPI
{ {
if (args.Player == null || args.TPlayer == null || args.Data == null) if (args.Player == null || args.TPlayer == null || args.Data == null)
{ {
TShock.Log.ConsoleDebug("GetDataHandlers / HandlePlayerZone rejected null check");
return true; return true;
} }
@ -2560,6 +2591,7 @@ namespace TShockAPI
if (max > TShock.Config.MaxMP && !args.Player.HasPermission(Permissions.ignoremp)) if (max > TShock.Config.MaxMP && !args.Player.HasPermission(Permissions.ignoremp))
{ {
TShock.Log.ConsoleDebug("GetDataHandlers / HandlePlayerMana rejected max mana {0} {1}/{2}", args.Player.Name, max, TShock.Config.MaxMP);
args.Player.Disable("Maximum MP beyond limit", DisableFlags.WriteToLogAndConsole); args.Player.Disable("Maximum MP beyond limit", DisableFlags.WriteToLogAndConsole);
return true; return true;
} }
@ -2586,6 +2618,7 @@ namespace TShockAPI
if ((DateTime.UtcNow - args.Player.LastPvPTeamChange).TotalSeconds < 5) if ((DateTime.UtcNow - args.Player.LastPvPTeamChange).TotalSeconds < 5)
{ {
args.Player.SendData(PacketTypes.PlayerTeam, "", id); args.Player.SendData(PacketTypes.PlayerTeam, "", id);
TShock.Log.ConsoleDebug("GetDataHandlers / HandlePlayerTeam rejected team fastswitch {0}", args.Player.Name);
return true; return true;
} }
@ -2606,12 +2639,14 @@ namespace TShockAPI
if (!args.Player.HasBuildPermission(x, y)) if (!args.Player.HasBuildPermission(x, y))
{ {
args.Player.SendData(PacketTypes.SignNew, "", id); args.Player.SendData(PacketTypes.SignNew, "", id);
TShock.Log.ConsoleDebug("GetDataHandlers / HandleSign rejected sign on build permission {0}", args.Player.Name);
return true; return true;
} }
if (!args.Player.IsInRange(x, y)) if (!args.Player.IsInRange(x, y))
{ {
args.Player.SendData(PacketTypes.SignNew, "", id); args.Player.SendData(PacketTypes.SignNew, "", id);
TShock.Log.ConsoleDebug("GetDataHandlers / HandleSign rejected sign range check {0}", args.Player.Name);
return true; return true;
} }
return false; return false;
@ -2645,7 +2680,10 @@ namespace TShockAPI
buff = 0; buff = 0;
if (Netplay.Clients[args.TPlayer.whoAmI].State < 2 && (buff == 156 || buff == 47 || buff == 149)) if (Netplay.Clients[args.TPlayer.whoAmI].State < 2 && (buff == 156 || buff == 47 || buff == 149))
{
TShock.Log.ConsoleDebug("GetDataHandlers / HandlePlayerBuffList zeroed player buff due to below state 2 {0} {1}", args.Player.Name, buff);
buff = 0; buff = 0;
}
args.TPlayer.buffType[i] = buff; args.TPlayer.buffType[i] = buff;
if (args.TPlayer.buffType[i] > 0) if (args.TPlayer.buffType[i] > 0)
@ -2658,7 +2696,7 @@ namespace TShockAPI
} }
} }
TShock.Log.ConsoleDebug("GetDataHandlers / HandlePlayerBuffList handled event and sent data {0}", args.Player.Name);
NetMessage.SendData((int)PacketTypes.PlayerBuff, -1, args.Player.Index, NetworkText.Empty, args.Player.Index); NetMessage.SendData((int)PacketTypes.PlayerBuff, -1, args.Player.Index, NetworkText.Empty, args.Player.Index);
return true; return true;
} }
@ -2673,13 +2711,16 @@ namespace TShockAPI
if (type == 1 && TShock.Config.DisableDungeonGuardian) if (type == 1 && TShock.Config.DisableDungeonGuardian)
{ {
TShock.Log.ConsoleDebug("GetDataHandlers / HandleSpecial rejected type 1 for {0}", args.Player.Name);
args.Player.SendMessage("The Dungeon Guardian returned you to your spawn point", Color.Purple); args.Player.SendMessage("The Dungeon Guardian returned you to your spawn point", Color.Purple);
args.Player.Spawn(PlayerSpawnContext.RecallFromItem); args.Player.Spawn(PlayerSpawnContext.RecallFromItem);
return true; return true;
} }
// typo? type == 3 & !args....
if (type == 3 & !args.Player.HasPermission(Permissions.usesundial)) if (type == 3 & !args.Player.HasPermission(Permissions.usesundial))
{ {
TShock.Log.ConsoleDebug("GetDataHandlers / HandleSpecial rejected enchanted sundial type 3 binary and (warn) {0}", args.Player.Name);
args.Player.SendErrorMessage("You do not have permission to use the Enchanted Sundial!"); args.Player.SendErrorMessage("You do not have permission to use the Enchanted Sundial!");
return true; return true;
} }
@ -2724,6 +2765,7 @@ namespace TShockAPI
if (!args.Player.HasPermission(Permissions.movenpc)) if (!args.Player.HasPermission(Permissions.movenpc))
{ {
TShock.Log.ConsoleDebug("GetDataHandlers / UpdateNPCHome rejected no permission {0}", args.Player.Name);
args.Player.SendErrorMessage("You do not have permission to relocate NPCs."); args.Player.SendErrorMessage("You do not have permission to relocate NPCs.");
args.Player.SendData(PacketTypes.UpdateNPCHome, "", id, Main.npc[id].homeTileX, Main.npc[id].homeTileY, args.Player.SendData(PacketTypes.UpdateNPCHome, "", id, Main.npc[id].homeTileX, Main.npc[id].homeTileY,
Convert.ToByte(Main.npc[id].homeless)); Convert.ToByte(Main.npc[id].homeless));
@ -2739,6 +2781,7 @@ namespace TShockAPI
{ {
if (args.Player.IsBouncerThrottled()) if (args.Player.IsBouncerThrottled())
{ {
TShock.Log.ConsoleDebug("GetDataHandlers / HandleSpawnBoss rejected bouner throttled {0}", args.Player.Name);
return true; return true;
} }
@ -2749,18 +2792,21 @@ namespace TShockAPI
if (bosses.Contains(thingType) && !args.Player.HasPermission(Permissions.summonboss)) if (bosses.Contains(thingType) && !args.Player.HasPermission(Permissions.summonboss))
{ {
TShock.Log.ConsoleDebug("GetDataHandlers / HandleSpawnBoss rejected boss {0} {1}", args.Player.Name, thingType);
args.Player.SendErrorMessage("You don't have permission to summon a boss."); args.Player.SendErrorMessage("You don't have permission to summon a boss.");
return true; return true;
} }
if (invasions.Contains(thingType) && !args.Player.HasPermission(Permissions.startinvasion)) if (invasions.Contains(thingType) && !args.Player.HasPermission(Permissions.startinvasion))
{ {
TShock.Log.ConsoleDebug("GetDataHandlers / HandleSpawnBoss rejected invasion {0} {1}", args.Player.Name, thingType);
args.Player.SendErrorMessage("You don't have permission to start an invasion."); args.Player.SendErrorMessage("You don't have permission to start an invasion.");
return true; return true;
} }
if (pets.Contains(thingType) && !args.Player.HasPermission(Permissions.spawnpets)) if (pets.Contains(thingType) && !args.Player.HasPermission(Permissions.spawnpets))
{ {
TShock.Log.ConsoleDebug("GetDataHandlers / HandleSpawnBoss rejected pet {0} {1}", args.Player.Name, thingType);
args.Player.SendErrorMessage("You don't have permission to spawn pets."); args.Player.SendErrorMessage("You don't have permission to spawn pets.");
return true; return true;
} }
@ -2814,6 +2860,7 @@ namespace TShockAPI
if (x < 0 || y < 0 || x >= Main.maxTilesX || y >= Main.maxTilesY || t > Main.numTileColors) if (x < 0 || y < 0 || x >= Main.maxTilesX || y >= Main.maxTilesY || t > Main.numTileColors)
{ {
TShock.Log.ConsoleDebug("GetDataHandlers / HandlePaintTile rejected range check {0}", args.Player.Name);
return true; return true;
} }
if (OnPaintTile(args.Player, args.Data, x, y, t)) if (OnPaintTile(args.Player, args.Data, x, y, t))
@ -2831,6 +2878,7 @@ namespace TShockAPI
!args.Player.Accessories.Any(i => i != null && i.stack > 0 && !args.Player.Accessories.Any(i => i != null && i.stack > 0 &&
(i.type == ItemID.PaintSprayer || i.type == ItemID.ArchitectGizmoPack))) (i.type == ItemID.PaintSprayer || i.type == ItemID.ArchitectGizmoPack)))
{ {
TShock.Log.ConsoleDebug("GetDataHandlers / HandlePaintTile rejected select consistency {0}", args.Player.Name);
args.Player.SendData(PacketTypes.PaintTile, "", x, y, Main.tile[x, y].color()); args.Player.SendData(PacketTypes.PaintTile, "", x, y, Main.tile[x, y].color());
return true; return true;
} }
@ -2839,6 +2887,7 @@ namespace TShockAPI
!args.Player.HasPaintPermission(x, y) || !args.Player.HasPaintPermission(x, y) ||
!args.Player.IsInRange(x, y)) !args.Player.IsInRange(x, y))
{ {
TShock.Log.ConsoleDebug("GetDataHandlers / HandlePaintTile rejected throttle/permission/range check {0}", args.Player.Name);
args.Player.SendData(PacketTypes.PaintTile, "", x, y, Main.tile[x, y].color()); args.Player.SendData(PacketTypes.PaintTile, "", x, y, Main.tile[x, y].color());
return true; return true;
} }
@ -2858,6 +2907,7 @@ namespace TShockAPI
if (x < 0 || y < 0 || x >= Main.maxTilesX || y >= Main.maxTilesY || t > Main.numTileColors) if (x < 0 || y < 0 || x >= Main.maxTilesX || y >= Main.maxTilesY || t > Main.numTileColors)
{ {
TShock.Log.ConsoleDebug("GetDataHandlers / HandlePaintWall rejected range check {0}", args.Player.Name);
return true; return true;
} }
if (OnPaintWall(args.Player, args.Data, x, y, t)) if (OnPaintWall(args.Player, args.Data, x, y, t))
@ -2875,6 +2925,7 @@ namespace TShockAPI
!args.Player.Accessories.Any(i => i != null && i.stack > 0 && !args.Player.Accessories.Any(i => i != null && i.stack > 0 &&
(i.type == ItemID.PaintSprayer || i.type == ItemID.ArchitectGizmoPack))) (i.type == ItemID.PaintSprayer || i.type == ItemID.ArchitectGizmoPack)))
{ {
TShock.Log.ConsoleDebug("GetDataHandlers / HandlePaintWall rejected selector consistency {0}", args.Player.Name);
args.Player.SendData(PacketTypes.PaintWall, "", x, y, Main.tile[x, y].wallColor()); args.Player.SendData(PacketTypes.PaintWall, "", x, y, Main.tile[x, y].wallColor());
return true; return true;
} }
@ -2883,6 +2934,7 @@ namespace TShockAPI
!args.Player.HasPaintPermission(x, y) || !args.Player.HasPaintPermission(x, y) ||
!args.Player.IsInRange(x, y)) !args.Player.IsInRange(x, y))
{ {
TShock.Log.ConsoleDebug("GetDataHandlers / HandlePaintWall rejected throttle/permission/range {0}", args.Player.Name);
args.Player.SendData(PacketTypes.PaintWall, "", x, y, Main.tile[x, y].wallColor()); args.Player.SendData(PacketTypes.PaintWall, "", x, y, Main.tile[x, y].wallColor());
return true; return true;
} }
@ -2930,6 +2982,7 @@ namespace TShockAPI
//Rod of Discord teleport (usually (may be used by modded clients to teleport)) //Rod of Discord teleport (usually (may be used by modded clients to teleport))
if (type == 0 && !args.Player.HasPermission(Permissions.rod)) if (type == 0 && !args.Player.HasPermission(Permissions.rod))
{ {
TShock.Log.ConsoleDebug("GetDataHandlers / HandleTeleport rejected rod type {0} {1}", args.Player.Name, type);
args.Player.SendErrorMessage("You do not have permission to teleport."); args.Player.SendErrorMessage("You do not have permission to teleport.");
args.Player.Teleport(args.TPlayer.position.X, args.TPlayer.position.Y); args.Player.Teleport(args.TPlayer.position.X, args.TPlayer.position.Y);
return true; return true;
@ -2938,6 +2991,7 @@ namespace TShockAPI
//NPC teleport //NPC teleport
if (type == 1 && id >= Main.maxNPCs) if (type == 1 && id >= Main.maxNPCs)
{ {
TShock.Log.ConsoleDebug("GetDataHandlers / HandleTeleport rejected npc teleport {0} {1}", args.Player.Name, type);
return true; return true;
} }
@ -2946,11 +3000,13 @@ namespace TShockAPI
{ {
if (id >= Main.maxPlayers || Main.player[id] == null || TShock.Players[id] == null) if (id >= Main.maxPlayers || Main.player[id] == null || TShock.Players[id] == null)
{ {
TShock.Log.ConsoleDebug("GetDataHandlers / HandleTeleport rejected p2p extents {0} {1}", args.Player.Name, type);
return true; return true;
} }
if (!args.Player.HasPermission(Permissions.wormhole)) if (!args.Player.HasPermission(Permissions.wormhole))
{ {
TShock.Log.ConsoleDebug("GetDataHandlers / HandleTeleport rejected p2p wormhole permission {0} {1}", args.Player.Name, type);
args.Player.SendErrorMessage("You do not have permission to teleport."); args.Player.SendErrorMessage("You do not have permission to teleport.");
args.Player.Teleport(args.TPlayer.position.X, args.TPlayer.position.Y); args.Player.Teleport(args.TPlayer.position.X, args.TPlayer.position.Y);
return true; return true;
@ -2978,6 +3034,7 @@ namespace TShockAPI
if (Main.npc[npcID]?.catchItem == 0) if (Main.npc[npcID]?.catchItem == 0)
{ {
TShock.Log.ConsoleDebug("GetDataHandlers / HandleCatchNpc catch zero {0}", args.Player.Name);
Main.npc[npcID].active = true; Main.npc[npcID].active = true;
NetMessage.SendData((int)PacketTypes.NpcUpdate, -1, -1, NetworkText.Empty, npcID); NetMessage.SendData((int)PacketTypes.NpcUpdate, -1, -1, NetworkText.Empty, npcID);
return true; return true;
@ -2996,6 +3053,7 @@ namespace TShockAPI
private static bool HandleNumberOfAnglerQuestsCompleted(GetDataHandlerArgs args) private static bool HandleNumberOfAnglerQuestsCompleted(GetDataHandlerArgs args)
{ {
// Never sent by vanilla client, ignore this // Never sent by vanilla client, ignore this
TShock.Log.ConsoleDebug("GetDataHandlers / HandleNumberOfAnglerQuestsCompleted surprise packet! Someone tell the TShock team! {0}", args.Player.Name);
return true; return true;
} }
@ -3078,16 +3136,19 @@ namespace TShockAPI
if (position.X < 0 || position.X >= Main.maxTilesX || position.Y < 0 || position.Y >= Main.maxTilesY) if (position.X < 0 || position.X >= Main.maxTilesX || position.Y < 0 || position.Y >= Main.maxTilesY)
{ {
TShock.Log.ConsoleDebug("GetDataHandlers / HandleSyncExtraValue rejected extents check {0}", args.Player.Name);
return true; return true;
} }
if (!Main.expertMode) if (!Main.expertMode)
{ {
TShock.Log.ConsoleDebug("GetDataHandlers / HandleSyncExtraValue rejected expert mode check {0}", args.Player.Name);
return true; return true;
} }
if (!args.Player.IsInRange((int)position.X, (int)position.Y)) if (!args.Player.IsInRange((int)position.X, (int)position.Y))
{ {
TShock.Log.ConsoleDebug("GetDataHandlers / HandleSyncExtraValue rejected range check {0}", args.Player.Name);
return true; return true;
} }
@ -3104,6 +3165,7 @@ namespace TShockAPI
{ {
if (projectile.owner != args.TPlayer.whoAmI) if (projectile.owner != args.TPlayer.whoAmI)
{ {
TShock.Log.ConsoleDebug("GetDataHandlers / HandleKillPortal rejected owner mismatch check {0}", args.Player.Name);
return true; return true;
} }
} }
@ -3140,12 +3202,14 @@ namespace TShockAPI
if (projectile == null || !projectile.active) if (projectile == null || !projectile.active)
{ {
TShock.Log.ConsoleDebug("GetDataHandlers / HandleNpcTeleportPortal rejected null check {0}", args.Player.Name);
NetMessage.SendData((int)PacketTypes.NpcUpdate, -1, -1, NetworkText.Empty, npcIndex); NetMessage.SendData((int)PacketTypes.NpcUpdate, -1, -1, NetworkText.Empty, npcIndex);
return true; return true;
} }
if (projectile.type != ProjectileID.PortalGunGate) if (projectile.type != ProjectileID.PortalGunGate)
{ {
TShock.Log.ConsoleDebug("GetDataHandlers / HandleNpcTeleportPortal rejected not thinking with portals {0}", args.Player.Name);
NetMessage.SendData((int)PacketTypes.NpcUpdate, -1, -1, NetworkText.Empty, npcIndex); NetMessage.SendData((int)PacketTypes.NpcUpdate, -1, -1, NetworkText.Empty, npcIndex);
return true; return true;
} }
@ -3185,6 +3249,7 @@ namespace TShockAPI
{ {
if (args.Player != null && !args.Player.HasPermission(Permissions.toggleparty)) if (args.Player != null && !args.Player.HasPermission(Permissions.toggleparty))
{ {
TShock.Log.ConsoleDebug("GetDataHandlers / HandleToggleParty rejected no party {0}", args.Player.Name);
args.Player.SendErrorMessage("You do not have permission to start a party."); args.Player.SendErrorMessage("You do not have permission to start a party.");
return true; return true;
} }
@ -3196,11 +3261,13 @@ namespace TShockAPI
{ {
if (args.Player.IsBouncerThrottled()) if (args.Player.IsBouncerThrottled())
{ {
TShock.Log.ConsoleDebug("GetDataHandlers / HandleOldOnesArmy rejected throttled {0}", args.Player.Name);
return true; return true;
} }
if (!args.Player.HasPermission(Permissions.startdd2)) if (!args.Player.HasPermission(Permissions.startdd2))
{ {
TShock.Log.ConsoleDebug("GetDataHandlers / HandleOldOnesArmy rejected permissions {0}", args.Player.Name);
args.Player.SendErrorMessage("You don't have permission to start the Old One's Army event."); args.Player.SendErrorMessage("You don't have permission to start the Old One's Army event.");
return true; return true;
} }
@ -3227,6 +3294,7 @@ namespace TShockAPI
if (TShock.Players[id].GodMode) if (TShock.Players[id].GodMode)
{ {
TShock.Log.ConsoleDebug("GetDataHandlers / HandlePlayerDamageV2 rejected (god mode on) {0}", args.Player.Name);
TShock.Players[id].Heal(args.TPlayer.statLifeMax); TShock.Players[id].Heal(args.TPlayer.statLifeMax);
} }
@ -3270,10 +3338,14 @@ namespace TShockAPI
if (shouldBan) if (shouldBan)
{ {
if (!args.Player.Ban(banReason, false, "TShock")) if (!args.Player.Ban(banReason, false, "TShock"))
{
TShock.Log.ConsoleDebug("GetDataHandlers / HandlePlayerKillMeV2 kicked with difficulty {0} {1}", args.Player.Name, args.TPlayer.difficulty);
args.Player.Kick("You died! Normally, you'd be banned.", true, true); args.Player.Kick("You died! Normally, you'd be banned.", true, true);
}
} }
else if (shouldKick) else if (shouldKick)
{ {
TShock.Log.ConsoleDebug("GetDataHandlers / HandlePlayerKillMeV2 kicked with difficulty {0} {1}", args.Player.Name, args.TPlayer.difficulty);
args.Player.Kick(kickReason, true, true, null, false); args.Player.Kick(kickReason, true, true, null, false);
} }
} }
@ -3282,6 +3354,7 @@ namespace TShockAPI
{ {
if (TShock.CharacterDB.RemovePlayer(args.Player.Account.ID)) if (TShock.CharacterDB.RemovePlayer(args.Player.Account.ID))
{ {
TShock.Log.ConsoleDebug("GetDataHandlers / HandlePlayerKillMeV2 ssc delete {0} {1}", args.Player.Name, args.TPlayer.difficulty);
args.Player.SendErrorMessage("You have fallen in hardcore mode, and your items have been lost forever."); args.Player.SendErrorMessage("You have fallen in hardcore mode, and your items have been lost forever.");
TShock.CharacterDB.SeedInitialData(args.Player.Account); TShock.CharacterDB.SeedInitialData(args.Player.Account);
} }