public static void KillMachine(int i, int j, int type) { Tile tile = Main.tile[i, j]; Machine mTile = ModContent.GetModTile(type) as Machine; mTile.GetDefaultParams(out _, out _, out _, out int itemType); int itemIndex = Item.NewItem(i * 16, j * 16, 16, 16, itemType); MachineItem item = Main.item[itemIndex].modItem as MachineItem; Point16 tePos = new Point16(i, j) - tile.TileCoord(); if (TileEntity.ByPosition.ContainsKey(tePos)) { MachineEntity tileEntity = TileEntity.ByPosition[tePos] as MachineEntity; //Drop any items the entity contains if (tileEntity.SlotsCount > 0) { for (int slot = 0; slot < tileEntity.SlotsCount; slot++) { Item drop = tileEntity.RetrieveItem(slot); //Drop the item and copy over any important data if (drop.type > ItemID.None && drop.stack > 0) { int dropIndex = Item.NewItem(i * 16, j * 16, 16, 16, drop.type, drop.stack); if (drop.modItem != null) { Main.item[dropIndex].modItem.Load(drop.modItem.Save()); } } tileEntity.ClearItem(slot); } } item.entityData = tileEntity.Save(); //Remove this machine from the wire networks if it's a powered machine if (tileEntity is PoweredMachineEntity pme) { NetworkCollection.RemoveMachine(pme); } tileEntity.Kill(i, j); if (Main.netMode == NetmodeID.MultiplayerClient) { NetMessage.SendData(MessageID.TileEntitySharing, remoteClient: -1, ignoreClient: Main.myPlayer, number: tileEntity.ID); } } }