Terraria.Player.PlaceThing C# (CSharp) Method

PlaceThing() public method

public PlaceThing ( ) : void
return void
        public void PlaceThing()
        {
            if ((this.inventory[this.selectedItem].itemId == 1071 || this.inventory[this.selectedItem].itemId == 1543) && ((double)this.position.X / 16.0 - (double)Player.tileRangeX - (double)this.inventory[this.selectedItem].tileBoost - (double)this.blockRange <= (double)Player.tileTargetX && ((double)this.position.X + (double)this.width) / 16.0 + (double)Player.tileRangeX + (double)this.inventory[this.selectedItem].tileBoost - 1.0 + (double)this.blockRange >= (double)Player.tileTargetX) && ((double)this.position.Y / 16.0 - (double)Player.tileRangeY - (double)this.inventory[this.selectedItem].tileBoost - (double)this.blockRange <= (double)Player.tileTargetY && ((double)this.position.Y + (double)this.height) / 16.0 + (double)Player.tileRangeY + (double)this.inventory[this.selectedItem].tileBoost - 2.0 + (double)this.blockRange >= (double)Player.tileTargetY))
            {
                int x = Player.tileTargetX;
                int y = Player.tileTargetY;
                if (Main.tile[x, y] != null && Main.tile[x, y].active())
                {
                    this.showItemIcon = true;
                    if (this.itemTime == 0 && this.itemAnimation > 0 && this.controlUseItem)
                    {
                        int num1 = -1;
                        int num2 = -1;
                        for (int index = 0; index < 58; ++index)
                        {
                            if (this.inventory[index].stack > 0 && (int)this.inventory[index].paint > 0)
                            {
                                num1 = (int)this.inventory[index].paint;
                                num2 = index;
                                break;
                            }
                        }
                        if (num1 > 0 && (int)Main.tile[x, y].color() != num1 && WorldGen.paintTile(x, y, (byte)num1, true))
                        {
                            int index = num2;
                            --this.inventory[index].stack;
                            if (this.inventory[index].stack <= 0)
                                this.inventory[index].SetDefaults(0, false);
                            this.itemTime = this.inventory[this.selectedItem].useTime;
                        }
                    }
                }
            }
            if ((this.inventory[this.selectedItem].itemId == 1072 || this.inventory[this.selectedItem].itemId == 1544) && ((double)this.position.X / 16.0 - (double)Player.tileRangeX - (double)this.inventory[this.selectedItem].tileBoost - (double)this.blockRange <= (double)Player.tileTargetX && ((double)this.position.X + (double)this.width) / 16.0 + (double)Player.tileRangeX + (double)this.inventory[this.selectedItem].tileBoost - 1.0 + (double)this.blockRange >= (double)Player.tileTargetX) && ((double)this.position.Y / 16.0 - (double)Player.tileRangeY - (double)this.inventory[this.selectedItem].tileBoost - (double)this.blockRange <= (double)Player.tileTargetY && ((double)this.position.Y + (double)this.height) / 16.0 + (double)Player.tileRangeY + (double)this.inventory[this.selectedItem].tileBoost - 2.0 + (double)this.blockRange >= (double)Player.tileTargetY))
            {
                int x = Player.tileTargetX;
                int y = Player.tileTargetY;
                if (Main.tile[x, y] != null && (int)Main.tile[x, y].wall > 0)
                {
                    this.showItemIcon = true;
                    if (this.itemTime == 0 && this.itemAnimation > 0 && this.controlUseItem)
                    {
                        int num1 = -1;
                        int num2 = -1;
                        for (int index = 0; index < 58; ++index)
                        {
                            if (this.inventory[index].stack > 0 && (int)this.inventory[index].paint > 0)
                            {
                                num1 = (int)this.inventory[index].paint;
                                num2 = index;
                                break;
                            }
                        }
                        if (num1 > 0 && (int)Main.tile[x, y].wallColor() != num1 && WorldGen.paintWall(x, y, (byte)num1, true))
                        {
                            int index = num2;
                            --this.inventory[index].stack;
                            if (this.inventory[index].stack <= 0)
                                this.inventory[index].SetDefaults(0, false);
                            this.itemTime = this.inventory[this.selectedItem].useTime;
                        }
                    }
                }
            }
            if ((this.inventory[this.selectedItem].itemId == 1100 || this.inventory[this.selectedItem].itemId == 1545) && ((double)this.position.X / 16.0 - (double)Player.tileRangeX - (double)this.inventory[this.selectedItem].tileBoost - (double)this.blockRange <= (double)Player.tileTargetX && ((double)this.position.X + (double)this.width) / 16.0 + (double)Player.tileRangeX + (double)this.inventory[this.selectedItem].tileBoost - 1.0 + (double)this.blockRange >= (double)Player.tileTargetX) && ((double)this.position.Y / 16.0 - (double)Player.tileRangeY - (double)this.inventory[this.selectedItem].tileBoost - (double)this.blockRange <= (double)Player.tileTargetY && ((double)this.position.Y + (double)this.height) / 16.0 + (double)Player.tileRangeY + (double)this.inventory[this.selectedItem].tileBoost - 2.0 + (double)this.blockRange >= (double)Player.tileTargetY))
            {
                int x = Player.tileTargetX;
                int y = Player.tileTargetY;
                if (Main.tile[x, y] != null && ((int)Main.tile[x, y].wallColor() > 0 && (int)Main.tile[x, y].wall > 0 || (int)Main.tile[x, y].color() > 0 && Main.tile[x, y].active()))
                {
                    this.showItemIcon = true;
                    if (this.itemTime == 0 && this.itemAnimation > 0 && this.controlUseItem)
                    {
                        if ((int)Main.tile[x, y].color() > 0 && Main.tile[x, y].active() && WorldGen.paintTile(x, y, (byte)0, true))
                            this.itemTime = this.inventory[this.selectedItem].useTime;
                        else if ((int)Main.tile[x, y].wallColor() > 0 && (int)Main.tile[x, y].wall > 0 && WorldGen.paintWall(x, y, (byte)0, true))
                            this.itemTime = this.inventory[this.selectedItem].useTime;
                    }
                }
            }
            if ((this.inventory[this.selectedItem].itemId == 929 || this.inventory[this.selectedItem].itemId == 1338 || this.inventory[this.selectedItem].itemId == 1345) && ((double)this.position.X / 16.0 - (double)Player.tileRangeX - (double)this.inventory[this.selectedItem].tileBoost - (double)this.blockRange <= (double)Player.tileTargetX && ((double)this.position.X + (double)this.width) / 16.0 + (double)Player.tileRangeX + (double)this.inventory[this.selectedItem].tileBoost - 1.0 + (double)this.blockRange >= (double)Player.tileTargetX && ((double)this.position.Y / 16.0 - (double)Player.tileRangeY - (double)this.inventory[this.selectedItem].tileBoost - (double)this.blockRange <= (double)Player.tileTargetY && ((double)this.position.Y + (double)this.height) / 16.0 + (double)Player.tileRangeY + (double)this.inventory[this.selectedItem].tileBoost - 2.0 + (double)this.blockRange >= (double)Player.tileTargetY)))
            {
                int index1 = Player.tileTargetX;
                int index2 = Player.tileTargetY;
                if (Main.tile[index1, index2].active() && (int)Main.tile[index1, index2].type == 209)
                {
                    int num1 = 0;
                    if ((int)Main.tile[index1, index2].frameX < 72)
                    {
                        if (this.inventory[this.selectedItem].itemId == 929)
                            num1 = 1;
                    }
                    else if ((int)Main.tile[index1, index2].frameX < 144)
                    {
                        if (this.inventory[this.selectedItem].itemId == 1338)
                            num1 = 2;
                    }
                    else if ((int)Main.tile[index1, index2].frameX < 288 && this.inventory[this.selectedItem].itemId == 1345)
                        num1 = 3;
                    if (num1 > 0)
                    {
                        this.showItemIcon = true;
                        if (this.itemTime == 0 && this.itemAnimation > 0 && this.controlUseItem)
                        {
                            int num2 = (int)Main.tile[index1, index2].frameX / 18;
                            int num3 = 0;
                            int num4 = 0;
                            while (num2 >= 4)
                            {
                                ++num3;
                                num2 -= 4;
                            }
                            int num5 = index1 - num2;
                            int num6 = (int)Main.tile[index1, index2].frameY / 18;
                            while (num6 >= 3)
                            {
                                ++num4;
                                num6 -= 3;
                            }
                            int num7 = index2 - num6;
                            this.itemTime = this.inventory[this.selectedItem].useTime;
                            float num8 = 14f;
                            float num9 = 0.0f;
                            float num10 = 0.0f;
                            int Type = 162;
                            if (num1 == 2)
                                Type = 281;
                            if (num1 == 3)
                                Type = 178;
                            int Damage = this.inventory[this.selectedItem].damage;
                            int num11 = 8;
                            if (num4 == 0)
                            {
                                num9 = 10f;
                                num10 = 0.0f;
                            }
                            if (num4 == 1)
                            {
                                num9 = 7.5f;
                                num10 = -2.5f;
                            }
                            if (num4 == 2)
                            {
                                num9 = 5f;
                                num10 = -5f;
                            }
                            if (num4 == 3)
                            {
                                num9 = 2.75f;
                                num10 = -6f;
                            }
                            if (num4 == 4)
                            {
                                num9 = 0.0f;
                                num10 = -10f;
                            }
                            if (num4 == 5)
                            {
                                num9 = -2.75f;
                                num10 = -6f;
                            }
                            if (num4 == 6)
                            {
                                num9 = -5f;
                                num10 = -5f;
                            }
                            if (num4 == 7)
                            {
                                num9 = -7.5f;
                                num10 = -2.5f;
                            }
                            if (num4 == 8)
                            {
                                num9 = -10f;
                                num10 = 0.0f;
                            }
                            Vector2 vector2 = new Vector2((float)((num5 + 2) * 16), (float)((num7 + 2) * 16));
                            float num12 = num9;
                            float num13 = num10;
                            float num14 = (float)Math.Sqrt((double)num12 * (double)num12 + (double)num13 * (double)num13);
                            float num15 = num8 / num14;
                            float SpeedX = num12 * num15;
                            float SpeedY = num13 * num15;
                            Projectile.NewProjectile(vector2.X, vector2.Y, SpeedX, SpeedY, Type, Damage, (float)num11, Main.myPlayer, 0.0f, 0.0f);
                        }
                    }
                }
            }
            if (this.inventory[this.selectedItem].itemId >= 1874 && this.inventory[this.selectedItem].itemId <= 1905 && (Main.tile[Player.tileTargetX, Player.tileTargetY].active() && (int)Main.tile[Player.tileTargetX, Player.tileTargetY].type == 171) && ((double)this.position.X / 16.0 - (double)Player.tileRangeX - (double)this.inventory[this.selectedItem].tileBoost - (double)this.blockRange <= (double)Player.tileTargetX && ((double)this.position.X + (double)this.width) / 16.0 + (double)Player.tileRangeX + (double)this.inventory[this.selectedItem].tileBoost - 1.0 + (double)this.blockRange >= (double)Player.tileTargetX && ((double)this.position.Y / 16.0 - (double)Player.tileRangeY - (double)this.inventory[this.selectedItem].tileBoost - (double)this.blockRange <= (double)Player.tileTargetY && ((double)this.position.Y + (double)this.height) / 16.0 + (double)Player.tileRangeY + (double)this.inventory[this.selectedItem].tileBoost - 2.0 + (double)this.blockRange >= (double)Player.tileTargetY)) && (this.itemTime == 0 && this.itemAnimation > 0 && this.controlUseItem))
            {
                int num = this.inventory[this.selectedItem].itemId;
                if (num >= 1874 && num <= 1877)
                {
                    int style = num - 1873;
                    if (WorldGen.checkXmasTreeDrop(Player.tileTargetX, Player.tileTargetY, 0) != style)
                    {
                        this.itemTime = this.inventory[this.selectedItem].useTime;
                        WorldGen.dropXmasTree(Player.tileTargetX, Player.tileTargetY, 0);
                        WorldGen.setXmasTree(Player.tileTargetX, Player.tileTargetY, 0, style);
                        int tileX = Player.tileTargetX;
                        int tileY = Player.tileTargetY;
                        if ((int)Main.tile[Player.tileTargetX, Player.tileTargetY].frameX < 10)
                        {
                            tileX -= (int)Main.tile[Player.tileTargetX, Player.tileTargetY].frameX;
                            tileY -= (int)Main.tile[Player.tileTargetX, Player.tileTargetY].frameY;
                        }
                        NetMessage.SendTileSquare(-1, tileX, tileY, 1);
                    }
                }
                else if (num >= 1878 && num <= 1883)
                {
                    int style = num - 1877;
                    if (WorldGen.checkXmasTreeDrop(Player.tileTargetX, Player.tileTargetY, 1) != style)
                    {
                        this.itemTime = this.inventory[this.selectedItem].useTime;
                        WorldGen.dropXmasTree(Player.tileTargetX, Player.tileTargetY, 1);
                        WorldGen.setXmasTree(Player.tileTargetX, Player.tileTargetY, 1, style);
                        int tileX = Player.tileTargetX;
                        int tileY = Player.tileTargetY;
                        if ((int)Main.tile[Player.tileTargetX, Player.tileTargetY].frameX < 10)
                        {
                            tileX -= (int)Main.tile[Player.tileTargetX, Player.tileTargetY].frameX;
                            tileY -= (int)Main.tile[Player.tileTargetX, Player.tileTargetY].frameY;
                        }
                        NetMessage.SendTileSquare(-1, tileX, tileY, 1);
                    }
                }
                else if (num >= 1884 && num <= 1894)
                {
                    int style = num - 1883;
                    if (WorldGen.checkXmasTreeDrop(Player.tileTargetX, Player.tileTargetY, 2) != style)
                    {
                        this.itemTime = this.inventory[this.selectedItem].useTime;
                        WorldGen.dropXmasTree(Player.tileTargetX, Player.tileTargetY, 2);
                        WorldGen.setXmasTree(Player.tileTargetX, Player.tileTargetY, 2, style);
                        int tileX = Player.tileTargetX;
                        int tileY = Player.tileTargetY;
                        if ((int)Main.tile[Player.tileTargetX, Player.tileTargetY].frameX < 10)
                        {
                            tileX -= (int)Main.tile[Player.tileTargetX, Player.tileTargetY].frameX;
                            tileY -= (int)Main.tile[Player.tileTargetX, Player.tileTargetY].frameY;
                        }
                        NetMessage.SendTileSquare(-1, tileX, tileY, 1);
                    }
                }
                else if (num >= 1895 && num <= 1905)
                {
                    int style = num - 1894;
                    if (WorldGen.checkXmasTreeDrop(Player.tileTargetX, Player.tileTargetY, 3) != style)
                    {
                        this.itemTime = this.inventory[this.selectedItem].useTime;
                        WorldGen.dropXmasTree(Player.tileTargetX, Player.tileTargetY, 3);
                        WorldGen.setXmasTree(Player.tileTargetX, Player.tileTargetY, 3, style);
                        int tileX = Player.tileTargetX;
                        int tileY = Player.tileTargetY;
                        if ((int)Main.tile[Player.tileTargetX, Player.tileTargetY].frameX < 10)
                        {
                            tileX -= (int)Main.tile[Player.tileTargetX, Player.tileTargetY].frameX;
                            tileY -= (int)Main.tile[Player.tileTargetX, Player.tileTargetY].frameY;
                        }
                        NetMessage.SendTileSquare(-1, tileX, tileY, 1);
                    }
                }
            }
            if (ItemID.Sets.ExtractinatorMode[this.inventory[this.selectedItem].itemId] >= 0 && Main.tile[Player.tileTargetX, Player.tileTargetY].active() && (int)Main.tile[Player.tileTargetX, Player.tileTargetY].type == 219)
            {
                if ((double)this.position.X / 16.0 - (double)Player.tileRangeX - (double)this.inventory[this.selectedItem].tileBoost - (double)this.blockRange <= (double)Player.tileTargetX && ((double)this.position.X + (double)this.width) / 16.0 + (double)Player.tileRangeX + (double)this.inventory[this.selectedItem].tileBoost - 1.0 + (double)this.blockRange >= (double)Player.tileTargetX && ((double)this.position.Y / 16.0 - (double)Player.tileRangeY - (double)this.inventory[this.selectedItem].tileBoost - (double)this.blockRange <= (double)Player.tileTargetY && ((double)this.position.Y + (double)this.height) / 16.0 + (double)Player.tileRangeY + (double)this.inventory[this.selectedItem].tileBoost - 2.0 + (double)this.blockRange >= (double)Player.tileTargetY) && (this.itemTime == 0 && this.itemAnimation > 0 && this.controlUseItem))
                {
                    this.itemTime = this.inventory[this.selectedItem].useTime;
                    Main.PlaySound(7, -1, -1, 1);
                    Player.ExtractinatorUse(ItemID.Sets.ExtractinatorMode[this.inventory[this.selectedItem].itemId]);
                }
            }
            else if (this.inventory[this.selectedItem].createTile >= 0 && (double)this.position.X / 16.0 - (double)Player.tileRangeX - (double)this.inventory[this.selectedItem].tileBoost - (double)this.blockRange <= (double)Player.tileTargetX && (((double)this.position.X + (double)this.width) / 16.0 + (double)Player.tileRangeX + (double)this.inventory[this.selectedItem].tileBoost - 1.0 + (double)this.blockRange >= (double)Player.tileTargetX && (double)this.position.Y / 16.0 - (double)Player.tileRangeY - (double)this.inventory[this.selectedItem].tileBoost - (double)this.blockRange <= (double)Player.tileTargetY) && ((double)this.position.Y + (double)this.height) / 16.0 + (double)Player.tileRangeY + (double)this.inventory[this.selectedItem].tileBoost - 2.0 + (double)this.blockRange >= (double)Player.tileTargetY)
            {
                this.showItemIcon = true;
                bool flag1 = false;
                if ((int)Main.tile[Player.tileTargetX, Player.tileTargetY].liquid > 0 && Main.tile[Player.tileTargetX, Player.tileTargetY].lava())
                {
                    if (Main.tileSolid[this.inventory[this.selectedItem].createTile])
                        flag1 = true;
                    else if (!TileObjectData.CheckLiquidPlacement(this.inventory[this.selectedItem].createTile, this.inventory[this.selectedItem].placeStyle, Main.tile[Player.tileTargetX, Player.tileTargetY]))
                        flag1 = true;
                }
                bool flag2 = true;
                if (this.inventory[this.selectedItem].tileWand > 0)
                {
                    int num = this.inventory[this.selectedItem].tileWand;
                    flag2 = false;
                    for (int index = 0; index < 58; ++index)
                    {
                        if (num == this.inventory[index].itemId && this.inventory[index].stack > 0)
                        {
                            flag2 = true;
                            break;
                        }
                    }
                }
                if (Main.tileRope[this.inventory[this.selectedItem].createTile] && flag2 && (Main.tile[Player.tileTargetX, Player.tileTargetY].active() && Main.tileRope[(int)Main.tile[Player.tileTargetX, Player.tileTargetY].type]))
                {
                    int index1 = Player.tileTargetY;
                    int index2 = Player.tileTargetX;
                    int num = this.inventory[this.selectedItem].createTile;
                    while (Main.tile[index2, index1].active() && Main.tileRope[(int)Main.tile[index2, index1].type] && (index1 < Main.maxTilesX - 5 && Main.tile[index2, index1 + 2] != null) && !Main.tile[index2, index1 + 1].lava())
                    {
                        ++index1;
                        if (Main.tile[index2, index1] == null)
                        {
                            flag2 = false;
                            index1 = Player.tileTargetY;
                        }
                    }
                    if (!Main.tile[index2, index1].active())
                        Player.tileTargetY = index1;
                }
                if (flag2 && (!Main.tile[Player.tileTargetX, Player.tileTargetY].active() && !flag1 || Main.tileCut[(int)Main.tile[Player.tileTargetX, Player.tileTargetY].type] || ((int)Main.tile[Player.tileTargetX, Player.tileTargetY].type >= 373 && (int)Main.tile[Player.tileTargetX, Player.tileTargetY].type <= 375 || (this.inventory[this.selectedItem].createTile == 199 || this.inventory[this.selectedItem].createTile == 23)) || (this.inventory[this.selectedItem].createTile == 2 || this.inventory[this.selectedItem].createTile == 109 || (this.inventory[this.selectedItem].createTile == 60 || this.inventory[this.selectedItem].createTile == 70) || TileID.Sets.BreakableWhenPlacing[(int)Main.tile[Player.tileTargetX, Player.tileTargetY].type])) && (this.itemTime == 0 && this.itemAnimation > 0 && this.controlUseItem))
                {
                    bool flag3 = false;
                    bool flag4 = false;
                    TileObject objectData = new TileObject();
                    if (TileObjectData.CustomPlace(this.inventory[this.selectedItem].createTile, this.inventory[this.selectedItem].placeStyle) && this.inventory[this.selectedItem].createTile != 82)
                    {
                        flag4 = true;
                        flag3 = TileObject.CanPlace(Player.tileTargetX, Player.tileTargetY, (int)(ushort)this.inventory[this.selectedItem].createTile, this.inventory[this.selectedItem].placeStyle, this.direction, out objectData, false);
                    }
                    else
                    {
                        if (this.inventory[this.selectedItem].itemId == 213)
                        {
                            if ((int)Main.tile[Player.tileTargetX, Player.tileTargetY].type == 0 || (int)Main.tile[Player.tileTargetX, Player.tileTargetY].type == 1)
                                flag3 = true;
                        }
                        else if (this.inventory[this.selectedItem].createTile == 23 || this.inventory[this.selectedItem].createTile == 2 || (this.inventory[this.selectedItem].createTile == 109 || this.inventory[this.selectedItem].createTile == 199))
                        {
                            if (Main.tile[Player.tileTargetX, Player.tileTargetY].nactive() && (int)Main.tile[Player.tileTargetX, Player.tileTargetY].type == 0)
                                flag3 = true;
                        }
                        else if (this.inventory[this.selectedItem].createTile == 227)
                            flag3 = true;
                        else if (this.inventory[this.selectedItem].createTile >= 373 && this.inventory[this.selectedItem].createTile <= 375)
                        {
                            int index1 = Player.tileTargetX;
                            int index2 = Player.tileTargetY - 1;
                            if (Main.tile[index1, index2].nactive() && Main.tileSolid[(int)Main.tile[index1, index2].type] && !Main.tileSolidTop[(int)Main.tile[index1, index2].type])
                                flag3 = true;
                        }
                        else if (this.inventory[this.selectedItem].createTile == 60 || this.inventory[this.selectedItem].createTile == 70)
                        {
                            if (Main.tile[Player.tileTargetX, Player.tileTargetY].nactive() && (int)Main.tile[Player.tileTargetX, Player.tileTargetY].type == 59)
                                flag3 = true;
                        }
                        else if (this.inventory[this.selectedItem].createTile == 4 || this.inventory[this.selectedItem].createTile == 136)
                        {
                            if ((int)Main.tile[Player.tileTargetX, Player.tileTargetY].wall > 0)
                            {
                                flag3 = true;
                            }
                            else
                            {
                                if (!WorldGen.SolidTileNoAttach(Player.tileTargetX, Player.tileTargetY + 1) && !WorldGen.SolidTileNoAttach(Player.tileTargetX - 1, Player.tileTargetY) && !WorldGen.SolidTileNoAttach(Player.tileTargetX + 1, Player.tileTargetY))
                                {
                                    if (!WorldGen.SolidTileNoAttach(Player.tileTargetX, Player.tileTargetY + 1) && (Main.tile[Player.tileTargetX, Player.tileTargetY + 1].halfBrick() || (int)Main.tile[Player.tileTargetX, Player.tileTargetY + 1].slope() != 0))
                                    {
                                        if ((int)Main.tile[Player.tileTargetX, Player.tileTargetY + 1].type != 19)
                                        {
                                            WorldGen.SlopeTile(Player.tileTargetX, Player.tileTargetY + 1, 0);
                                            if (Main.netMode == 1)
                                                NetMessage.SendData(17, -1, -1, "", 14, (float)Player.tileTargetX, (float)(Player.tileTargetY + 1), 0.0f, 0, 0, 0);
                                        }
                                    }
                                    else if (!WorldGen.SolidTileNoAttach(Player.tileTargetX, Player.tileTargetY + 1) && !WorldGen.SolidTileNoAttach(Player.tileTargetX - 1, Player.tileTargetY) && (Main.tile[Player.tileTargetX - 1, Player.tileTargetY].halfBrick() || (int)Main.tile[Player.tileTargetX - 1, Player.tileTargetY].slope() != 0))
                                    {
                                        if ((int)Main.tile[Player.tileTargetX, Player.tileTargetY + 1].type != 19)
                                        {
                                            WorldGen.SlopeTile(Player.tileTargetX - 1, Player.tileTargetY, 0);
                                            if (Main.netMode == 1)
                                                NetMessage.SendData(17, -1, -1, "", 14, (float)(Player.tileTargetX - 1), (float)Player.tileTargetY, 0.0f, 0, 0, 0);
                                        }
                                    }
                                    else if (!WorldGen.SolidTileNoAttach(Player.tileTargetX, Player.tileTargetY + 1) && !WorldGen.SolidTileNoAttach(Player.tileTargetX - 1, Player.tileTargetY) && !WorldGen.SolidTileNoAttach(Player.tileTargetX + 1, Player.tileTargetY) && ((Main.tile[Player.tileTargetX + 1, Player.tileTargetY].halfBrick() || (int)Main.tile[Player.tileTargetX + 1, Player.tileTargetY].slope() != 0) && (int)Main.tile[Player.tileTargetX, Player.tileTargetY + 1].type != 19))
                                    {
                                        WorldGen.SlopeTile(Player.tileTargetX + 1, Player.tileTargetY, 0);
                                        if (Main.netMode == 1)
                                            NetMessage.SendData(17, -1, -1, "", 14, (float)(Player.tileTargetX + 1), (float)Player.tileTargetY, 0.0f, 0, 0, 0);
                                    }
                                }
                                int index1 = (int)Main.tile[Player.tileTargetX, Player.tileTargetY + 1].type;
                                if (Main.tile[Player.tileTargetX, Player.tileTargetY].halfBrick())
                                    index1 = -1;
                                int index2 = (int)Main.tile[Player.tileTargetX - 1, Player.tileTargetY].type;
                                int index3 = (int)Main.tile[Player.tileTargetX + 1, Player.tileTargetY].type;
                                int num1 = (int)Main.tile[Player.tileTargetX - 1, Player.tileTargetY - 1].type;
                                int num2 = (int)Main.tile[Player.tileTargetX + 1, Player.tileTargetY - 1].type;
                                int num3 = (int)Main.tile[Player.tileTargetX - 1, Player.tileTargetY - 1].type;
                                int num4 = (int)Main.tile[Player.tileTargetX + 1, Player.tileTargetY + 1].type;
                                if (!Main.tile[Player.tileTargetX, Player.tileTargetY + 1].nactive())
                                    index1 = -1;
                                if (!Main.tile[Player.tileTargetX - 1, Player.tileTargetY].nactive())
                                    index2 = -1;
                                if (!Main.tile[Player.tileTargetX + 1, Player.tileTargetY].nactive())
                                    index3 = -1;
                                if (!Main.tile[Player.tileTargetX - 1, Player.tileTargetY - 1].nactive())
                                    num1 = -1;
                                if (!Main.tile[Player.tileTargetX + 1, Player.tileTargetY - 1].nactive())
                                    num2 = -1;
                                if (!Main.tile[Player.tileTargetX - 1, Player.tileTargetY + 1].nactive())
                                    num3 = -1;
                                if (!Main.tile[Player.tileTargetX + 1, Player.tileTargetY + 1].nactive())
                                    num4 = -1;
                                if (index1 >= 0 && Main.tileSolid[index1] && (!Main.tileNoAttach[index1] || index1 == 19))
                                    flag3 = true;
                                else if (index2 >= 0 && Main.tileSolid[index2] && !Main.tileNoAttach[index2] || index2 == 5 && num1 == 5 && num3 == 5 || index2 == 124)
                                    flag3 = true;
                                else if (index3 >= 0 && Main.tileSolid[index3] && !Main.tileNoAttach[index3] || index3 == 5 && num2 == 5 && num4 == 5 || index3 == 124)
                                    flag3 = true;
                            }
                        }
                        else if (this.inventory[this.selectedItem].createTile == 78 || this.inventory[this.selectedItem].createTile == 98 || (this.inventory[this.selectedItem].createTile == 100 || this.inventory[this.selectedItem].createTile == 173) || (this.inventory[this.selectedItem].createTile == 174 || this.inventory[this.selectedItem].createTile == 324))
                        {
                            if (Main.tile[Player.tileTargetX, Player.tileTargetY + 1].nactive() && (Main.tileSolid[(int)Main.tile[Player.tileTargetX, Player.tileTargetY + 1].type] || Main.tileTable[(int)Main.tile[Player.tileTargetX, Player.tileTargetY + 1].type]))
                                flag3 = true;
                        }
                        else if (this.inventory[this.selectedItem].createTile == 13 || this.inventory[this.selectedItem].createTile == 29 || (this.inventory[this.selectedItem].createTile == 33 || this.inventory[this.selectedItem].createTile == 49) || (this.inventory[this.selectedItem].createTile == 50 || this.inventory[this.selectedItem].createTile == 103))
                        {
                            if (Main.tile[Player.tileTargetX, Player.tileTargetY + 1].nactive() && Main.tileTable[(int)Main.tile[Player.tileTargetX, Player.tileTargetY + 1].type])
                                flag3 = true;
                        }
                        else if (this.inventory[this.selectedItem].createTile == 275 || this.inventory[this.selectedItem].createTile == 276 || this.inventory[this.selectedItem].createTile == 277)
                            flag3 = true;
                        else if (this.inventory[this.selectedItem].createTile == 51 || this.inventory[this.selectedItem].createTile == 330 || (this.inventory[this.selectedItem].createTile == 331 || this.inventory[this.selectedItem].createTile == 332) || (this.inventory[this.selectedItem].createTile == 333 || this.inventory[this.selectedItem].createTile == 336 || (this.inventory[this.selectedItem].createTile == 340 || this.inventory[this.selectedItem].createTile == 342)) || (this.inventory[this.selectedItem].createTile == 341 || this.inventory[this.selectedItem].createTile == 343 || (this.inventory[this.selectedItem].createTile == 344 || this.inventory[this.selectedItem].createTile == 379) || this.inventory[this.selectedItem].createTile == 351))
                        {
                            if (Main.tile[Player.tileTargetX + 1, Player.tileTargetY].active() || (int)Main.tile[Player.tileTargetX + 1, Player.tileTargetY].wall > 0 || (Main.tile[Player.tileTargetX - 1, Player.tileTargetY].active() || (int)Main.tile[Player.tileTargetX - 1, Player.tileTargetY].wall > 0) || (Main.tile[Player.tileTargetX, Player.tileTargetY + 1].active() || (int)Main.tile[Player.tileTargetX, Player.tileTargetY + 1].wall > 0 || (Main.tile[Player.tileTargetX, Player.tileTargetY - 1].active() || (int)Main.tile[Player.tileTargetX, Player.tileTargetY - 1].wall > 0)))
                                flag3 = true;
                        }
                        else if (this.inventory[this.selectedItem].createTile == 314)
                        {
                            for (int index1 = Player.tileTargetX - 1; index1 <= Player.tileTargetX + 1; ++index1)
                            {
                                for (int index2 = Player.tileTargetY - 1; index2 <= Player.tileTargetY + 1; ++index2)
                                {
                                    Tile tile = Main.tile[index1, index2];
                                    if (tile.active() || (int)tile.wall > 0)
                                    {
                                        flag3 = true;
                                        break;
                                    }
                                }
                            }
                        }
                        else
                        {
                            Tile tile1 = Main.tile[Player.tileTargetX - 1, Player.tileTargetY];
                            Tile tile2 = Main.tile[Player.tileTargetX + 1, Player.tileTargetY];
                            Tile tile3 = Main.tile[Player.tileTargetX, Player.tileTargetY - 1];
                            Tile tile4 = Main.tile[Player.tileTargetX, Player.tileTargetY + 1];
                            if (tile2.active() && (Main.tileSolid[(int)tile2.type] || Main.tileRope[(int)tile2.type] || (int)tile2.type == 314) || (int)tile2.wall > 0 || (tile1.active() && (Main.tileSolid[(int)tile1.type] || Main.tileRope[(int)tile1.type] || (int)tile1.type == 314) || (int)tile1.wall > 0) || (tile4.active() && (Main.tileSolid[(int)tile4.type] || (int)tile4.type == 124 || (Main.tileRope[(int)tile4.type] || (int)tile4.type == 314)) || (int)tile4.wall > 0 || (tile3.active() && (Main.tileSolid[(int)tile3.type] || (int)tile3.type == 124 || (Main.tileRope[(int)tile3.type] || (int)tile3.type == 314)) || (int)tile3.wall > 0)))
                                flag3 = true;
                        }
                        if (this.inventory[this.selectedItem].itemId == 213 && Main.tile[Player.tileTargetX, Player.tileTargetY].active())
                        {
                            int index1 = Player.tileTargetX;
                            int index2 = Player.tileTargetY;
                            if ((int)Main.tile[index1, index2].type == 3 || (int)Main.tile[index1, index2].type == 73 || (int)Main.tile[index1, index2].type == 84)
                            {
                                WorldGen.KillTile(Player.tileTargetX, Player.tileTargetY, false, false, false);
                                if (!Main.tile[Player.tileTargetX, Player.tileTargetY].active() && Main.netMode == 1)
                                    NetMessage.SendData(17, -1, -1, "", 0, (float)Player.tileTargetX, (float)Player.tileTargetY, 0.0f, 0, 0, 0);
                            }
                            else if ((int)Main.tile[index1, index2].type == 83)
                            {
                                bool flag5 = false;
                                int num = (int)Main.tile[index1, index2].frameX / 18;
                                if (num == 0 && Main.dayTime)
                                    flag5 = true;
                                if (num == 1 && !Main.dayTime)
                                    flag5 = true;
                                if (num == 3 && !Main.dayTime && (Main.bloodMoon || Main.moonPhase == 0))
                                    flag5 = true;
                                if (num == 4 && (Main.raining || (double)Main.cloudAlpha > 0.0))
                                    flag5 = true;
                                if (num == 5 && !Main.raining && (Main.dayTime && Main.time > 40500.0))
                                    flag5 = true;
                                if (flag5)
                                {
                                    WorldGen.KillTile(Player.tileTargetX, Player.tileTargetY, false, false, false);
                                    NetMessage.SendData(17, -1, -1, "", 0, (float)Player.tileTargetX, (float)Player.tileTargetY, 0.0f, 0, 0, 0);
                                }
                            }
                        }
                        if (Main.tileAlch[this.inventory[this.selectedItem].createTile])
                            flag3 = true;
                        if (Main.tile[Player.tileTargetX, Player.tileTargetY].active() && (Main.tileCut[(int)Main.tile[Player.tileTargetX, Player.tileTargetY].type] || TileID.Sets.BreakableWhenPlacing[(int)Main.tile[Player.tileTargetX, Player.tileTargetY].type] || (int)Main.tile[Player.tileTargetX, Player.tileTargetY].type >= 373 && (int)Main.tile[Player.tileTargetX, Player.tileTargetY].type <= 375))
                        {
                            if ((int)Main.tile[Player.tileTargetX, Player.tileTargetY].type != this.inventory[this.selectedItem].createTile)
                            {
                                if ((int)Main.tile[Player.tileTargetX, Player.tileTargetY + 1].type != 78 && (int)Main.tile[Player.tileTargetX, Player.tileTargetY + 1].type != 380 || ((int)Main.tile[Player.tileTargetX, Player.tileTargetY].type == 3 || (int)Main.tile[Player.tileTargetX, Player.tileTargetY].type == 73) && Main.tileAlch[this.inventory[this.selectedItem].createTile])
                                {
                                    WorldGen.KillTile(Player.tileTargetX, Player.tileTargetY, false, false, false);
                                    if (!Main.tile[Player.tileTargetX, Player.tileTargetY].active() && Main.netMode == 1)
                                        NetMessage.SendData(17, -1, -1, "", 4, (float)Player.tileTargetX, (float)Player.tileTargetY, 0.0f, 0, 0, 0);
                                }
                                else
                                    flag3 = false;
                            }
                            else
                                flag3 = false;
                        }
                        if (!flag3 && this.inventory[this.selectedItem].createTile == 19)
                        {
                            for (int index1 = Player.tileTargetX - 1; index1 <= Player.tileTargetX + 1; ++index1)
                            {
                                for (int index2 = Player.tileTargetY - 1; index2 <= Player.tileTargetY + 1; ++index2)
                                {
                                    if (Main.tile[index1, index2].active())
                                    {
                                        flag3 = true;
                                        break;
                                    }
                                }
                            }
                        }
                    }
                    if (flag3)
                    {
                        int num1 = this.inventory[this.selectedItem].placeStyle;
                        if (!flag4)
                        {
                            if (this.inventory[this.selectedItem].createTile == 36)
                                num1 = Main.rand.Next(7);
                            if (this.inventory[this.selectedItem].createTile == 212 && this.direction > 0)
                                num1 = 1;
                            if (this.inventory[this.selectedItem].createTile == 141)
                                num1 = Main.rand.Next(2);
                            if (this.inventory[this.selectedItem].createTile == 128 || this.inventory[this.selectedItem].createTile == 269 || this.inventory[this.selectedItem].createTile == 334)
                                num1 = this.direction >= 0 ? 1 : -1;
                            if (this.inventory[this.selectedItem].createTile == 241 && this.inventory[this.selectedItem].placeStyle == 0)
                                num1 = Main.rand.Next(0, 9);
                            if (this.inventory[this.selectedItem].createTile == 35 && this.inventory[this.selectedItem].placeStyle == 0)
                                num1 = Main.rand.Next(9);
                        }
                        if (this.inventory[this.selectedItem].createTile == 314 && num1 == 2 && this.direction == 1)
                            ++num1;
                        int[,] numArray = new int[11, 11];
                        if (this.autoPaint)
                        {
                            for (int index1 = 0; index1 < 11; ++index1)
                            {
                                for (int index2 = 0; index2 < 11; ++index2)
                                {
                                    int index3 = Player.tileTargetX - 5 + index1;
                                    int index4 = Player.tileTargetY - 5 + index2;
                                    numArray[index1, index2] = !Main.tile[index3, index4].active() ? -1 : (int)Main.tile[index3, index4].type;
                                }
                            }
                        }
                        bool forced = false;
                        bool flag5;
                        if (flag4)
                        {
                            flag5 = TileObject.Place(objectData);
                            WorldGen.SquareTileFrame(Player.tileTargetX, Player.tileTargetY, true);
                            Main.PlaySound(0, Player.tileTargetX * 16, Player.tileTargetY * 16, 1);
                        }
                        else
                            flag5 = WorldGen.PlaceTile(Player.tileTargetX, Player.tileTargetY, this.inventory[this.selectedItem].createTile, false, forced, this.whoAmI, num1);
                        if (this.inventory[this.selectedItem].itemId == 213 && !flag5 && ((int)Main.tile[Player.tileTargetX, Player.tileTargetY].type == 1 && Main.tile[Player.tileTargetX, Player.tileTargetY].active()))
                        {
                            int num2 = 0;
                            int num3 = 0;
                            Point point = Utils.ToTileCoordinates(this.Center);
                            Dictionary<ushort, int> resultsOutput = new Dictionary<ushort, int>();
                            WorldUtils.Gen(new Point(point.X - 25, point.Y - 25), (GenShape)new Shapes.Rectangle(50, 50), (GenAction)new Actions.TileScanner(new ushort[6]
              {
                (ushort) 182,
                (ushort) 180,
                (ushort) 179,
                (ushort) 183,
                (ushort) 181,
                (ushort) 381
              }).Output(resultsOutput));
                            foreach (KeyValuePair<ushort, int> keyValuePair in resultsOutput)
                            {
                                if (keyValuePair.Value > num3)
                                {
                                    num3 = keyValuePair.Value;
                                    num2 = (int)keyValuePair.Key;
                                }
                            }
                            if (num3 == 0)
                                num2 = Utils.SelectRandom<int>(Main.rand, 182, 180, 179, 183, 181);
                            if (num2 != 0)
                            {
                                Main.tile[Player.tileTargetX, Player.tileTargetY].type = (ushort)num2;
                                WorldGen.SquareTileFrame(Player.tileTargetX, Player.tileTargetY, true);
                                NetMessage.SendTileSquare(-1, Player.tileTargetX, Player.tileTargetY, 1);
                                flag5 = true;
                            }
                        }
                        if (flag5)
                        {
                            this.itemTime = (int)((double)this.inventory[this.selectedItem].useTime * (double)this.tileSpeed);
                            if (flag4)
                            {
                                TileObjectData.CallPostPlacementPlayerHook(Player.tileTargetX, Player.tileTargetY, this.inventory[this.selectedItem].createTile, num1, this.direction, objectData);
                                if (Main.netMode == 1 && !Main.tileContainer[this.inventory[this.selectedItem].createTile])
                                    NetMessage.SendObjectPlacment(-1, Player.tileTargetX, Player.tileTargetY, objectData.type, objectData.style, objectData.alternate, objectData.random, this.direction);
                            }
                            else
                            {
                                NetMessage.SendData(17, -1, -1, "", 1, (float)Player.tileTargetX, (float)Player.tileTargetY, (float)this.inventory[this.selectedItem].createTile, num1, 0, 0);
                                if (this.inventory[this.selectedItem].createTile == 15)
                                {
                                    if (this.direction == 1)
                                    {
                                        Main.tile[Player.tileTargetX, Player.tileTargetY].frameX += (short)18;
                                        Main.tile[Player.tileTargetX, Player.tileTargetY - 1].frameX += (short)18;
                                    }
                                    if (Main.netMode == 1)
                                        NetMessage.SendTileSquare(-1, Player.tileTargetX - 1, Player.tileTargetY - 1, 3);
                                }
                                else if ((this.inventory[this.selectedItem].createTile == 79 || this.inventory[this.selectedItem].createTile == 90) && Main.netMode == 1)
                                    NetMessage.SendTileSquare(-1, Player.tileTargetX, Player.tileTargetY, 5);
                            }
                            if (this.inventory[this.selectedItem].createTile == 137)
                            {
                                if (this.direction == 1)
                                    Main.tile[Player.tileTargetX, Player.tileTargetY].frameX += (short)18;
                                if (Main.netMode == 1)
                                    NetMessage.SendTileSquare(-1, Player.tileTargetX, Player.tileTargetY, 1);
                            }
                            if (this.inventory[this.selectedItem].createTile == 19 && Main.smartDigEnabled)
                            {
                                int index1 = Player.tileTargetX;
                                int index2 = Player.tileTargetY;
                                int slope1 = -1;
                                int num2 = 0;
                                int num3 = 0;
                                bool flag6 = true;
                                for (int index3 = -1; index3 < 2; ++index3)
                                {
                                    for (int index4 = -1; index4 < 2; ++index4)
                                    {
                                        if ((index3 != 0 || index4 != 0) && (int)Main.tile[index1 + index3, index2 + index4].type == 19)
                                            flag6 = false;
                                    }
                                }
                                if (!flag6)
                                {
                                    Tile tile1 = Main.tile[index1 - 1, index2 - 1];
                                    if (tile1.active() && (int)tile1.type == 19 && (int)tile1.slope() != 2)
                                        ++num2;
                                    Tile tile2 = Main.tile[index1 - 1, index2 + 1];
                                    if (tile2.active() && (int)tile2.type == 19 && (int)tile2.slope() != 1)
                                        ++num3;
                                    Tile tile3 = Main.tile[index1 + 1, index2 - 1];
                                    if (tile3.active() && (int)tile3.type == 19 && (int)tile3.slope() != 1)
                                        ++num3;
                                    Tile tile4 = Main.tile[index1 + 1, index2 + 1];
                                    if (tile4.active() && (int)tile4.type == 19 && (int)tile4.slope() != 2)
                                        ++num2;
                                    Tile testTile1 = Main.tile[index1 - 1, index2];
                                    if (WorldGen.SolidTile(testTile1))
                                    {
                                        ++num2;
                                        if ((int)testTile1.type == 19 && (int)testTile1.slope() == 0)
                                            ++num2;
                                    }
                                    Tile testTile2 = Main.tile[index1 + 1, index2];
                                    if (WorldGen.SolidTile(testTile2))
                                    {
                                        ++num3;
                                        if ((int)testTile2.type == 19 && (int)testTile2.slope() == 0)
                                            ++num3;
                                    }
                                    if (num2 > num3)
                                        slope1 = 1;
                                    else if (num3 > num2)
                                        slope1 = 2;
                                    Tile tile5 = Main.tile[index1 - 1, index2];
                                    if (tile5.active() && (int)tile5.type == 19)
                                        slope1 = 0;
                                    Tile tile6 = Main.tile[index1 + 1, index2];
                                    if (tile6.active() && (int)tile6.type == 19)
                                        slope1 = 0;
                                    if (slope1 != -1)
                                    {
                                        WorldGen.SlopeTile(index1, index2, slope1);
                                        int num4 = (int)Main.tile[index1, index2].slope();
                                        if (Main.netMode == 1)
                                            NetMessage.SendData(17, -1, -1, "", 14, (float)Player.tileTargetX, (float)Player.tileTargetY, (float)num4, 0, 0, 0);
                                        int num5;
                                        int num6;
                                        if (slope1 == 1)
                                        {
                                            num5 = -1;
                                            num6 = -1;
                                        }
                                        else
                                        {
                                            num5 = 1;
                                            num6 = -1;
                                        }
                                        Tile tile7 = Main.tile[index1 + num5, index2 + num6];
                                        if (tile7.active() && (int)tile7.type == 19 && (int)tile7.slope() == 0 && (!Main.tile[index1 + num5 + num5, index2 + num6].active() || (int)Main.tile[index1 + num5 + num5, index2 + num6].type != 19 || !Main.tile[index1 + num5 + num5, index2 + num6].halfBrick()))
                                        {
                                            WorldGen.SlopeTile(index1 + num5, index2 + num6, slope1);
                                            int num7 = (int)tile7.slope();
                                            if (Main.netMode == 1)
                                                NetMessage.SendData(17, -1, -1, "", 14, (float)(index1 + num5), (float)(index2 + num6), (float)num7, 0, 0, 0);
                                        }
                                        int num8;
                                        int num9;
                                        if (slope1 == 1)
                                        {
                                            num8 = 1;
                                            num9 = 1;
                                        }
                                        else
                                        {
                                            num8 = -1;
                                            num9 = 1;
                                        }
                                        Tile tile8 = Main.tile[index1 + num8, index2 + num9];
                                        if (tile8.active() && (int)tile8.type == 19 && ((int)tile8.slope() == 0 && WorldGen.PlatformProperSides(index1 + num8, index2 + num9, true) <= 0))
                                        {
                                            WorldGen.SlopeTile(index1 + num8, index2 + num9, slope1);
                                            int num7 = (int)tile8.slope();
                                            if (Main.netMode == 1)
                                                NetMessage.SendData(17, -1, -1, "", 14, (float)(index1 + num8), (float)(index2 + num9), (float)num7, 0, 0, 0);
                                        }
                                    }
                                    else
                                    {
                                        int num4 = -1;
                                        Tile tile7 = Main.tile[index1 + num4, index2];
                                        if (tile7.active() && (int)tile7.type == 19 && (int)tile7.slope() != 0)
                                        {
                                            int num5 = Utils.ToDirectionInt((int)tile7.slope() == 1) * num4;
                                            int slope2 = num5 == -1 ? 0 : (int)tile7.slope();
                                            bool flag7 = true;
                                            if (Main.tile[index1 + num4 * 2, index2 + num5].active() && (int)Main.tile[index1 + num4 * 2, index2].type == 19 && slope2 == (int)Main.tile[index1 + num4 * 2, index2 + num5].slope())
                                                flag7 = false;
                                            if (Main.tile[index1, index2 - num5].active() && (int)Main.tile[index1, index2 - num5].type == 19 && (int)tile7.slope() == (int)Main.tile[index1, index2 - num5].slope())
                                                flag7 = false;
                                            if (flag7)
                                            {
                                                WorldGen.SlopeTile(index1 + num4, index2, slope2);
                                                int num6 = (int)tile7.slope();
                                                if (Main.netMode == 1)
                                                    NetMessage.SendData(17, -1, -1, "", 14, (float)(index1 + num4), (float)index2, (float)num6, 0, 0, 0);
                                            }
                                        }
                                        int num7 = 1;
                                        int num8 = 0;
                                        Tile tile8 = Main.tile[index1 + num7, index2 + num8];
                                        if (tile8.active() && (int)tile8.type == 19 && (int)tile8.slope() != 0)
                                        {
                                            int num5 = Utils.ToDirectionInt((int)tile8.slope() == 1) * num7;
                                            int slope2 = num5 == -1 ? 0 : (int)tile8.slope();
                                            bool flag7 = true;
                                            if (Main.tile[index1 + num7 * 2, index2 + num5].active() && (int)Main.tile[index1 + num7 * 2, index2].type == 19 && slope2 == (int)Main.tile[index1 + num7 * 2, index2 + num5].slope())
                                                flag7 = false;
                                            if (Main.tile[index1, index2 - num5].active() && (int)Main.tile[index1, index2 - num5].type == 19 && (int)tile8.slope() == (int)Main.tile[index1, index2 - num5].slope())
                                                flag7 = false;
                                            if (flag7)
                                            {
                                                WorldGen.SlopeTile(index1 + num7, index2, slope2);
                                                int num6 = (int)tile8.slope();
                                                if (Main.netMode == 1)
                                                    NetMessage.SendData(17, -1, -1, "", 14, (float)(index1 + num7), (float)index2, (float)num6, 0, 0, 0);
                                            }
                                        }
                                        if (num2 == num3 && WorldGen.PlatformProperSides(index1, index2, false) == 0)
                                        {
                                            Tile tile9 = Main.tile[index1, index2 + 1];
                                            if (tile9.active() && !tile9.halfBrick() && ((int)tile9.slope() == 0 && Main.tileSolid[(int)tile9.type]))
                                            {
                                                int slope2 = this.direction == 1 ? 2 : 1;
                                                WorldGen.SlopeTile(index1, index2, slope2);
                                                int num5 = (int)Main.tile[index1, index2].slope();
                                                if (Main.netMode == 1)
                                                    NetMessage.SendData(17, -1, -1, "", 14, (float)Player.tileTargetX, (float)Player.tileTargetY, (float)num5, 0, 0, 0);
                                            }
                                        }
                                    }
                                }
                            }
                            if (Main.tileSolid[this.inventory[this.selectedItem].createTile] && this.inventory[this.selectedItem].createTile != 19)
                            {
                                int i1 = Player.tileTargetX;
                                int j1 = Player.tileTargetY + 1;
                                if (Main.tile[i1, j1] != null && (int)Main.tile[i1, j1].type != 19 && (Main.tile[i1, j1].topSlope() || Main.tile[i1, j1].halfBrick()))
                                {
                                    WorldGen.SlopeTile(i1, j1, 0);
                                    if (Main.netMode == 1)
                                        NetMessage.SendData(17, -1, -1, "", 14, (float)i1, (float)j1, 0.0f, 0, 0, 0);
                                }
                                int i2 = Player.tileTargetX;
                                int j2 = Player.tileTargetY - 1;
                                if (Main.tile[i2, j2] != null && (int)Main.tile[i2, j2].type != 19 && Main.tile[i2, j2].bottomSlope())
                                {
                                    WorldGen.SlopeTile(i2, j2, 0);
                                    if (Main.netMode == 1)
                                        NetMessage.SendData(17, -1, -1, "", 14, (float)i2, (float)j2, 0.0f, 0, 0, 0);
                                }
                            }
                            if (Main.tileSolid[this.inventory[this.selectedItem].createTile])
                            {
                                for (int i1 = Player.tileTargetX - 1; i1 <= Player.tileTargetX + 1; ++i1)
                                {
                                    for (int j1 = Player.tileTargetY - 1; j1 <= Player.tileTargetY + 1; ++j1)
                                    {
                                        if (Main.tile[i1, j1].active() && this.inventory[this.selectedItem].createTile != (int)Main.tile[i1, j1].type && ((int)Main.tile[i1, j1].type == 2 || (int)Main.tile[i1, j1].type == 23 || ((int)Main.tile[i1, j1].type == 60 || (int)Main.tile[i1, j1].type == 70) || ((int)Main.tile[i1, j1].type == 109 || (int)Main.tile[i1, j1].type == 199)))
                                        {
                                            bool flag6 = true;
                                            for (int i2 = i1 - 1; i2 <= i1 + 1; ++i2)
                                            {
                                                for (int j2 = j1 - 1; j2 <= j1 + 1; ++j2)
                                                {
                                                    if (!WorldGen.SolidTile(i2, j2))
                                                        flag6 = false;
                                                }
                                            }
                                            if (flag6)
                                            {
                                                WorldGen.KillTile(i1, j1, true, false, false);
                                                if (Main.netMode == 1)
                                                    NetMessage.SendData(17, -1, -1, "", 0, (float)i1, (float)j1, 1f, 0, 0, 0);
                                            }
                                        }
                                    }
                                }
                            }
                            if (this.autoPaint)
                            {
                                for (int index1 = 0; index1 < 11; ++index1)
                                {
                                    for (int index2 = 0; index2 < 11; ++index2)
                                    {
                                        int x = Player.tileTargetX - 5 + index1;
                                        int y = Player.tileTargetY - 5 + index2;
                                        if ((Main.tile[x, y].active() || numArray[index1, index2] != -1) && (!Main.tile[x, y].active() || numArray[index1, index2] != (int)Main.tile[x, y].type))
                                        {
                                            int num2 = -1;
                                            int num3 = -1;
                                            for (int index3 = 0; index3 < 58; ++index3)
                                            {
                                                if (this.inventory[index3].stack > 0 && (int)this.inventory[index3].paint > 0)
                                                {
                                                    num2 = (int)this.inventory[index3].paint;
                                                    num3 = index3;
                                                    break;
                                                }
                                            }
                                            if (num2 > 0 && (int)Main.tile[x, y].color() != num2 && WorldGen.paintTile(x, y, (byte)num2, true))
                                            {
                                                int index3 = num3;
                                                --this.inventory[index3].stack;
                                                if (this.inventory[index3].stack <= 0)
                                                    this.inventory[index3].SetDefaults(0, false);
                                                this.itemTime = (int)((double)this.inventory[this.selectedItem].useTime * (double)this.tileSpeed);
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
            if (this.inventory[this.selectedItem].createWall < 0 || (double)this.position.X / 16.0 - (double)Player.tileRangeX - (double)this.inventory[this.selectedItem].tileBoost > (double)Player.tileTargetX || (((double)this.position.X + (double)this.width) / 16.0 + (double)Player.tileRangeX + (double)this.inventory[this.selectedItem].tileBoost - 1.0 < (double)Player.tileTargetX || (double)this.position.Y / 16.0 - (double)Player.tileRangeY - (double)this.inventory[this.selectedItem].tileBoost > (double)Player.tileTargetY) || ((double)this.position.Y + (double)this.height) / 16.0 + (double)Player.tileRangeY + (double)this.inventory[this.selectedItem].tileBoost - 2.0 < (double)Player.tileTargetY)
                return;
            this.showItemIcon = true;
            if (this.itemTime != 0 || this.itemAnimation <= 0 || !this.controlUseItem || !Main.tile[Player.tileTargetX + 1, Player.tileTargetY].active() && (int)Main.tile[Player.tileTargetX + 1, Player.tileTargetY].wall <= 0 && (!Main.tile[Player.tileTargetX - 1, Player.tileTargetY].active() && (int)Main.tile[Player.tileTargetX - 1, Player.tileTargetY].wall <= 0) && (!Main.tile[Player.tileTargetX, Player.tileTargetY + 1].active() && (int)Main.tile[Player.tileTargetX, Player.tileTargetY + 1].wall <= 0 && (!Main.tile[Player.tileTargetX, Player.tileTargetY - 1].active() && (int)Main.tile[Player.tileTargetX, Player.tileTargetY - 1].wall <= 0)) || (int)Main.tile[Player.tileTargetX, Player.tileTargetY].wall == this.inventory[this.selectedItem].createWall)
                return;
            if (Player.SmartCursorSettings.SmartWallReplacement && (int)Main.tile[Player.tileTargetX, Player.tileTargetY].wall != 0 && WorldGen.NearFriendlyWall(Player.tileTargetX, Player.tileTargetY))
            {
                WorldGen.KillWall(Player.tileTargetX, Player.tileTargetY, false);
                if ((int)Main.tile[Player.tileTargetX, Player.tileTargetY].wall == 0 && Main.netMode == 1)
                    NetMessage.SendData(17, -1, -1, "", 2, (float)Player.tileTargetX, (float)Player.tileTargetY, 0.0f, 0, 0, 0);
                if (this.inventory[this.selectedItem].consumable)
                    ++this.inventory[this.selectedItem].stack;
                this.itemTime = (int)((double)this.inventory[this.selectedItem].useTime * (double)this.wallSpeed);
            }
            else
            {
                WorldGen.PlaceWall(Player.tileTargetX, Player.tileTargetY, this.inventory[this.selectedItem].createWall, false);
                if ((int)Main.tile[Player.tileTargetX, Player.tileTargetY].wall != this.inventory[this.selectedItem].createWall)
                    return;
                this.itemTime = (int)((double)this.inventory[this.selectedItem].useTime * (double)this.wallSpeed);
                if (Main.netMode == 1)
                    NetMessage.SendData(17, -1, -1, "", 3, (float)Player.tileTargetX, (float)Player.tileTargetY, (float)this.inventory[this.selectedItem].createWall, 0, 0, 0);
                if (this.inventory[this.selectedItem].stack > 1)
                {
                    int type = this.inventory[this.selectedItem].createWall;
                    for (int index1 = 0; index1 < 4; ++index1)
                    {
                        int i = Player.tileTargetX;
                        int j = Player.tileTargetY;
                        if (index1 == 0)
                            --i;
                        if (index1 == 1)
                            ++i;
                        if (index1 == 2)
                            --j;
                        if (index1 == 3)
                            ++j;
                        if ((int)Main.tile[i, j].wall == 0)
                        {
                            int num1 = 0;
                            for (int index2 = 0; index2 < 4; ++index2)
                            {
                                int index3 = i;
                                int index4 = j;
                                if (index2 == 0)
                                    --index3;
                                if (index2 == 1)
                                    ++index3;
                                if (index2 == 2)
                                    --index4;
                                if (index2 == 3)
                                    ++index4;
                                if ((int)Main.tile[index3, index4].wall == type)
                                    ++num1;
                            }
                            if (num1 == 4)
                            {
                                WorldGen.PlaceWall(i, j, type, false);
                                if ((int)Main.tile[i, j].wall == type)
                                {
                                    --this.inventory[this.selectedItem].stack;
                                    if (this.inventory[this.selectedItem].stack == 0)
                                        this.inventory[this.selectedItem].SetDefaults(0, false);
                                    if (Main.netMode == 1)
                                        NetMessage.SendData(17, -1, -1, "", 3, (float)i, (float)j, (float)type, 0, 0, 0);
                                    if (this.autoPaint)
                                    {
                                        int x = i;
                                        int y = j;
                                        int num2 = -1;
                                        int num3 = -1;
                                        for (int index2 = 0; index2 < 58; ++index2)
                                        {
                                            if (this.inventory[index2].stack > 0 && (int)this.inventory[index2].paint > 0)
                                            {
                                                num2 = (int)this.inventory[index2].paint;
                                                num3 = index2;
                                                break;
                                            }
                                        }
                                        if (num2 > 0 && (int)Main.tile[x, y].wallColor() != num2 && WorldGen.paintWall(x, y, (byte)num2, true))
                                        {
                                            int index2 = num3;
                                            --this.inventory[index2].stack;
                                            if (this.inventory[index2].stack <= 0)
                                                this.inventory[index2].SetDefaults(0, false);
                                            this.itemTime = (int)((double)this.inventory[this.selectedItem].useTime * (double)this.wallSpeed);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                if (!this.autoPaint)
                    return;
                int x1 = Player.tileTargetX;
                int y1 = Player.tileTargetY;
                int num4 = -1;
                int num5 = -1;
                for (int index = 0; index < 58; ++index)
                {
                    if (this.inventory[index].stack > 0 && (int)this.inventory[index].paint > 0)
                    {
                        num4 = (int)this.inventory[index].paint;
                        num5 = index;
                        break;
                    }
                }
                if (num4 <= 0 || (int)Main.tile[x1, y1].wallColor() == num4 || !WorldGen.paintWall(x1, y1, (byte)num4, true))
                    return;
                int index5 = num5;
                --this.inventory[index5].stack;
                if (this.inventory[index5].stack <= 0)
                    this.inventory[index5].SetDefaults(0, false);
                this.itemTime = (int)((double)this.inventory[this.selectedItem].useTime * (double)this.wallSpeed);
            }
        }
Player