diff --git a/TShockAPI/Bouncer.cs b/TShockAPI/Bouncer.cs index 488abe617..a17ceccfc 100644 --- a/TShockAPI/Bouncer.cs +++ b/TShockAPI/Bouncer.cs @@ -582,8 +582,8 @@ internal void OnPlayerUpdate(object sender, GetDataHandlers.PlayerUpdateEventArg return; } - // Corpses don't move - if (args.Player.Dead) + // Corpses don't move, but ghost + if (args.Player.Dead && args.Player.Difficulty != 2) { TShock.Log.ConsoleDebug(GetString("Bouncer / OnPlayerUpdate rejected from (corpses don't move) {0}", args.Player.Name)); args.Handled = true; @@ -2505,7 +2505,7 @@ internal void OnPlaceItemFrame(object sender, GetDataHandlers.PlaceItemFrameEven Main.item[num].playerIndexTheItemIsReservedFor = args.Player.Index; NetMessage.SendData((int)PacketTypes.ItemDrop, args.Player.Index, -1, NetworkText.Empty, num, 1f); NetMessage.SendData((int)PacketTypes.ItemOwner, args.Player.Index, -1, NetworkText.Empty, num); - + TShock.Log.ConsoleDebug(GetString("Bouncer / OnPlaceItemFrame rejected permissions from {0}", args.Player.Name)); NetMessage.SendData((int)PacketTypes.UpdateTileEntity, -1, -1, NetworkText.Empty, args.ItemFrame.ID, 0, 1); args.Handled = true; diff --git a/TShockAPI/TShock.cs b/TShockAPI/TShock.cs index 99153deb8..e491b4cf4 100644 --- a/TShockAPI/TShock.cs +++ b/TShockAPI/TShock.cs @@ -1640,19 +1640,17 @@ private void OnGetData(GetDataEventArgs e) return; } - if ((player.State < (int)ConnectionState.Complete || player.Dead) && (int)type > 12 && (int)type != 16 && (int)type != 42 && (int)type != 50 && - (int)type != 38 && (int)type != 21 && (int)type != 22 && type != PacketTypes.SyncLoadout) + if ((player.State < (int)ConnectionState.Complete) && + type > PacketTypes.PlayerSpawn && type != PacketTypes.PlayerHp && type != PacketTypes.PlayerMana && + type != PacketTypes.PlayerBuff && type != PacketTypes.PasswordSend && type != PacketTypes.ItemDrop && + type != PacketTypes.ItemOwner && type != PacketTypes.SyncLoadout) { e.Handled = true; return; } - int length = e.Length - 1; - if (length < 0) - { - length = 0; - } - using (var data = new MemoryStream(e.Msg.readBuffer, e.Index, e.Length - 1)) + int length = Math.Max(e.Length - 1, 0); + using (var data = new MemoryStream(e.Msg.readBuffer, e.Index, length)) { // Exceptions are already handled e.Handled = GetDataHandlers.HandlerGetData(type, player, data);