Terraria.MessageBuffer.GetData C# (CSharp) Method

GetData() public method

public GetData ( int start, int length, int &messageType ) : void
start int
length int
messageType int
return void
        public void GetData(int start, int length, out int messageType)
        {
            if (this.whoAmI < 256)
                Netplay.Clients[this.whoAmI].TimeOutTimer = 0;
            else
                Netplay.Connection.TimeOutTimer = 0;
            int bufferStart = start + 1;
            byte num1 = this.readBuffer[start];
            messageType = (int)num1;
            if ((int)num1 >= 105)
                return;
            ++Main.rxMsg;
            Main.rxData += length;
            ++Main.rxMsgType[(int)num1];
            Main.rxDataType[(int)num1] += length;
            if (Main.netMode == 1 && Netplay.Connection.StatusMax > 0)
                ++Netplay.Connection.StatusCount;
            if (Main.verboseNetplay)
            {
                int num2 = start;
                while (num2 < start + length)
                    ++num2;
                for (int index = start; index < start + length; ++index)
                {
                    int num3 = (int)this.readBuffer[index];
                }
            }
            if (Main.netMode == 2 && (int)num1 != 38 && Netplay.Clients[this.whoAmI].State == -1)
            {
                NetMessage.SendData(2, this.whoAmI, -1, Lang.mp[1], 0, 0.0f, 0.0f, 0.0f, 0, 0, 0);
            }
            else
            {
                if (Main.netMode == 2 && Netplay.Clients[this.whoAmI].State < 10 && ((int)num1 > 12 && (int)num1 != 93) && ((int)num1 != 16 && (int)num1 != 42 && ((int)num1 != 50 && (int)num1 != 38)) && (int)num1 != 68)
                    NetMessage.BootPlayer(this.whoAmI, Lang.mp[2]);
                if (this.reader == null)
                    this.ResetReader();
                this.reader.BaseStream.Position = (long)bufferStart;
                switch (num1)
                {
                    case (byte)1:
                        if (Main.netMode != 2)
                            break;
                        if (Main.dedServ && Netplay.IsBanned(Netplay.Clients[this.whoAmI].Socket.GetRemoteAddress()))
                        {
                            NetMessage.SendData(2, this.whoAmI, -1, Lang.mp[3], 0, 0.0f, 0.0f, 0.0f, 0, 0, 0);
                            break;
                        }
                        if (Netplay.Clients[this.whoAmI].State != 0)
                            break;
                        if (this.reader.ReadString() == "Terraria" + (object)Main.curRelease)
                        {
                            if (string.IsNullOrEmpty(Netplay.ServerPassword))
                            {
                                Netplay.Clients[this.whoAmI].State = 1;
                                NetMessage.SendData(3, this.whoAmI, -1, "", 0, 0.0f, 0.0f, 0.0f, 0, 0, 0);
                                break;
                            }
                            Netplay.Clients[this.whoAmI].State = -1;
                            NetMessage.SendData(37, this.whoAmI, -1, "", 0, 0.0f, 0.0f, 0.0f, 0, 0, 0);
                            break;
                        }
                        NetMessage.SendData(2, this.whoAmI, -1, Lang.mp[4], 0, 0.0f, 0.0f, 0.0f, 0, 0, 0);
                        break;
                    case (byte)2:
                        if (Main.netMode != 1)
                            break;
                        Netplay.disconnect = true;
                        Main.statusText = this.reader.ReadString();
                        break;
                    case (byte)3:
                        if (Main.netMode != 1)
                            break;
                        if (Netplay.Connection.State == 1)
                            Netplay.Connection.State = 2;
                        int number1 = (int)this.reader.ReadByte();
                        if (number1 != Main.myPlayer)
                        {
                            Main.player[number1] = Main.ActivePlayerFileData.Player;
                            Main.player[Main.myPlayer] = new Player();
                        }
                        Main.player[number1].whoAmI = number1;
                        Main.myPlayer = number1;
                        Player player1 = Main.player[number1];
                        NetMessage.SendData(4, -1, -1, player1.name, number1, 0.0f, 0.0f, 0.0f, 0, 0, 0);
                        NetMessage.SendData(68, -1, -1, "", number1, 0.0f, 0.0f, 0.0f, 0, 0, 0);
                        NetMessage.SendData(16, -1, -1, "", number1, 0.0f, 0.0f, 0.0f, 0, 0, 0);
                        NetMessage.SendData(42, -1, -1, "", number1, 0.0f, 0.0f, 0.0f, 0, 0, 0);
                        NetMessage.SendData(50, -1, -1, "", number1, 0.0f, 0.0f, 0.0f, 0, 0, 0);
                        for (int index = 0; index < 59; ++index)
                            NetMessage.SendData(5, -1, -1, player1.inventory[index].name, number1, (float)index, (float)player1.inventory[index].prefix, 0.0f, 0, 0, 0);
                        for (int index = 0; index < player1.armor.Length; ++index)
                            NetMessage.SendData(5, -1, -1, player1.armor[index].name, number1, (float)(59 + index), (float)player1.armor[index].prefix, 0.0f, 0, 0, 0);
                        for (int index = 0; index < player1.dye.Length; ++index)
                            NetMessage.SendData(5, -1, -1, player1.dye[index].name, number1, (float)(58 + player1.armor.Length + 1 + index), (float)player1.dye[index].prefix, 0.0f, 0, 0, 0);
                        for (int index = 0; index < player1.miscEquips.Length; ++index)
                            NetMessage.SendData(5, -1, -1, "", number1, (float)(58 + player1.armor.Length + player1.dye.Length + 1 + index), (float)player1.miscEquips[index].prefix, 0.0f, 0, 0, 0);
                        for (int index = 0; index < player1.miscDyes.Length; ++index)
                            NetMessage.SendData(5, -1, -1, "", number1, (float)(58 + player1.armor.Length + player1.dye.Length + player1.miscEquips.Length + 1 + index), (float)player1.miscDyes[index].prefix, 0.0f, 0, 0, 0);
                        for (int index = 0; index < player1.bank.item.Length; ++index)
                            NetMessage.SendData(5, -1, -1, "", number1, (float)(58 + player1.armor.Length + player1.dye.Length + player1.miscEquips.Length + player1.miscDyes.Length + 1 + index), (float)player1.bank.item[index].prefix, 0.0f, 0, 0, 0);
                        for (int index = 0; index < player1.bank2.item.Length; ++index)
                            NetMessage.SendData(5, -1, -1, "", number1, (float)(58 + player1.armor.Length + player1.dye.Length + player1.miscEquips.Length + player1.miscDyes.Length + player1.bank.item.Length + 1 + index), (float)player1.bank2.item[index].prefix, 0.0f, 0, 0, 0);
                        NetMessage.SendData(5, -1, -1, "", number1, (float)(58 + player1.armor.Length + player1.dye.Length + player1.miscEquips.Length + player1.miscDyes.Length + player1.bank.item.Length + player1.bank2.item.Length + 1), (float)player1.trashItem.prefix, 0.0f, 0, 0, 0);
                        NetMessage.SendData(6, -1, -1, "", 0, 0.0f, 0.0f, 0.0f, 0, 0, 0);
                        if (Netplay.Connection.State != 2)
                            break;
                        Netplay.Connection.State = 3;
                        break;
                    case (byte)4:
                        int number2 = (int)this.reader.ReadByte();
                        if (Main.netMode == 2)
                            number2 = this.whoAmI;
                        if (number2 == Main.myPlayer && !Main.ServerSideCharacter)
                            break;
                        Player player2 = Main.player[number2];
                        player2.whoAmI = number2;
                        player2.skinVariant = (int)this.reader.ReadByte();
                        player2.skinVariant = (int)MathHelper.Clamp((float)player2.skinVariant, 0.0f, 7f);
                        player2.hair = (int)this.reader.ReadByte();
                        if (player2.hair >= 134)
                            player2.hair = 0;
                        player2.name = this.reader.ReadString().Trim().Trim();
                        player2.hairDye = this.reader.ReadByte();
                        BitsByte bitsByte1 = (BitsByte)this.reader.ReadByte();
                        for (int index = 0; index < 8; ++index)
                            player2.hideVisual[index] = bitsByte1[index];
                        bitsByte1 = (BitsByte)this.reader.ReadByte();
                        for (int index = 0; index < 2; ++index)
                            player2.hideVisual[index + 8] = bitsByte1[index];
                        player2.hideMisc = (BitsByte)this.reader.ReadByte();
                        player2.hairColor = Utils.ReadRGB(this.reader);
                        player2.skinColor = Utils.ReadRGB(this.reader);
                        player2.eyeColor = Utils.ReadRGB(this.reader);
                        player2.shirtColor = Utils.ReadRGB(this.reader);
                        player2.underShirtColor = Utils.ReadRGB(this.reader);
                        player2.pantsColor = Utils.ReadRGB(this.reader);
                        player2.shoeColor = Utils.ReadRGB(this.reader);
                        BitsByte bitsByte2 = (BitsByte)this.reader.ReadByte();
                        player2.difficulty = (byte)0;
                        if (bitsByte2[0])
                            ++player2.difficulty;
                        if (bitsByte2[1])
                            player2.difficulty += (byte)2;
                        if ((int)player2.difficulty > 2)
                            player2.difficulty = (byte)2;
                        player2.extraAccessory = bitsByte2[2];
                        if (Main.netMode != 2)
                            break;
                        bool flag1 = false;
                        if (Netplay.Clients[this.whoAmI].State < 10)
                        {
                            for (int index = 0; index < (int)byte.MaxValue; ++index)
                            {
                                if (index != number2 && player2.name == Main.player[index].name && Netplay.Clients[index].IsActive)
                                    flag1 = true;
                            }
                        }
                        if (flag1)
                        {
                            NetMessage.SendData(2, this.whoAmI, -1, player2.name + " " + Lang.mp[5], 0, 0.0f, 0.0f, 0.0f, 0, 0, 0);
                            break;
                        }
                        if (player2.name.Length > Player.nameLen)
                        {
                            NetMessage.SendData(2, this.whoAmI, -1, "Name is too long.", 0, 0.0f, 0.0f, 0.0f, 0, 0, 0);
                            break;
                        }
                        if (player2.name == "")
                        {
                            NetMessage.SendData(2, this.whoAmI, -1, "Empty name.", 0, 0.0f, 0.0f, 0.0f, 0, 0, 0);
                            break;
                        }
                        Netplay.Clients[this.whoAmI].Name = player2.name;
                        Netplay.Clients[this.whoAmI].Name = player2.name;
                        NetMessage.SendData(4, -1, this.whoAmI, player2.name, number2, 0.0f, 0.0f, 0.0f, 0, 0, 0);
                        break;
                    case (byte)5:
                        int number3 = (int)this.reader.ReadByte();
                        if (Main.netMode == 2)
                            number3 = this.whoAmI;
                        if (number3 == Main.myPlayer && !Main.ServerSideCharacter && !Main.player[number3].IsStackingItems())
                            break;
                        Player player3 = Main.player[number3];
                        lock (player3)
                        {
                            int local_24 = (int)this.reader.ReadByte();
                            int local_25 = (int)this.reader.ReadInt16();
                            int local_26 = (int)this.reader.ReadByte();
                            int local_27 = (int)this.reader.ReadInt16();
                            Item[] local_28 = (Item[])null;
                            int local_29 = 0;
                            bool local_30 = false;
                            if (local_24 > 58 + player3.armor.Length + player3.dye.Length + player3.miscEquips.Length + player3.miscDyes.Length + player3.bank.item.Length + player3.bank2.item.Length)
                                local_30 = true;
                            else if (local_24 > 58 + player3.armor.Length + player3.dye.Length + player3.miscEquips.Length + player3.miscDyes.Length + player3.bank.item.Length)
                            {
                                local_29 = local_24 - 58 - (player3.armor.Length + player3.dye.Length + player3.miscEquips.Length + player3.miscDyes.Length + player3.bank.item.Length) - 1;
                                local_28 = player3.bank2.item;
                            }
                            else if (local_24 > 58 + player3.armor.Length + player3.dye.Length + player3.miscEquips.Length + player3.miscDyes.Length)
                            {
                                local_29 = local_24 - 58 - (player3.armor.Length + player3.dye.Length + player3.miscEquips.Length + player3.miscDyes.Length) - 1;
                                local_28 = player3.bank.item;
                            }
                            else if (local_24 > 58 + player3.armor.Length + player3.dye.Length + player3.miscEquips.Length)
                            {
                                local_29 = local_24 - 58 - (player3.armor.Length + player3.dye.Length + player3.miscEquips.Length) - 1;
                                local_28 = player3.miscDyes;
                            }
                            else if (local_24 > 58 + player3.armor.Length + player3.dye.Length)
                            {
                                local_29 = local_24 - 58 - (player3.armor.Length + player3.dye.Length) - 1;
                                local_28 = player3.miscEquips;
                            }
                            else if (local_24 > 58 + player3.armor.Length)
                            {
                                local_29 = local_24 - 58 - player3.armor.Length - 1;
                                local_28 = player3.dye;
                            }
                            else if (local_24 > 58)
                            {
                                local_29 = local_24 - 58 - 1;
                                local_28 = player3.armor;
                            }
                            else
                            {
                                local_29 = local_24;
                                local_28 = player3.inventory;
                            }
                            if (local_30)
                            {
                                player3.trashItem = new Item();
                                player3.trashItem.netDefaults(local_27);
                                player3.trashItem.stack = local_25;
                                player3.trashItem.Prefix(local_26);
                            }
                            else if (local_24 <= 58)
                            {
                                int local_31 = local_28[local_29].itemId;
                                int local_32 = local_28[local_29].stack;
                                local_28[local_29] = new Item();
                                local_28[local_29].netDefaults(local_27);
                                local_28[local_29].stack = local_25;
                                local_28[local_29].Prefix(local_26);
                                if (number3 == Main.myPlayer && local_29 == 58)
                                    Main.mouseItem = local_28[local_29].Clone();
                                if (number3 == Main.myPlayer && Main.netMode == 1)
                                {
                                    Main.player[number3].inventoryChestStack[local_24] = false;
                                    if (local_28[local_29].stack != local_32 || local_28[local_29].itemId != local_31)
                                        Main.PlaySound(7, -1, -1, 1);
                                }
                            }
                            else
                            {
                                local_28[local_29] = new Item();
                                local_28[local_29].netDefaults(local_27);
                                local_28[local_29].stack = local_25;
                                local_28[local_29].Prefix(local_26);
                            }
                            if (Main.netMode != 2 || number3 != this.whoAmI)
                                break;
                            NetMessage.SendData(5, -1, this.whoAmI, "", number3, (float)local_24, (float)local_26, 0.0f, 0, 0, 0);
                            break;
                        }
                    case (byte)6:
                        if (Main.netMode != 2)
                            break;
                        if (Netplay.Clients[this.whoAmI].State == 1)
                        {
                            Netplay.Clients[this.whoAmI].State = 2;
                            Netplay.Clients[this.whoAmI].ResetSections();
                        }
                        NetMessage.SendData(7, this.whoAmI, -1, "", 0, 0.0f, 0.0f, 0.0f, 0, 0, 0);
                        Main.SyncAnInvasion(this.whoAmI);
                        break;
                    case (byte)7:
                        if (Main.netMode != 1)
                            break;
                        Main.time = (double)this.reader.ReadInt32();
                        BitsByte bitsByte3 = (BitsByte)this.reader.ReadByte();
                        Main.dayTime = bitsByte3[0];
                        Main.bloodMoon = bitsByte3[1];
                        Main.eclipse = bitsByte3[2];
                        Main.moonPhase = (int)this.reader.ReadByte();
                        Main.maxTilesX = (int)this.reader.ReadInt16();
                        Main.maxTilesY = (int)this.reader.ReadInt16();
                        Main.spawnTileX = (int)this.reader.ReadInt16();
                        Main.spawnTileY = (int)this.reader.ReadInt16();
                        Main.worldSurface = (double)this.reader.ReadInt16();
                        Main.rockLayer = (double)this.reader.ReadInt16();
                        Main.worldID = this.reader.ReadInt32();
                        Main.worldName = this.reader.ReadString();
                        Main.moonType = (int)this.reader.ReadByte();
                        WorldGen.setBG(0, (int)this.reader.ReadByte());
                        WorldGen.setBG(1, (int)this.reader.ReadByte());
                        WorldGen.setBG(2, (int)this.reader.ReadByte());
                        WorldGen.setBG(3, (int)this.reader.ReadByte());
                        WorldGen.setBG(4, (int)this.reader.ReadByte());
                        WorldGen.setBG(5, (int)this.reader.ReadByte());
                        WorldGen.setBG(6, (int)this.reader.ReadByte());
                        WorldGen.setBG(7, (int)this.reader.ReadByte());
                        Main.iceBackStyle = (int)this.reader.ReadByte();
                        Main.jungleBackStyle = (int)this.reader.ReadByte();
                        Main.hellBackStyle = (int)this.reader.ReadByte();
                        Main.windSpeedSet = this.reader.ReadSingle();
                        Main.numClouds = (int)this.reader.ReadByte();
                        for (int index = 0; index < 3; ++index)
                            Main.treeX[index] = this.reader.ReadInt32();
                        for (int index = 0; index < 4; ++index)
                            Main.treeStyle[index] = (int)this.reader.ReadByte();
                        for (int index = 0; index < 3; ++index)
                            Main.caveBackX[index] = this.reader.ReadInt32();
                        for (int index = 0; index < 4; ++index)
                            Main.caveBackStyle[index] = (int)this.reader.ReadByte();
                        Main.maxRaining = this.reader.ReadSingle();
                        Main.raining = (double)Main.maxRaining > 0.0;
                        BitsByte bitsByte4 = (BitsByte)this.reader.ReadByte();
                        WorldGen.shadowOrbSmashed = bitsByte4[0];
                        NPC.downedBoss1 = bitsByte4[1];
                        NPC.downedBoss2 = bitsByte4[2];
                        NPC.downedBoss3 = bitsByte4[3];
                        Main.hardMode = bitsByte4[4];
                        NPC.downedClown = bitsByte4[5];
                        Main.ServerSideCharacter = bitsByte4[6];
                        NPC.downedPlantBoss = bitsByte4[7];
                        BitsByte bitsByte5 = (BitsByte)this.reader.ReadByte();
                        NPC.downedMechBoss1 = bitsByte5[0];
                        NPC.downedMechBoss2 = bitsByte5[1];
                        NPC.downedMechBoss3 = bitsByte5[2];
                        NPC.downedMechBossAny = bitsByte5[3];
                        Main.cloudBGActive = bitsByte5[4] ? 1f : 0.0f;
                        WorldGen.crimson = bitsByte5[5];
                        Main.pumpkinMoon = bitsByte5[6];
                        Main.snowMoon = bitsByte5[7];
                        BitsByte bitsByte6 = (BitsByte)this.reader.ReadByte();
                        Main.expertMode = bitsByte6[0];
                        Main.fastForwardTime = bitsByte6[1];
                        Main.UpdateSundial();
                        bool flag2 = bitsByte6[2];
                        NPC.downedSlimeKing = bitsByte6[3];
                        NPC.downedQueenBee = bitsByte6[4];
                        NPC.downedFishron = bitsByte6[5];
                        NPC.downedMartians = bitsByte6[6];
                        NPC.downedAncientCultist = bitsByte6[7];
                        BitsByte bitsByte7 = (BitsByte)this.reader.ReadByte();
                        NPC.downedMoonlord = bitsByte7[0];
                        NPC.downedHalloweenKing = bitsByte7[1];
                        NPC.downedHalloweenTree = bitsByte7[2];
                        NPC.downedChristmasIceQueen = bitsByte7[3];
                        NPC.downedChristmasSantank = bitsByte7[4];
                        NPC.downedChristmasTree = bitsByte7[5];
                        if (flag2)
                            Main.StartSlimeRain(true);
                        else
                            Main.StopSlimeRain(true);
                        Main.invasionType = (int)this.reader.ReadSByte();
                        Main.LobbyId = this.reader.ReadUInt64();
                        if (Netplay.Connection.State != 3)
                            break;
                        Netplay.Connection.State = 4;
                        break;
                    case (byte)8:
                        if (Main.netMode != 2)
                            break;
                        int num2 = this.reader.ReadInt32();
                        int y1 = this.reader.ReadInt32();
                        bool flag3 = true;
                        if (num2 == -1 || y1 == -1)
                            flag3 = false;
                        else if (num2 < 10 || num2 > Main.maxTilesX - 10)
                            flag3 = false;
                        else if (y1 < 10 || y1 > Main.maxTilesY - 10)
                            flag3 = false;
                        int number4 = Netplay.GetSectionX(Main.spawnTileX) - 2;
                        int num3 = Netplay.GetSectionY(Main.spawnTileY) - 1;
                        int num4 = number4 + 5;
                        int num5 = num3 + 3;
                        if (number4 < 0)
                            number4 = 0;
                        if (num4 >= Main.maxSectionsX)
                            num4 = Main.maxSectionsX - 1;
                        if (num3 < 0)
                            num3 = 0;
                        if (num5 >= Main.maxSectionsY)
                            num5 = Main.maxSectionsY - 1;
                        int num6 = (num4 - number4) * (num5 - num3);
                        List<Point> dontInclude = new List<Point>();
                        for (int x = number4; x < num4; ++x)
                        {
                            for (int y2 = num3; y2 < num5; ++y2)
                                dontInclude.Add(new Point(x, y2));
                        }
                        int num7 = -1;
                        int num8 = -1;
                        if (flag3)
                        {
                            num2 = Netplay.GetSectionX(num2) - 2;
                            y1 = Netplay.GetSectionY(y1) - 1;
                            num7 = num2 + 5;
                            num8 = y1 + 3;
                            if (num2 < 0)
                                num2 = 0;
                            if (num7 >= Main.maxSectionsX)
                                num7 = Main.maxSectionsX - 1;
                            if (y1 < 0)
                                y1 = 0;
                            if (num8 >= Main.maxSectionsY)
                                num8 = Main.maxSectionsY - 1;
                            for (int x = num2; x < num7; ++x)
                            {
                                for (int y2 = y1; y2 < num8; ++y2)
                                {
                                    if (x < number4 || x >= num4 || (y2 < num3 || y2 >= num5))
                                    {
                                        dontInclude.Add(new Point(x, y2));
                                        ++num6;
                                    }
                                }
                            }
                        }
                        int num9 = 1;
                        List<Point> portals;
                        List<Point> portalCenters;
                        PortalHelper.SyncPortalsOnPlayerJoin(this.whoAmI, 1, dontInclude, out portals, out portalCenters);
                        int number5 = num6 + portals.Count;
                        if (Netplay.Clients[this.whoAmI].State == 2)
                            Netplay.Clients[this.whoAmI].State = 3;
                        NetMessage.SendData(9, this.whoAmI, -1, Lang.inter[44], number5, 0.0f, 0.0f, 0.0f, 0, 0, 0);
                        Netplay.Clients[this.whoAmI].StatusText2 = "is receiving tile data";
                        Netplay.Clients[this.whoAmI].StatusMax += number5;
                        for (int sectionX = number4; sectionX < num4; ++sectionX)
                        {
                            for (int sectionY = num3; sectionY < num5; ++sectionY)
                                NetMessage.SendSection(this.whoAmI, sectionX, sectionY, false);
                        }
                        NetMessage.SendData(11, this.whoAmI, -1, "", number4, (float)num3, (float)(num4 - 1), (float)(num5 - 1), 0, 0, 0);
                        if (flag3)
                        {
                            for (int sectionX = num2; sectionX < num7; ++sectionX)
                            {
                                for (int sectionY = y1; sectionY < num8; ++sectionY)
                                    NetMessage.SendSection(this.whoAmI, sectionX, sectionY, true);
                            }
                            NetMessage.SendData(11, this.whoAmI, -1, "", num2, (float)y1, (float)(num7 - 1), (float)(num8 - 1), 0, 0, 0);
                        }
                        for (int index = 0; index < portals.Count; ++index)
                            NetMessage.SendSection(this.whoAmI, portals[index].X, portals[index].Y, true);
                        for (int index = 0; index < portalCenters.Count; ++index)
                            NetMessage.SendData(11, this.whoAmI, -1, "", portalCenters[index].X - num9, (float)(portalCenters[index].Y - num9), (float)(portalCenters[index].X + num9 + 1), (float)(portalCenters[index].Y + num9 + 1), 0, 0, 0);
                        for (int number6 = 0; number6 < 400; ++number6)
                        {
                            if (Main.item[number6].active)
                            {
                                NetMessage.SendData(21, this.whoAmI, -1, "", number6, 0.0f, 0.0f, 0.0f, 0, 0, 0);
                                NetMessage.SendData(22, this.whoAmI, -1, "", number6, 0.0f, 0.0f, 0.0f, 0, 0, 0);
                            }
                        }
                        for (int number6 = 0; number6 < 200; ++number6)
                        {
                            if (Main.npc[number6].active)
                                NetMessage.SendData(23, this.whoAmI, -1, "", number6, 0.0f, 0.0f, 0.0f, 0, 0, 0);
                        }
                        for (int number6 = 0; number6 < 1000; ++number6)
                        {
                            if (Main.projectile[number6].active && (Main.projPet[Main.projectile[number6].type] || Main.projectile[number6].netImportant))
                                NetMessage.SendData(27, this.whoAmI, -1, "", number6, 0.0f, 0.0f, 0.0f, 0, 0, 0);
                        }
                        for (int number6 = 0; number6 < 251; ++number6)
                            NetMessage.SendData(83, this.whoAmI, -1, "", number6, 0.0f, 0.0f, 0.0f, 0, 0, 0);
                        NetMessage.SendData(49, this.whoAmI, -1, "", 0, 0.0f, 0.0f, 0.0f, 0, 0, 0);
                        NetMessage.SendData(57, this.whoAmI, -1, "", 0, 0.0f, 0.0f, 0.0f, 0, 0, 0);
                        NetMessage.SendData(7, this.whoAmI, -1, "", 0, 0.0f, 0.0f, 0.0f, 0, 0, 0);
                        NetMessage.SendData(103, -1, -1, "", NPC.MoonLordCountdown, 0.0f, 0.0f, 0.0f, 0, 0, 0);
                        NetMessage.SendData(101, this.whoAmI, -1, "", 0, 0.0f, 0.0f, 0.0f, 0, 0, 0);
                        break;
                    case (byte)9:
                        if (Main.netMode != 1)
                            break;
                        Netplay.Connection.StatusMax += this.reader.ReadInt32();
                        Netplay.Connection.StatusText = this.reader.ReadString();
                        break;
                    case (byte)10:
                        if (Main.netMode != 1)
                            break;
                        NetMessage.DecompressTileBlock(this.readBuffer, bufferStart, length);
                        break;
                    case (byte)11:
                        if (Main.netMode != 1)
                            break;
                        WorldGen.SectionTileFrame((int)this.reader.ReadInt16(), (int)this.reader.ReadInt16(), (int)this.reader.ReadInt16(), (int)this.reader.ReadInt16());
                        break;
                    case (byte)12:
                        int index1 = (int)this.reader.ReadByte();
                        if (Main.netMode == 2)
                            index1 = this.whoAmI;
                        Player player4 = Main.player[index1];
                        player4.SpawnX = (int)this.reader.ReadInt16();
                        player4.SpawnY = (int)this.reader.ReadInt16();
                        player4.Spawn();
                        if (index1 == Main.myPlayer && Main.netMode != 2)
                        {
                            Main.ActivePlayerFileData.StartPlayTimer();
                            Player.EnterWorld(Main.player[Main.myPlayer]);
                        }
                        if (Main.netMode != 2 || Netplay.Clients[this.whoAmI].State < 3)
                            break;
                        if (Netplay.Clients[this.whoAmI].State == 3)
                        {
                            Netplay.Clients[this.whoAmI].State = 10;
                            NetMessage.greetPlayer(this.whoAmI);
                            NetMessage.buffer[this.whoAmI].broadcast = true;
                            NetMessage.syncPlayers();
                            NetMessage.SendData(12, -1, this.whoAmI, "", this.whoAmI, 0.0f, 0.0f, 0.0f, 0, 0, 0);
                            NetMessage.SendData(74, this.whoAmI, -1, Main.player[this.whoAmI].name, Main.anglerQuest, 0.0f, 0.0f, 0.0f, 0, 0, 0);
                            break;
                        }
                        NetMessage.SendData(12, -1, this.whoAmI, "", this.whoAmI, 0.0f, 0.0f, 0.0f, 0, 0, 0);
                        break;
                    case (byte)13:
                        int number7 = (int)this.reader.ReadByte();
                        if (number7 == Main.myPlayer && !Main.ServerSideCharacter)
                            break;
                        if (Main.netMode == 2)
                            number7 = this.whoAmI;
                        Player player5 = Main.player[number7];
                        BitsByte bitsByte8 = (BitsByte)this.reader.ReadByte();
                        player5.controlUp = bitsByte8[0];
                        player5.controlDown = bitsByte8[1];
                        player5.controlLeft = bitsByte8[2];
                        player5.controlRight = bitsByte8[3];
                        player5.controlJump = bitsByte8[4];
                        player5.controlUseItem = bitsByte8[5];
                        player5.direction = bitsByte8[6] ? 1 : -1;
                        BitsByte bitsByte9 = (BitsByte)this.reader.ReadByte();
                        if (bitsByte9[0])
                        {
                            player5.pulley = true;
                            player5.pulleyDir = bitsByte9[1] ? (byte)2 : (byte)1;
                        }
                        else
                            player5.pulley = false;
                        player5.selectedItem = (int)this.reader.ReadByte();
                        player5.position = Utils.ReadVector2(this.reader);
                        if (bitsByte9[2])
                            player5.velocity = Utils.ReadVector2(this.reader);
                        player5.vortexStealthActive = bitsByte9[3];
                        player5.gravDir = bitsByte9[4] ? 1f : -1f;
                        if (Main.netMode != 2 || Netplay.Clients[this.whoAmI].State != 10)
                            break;
                        NetMessage.SendData(13, -1, this.whoAmI, "", number7, 0.0f, 0.0f, 0.0f, 0, 0, 0);
                        break;
                    case (byte)14:
                        if (Main.netMode != 1)
                            break;
                        int index2 = (int)this.reader.ReadByte();
                        if ((int)this.reader.ReadByte() == 1)
                        {
                            if (!Main.player[index2].active)
                                Main.player[index2] = new Player();
                            Main.player[index2].active = true;
                            break;
                        }
                        Main.player[index2].active = false;
                        break;
                    case (byte)16:
                        int number8 = (int)this.reader.ReadByte();
                        if (number8 == Main.myPlayer && !Main.ServerSideCharacter)
                            break;
                        if (Main.netMode == 2)
                            number8 = this.whoAmI;
                        Player player6 = Main.player[number8];
                        player6.statLife = (int)this.reader.ReadInt16();
                        player6.statLifeMax = (int)this.reader.ReadInt16();
                        if (player6.statLifeMax < 100)
                            player6.statLifeMax = 100;
                        player6.dead = player6.statLife <= 0;
                        if (Main.netMode != 2)
                            break;
                        NetMessage.SendData(16, -1, this.whoAmI, "", number8, 0.0f, 0.0f, 0.0f, 0, 0, 0);
                        break;
                    case (byte)17:
                        byte num10 = this.reader.ReadByte();
                        int index3 = (int)this.reader.ReadInt16();
                        int index4 = (int)this.reader.ReadInt16();
                        short num11 = this.reader.ReadInt16();
                        int num12 = (int)this.reader.ReadByte();
                        bool fail = (int)num11 == 1;
                        if (!WorldGen.InWorld(index3, index4, 3))
                            break;
                        if (Main.tile[index3, index4] == null)
                            Main.tile[index3, index4] = new Tile();
                        if (Main.netMode == 2)
                        {
                            if (!fail)
                            {
                                if ((int)num10 == 0 || (int)num10 == 2 || (int)num10 == 4)
                                    ++Netplay.Clients[this.whoAmI].SpamDeleteBlock;
                                if ((int)num10 == 1 || (int)num10 == 3)
                                    ++Netplay.Clients[this.whoAmI].SpamAddBlock;
                            }
                            if (!Netplay.Clients[this.whoAmI].TileSections[Netplay.GetSectionX(index3), Netplay.GetSectionY(index4)])
                                fail = true;
                        }
                        if ((int)num10 == 0)
                            WorldGen.KillTile(index3, index4, fail, false, false);
                        if ((int)num10 == 1)
                            WorldGen.PlaceTile(index3, index4, (int)num11, false, true, -1, num12);
                        if ((int)num10 == 2)
                            WorldGen.KillWall(index3, index4, fail);
                        if ((int)num10 == 3)
                            WorldGen.PlaceWall(index3, index4, (int)num11, false);
                        if ((int)num10 == 4)
                            WorldGen.KillTile(index3, index4, fail, false, true);
                        if (num10 == 5 || num10 == 8 || num10 == 10 || num10 == 12)
                            WorldGen.PlaceWire(index3, index4, Tile.k_HACK_GetNetworkWireType(num10));
                        if (num10 == 6 || num10 == 9 || num10 == 11 || num10 == 13)
                            WorldGen.KillWire(index3, index4, Tile.k_HACK_GetNetworkWireType(num10));
                        if ((int)num10 == 7)
                            WorldGen.PoundTile(index3, index4);
                        if ((int)num10 == 14)
                            WorldGen.SlopeTile(index3, index4, (int)num11);
                        if ((int)num10 == 15)
                            Minecart.FrameTrack(index3, index4, true, false);
                        if (Main.netMode != 2)
                            break;
                        NetMessage.SendData(17, -1, this.whoAmI, "", (int)num10, (float)index3, (float)index4, (float)num11, num12, 0, 0);
                        if ((int)num10 != 1 || (int)num11 != 53)
                            break;
                        NetMessage.SendTileSquare(-1, index3, index4, 1);
                        break;
                    case (byte)18:
                        if (Main.netMode != 1)
                            break;
                        Main.dayTime = (int)this.reader.ReadByte() == 1;
                        Main.time = (double)this.reader.ReadInt32();
                        Main.sunModY = this.reader.ReadInt16();
                        Main.moonModY = this.reader.ReadInt16();
                        break;
                    case (byte)19:
                        byte num13 = this.reader.ReadByte();
                        int num14 = (int)this.reader.ReadInt16();
                        int num15 = (int)this.reader.ReadInt16();
                        if (!WorldGen.InWorld(num14, num15, 3))
                            break;
                        int direction1 = (int)this.reader.ReadByte() == 0 ? -1 : 1;
                        if ((int)num13 == 0)
                            WorldGen.OpenDoor(num14, num15, direction1);
                        else if ((int)num13 == 1)
                            WorldGen.CloseDoor(num14, num15, true);
                        else if ((int)num13 == 2)
                            WorldGen.ShiftTrapdoor(num14, num15, direction1 == 1, 1);
                        else if ((int)num13 == 3)
                            WorldGen.ShiftTrapdoor(num14, num15, direction1 == 1, 0);
                        else if ((int)num13 == 4)
                            WorldGen.ShiftTallGate(num14, num15, false);
                        else if ((int)num13 == 5)
                            WorldGen.ShiftTallGate(num14, num15, true);
                        if (Main.netMode != 2)
                            break;
                        NetMessage.SendData(19, -1, this.whoAmI, "", (int)num13, (float)num14, (float)num15, direction1 == 1 ? 1f : 0.0f, 0, 0, 0);
                        break;
                    case (byte)20:
                        short num16 = this.reader.ReadInt16();
                        int num17 = (int)this.reader.ReadInt16();
                        int num18 = (int)this.reader.ReadInt16();
                        if (!WorldGen.InWorld(num17, num18, 3))
                            break;
                        BitsByte bitsByte10 = (BitsByte)(byte)0;
                        BitsByte bitsByte11 = (BitsByte)(byte)0;
                        for (int index5 = num17; index5 < num17 + (int)num16; ++index5)
                        {
                            for (int index6 = num18; index6 < num18 + (int)num16; ++index6)
                            {
                                if (Main.tile[index5, index6] == null)
                                    Main.tile[index5, index6] = new Tile();
                                Tile tile = Main.tile[index5, index6];
                                bool flag4 = tile.active();
                                BitsByte bitsByte12 = (BitsByte)this.reader.ReadByte();
                                BitsByte bitsByte13 = (BitsByte)this.reader.ReadByte();
                                tile.active(bitsByte12[0]);
                                tile.wall = bitsByte12[2] ? (byte)1 : (byte)0;
                                bool flag5 = bitsByte12[3];
                                if (Main.netMode != 2)
                                    tile.liquid = flag5 ? (byte)1 : (byte)0;
								tile.k_SetWireFlags(k_WireFlags.WIRE_RED, bitsByte12[4]);
                                tile.halfBrick(bitsByte12[5]);
								tile.k_SetWireFlags(k_WireFlags.WIRE_ACTUATOR, bitsByte12[6]);
								tile.inActive(bitsByte12[7]);
								tile.k_SetWireFlags(k_WireFlags.WIRE_GREEN, bitsByte13[0]);
								tile.k_SetWireFlags(k_WireFlags.WIRE_BLUE, bitsByte13[1]);
                                if (bitsByte13[2])
                                    tile.color(this.reader.ReadByte());
                                if (bitsByte13[3])
                                    tile.wallColor(this.reader.ReadByte());
                                if (tile.active())
                                {
                                    int num19 = (int)tile.type;
                                    tile.type = this.reader.ReadUInt16();
                                    if (Main.tileFrameImportant[(int)tile.type])
                                    {
                                        tile.frameX = this.reader.ReadInt16();
                                        tile.frameY = this.reader.ReadInt16();
                                    }
                                    else if (!flag4 || (int)tile.type != num19)
                                    {
                                        tile.frameX = (short)-1;
                                        tile.frameY = (short)-1;
                                    }
                                    byte slope = (byte)0;
                                    if (bitsByte13[4])
                                        ++slope;
                                    if (bitsByte13[5])
                                        slope += (byte)2;
                                    if (bitsByte13[6])
                                        slope += (byte)4;
                                    tile.slope(slope);
                                }
                                if ((int)tile.wall > 0)
                                    tile.wall = this.reader.ReadByte();
                                if (flag5)
                                {
                                    tile.liquid = this.reader.ReadByte();
                                    tile.liquidType((int)this.reader.ReadByte());
                                }
                            }
                        }
                        WorldGen.RangeFrame(num17, num18, num17 + (int)num16, num18 + (int)num16);
                        if (Main.netMode != 2)
                            break;
                        NetMessage.SendData((int)num1, -1, this.whoAmI, "", (int)num16, (float)num17, (float)num18, 0.0f, 0, 0, 0);
                        break;
                    case (byte)21:
                    case (byte)90:
                        int index7 = (int)this.reader.ReadInt16();
                        Vector2 vector2_1 = Utils.ReadVector2(this.reader);
                        Vector2 vector2_2 = Utils.ReadVector2(this.reader);
                        int Stack = (int)this.reader.ReadInt16();
                        int pre1 = (int)this.reader.ReadByte();
                        int num20 = (int)this.reader.ReadByte();
                        int type1 = (int)this.reader.ReadInt16();
                        if (Main.netMode == 1)
                        {
                            if (type1 == 0)
                            {
                                Main.item[index7].active = false;
                                break;
                            }
                            Item obj = Main.item[index7];
                            bool flag4 = (obj.newAndShiny || obj.netID != type1) && ItemSlot.Options.HighlightNewItems;
                            obj.netDefaults(type1);
                            obj.newAndShiny = flag4;
                            obj.Prefix(pre1);
                            obj.stack = Stack;
                            obj.position = vector2_1;
                            obj.velocity = vector2_2;
                            obj.active = true;
                            if ((int)num1 == 90)
                            {
                                obj.instanced = true;
                                obj.owner = Main.myPlayer;
                                obj.keepTime = 600;
                            }
                            obj.wet = Collision.WetCollision(obj.position, obj.width, obj.height);
                            break;
                        }
                        if (Main.itemLockoutTime[index7] > 0)
                            break;
                        if (type1 == 0)
                        {
                            if (index7 >= 400)
                                break;
                            Main.item[index7].active = false;
                            NetMessage.SendData(21, -1, -1, "", index7, 0.0f, 0.0f, 0.0f, 0, 0, 0);
                            break;
                        }
                        bool flag6 = false;
                        if (index7 == 400)
                            flag6 = true;
                        if (flag6)
                        {
                            Item obj = new Item();
                            obj.netDefaults(type1);
                            index7 = Item.NewItem((int)vector2_1.X, (int)vector2_1.Y, obj.width, obj.height, obj.itemId, Stack, true, 0, false);
                        }
                        Item obj1 = Main.item[index7];
                        obj1.netDefaults(type1);
                        obj1.Prefix(pre1);
                        obj1.stack = Stack;
                        obj1.position = vector2_1;
                        obj1.velocity = vector2_2;
                        obj1.active = true;
                        obj1.owner = Main.myPlayer;
                        if (flag6)
                        {
                            NetMessage.SendData(21, -1, -1, "", index7, 0.0f, 0.0f, 0.0f, 0, 0, 0);
                            if (num20 == 0)
                            {
                                Main.item[index7].ownIgnore = this.whoAmI;
                                Main.item[index7].ownTime = 100;
                            }
                            Main.item[index7].FindOwner(index7);
                            break;
                        }
                        NetMessage.SendData(21, -1, this.whoAmI, "", index7, 0.0f, 0.0f, 0.0f, 0, 0, 0);
                        break;
                    case (byte)22:
                        int number9 = (int)this.reader.ReadInt16();
                        int num21 = (int)this.reader.ReadByte();
                        if (Main.netMode == 2 && Main.item[number9].owner != this.whoAmI)
                            break;
                        Main.item[number9].owner = num21;
                        Main.item[number9].keepTime = num21 != Main.myPlayer ? 0 : 15;
                        if (Main.netMode != 2)
                            break;
                        Main.item[number9].owner = (int)byte.MaxValue;
                        Main.item[number9].keepTime = 15;
                        NetMessage.SendData(22, -1, -1, "", number9, 0.0f, 0.0f, 0.0f, 0, 0, 0);
                        break;
                    case (byte)23:
                        if (Main.netMode != 1)
                            break;
                        int index8 = (int)this.reader.ReadInt16();
                        Vector2 vector2_3 = Utils.ReadVector2(this.reader);
                        Vector2 vector2_4 = Utils.ReadVector2(this.reader);
                        int num22 = (int)this.reader.ReadByte();
                        BitsByte bitsByte14 = (BitsByte)this.reader.ReadByte();
                        float[] numArray1 = new float[NPC.maxAI];
                        for (int index5 = 0; index5 < NPC.maxAI; ++index5)
                            numArray1[index5] = !bitsByte14[index5 + 2] ? 0.0f : this.reader.ReadSingle();
                        int type2 = (int)this.reader.ReadInt16();
                        int num23 = 0;
                        if (!bitsByte14[7])
                        {
                            switch (this.reader.ReadByte())
                            {
                                case (byte)2:
                                    num23 = (int)this.reader.ReadInt16();
                                    break;
                                case (byte)4:
                                    num23 = this.reader.ReadInt32();
                                    break;
                                default:
                                    num23 = (int)this.reader.ReadSByte();
                                    break;
                            }
                        }
                        int oldType = -1;
                        NPC npc1 = Main.npc[index8];
                        if (!npc1.active || npc1.netID != type2)
                        {
                            if (npc1.active)
                                oldType = npc1.type;
                            npc1.active = true;
                            npc1.netDefaults(type2);
                        }
                        npc1.position = vector2_3;
                        npc1.velocity = vector2_4;
                        npc1.target = num22;
                        npc1.direction = bitsByte14[0] ? 1 : -1;
                        npc1.directionY = bitsByte14[1] ? 1 : -1;
                        npc1.spriteDirection = bitsByte14[6] ? 1 : -1;
                        if (bitsByte14[7])
                            num23 = npc1.life = npc1.lifeMax;
                        else
                            npc1.life = num23;
                        if (num23 <= 0)
                            npc1.active = false;
                        for (int index5 = 0; index5 < NPC.maxAI; ++index5)
                            npc1.ai[index5] = numArray1[index5];
                        if (oldType > -1 && oldType != npc1.type)
                            npc1.TransformVisuals(oldType, npc1.type);
                        if (type2 == 262)
                            NPC.plantBoss = index8;
                        if (type2 == 245)
                            NPC.golemBoss = index8;
                        if (!Main.npcCatchable[npc1.type])
                            break;
                        npc1.releaseOwner = (short)this.reader.ReadByte();
                        break;
                    case (byte)24:
                        int number10 = (int)this.reader.ReadInt16();
                        int index9 = (int)this.reader.ReadByte();
                        if (Main.netMode == 2)
                            index9 = this.whoAmI;
                        Player player7 = Main.player[index9];
                        Main.npc[number10].StrikeNPC(player7.inventory[player7.selectedItem].damage, player7.inventory[player7.selectedItem].knockBack, player7.direction, false, false, false);
                        if (Main.netMode != 2)
                            break;
                        NetMessage.SendData(24, -1, this.whoAmI, "", number10, (float)index9, 0.0f, 0.0f, 0, 0, 0);
                        NetMessage.SendData(23, -1, -1, "", number10, 0.0f, 0.0f, 0.0f, 0, 0, 0);
                        break;
                    case (byte)25:
                        int number11 = (int)this.reader.ReadByte();
                        if (Main.netMode == 2)
                            number11 = this.whoAmI;
                        Color color1 = Utils.ReadRGB(this.reader);
                        if (Main.netMode == 2)
                            color1 = new Color((int)byte.MaxValue, (int)byte.MaxValue, (int)byte.MaxValue);
                        string str1 = this.reader.ReadString();
                        if (Main.netMode == 1)
                        {
                            string newText = str1;
                            if (number11 < (int)byte.MaxValue)
                            {
                                newText = NameTagHandler.GenerateTag(Main.player[number11].name) + " " + str1;
                                Main.player[number11].chatOverhead.NewMessage(str1, Main.chatLength / 2);
                            }
                            Main.NewText(newText, color1.R, color1.G, color1.B, false);
                            break;
                        }
                        if (Main.netMode != 2)
                            break;
                        string str2 = str1.ToLower();
                        if (str2 == Lang.mp[6] || str2 == Lang.mp[21])
                        {
                            string str3 = "";
                            for (int index5 = 0; index5 < (int)byte.MaxValue; ++index5)
                            {
                                if (Main.player[index5].active)
                                    str3 = !(str3 == "") ? str3 + ", " + Main.player[index5].name : Main.player[index5].name;
                            }
                            NetMessage.SendData(25, this.whoAmI, -1, Lang.mp[7] + " " + str3 + ".", (int)byte.MaxValue, (float)byte.MaxValue, 240f, 20f, 0, 0, 0);
                            break;
                        }
                        if (str2.StartsWith("/me "))
                        {
                            NetMessage.SendData(25, -1, -1, "*" + Main.player[this.whoAmI].name + " " + str1.Substring(4), (int)byte.MaxValue, 200f, 100f, 0.0f, 0, 0, 0);
                            break;
                        }
                        if (str2 == Lang.mp[8])
                        {
                            NetMessage.SendData(25, -1, -1, "*" + (object)Main.player[this.whoAmI].name + " " + Lang.mp[9] + " " + (string)(object)Main.rand.Next(1, 101), (int)byte.MaxValue, (float)byte.MaxValue, 240f, 20f, 0, 0, 0);
                            break;
                        }
                        if (str2.StartsWith("/p "))
                        {
                            int index5 = Main.player[this.whoAmI].team;
                            Color color2 = Main.teamColor[index5];
                            if (index5 != 0)
                            {
                                for (int remoteClient = 0; remoteClient < (int)byte.MaxValue; ++remoteClient)
                                {
                                    if (Main.player[remoteClient].team == index5)
                                        NetMessage.SendData(25, remoteClient, -1, str1.Substring(3), number11, (float)color2.R, (float)color2.G, (float)color2.B, 0, 0, 0);
                                }
                                break;
                            }
                            NetMessage.SendData(25, this.whoAmI, -1, Lang.mp[10], (int)byte.MaxValue, (float)byte.MaxValue, 240f, 20f, 0, 0, 0);
                            break;
                        }
                        if ((int)Main.player[this.whoAmI].difficulty == 2)
                            color1 = Main.hcColor;
                        else if ((int)Main.player[this.whoAmI].difficulty == 1)
                            color1 = Main.mcColor;
                        NetMessage.SendData(25, -1, -1, str1, number11, (float)color1.R, (float)color1.G, (float)color1.B, 0, 0, 0);
                        if (!Main.dedServ)
                            break;
                        Console.WriteLine("<" + Main.player[this.whoAmI].name + "> " + str1);
                        break;
                    case (byte)26:
                        int number12 = (int)this.reader.ReadByte();
                        if (Main.netMode == 2 && this.whoAmI != number12 && (!Main.player[number12].hostile || !Main.player[this.whoAmI].hostile))
                            break;
                        int hitDirection1 = (int)this.reader.ReadByte() - 1;
                        int Damage1 = (int)this.reader.ReadInt16();
                        string str4 = this.reader.ReadString();
                        BitsByte bitsByte15 = (BitsByte)this.reader.ReadByte();
                        bool pvp = bitsByte15[0];
                        bool Crit = bitsByte15[1];
                        Main.player[number12].Hurt(Damage1, hitDirection1, pvp, true, str4, Crit);
                        if (Main.netMode != 2)
                            break;
                        NetMessage.SendData(26, -1, this.whoAmI, str4, number12, (float)hitDirection1, (float)Damage1, pvp ? 1f : 0.0f, Crit ? 1 : 0, 0, 0);
                        break;
                    case (byte)27:
                        int num24 = (int)this.reader.ReadInt16();
                        Vector2 vector2_5 = Utils.ReadVector2(this.reader);
                        Vector2 vector2_6 = Utils.ReadVector2(this.reader);
                        float num25 = this.reader.ReadSingle();
                        int num26 = (int)this.reader.ReadInt16();
                        int own = (int)this.reader.ReadByte();
                        int Type1 = (int)this.reader.ReadInt16();
                        BitsByte bitsByte16 = (BitsByte)this.reader.ReadByte();
                        float[] numArray2 = new float[Projectile.maxAI];
                        for (int index5 = 0; index5 < Projectile.maxAI; ++index5)
                            numArray2[index5] = !bitsByte16[index5] ? 0.0f : this.reader.ReadSingle();
                        if (Main.netMode == 2)
                        {
                            own = this.whoAmI;
                            if (Main.projHostile[Type1])
                                break;
                        }
                        int number13 = 1000;
                        for (int index5 = 0; index5 < 1000; ++index5)
                        {
                            if (Main.projectile[index5].owner == own && Main.projectile[index5].identity == num24 && Main.projectile[index5].active)
                            {
                                number13 = index5;
                                break;
                            }
                        }
                        if (number13 == 1000)
                        {
                            for (int index5 = 0; index5 < 1000; ++index5)
                            {
                                if (!Main.projectile[index5].active)
                                {
                                    number13 = index5;
                                    break;
                                }
                            }
                        }
                        Projectile projectile1 = Main.projectile[number13];
                        if (!projectile1.active || projectile1.type != Type1)
                        {
                            projectile1.SetDefaults(Type1);
                            if (Main.netMode == 2)
                                ++Netplay.Clients[this.whoAmI].SpamProjectile;
                        }
                        projectile1.identity = num24;
                        projectile1.position = vector2_5;
                        projectile1.velocity = vector2_6;
                        projectile1.type = Type1;
                        projectile1.damage = num26;
                        projectile1.knockBack = num25;
                        projectile1.owner = own;
                        for (int index5 = 0; index5 < Projectile.maxAI; ++index5)
                            projectile1.ai[index5] = numArray2[index5];
                        projectile1.ProjectileFixDesperation(own);
                        if (Main.netMode != 2)
                            break;
                        NetMessage.SendData(27, -1, this.whoAmI, "", number13, 0.0f, 0.0f, 0.0f, 0, 0, 0);
                        break;
                    case (byte)28:
                        int number14 = (int)this.reader.ReadInt16();
                        int Damage2 = (int)this.reader.ReadInt16();
                        float num27 = this.reader.ReadSingle();
                        int hitDirection2 = (int)this.reader.ReadByte() - 1;
                        byte num28 = this.reader.ReadByte();
                        if (Main.netMode == 2)
                            Main.npc[number14].PlayerInteraction(this.whoAmI);
                        if (Damage2 >= 0)
                        {
                            Main.npc[number14].StrikeNPC(Damage2, num27, hitDirection2, (int)num28 == 1, false, true);
                        }
                        else
                        {
                            Main.npc[number14].life = 0;
                            Main.npc[number14].HitEffect(0, 10.0);
                            Main.npc[number14].active = false;
                        }
                        if (Main.netMode != 2)
                            break;
                        NetMessage.SendData(28, -1, this.whoAmI, "", number14, (float)Damage2, num27, (float)hitDirection2, (int)num28, 0, 0);
                        if (Main.npc[number14].life <= 0)
                        {
                            NetMessage.SendData(23, -1, -1, "", number14, 0.0f, 0.0f, 0.0f, 0, 0, 0);
                            break;
                        }
                        Main.npc[number14].netUpdate = true;
                        break;
                    case (byte)29:
                        int number15 = (int)this.reader.ReadInt16();
                        int num29 = (int)this.reader.ReadByte();
                        if (Main.netMode == 2)
                            num29 = this.whoAmI;
                        for (int index5 = 0; index5 < 1000; ++index5)
                        {
                            if (Main.projectile[index5].owner == num29 && Main.projectile[index5].identity == number15 && Main.projectile[index5].active)
                            {
                                Main.projectile[index5].Kill();
                                break;
                            }
                        }
                        if (Main.netMode != 2)
                            break;
                        NetMessage.SendData(29, -1, this.whoAmI, "", number15, (float)num29, 0.0f, 0.0f, 0, 0, 0);
                        break;
                    case (byte)30:
                        int number16 = (int)this.reader.ReadByte();
                        if (Main.netMode == 2)
                            number16 = this.whoAmI;
                        bool flag7 = this.reader.ReadBoolean();
                        Main.player[number16].hostile = flag7;
                        if (Main.netMode != 2)
                            break;
                        NetMessage.SendData(30, -1, this.whoAmI, "", number16, 0.0f, 0.0f, 0.0f, 0, 0, 0);
                        string str5 = " " + Lang.mp[flag7 ? 11 : 12];
                        Color color3 = Main.teamColor[Main.player[number16].team];
                        NetMessage.SendData(25, -1, -1, Main.player[number16].name + str5, (int)byte.MaxValue, (float)color3.R, (float)color3.G, (float)color3.B, 0, 0, 0);
                        break;
                    case (byte)31:
                        if (Main.netMode != 2)
                            break;
                        int X1 = (int)this.reader.ReadInt16();
                        int Y1 = (int)this.reader.ReadInt16();
                        int chest1 = Chest.FindChest(X1, Y1);
                        if (chest1 <= -1 || Chest.UsingChest(chest1) != -1)
                            break;
                        for (int index5 = 0; index5 < 40; ++index5)
                            NetMessage.SendData(32, this.whoAmI, -1, "", chest1, (float)index5, 0.0f, 0.0f, 0, 0, 0);
                        NetMessage.SendData(33, this.whoAmI, -1, "", chest1, 0.0f, 0.0f, 0.0f, 0, 0, 0);
                        Main.player[this.whoAmI].chest = chest1;
                        if (Main.myPlayer == this.whoAmI)
                            Main.recBigList = false;
                        Recipe.FindRecipes();
                        NetMessage.SendData(80, -1, this.whoAmI, "", this.whoAmI, (float)chest1, 0.0f, 0.0f, 0, 0, 0);
                        if ((int)Main.tile[X1, Y1].frameX < 36 || (int)Main.tile[X1, Y1].frameX >= 72)
                            break;
                        AchievementsHelper.HandleSpecialEvent(Main.player[this.whoAmI], 16);
                        break;
                    case (byte)32:
                        int index10 = (int)this.reader.ReadInt16();
                        int index11 = (int)this.reader.ReadByte();
                        int num30 = (int)this.reader.ReadInt16();
                        int pre2 = (int)this.reader.ReadByte();
                        int type3 = (int)this.reader.ReadInt16();
                        if (Main.chest[index10] == null)
                            Main.chest[index10] = new Chest(false);
                        if (Main.chest[index10].item[index11] == null)
                            Main.chest[index10].item[index11] = new Item();
                        Main.chest[index10].item[index11].netDefaults(type3);
                        Main.chest[index10].item[index11].Prefix(pre2);
                        Main.chest[index10].item[index11].stack = num30;
                        Recipe.FindRecipes();
                        break;
                    case (byte)33:
                        int num31 = (int)this.reader.ReadInt16();
                        int num32 = (int)this.reader.ReadInt16();
                        int num33 = (int)this.reader.ReadInt16();
                        int num34 = (int)this.reader.ReadByte();
                        string text1 = string.Empty;
                        if (num34 != 0)
                        {
                            if (num34 <= 20)
                                text1 = this.reader.ReadString();
                            else if (num34 != (int)byte.MaxValue)
                                num34 = 0;
                        }
                        if (Main.netMode == 1)
                        {
                            Player player8 = Main.player[Main.myPlayer];
                            if (player8.chest == -1)
                            {
                                Main.playerInventory = true;
                                Main.PlaySound(10, -1, -1, 1);
                            }
                            else if (player8.chest != num31 && num31 != -1)
                            {
                                Main.playerInventory = true;
                                Main.PlaySound(12, -1, -1, 1);
                                Main.recBigList = false;
                            }
                            else if (player8.chest != -1 && num31 == -1)
                            {
                                Main.PlaySound(11, -1, -1, 1);
                                Main.recBigList = false;
                            }
                            player8.chest = num31;
                            player8.chestX = num32;
                            player8.chestY = num33;
                            Recipe.FindRecipes();
                            break;
                        }
                        if (num34 != 0)
                        {
                            int number6 = Main.player[this.whoAmI].chest;
                            Chest chest2 = Main.chest[number6];
                            chest2.name = text1;
                            NetMessage.SendData(69, -1, this.whoAmI, text1, number6, (float)chest2.x, (float)chest2.y, 0.0f, 0, 0, 0);
                        }
                        Main.player[this.whoAmI].chest = num31;
                        Recipe.FindRecipes();
                        NetMessage.SendData(80, -1, this.whoAmI, "", this.whoAmI, (float)num31, 0.0f, 0.0f, 0, 0, 0);
                        break;
                    case (byte)34:
                        byte num35 = this.reader.ReadByte();
                        int index12 = (int)this.reader.ReadInt16();
                        int index13 = (int)this.reader.ReadInt16();
                        int style1 = (int)this.reader.ReadInt16();
                        if (Main.netMode == 2)
                        {
                            if ((int)num35 == 0)
                            {
                                int number5_1 = WorldGen.PlaceChest(index12, index13, (ushort)21, false, style1);
                                if (number5_1 == -1)
                                {
                                    NetMessage.SendData(34, this.whoAmI, -1, "", (int)num35, (float)index12, (float)index13, (float)style1, number5_1, 0, 0);
                                    Item.NewItem(index12 * 16, index13 * 16, 32, 32, Chest.chestItemSpawn[style1], 1, true, 0, false);
                                    break;
                                }
                                NetMessage.SendData(34, -1, -1, "", (int)num35, (float)index12, (float)index13, (float)style1, number5_1, 0, 0);
                                break;
                            }
                            if ((int)num35 == 2)
                            {
                                int number5_1 = WorldGen.PlaceChest(index12, index13, (ushort)88, false, style1);
                                if (number5_1 == -1)
                                {
                                    NetMessage.SendData(34, this.whoAmI, -1, "", (int)num35, (float)index12, (float)index13, (float)style1, number5_1, 0, 0);
                                    Item.NewItem(index12 * 16, index13 * 16, 32, 32, Chest.dresserItemSpawn[style1], 1, true, 0, false);
                                    break;
                                }
                                NetMessage.SendData(34, -1, -1, "", (int)num35, (float)index12, (float)index13, (float)style1, number5_1, 0, 0);
                                break;
                            }
                            Tile tile = Main.tile[index12, index13];
                            if ((int)tile.type == 21 && (int)num35 == 1)
                            {
                                if ((int)tile.frameX % 36 != 0)
                                    --index12;
                                if ((int)tile.frameY % 36 != 0)
                                    --index13;
                                int chest2 = Chest.FindChest(index12, index13);
                                WorldGen.KillTile(index12, index13, false, false, false);
                                if (tile.active())
                                    break;
                                NetMessage.SendData(34, -1, -1, "", (int)num35, (float)index12, (float)index13, 0.0f, chest2, 0, 0);
                                break;
                            }
                            if ((int)tile.type != 88 || (int)num35 != 3)
                                break;
                            int num19 = index12 - (int)tile.frameX % 54 / 18;
                            if ((int)tile.frameY % 36 != 0)
                                --index13;
                            int chest3 = Chest.FindChest(num19, index13);
                            WorldGen.KillTile(num19, index13, false, false, false);
                            if (tile.active())
                                break;
                            NetMessage.SendData(34, -1, -1, "", (int)num35, (float)num19, (float)index13, 0.0f, chest3, 0, 0);
                            break;
                        }
                        int id = (int)this.reader.ReadInt16();
                        if ((int)num35 == 0)
                        {
                            if (id == -1)
                            {
                                WorldGen.KillTile(index12, index13, false, false, false);
                                break;
                            }
                            WorldGen.PlaceChestDirect(index12, index13, (ushort)21, style1, id);
                            break;
                        }
                        if ((int)num35 == 2)
                        {
                            if (id == -1)
                            {
                                WorldGen.KillTile(index12, index13, false, false, false);
                                break;
                            }
                            WorldGen.PlaceDresserDirect(index12, index13, (ushort)88, style1, id);
                            break;
                        }
                        Chest.DestroyChestDirect(index12, index13, id);
                        WorldGen.KillTile(index12, index13, false, false, false);
                        break;
                    case (byte)35:
                        int number17 = (int)this.reader.ReadByte();
                        if (Main.netMode == 2)
                            number17 = this.whoAmI;
                        int healAmount1 = (int)this.reader.ReadInt16();
                        if (number17 != Main.myPlayer || Main.ServerSideCharacter)
                            Main.player[number17].HealEffect(healAmount1, true);
                        if (Main.netMode != 2)
                            break;
                        NetMessage.SendData(35, -1, this.whoAmI, "", number17, (float)healAmount1, 0.0f, 0.0f, 0, 0, 0);
                        break;
                    case (byte)36:
                        int number18 = (int)this.reader.ReadByte();
                        if (Main.netMode == 2)
                            number18 = this.whoAmI;
                        Player player9 = Main.player[number18];
                        player9.zone1 = (BitsByte)this.reader.ReadByte();
                        player9.zone2 = (BitsByte)this.reader.ReadByte();
                        if (Main.netMode != 2)
                            break;
                        NetMessage.SendData(36, -1, this.whoAmI, "", number18, 0.0f, 0.0f, 0.0f, 0, 0, 0);
                        break;
                    case (byte)37:
                        if (Main.netMode != 1)
                            break;
                        if (Main.autoPass)
                        {
                            NetMessage.SendData(38, -1, -1, Netplay.ServerPassword, 0, 0.0f, 0.0f, 0.0f, 0, 0, 0);
                            Main.autoPass = false;
                            break;
                        }
                        Netplay.ServerPassword = "";
                        Main.menuMode = 31;
                        break;
                    case (byte)38:
                        if (Main.netMode != 2)
                            break;
                        if (this.reader.ReadString() == Netplay.ServerPassword)
                        {
                            Netplay.Clients[this.whoAmI].State = 1;
                            NetMessage.SendData(3, this.whoAmI, -1, "", 0, 0.0f, 0.0f, 0.0f, 0, 0, 0);
                            break;
                        }
                        NetMessage.SendData(2, this.whoAmI, -1, Lang.mp[1], 0, 0.0f, 0.0f, 0.0f, 0, 0, 0);
                        break;
                    case (byte)39:
                        if (Main.netMode != 1)
                            break;
                        int number19 = (int)this.reader.ReadInt16();
                        Main.item[number19].owner = (int)byte.MaxValue;
                        NetMessage.SendData(22, -1, -1, "", number19, 0.0f, 0.0f, 0.0f, 0, 0, 0);
                        break;
                    case (byte)40:
                        int number20 = (int)this.reader.ReadByte();
                        if (Main.netMode == 2)
                            number20 = this.whoAmI;
                        int num36 = (int)this.reader.ReadInt16();
                        Main.player[number20].talkNPC = num36;
                        if (Main.netMode != 2)
                            break;
                        NetMessage.SendData(40, -1, this.whoAmI, "", number20, 0.0f, 0.0f, 0.0f, 0, 0, 0);
                        break;
                    case (byte)41:
                        int number21 = (int)this.reader.ReadByte();
                        if (Main.netMode == 2)
                            number21 = this.whoAmI;
                        Player player10 = Main.player[number21];
                        float num37 = this.reader.ReadSingle();
                        int num38 = (int)this.reader.ReadInt16();
                        player10.itemRotation = num37;
                        player10.itemAnimation = num38;
                        player10.channel = player10.inventory[player10.selectedItem].channel;
                        if (Main.netMode != 2)
                            break;
                        NetMessage.SendData(41, -1, this.whoAmI, "", number21, 0.0f, 0.0f, 0.0f, 0, 0, 0);
                        break;
                    case (byte)42:
                        int index14 = (int)this.reader.ReadByte();
                        if (Main.netMode == 2)
                            index14 = this.whoAmI;
                        else if (Main.myPlayer == index14 && !Main.ServerSideCharacter)
                            break;
                        int num39 = (int)this.reader.ReadInt16();
                        int num40 = (int)this.reader.ReadInt16();
                        Main.player[index14].statMana = num39;
                        Main.player[index14].statManaMax = num40;
                        break;
                    case (byte)43:
                        int number22 = (int)this.reader.ReadByte();
                        if (Main.netMode == 2)
                            number22 = this.whoAmI;
                        int manaAmount = (int)this.reader.ReadInt16();
                        if (number22 != Main.myPlayer)
                            Main.player[number22].ManaEffect(manaAmount);
                        if (Main.netMode != 2)
                            break;
                        NetMessage.SendData(43, -1, this.whoAmI, "", number22, (float)manaAmount, 0.0f, 0.0f, 0, 0, 0);
                        break;
                    case (byte)44:
                        int number23 = (int)this.reader.ReadByte();
                        if (Main.netMode == 2)
                            number23 = this.whoAmI;
                        int hitDirection3 = (int)this.reader.ReadByte() - 1;
                        int num41 = (int)this.reader.ReadInt16();
                        byte num42 = this.reader.ReadByte();
                        string str6 = this.reader.ReadString();
                        Main.player[number23].KillMe((double)num41, hitDirection3, (int)num42 == 1, str6);
                        if (Main.netMode != 2)
                            break;
                        NetMessage.SendData(44, -1, this.whoAmI, str6, number23, (float)hitDirection3, (float)num41, (float)num42, 0, 0, 0);
                        break;
                    case (byte)45:
                        int number24 = (int)this.reader.ReadByte();
                        if (Main.netMode == 2)
                            number24 = this.whoAmI;
                        int index15 = (int)this.reader.ReadByte();
                        Player player11 = Main.player[number24];
                        int num43 = player11.team;
                        player11.team = index15;
                        Color color4 = Main.teamColor[index15];
                        if (Main.netMode != 2)
                            break;
                        NetMessage.SendData(45, -1, this.whoAmI, "", number24, 0.0f, 0.0f, 0.0f, 0, 0, 0);
                        string str7 = " " + Lang.mp[13 + index15];
                        if (index15 == 5)
                            str7 = " " + Lang.mp[22];
                        for (int remoteClient = 0; remoteClient < (int)byte.MaxValue; ++remoteClient)
                        {
                            if (remoteClient == this.whoAmI || num43 > 0 && Main.player[remoteClient].team == num43 || index15 > 0 && Main.player[remoteClient].team == index15)
                                NetMessage.SendData(25, remoteClient, -1, player11.name + str7, (int)byte.MaxValue, (float)color4.R, (float)color4.G, (float)color4.B, 0, 0, 0);
                        }
                        break;
                    case (byte)46:
                        if (Main.netMode != 2)
                            break;
                        int number25 = Sign.ReadSign((int)this.reader.ReadInt16(), (int)this.reader.ReadInt16(), true);
                        if (number25 < 0)
                            break;
                        NetMessage.SendData(47, this.whoAmI, -1, "", number25, (float)this.whoAmI, 0.0f, 0.0f, 0, 0, 0);
                        break;
                    case (byte)47:
                        int index16 = (int)this.reader.ReadInt16();
                        int num44 = (int)this.reader.ReadInt16();
                        int num45 = (int)this.reader.ReadInt16();
                        string text2 = this.reader.ReadString();
                        string str8 = (string)null;
                        if (Main.sign[index16] != null)
                            str8 = Main.sign[index16].text;
                        Main.sign[index16] = new Sign();
                        Main.sign[index16].x = num44;
                        Main.sign[index16].y = num45;
                        Sign.TextSign(index16, text2);
                        int num46 = (int)this.reader.ReadByte();
                        if (Main.netMode == 2 && str8 != text2)
                        {
                            num46 = this.whoAmI;
                            NetMessage.SendData(47, -1, this.whoAmI, "", index16, (float)num46, 0.0f, 0.0f, 0, 0, 0);
                        }
                        if (Main.netMode != 1 || num46 != Main.myPlayer || Main.sign[index16] == null)
                            break;
                        Main.playerInventory = false;
                        Main.player[Main.myPlayer].talkNPC = -1;
                        Main.npcChatCornerItem = 0;
                        Main.editSign = false;
                        Main.PlaySound(10, -1, -1, 1);
                        Main.player[Main.myPlayer].sign = index16;
                        Main.npcChatText = Main.sign[index16].text;
                        break;
                    case (byte)48:
                        int i1 = (int)this.reader.ReadInt16();
                        int j1 = (int)this.reader.ReadInt16();
                        byte num47 = this.reader.ReadByte();
                        byte num48 = this.reader.ReadByte();
                        if (Main.netMode == 2 && Netplay.spamCheck)
                        {
                            int index5 = this.whoAmI;
                            int num19 = (int)((double)Main.player[index5].position.X + (double)(Main.player[index5].width / 2));
                            int num49 = (int)((double)Main.player[index5].position.Y + (double)(Main.player[index5].height / 2));
                            int num50 = 10;
                            int num51 = num19 - num50;
                            int num52 = num19 + num50;
                            int num53 = num49 - num50;
                            int num54 = num49 + num50;
                            if (i1 < num51 || i1 > num52 || (j1 < num53 || j1 > num54))
                            {
                                NetMessage.BootPlayer(this.whoAmI, "Cheating attempt detected: Liquid spam");
                                break;
                            }
                        }
                        if (Main.tile[i1, j1] == null)
                            Main.tile[i1, j1] = new Tile();
                        lock (Main.tile[i1, j1])
                        {
                            Main.tile[i1, j1].liquid = num47;
                            Main.tile[i1, j1].liquidType((int)num48);
                            if (Main.netMode != 2)
                                break;
                            WorldGen.SquareTileFrame(i1, j1, true);
                            break;
                        }
                    case (byte)49:
                        if (Netplay.Connection.State != 6)
                            break;
                        Netplay.Connection.State = 10;
                        Main.ActivePlayerFileData.StartPlayTimer();
                        Player.EnterWorld(Main.player[Main.myPlayer]);
                        Main.player[Main.myPlayer].Spawn();
                        break;
                    case (byte)50:
                        int number26 = (int)this.reader.ReadByte();
                        if (Main.netMode == 2)
                            number26 = this.whoAmI;
                        else if (number26 == Main.myPlayer && !Main.ServerSideCharacter)
                            break;
                        Player player12 = Main.player[number26];
                        for (int index5 = 0; index5 < 22; ++index5)
                        {
                            player12.buffType[index5] = (int)this.reader.ReadByte();
                            player12.buffTime[index5] = player12.buffType[index5] <= 0 ? 0 : 60;
                        }
                        if (Main.netMode != 2)
                            break;
                        NetMessage.SendData(50, -1, this.whoAmI, "", number26, 0.0f, 0.0f, 0.0f, 0, 0, 0);
                        break;
                    case (byte)51:
                        byte num55 = this.reader.ReadByte();
                        byte num56 = this.reader.ReadByte();
                        switch (num56)
                        {
                            case (byte)1:
                                NPC.SpawnSkeletron();
                                return;
                            case (byte)2:
                                if (Main.netMode == 2)
                                {
                                    NetMessage.SendData(51, -1, this.whoAmI, "", (int)num55, (float)num56, 0.0f, 0.0f, 0, 0, 0);
                                    return;
                                }
                                Main.PlaySound(2, (int)Main.player[(int)num55].position.X, (int)Main.player[(int)num55].position.Y, 1);
                                return;
                            case (byte)3:
                                if (Main.netMode != 2)
                                    return;
                                Main.Sundialing();
                                return;
                            case (byte)4:
                                Main.npc[(int)num55].BigMimicSpawnSmoke();
                                return;
                            default:
                                return;
                        }
                    case (byte)52:
                        int num57 = (int)this.reader.ReadByte();
                        int num58 = (int)this.reader.ReadInt16();
                        int num59 = (int)this.reader.ReadInt16();
                        if (num57 == 1)
                        {
                            Chest.Unlock(num58, num59);
                            if (Main.netMode == 2)
                            {
                                NetMessage.SendData(52, -1, this.whoAmI, "", 0, (float)num57, (float)num58, (float)num59, 0, 0, 0);
                                NetMessage.SendTileSquare(-1, num58, num59, 2);
                            }
                        }
                        if (num57 != 2)
                            break;
                        WorldGen.UnlockDoor(num58, num59);
                        if (Main.netMode != 2)
                            break;
                        NetMessage.SendData(52, -1, this.whoAmI, "", 0, (float)num57, (float)num58, (float)num59, 0, 0, 0);
                        NetMessage.SendTileSquare(-1, num58, num59, 2);
                        break;
                    case (byte)53:
                        int number27 = (int)this.reader.ReadInt16();
                        int type4 = (int)this.reader.ReadByte();
                        int time1 = (int)this.reader.ReadInt16();
                        Main.npc[number27].AddBuff(type4, time1, true);
                        if (Main.netMode != 2)
                            break;
                        NetMessage.SendData(54, -1, -1, "", number27, 0.0f, 0.0f, 0.0f, 0, 0, 0);
                        break;
                    case (byte)54:
                        if (Main.netMode != 1)
                            break;
                        int index17 = (int)this.reader.ReadInt16();
                        NPC npc2 = Main.npc[index17];
                        for (int index5 = 0; index5 < 5; ++index5)
                        {
                            npc2.buffType[index5] = (int)this.reader.ReadByte();
                            npc2.buffTime[index5] = (int)this.reader.ReadInt16();
                        }
                        break;
                    case (byte)55:
                        int index18 = (int)this.reader.ReadByte();
                        int type5 = (int)this.reader.ReadByte();
                        int time1_1 = (int)this.reader.ReadInt16();
                        if (Main.netMode == 2 && index18 != this.whoAmI && !Main.pvpBuff[type5])
                            break;
                        if (Main.netMode == 1 && index18 == Main.myPlayer)
                        {
                            Main.player[index18].AddBuff(type5, time1_1, true);
                            break;
                        }
                        if (Main.netMode != 2)
                            break;
                        NetMessage.SendData(55, index18, -1, "", index18, (float)type5, (float)time1_1, 0.0f, 0, 0, 0);
                        break;
                    case (byte)56:
                        int number28 = (int)this.reader.ReadInt16();
                        if (number28 < 0 || number28 >= 200)
                            break;
                        string str9 = this.reader.ReadString();
                        if (Main.netMode == 1)
                        {
                            Main.npc[number28].displayName = str9;
                            break;
                        }
                        if (Main.netMode != 2)
                            break;
                        NetMessage.SendData(56, this.whoAmI, -1, Main.npc[number28].displayName, number28, 0.0f, 0.0f, 0.0f, 0, 0, 0);
                        break;
                    case (byte)57:
                        if (Main.netMode != 1)
                            break;
                        WorldGen.tGood = this.reader.ReadByte();
                        WorldGen.tEvil = this.reader.ReadByte();
                        WorldGen.tBlood = this.reader.ReadByte();
                        break;
                    case (byte)58:
                        int index19 = (int)this.reader.ReadByte();
                        if (Main.netMode == 2)
                            index19 = this.whoAmI;
                        float number2_1 = this.reader.ReadSingle();
                        if (Main.netMode == 2)
                        {
                            NetMessage.SendData(58, -1, this.whoAmI, "", this.whoAmI, number2_1, 0.0f, 0.0f, 0, 0, 0);
                            break;
                        }
                        Player player13 = Main.player[index19];
                        Main.harpNote = number2_1;
                        int Style = 26;
                        if (player13.inventory[player13.selectedItem].itemId == 507)
                            Style = 35;
                        Main.PlaySound(2, (int)player13.position.X, (int)player13.position.Y, Style);
                        break;
                    case (byte)59:
                        int num60 = (int)this.reader.ReadInt16();
                        int j2 = (int)this.reader.ReadInt16();
                        Wiring.HitSwitch(num60, j2);
                        if (Main.netMode != 2)
                            break;
                        NetMessage.SendData(59, -1, this.whoAmI, "", num60, (float)j2, 0.0f, 0.0f, 0, 0, 0);
                        break;
                    case (byte)60:
                        int n = (int)this.reader.ReadInt16();
                        int x1 = (int)this.reader.ReadInt16();
                        int y3 = (int)this.reader.ReadInt16();
                        byte num61 = this.reader.ReadByte();
                        if (n >= 200)
                        {
                            NetMessage.BootPlayer(this.whoAmI, "cheating attempt detected: Invalid kick-out");
                            break;
                        }
                        if (Main.netMode == 1)
                        {
                            Main.npc[n].homeless = (int)num61 == 1;
                            Main.npc[n].homeTileX = x1;
                            Main.npc[n].homeTileY = y3;
                            break;
                        }
                        if ((int)num61 == 0)
                        {
                            WorldGen.kickOut(n);
                            break;
                        }
                        WorldGen.moveRoom(x1, y3, n);
                        break;
                    case (byte)61:
                        int plr = this.reader.ReadInt32();
                        int Type2 = this.reader.ReadInt32();
                        if (Main.netMode != 2)
                            break;
                        if (Type2 >= 0 && Type2 < 540 && NPCID.Sets.MPAllowedEnemies[Type2])
                        {
                            if (NPC.AnyNPCs(Type2))
                                break;
                            NPC.SpawnOnPlayer(plr, Type2);
                            break;
                        }
                        if (Type2 == -4)
                        {
                            if (Main.dayTime)
                                break;
                            NetMessage.SendData(25, -1, -1, Lang.misc[31], (int)byte.MaxValue, 50f, (float)byte.MaxValue, 130f, 0, 0, 0);
                            Main.startPumpkinMoon();
                            NetMessage.SendData(7, -1, -1, "", 0, 0.0f, 0.0f, 0.0f, 0, 0, 0);
                            NetMessage.SendData(78, -1, -1, "", 0, 1f, 2f, 1f, 0, 0, 0);
                            break;
                        }
                        if (Type2 == -5)
                        {
                            if (Main.dayTime)
                                break;
                            NetMessage.SendData(25, -1, -1, Lang.misc[34], (int)byte.MaxValue, 50f, (float)byte.MaxValue, 130f, 0, 0, 0);
                            Main.startSnowMoon();
                            NetMessage.SendData(7, -1, -1, "", 0, 0.0f, 0.0f, 0.0f, 0, 0, 0);
                            NetMessage.SendData(78, -1, -1, "", 0, 1f, 1f, 1f, 0, 0, 0);
                            break;
                        }
                        if (Type2 == -6)
                        {
                            if (!Main.dayTime || Main.eclipse)
                                break;
                            NetMessage.SendData(25, -1, -1, Lang.misc[20], (int)byte.MaxValue, 50f, (float)byte.MaxValue, 130f, 0, 0, 0);
                            Main.eclipse = true;
                            NetMessage.SendData(7, -1, -1, "", 0, 0.0f, 0.0f, 0.0f, 0, 0, 0);
                            break;
                        }
                        if (Type2 == -7)
                        {
                            NetMessage.SendData(25, -1, -1, "martian moon toggled", (int)byte.MaxValue, 50f, (float)byte.MaxValue, 130f, 0, 0, 0);
                            Main.invasionDelay = 0;
                            Main.StartInvasion(4);
                            NetMessage.SendData(7, -1, -1, "", 0, 0.0f, 0.0f, 0.0f, 0, 0, 0);
                            NetMessage.SendData(78, -1, -1, "", 0, 1f, (float)(Main.invasionType + 2), 0.0f, 0, 0, 0);
                            break;
                        }
                        if (Type2 >= 0)
                            break;
                        int type6 = 1;
                        if (Type2 > -5)
                            type6 = -Type2;
                        if (type6 > 0 && Main.invasionType == 0)
                        {
                            Main.invasionDelay = 0;
                            Main.StartInvasion(type6);
                        }
                        NetMessage.SendData(78, -1, -1, "", 0, 1f, (float)(Main.invasionType + 2), 0.0f, 0, 0, 0);
                        break;
                    case (byte)62:
                        int number29 = (int)this.reader.ReadByte();
                        int num62 = (int)this.reader.ReadByte();
                        if (Main.netMode == 2)
                            number29 = this.whoAmI;
                        if (num62 == 1)
                            Main.player[number29].NinjaDodge();
                        if (num62 == 2)
                            Main.player[number29].ShadowDodge();
                        if (Main.netMode != 2)
                            break;
                        NetMessage.SendData(62, -1, this.whoAmI, "", number29, (float)num62, 0.0f, 0.0f, 0, 0, 0);
                        break;
                    case (byte)63:
                        int num63 = (int)this.reader.ReadInt16();
                        int y4 = (int)this.reader.ReadInt16();
                        byte color5 = this.reader.ReadByte();
                        WorldGen.paintTile(num63, y4, color5, false);
                        if (Main.netMode != 2)
                            break;
                        NetMessage.SendData(63, -1, this.whoAmI, "", num63, (float)y4, (float)color5, 0.0f, 0, 0, 0);
                        break;
                    case (byte)64:
                        int num64 = (int)this.reader.ReadInt16();
                        int y5 = (int)this.reader.ReadInt16();
                        byte color6 = this.reader.ReadByte();
                        WorldGen.paintWall(num64, y5, color6, false);
                        if (Main.netMode != 2)
                            break;
                        NetMessage.SendData(64, -1, this.whoAmI, "", num64, (float)y5, (float)color6, 0.0f, 0, 0, 0);
                        break;
                    case (byte)65:
                        BitsByte bitsByte17 = (BitsByte)this.reader.ReadByte();
                        int index20 = (int)this.reader.ReadInt16();
                        if (Main.netMode == 2)
                            index20 = this.whoAmI;
                        Vector2 vector2_7 = Utils.ReadVector2(this.reader);
                        int num65 = 0;
                        int num66 = 0;
                        if (bitsByte17[0])
                            ++num65;
                        if (bitsByte17[1])
                            num65 += 2;
                        if (bitsByte17[2])
                            ++num66;
                        if (bitsByte17[3])
                            num66 += 2;
                        if (num65 == 0)
                            Main.player[index20].Teleport(vector2_7, num66, 0);
                        else if (num65 == 1)
                            Main.npc[index20].Teleport(vector2_7, num66, 0);
                        else if (num65 == 2)
                        {
                            Main.player[index20].Teleport(vector2_7, num66, 0);
                            if (Main.netMode == 2)
                            {
                                RemoteClient.CheckSection(this.whoAmI, vector2_7, 1);
                                NetMessage.SendData(65, -1, -1, "", 0, (float)index20, vector2_7.X, vector2_7.Y, num66, 0, 0);
                                int index5 = -1;
                                float num19 = 9999f;
                                for (int index6 = 0; index6 < (int)byte.MaxValue; ++index6)
                                {
                                    if (Main.player[index6].active && index6 != this.whoAmI)
                                    {
                                        Vector2 vector2_8 = Main.player[index6].position - Main.player[this.whoAmI].position;
                                        if ((double)vector2_8.Length() < (double)num19)
                                        {
                                            num19 = vector2_8.Length();
                                            index5 = index6;
                                        }
                                    }
                                }
                                if (index5 >= 0)
                                    NetMessage.SendData(25, -1, -1, Main.player[this.whoAmI].name + " has teleported to " + Main.player[index5].name, (int)byte.MaxValue, 250f, 250f, 0.0f, 0, 0, 0);
                            }
                        }
                        if (Main.netMode != 2 || num65 != 0)
                            break;
                        NetMessage.SendData(65, -1, this.whoAmI, "", 0, (float)index20, vector2_7.X, vector2_7.Y, num66, 0, 0);
                        break;
                    case (byte)66:
                        int number30 = (int)this.reader.ReadByte();
                        int healAmount2 = (int)this.reader.ReadInt16();
                        if (healAmount2 <= 0)
                            break;
                        Player player14 = Main.player[number30];
                        player14.statLife += healAmount2;
                        if (player14.statLife > player14.statLifeMax2)
                            player14.statLife = player14.statLifeMax2;
                        player14.HealEffect(healAmount2, false);
                        if (Main.netMode != 2)
                            break;
                        NetMessage.SendData(66, -1, this.whoAmI, "", number30, (float)healAmount2, 0.0f, 0.0f, 0, 0, 0);
                        break;
                    case (byte)68:
                        this.reader.ReadString();
                        break;
                    case (byte)69:
                        int number31 = (int)this.reader.ReadInt16();
                        int X2 = (int)this.reader.ReadInt16();
                        int Y2 = (int)this.reader.ReadInt16();
                        if (Main.netMode == 1)
                        {
                            if (number31 < 0 || number31 >= 1000)
                                break;
                            Chest chest2 = Main.chest[number31];
                            if (chest2 == null)
                            {
                                chest2 = new Chest(false);
                                chest2.x = X2;
                                chest2.y = Y2;
                                Main.chest[number31] = chest2;
                            }
                            else if (chest2.x != X2 || chest2.y != Y2)
                                break;
                            chest2.name = this.reader.ReadString();
                            break;
                        }
                        if (number31 < -1 || number31 >= 1000)
                            break;
                        if (number31 == -1)
                        {
                            number31 = Chest.FindChest(X2, Y2);
                            if (number31 == -1)
                                break;
                        }
                        Chest chest4 = Main.chest[number31];
                        if (chest4.x != X2 || chest4.y != Y2)
                            break;
                        NetMessage.SendData(69, this.whoAmI, -1, chest4.name, number31, (float)X2, (float)Y2, 0.0f, 0, 0, 0);
                        break;
                    case (byte)70:
                        if (Main.netMode != 2)
                            break;
                        int i2 = (int)this.reader.ReadInt16();
                        int who = (int)this.reader.ReadByte();
                        if (Main.netMode == 2)
                            who = this.whoAmI;
                        if (i2 >= 200 || i2 < 0)
                            break;
                        NPC.CatchNPC(i2, who);
                        break;
                    case (byte)71:
                        if (Main.netMode != 2)
                            break;
                        NPC.ReleaseNPC(this.reader.ReadInt32(), this.reader.ReadInt32(), (int)this.reader.ReadInt16(), (int)this.reader.ReadByte(), this.whoAmI);
                        break;
                    case (byte)72:
                        if (Main.netMode != 1)
                            break;
                        for (int index5 = 0; index5 < 40; ++index5)
                            Main.travelShop[index5] = (int)this.reader.ReadInt16();
                        break;
                    case (byte)73:
                        Main.player[this.whoAmI].TeleportationPotion();
                        break;
                    case (byte)74:
                        if (Main.netMode != 1)
                            break;
                        Main.anglerQuest = (int)this.reader.ReadByte();
                        Main.anglerQuestFinished = this.reader.ReadBoolean();
                        break;
                    case (byte)75:
                        if (Main.netMode != 2)
                            break;
                        string str10 = Main.player[this.whoAmI].name;
                        if (Main.anglerWhoFinishedToday.Contains(str10))
                            break;
                        Main.anglerWhoFinishedToday.Add(str10);
                        break;
                    case (byte)76:
                        int number32 = (int)this.reader.ReadByte();
                        if (number32 == Main.myPlayer && !Main.ServerSideCharacter)
                            break;
                        if (Main.netMode == 2)
                            number32 = this.whoAmI;
                        Main.player[number32].anglerQuestsFinished = this.reader.ReadInt32();
                        if (Main.netMode != 2)
                            break;
                        NetMessage.SendData(76, -1, this.whoAmI, "", number32, 0.0f, 0.0f, 0.0f, 0, 0, 0);
                        break;
                    case (byte)77:
                        Animation.NewTemporaryAnimation((int)this.reader.ReadInt16(), this.reader.ReadUInt16(), (int)this.reader.ReadInt16(), (int)this.reader.ReadInt16());
                        break;
                    case (byte)78:
                        if (Main.netMode != 1)
                            break;
                        Main.ReportInvasionProgress((int)this.reader.ReadInt16(), (int)this.reader.ReadInt16(), (int)this.reader.ReadSByte(), (int)this.reader.ReadSByte());
                        break;
                    case (byte)79:
                        int x2 = (int)this.reader.ReadInt16();
                        int y6 = (int)this.reader.ReadInt16();
                        short num67 = this.reader.ReadInt16();
                        int style2 = (int)this.reader.ReadByte();
                        int num68 = (int)this.reader.ReadByte();
                        int random = (int)this.reader.ReadSByte();
                        int direction2 = !this.reader.ReadBoolean() ? -1 : 1;
                        if (Main.netMode == 2)
                        {
                            ++Netplay.Clients[this.whoAmI].SpamAddBlock;
                            if (!WorldGen.InWorld(x2, y6, 10) || !Netplay.Clients[this.whoAmI].TileSections[Netplay.GetSectionX(x2), Netplay.GetSectionY(y6)])
                                break;
                        }
                        WorldGen.PlaceObject(x2, y6, (int)num67, false, style2, num68, random, direction2);
                        if (Main.netMode != 2)
                            break;
                        NetMessage.SendObjectPlacment(this.whoAmI, x2, y6, (int)num67, style2, num68, random, direction2);
                        break;
                    case (byte)80:
                        if (Main.netMode != 1)
                            break;
                        int index21 = (int)this.reader.ReadByte();
                        int num69 = (int)this.reader.ReadInt16();
                        if (num69 < -3 || num69 >= 1000)
                            break;
                        Main.player[index21].chest = num69;
                        Recipe.FindRecipes();
                        break;
                    case (byte)81:
                        if (Main.netMode != 1)
                            break;
                        CombatText.NewText(new Rectangle((int)this.reader.ReadSingle(), (int)this.reader.ReadSingle(), 0, 0), Utils.ReadRGB(this.reader), this.reader.ReadString(), false, false);
                        break;
                    case (byte)82:
                        NetManager.Instance.Read(this.reader, this.whoAmI);
                        break;
                    case (byte)83:
                        if (Main.netMode != 1)
                            break;
                        int index22 = (int)this.reader.ReadInt16();
                        int num70 = this.reader.ReadInt32();
                        if (index22 < 0 || index22 >= 251)
                            break;
                        NPC.killCount[index22] = num70;
                        break;
                    case (byte)84:
                        byte num71 = this.reader.ReadByte();
                        float num72 = this.reader.ReadSingle();
                        Main.player[(int)num71].stealth = num72;
                        if (Main.netMode != 2)
                            break;
                        NetMessage.SendData(84, -1, this.whoAmI, "", (int)num71, 0.0f, 0.0f, 0.0f, 0, 0, 0);
                        break;
                    case (byte)85:
                        int num73 = this.whoAmI;
                        byte num74 = this.reader.ReadByte();
                        if (Main.netMode != 2 || num73 >= (int)byte.MaxValue || (int)num74 >= 58)
                            break;
                        Chest.ServerPlaceItem(this.whoAmI, (int)num74);
                        break;
                    case (byte)86:
                        if (Main.netMode != 1)
                            break;
                        int key1 = this.reader.ReadInt32();
                        if (!this.reader.ReadBoolean())
                        {
                            TileEntity tileEntity;
                            if (!TileEntity.ByID.TryGetValue(key1, out tileEntity) || !(tileEntity is TETrainingDummy) && !(tileEntity is TEItemFrame))
                                break;
                            TileEntity.ByID.Remove(key1);
                            TileEntity.ByPosition.Remove(tileEntity.Position);
                            break;
                        }
                        TileEntity tileEntity1 = TileEntity.Read(this.reader);
                        TileEntity.ByID[tileEntity1.ID] = tileEntity1;
                        TileEntity.ByPosition[tileEntity1.Position] = tileEntity1;
                        break;
                    case (byte)87:
                        if (Main.netMode != 2)
                            break;
                        int num75 = (int)this.reader.ReadInt16();
                        int num76 = (int)this.reader.ReadInt16();
                        int num77 = (int)this.reader.ReadByte();
                        if (num75 < 0 || num75 >= Main.maxTilesX || (num76 < 0 || num76 >= Main.maxTilesY) || TileEntity.ByPosition.ContainsKey(new Point16(num75, num76)))
                            break;
                        switch (num77)
                        {
                            case 0:
                                if (!TETrainingDummy.ValidTile(num75, num76))
                                    return;
                                TETrainingDummy.Place(num75, num76);
                                return;
                            case 1:
                                if (!TEItemFrame.ValidTile(num75, num76))
                                    return;
                                NetMessage.SendData(86, -1, -1, "", TEItemFrame.Place(num75, num76), (float)num75, (float)num76, 0.0f, 0, 0, 0);
                                return;
                            default:
                                return;
                        }
                    case (byte)88:
                        if (Main.netMode != 1)
                            break;
                        int index23 = (int)this.reader.ReadInt16();
                        if (index23 < 0 || index23 > 400)
                            break;
                        Item obj2 = Main.item[index23];
                        BitsByte bitsByte18 = (BitsByte)this.reader.ReadByte();
                        if (bitsByte18[0])
                            obj2.color.PackedValue = this.reader.ReadUInt32();
                        if (bitsByte18[1])
                            obj2.damage = (int)this.reader.ReadUInt16();
                        if (bitsByte18[2])
                            obj2.knockBack = this.reader.ReadSingle();
                        if (bitsByte18[3])
                            obj2.useAnimation = (int)this.reader.ReadUInt16();
                        if (bitsByte18[4])
                            obj2.useTime = (int)this.reader.ReadUInt16();
                        if (bitsByte18[5])
                            obj2.shoot = (int)this.reader.ReadInt16();
                        if (bitsByte18[6])
                            obj2.shootSpeed = this.reader.ReadSingle();
                        if (!bitsByte18[7])
                            break;
                        bitsByte18 = (BitsByte)this.reader.ReadByte();
                        if (bitsByte18[0])
                            obj2.width = (int)this.reader.ReadInt16();
                        if (bitsByte18[1])
                            obj2.height = (int)this.reader.ReadInt16();
                        if (!bitsByte18[2])
                            break;
                        obj2.scale = this.reader.ReadSingle();
                        break;
                    case (byte)89:
                        if (Main.netMode != 2)
                            break;
                        TEItemFrame.TryPlacing((int)this.reader.ReadInt16(), (int)this.reader.ReadInt16(), (int)this.reader.ReadInt16(), (int)this.reader.ReadByte(), (int)this.reader.ReadInt16());
                        break;
                    case (byte)91:
                        if (Main.netMode != 1)
                            break;
                        int key2 = this.reader.ReadInt32();
                        int type7 = (int)this.reader.ReadByte();
                        if (type7 == (int)byte.MaxValue)
                        {
                            if (!EmoteBubble.byID.ContainsKey(key2))
                                break;
                            EmoteBubble.byID.Remove(key2);
                            break;
                        }
                        int meta = (int)this.reader.ReadUInt16();
                        int time2 = (int)this.reader.ReadByte();
                        int emotion = (int)this.reader.ReadByte();
                        int num78 = 0;
                        if (emotion < 0)
                            num78 = (int)this.reader.ReadInt16();
                        WorldUIAnchor bubbleAnchor = EmoteBubble.DeserializeNetAnchor(type7, meta);
                        lock (EmoteBubble.byID)
                        {
                            if (!EmoteBubble.byID.ContainsKey(key2))
                            {
                                EmoteBubble.byID[key2] = new EmoteBubble(emotion, bubbleAnchor, time2);
                            }
                            else
                            {
                                EmoteBubble.byID[key2].lifeTime = time2;
                                EmoteBubble.byID[key2].lifeTimeStart = time2;
                                EmoteBubble.byID[key2].emote = emotion;
                                EmoteBubble.byID[key2].anchor = bubbleAnchor;
                            }
                            EmoteBubble.byID[key2].ID = key2;
                            EmoteBubble.byID[key2].metadata = num78;
                            break;
                        }
                    case (byte)92:
                        int number33 = (int)this.reader.ReadInt16();
                        float num79 = this.reader.ReadSingle();
                        float num80 = this.reader.ReadSingle();
                        float num81 = this.reader.ReadSingle();
                        if (Main.netMode == 1)
                        {
                            Main.npc[number33].moneyPing(new Vector2(num80, num81));
                            Main.npc[number33].extraValue = num79;
                            break;
                        }
                        Main.npc[number33].extraValue += num79;
                        NetMessage.SendData(92, -1, -1, "", number33, Main.npc[number33].extraValue, num80, num81, 0, 0, 0);
                        break;
                    case (byte)95:
                        if (Main.netMode != 2)
                            break;
                        ushort num82 = this.reader.ReadUInt16();
                        if ((int)num82 < 0 || (int)num82 >= 1000)
                            break;
                        Projectile projectile2 = Main.projectile[(int)num82];
                        if (projectile2.type != 602)
                            break;
                        projectile2.Kill();
                        if (Main.netMode == 0)
                            break;
                        NetMessage.SendData(29, -1, -1, "", projectile2.whoAmI, (float)projectile2.owner, 0.0f, 0.0f, 0, 0, 0);
                        break;
                    case (byte)96:
                        int index24 = (int)this.reader.ReadByte();
                        Player player15 = Main.player[index24];
                        int extraInfo1 = (int)this.reader.ReadInt16();
                        Vector2 newPos1 = Utils.ReadVector2(this.reader);
                        Vector2 vector2_9 = Utils.ReadVector2(this.reader);
                        int num83 = extraInfo1 + (extraInfo1 % 2 == 0 ? 1 : -1);
                        player15.lastPortalColorIndex = num83;
                        player15.Teleport(newPos1, 4, extraInfo1);
                        player15.velocity = vector2_9;
                        break;
                    case (byte)97:
                        if (Main.netMode != 1)
                            break;
                        AchievementsHelper.NotifyNPCKilledDirect(Main.player[Main.myPlayer], (int)this.reader.ReadInt16());
                        break;
                    case (byte)98:
                        if (Main.netMode != 1)
                            break;
                        AchievementsHelper.NotifyProgressionEvent((int)this.reader.ReadInt16());
                        break;
                    case (byte)99:
                        int number34 = (int)this.reader.ReadByte();
                        if (Main.netMode == 2)
                            number34 = this.whoAmI;
                        Main.player[number34].MinionTargetPoint = Utils.ReadVector2(this.reader);
                        if (Main.netMode != 2)
                            break;
                        NetMessage.SendData(99, -1, this.whoAmI, "", number34, 0.0f, 0.0f, 0.0f, 0, 0, 0);
                        break;
                    case (byte)100:
                        int index25 = (int)this.reader.ReadUInt16();
                        NPC npc3 = Main.npc[index25];
                        int extraInfo2 = (int)this.reader.ReadInt16();
                        Vector2 newPos2 = Utils.ReadVector2(this.reader);
                        Vector2 vector2_10 = Utils.ReadVector2(this.reader);
                        int num84 = extraInfo2 + (extraInfo2 % 2 == 0 ? 1 : -1);
                        npc3.lastPortalColorIndex = num84;
                        npc3.Teleport(newPos2, 4, extraInfo2);
                        npc3.velocity = vector2_10;
                        break;
                    case (byte)101:
                        if (Main.netMode == 2)
                            break;
                        NPC.ShieldStrengthTowerSolar = (int)this.reader.ReadUInt16();
                        NPC.ShieldStrengthTowerVortex = (int)this.reader.ReadUInt16();
                        NPC.ShieldStrengthTowerNebula = (int)this.reader.ReadUInt16();
                        NPC.ShieldStrengthTowerStardust = (int)this.reader.ReadUInt16();
                        if (NPC.ShieldStrengthTowerSolar < 0)
                            NPC.ShieldStrengthTowerSolar = 0;
                        if (NPC.ShieldStrengthTowerVortex < 0)
                            NPC.ShieldStrengthTowerVortex = 0;
                        if (NPC.ShieldStrengthTowerNebula < 0)
                            NPC.ShieldStrengthTowerNebula = 0;
                        if (NPC.ShieldStrengthTowerStardust < 0)
                            NPC.ShieldStrengthTowerStardust = 0;
                        if (NPC.ShieldStrengthTowerSolar > NPC.LunarShieldPowerExpert)
                            NPC.ShieldStrengthTowerSolar = NPC.LunarShieldPowerExpert;
                        if (NPC.ShieldStrengthTowerVortex > NPC.LunarShieldPowerExpert)
                            NPC.ShieldStrengthTowerVortex = NPC.LunarShieldPowerExpert;
                        if (NPC.ShieldStrengthTowerNebula > NPC.LunarShieldPowerExpert)
                            NPC.ShieldStrengthTowerNebula = NPC.LunarShieldPowerExpert;
                        if (NPC.ShieldStrengthTowerStardust <= NPC.LunarShieldPowerExpert)
                            break;
                        NPC.ShieldStrengthTowerStardust = NPC.LunarShieldPowerExpert;
                        break;
                    case (byte)102:
                        int index26 = (int)this.reader.ReadByte();
                        byte num85 = this.reader.ReadByte();
                        Vector2 Other = Utils.ReadVector2(this.reader);
                        if (Main.netMode == 2)
                        {
                            NetMessage.SendData(102, -1, -1, "", this.whoAmI, (float)num85, Other.X, Other.Y, 0, 0, 0);
                            break;
                        }
                        Player player16 = Main.player[index26];
                        for (int index5 = 0; index5 < (int)byte.MaxValue; ++index5)
                        {
                            Player player8 = Main.player[index5];
                            if (player8.active && !player8.dead && (player16.team == 0 || player16.team == player8.team) && (double)player8.Distance(Other) < 700.0)
                            {
                                Vector2 vector2_8 = player16.Center - player8.Center;
                                Vector2 vec = Vector2.Normalize(vector2_8);
                                if (!Utils.HasNaNs(vec))
                                {
                                    int Type3 = 90;
                                    float num19 = 0.0f;
                                    float num49 = 0.2094395f;
                                    Vector2 spinningpoint = new Vector2(0.0f, -8f);
                                    Vector2 vector2_11 = new Vector2(-3f);
                                    float num50 = 0.0f;
                                    float num51 = 0.005f;
                                    switch (num85)
                                    {
                                        case (byte)173:
                                            Type3 = 90;
                                            break;
                                        case (byte)176:
                                            Type3 = 88;
                                            break;
                                        case (byte)179:
                                            Type3 = 86;
                                            break;
                                    }
                                    for (int index6 = 0; (double)index6 < (double)vector2_8.Length() / 6.0; ++index6)
                                    {
                                        Vector2 Position = player8.Center + 6f * (float)index6 * vec + Utils.RotatedBy(spinningpoint, (double)num19, new Vector2()) + vector2_11;
                                        num19 += num49;
                                        int index27 = Dust.NewDust(Position, 6, 6, Type3, 0.0f, 0.0f, 100, new Color(), 1.5f);
                                        Main.dust[index27].noGravity = true;
                                        Main.dust[index27].velocity = Vector2.Zero;
                                        Main.dust[index27].fadeIn = (num50 += num51);
                                        Main.dust[index27].velocity += vec * 1.5f;
                                    }
                                }
                                player8.NebulaLevelup((int)num85);
                            }
                        }
                        break;
                    case (byte)103:
                        if (Main.netMode != 1)
                            break;
                        NPC.MoonLordCountdown = this.reader.ReadInt32();
                        break;
                    case (byte)104:
                        if (Main.netMode != 1 || Main.npcShop <= 0)
                            break;
                        Item[] objArray = Main.instance.shop[Main.npcShop].item;
                        int index28 = (int)this.reader.ReadByte();
                        int type8 = (int)this.reader.ReadInt16();
                        int num86 = (int)this.reader.ReadInt16();
                        int pre3 = (int)this.reader.ReadByte();
                        int num87 = this.reader.ReadInt32();
                        BitsByte bitsByte19 = (BitsByte)this.reader.ReadByte();
                        if (index28 >= objArray.Length)
                            break;
                        objArray[index28] = new Item();
                        objArray[index28].netDefaults(type8);
                        objArray[index28].stack = num86;
                        objArray[index28].Prefix(pre3);
                        objArray[index28].value = num87;
                        objArray[index28].buyOnce = bitsByte19[0];
                        break;
                }
            }
        }
    }