In a large saucepan combine the sugar and cornstarch until smooth and has no lumps. Stir in the milk and cream until well combined. Set aside.
In a medium sized bowl gently beat the eggs until combined. Set aside.
Place the saucepan of milk and sugar on the stove and cook over medium to medium low heat. While cooking whisk constantly to prevent any lumps. Cook while whisking until it starts to thicken and remove from heat. Pour at least half of this mixture in a steady SMALL stream into the beaten yolks. While you are pouring whisk constantly to prevent your yolks from scrambling. This process is called tempering. Now you may pour the egg mixture back into the saucepan.
Return this to the heat and cook until it has thickened into a nice pudding like consistency. It will also thicken a little more as it cools. Remove from heat and stir in the butter and vanilla. Place in a heat safe container and cover the top with plastic wrap. (place the plastic wrap directly on top of the pudding) This will help prevent a skin from forming on top of the pudding. Refrigerate for at least 2 hours before serving.