void AddEntity(byte entityId, string displayName, string skinName, bool readPosition)
 {
     skinName = Utils.StripColours(skinName);
     if (entityId != 0xFF)
     {
         Player oldPlayer = game.Players[entityId];
         if (oldPlayer != null)
         {
             game.EntityEvents.RaiseEntityRemoved(entityId);
             oldPlayer.Despawn();
         }
         game.Players[entityId] = new NetPlayer(displayName, skinName, game, entityId);
         string identifier = game.Players[entityId].SkinIdentifier;
         game.EntityEvents.RaiseEntityAdded(entityId);
         game.AsyncDownloader.DownloadSkin(identifier, skinName);
     }
     else
     {
         game.LocalPlayer.SkinName = skinName;
         game.AsyncDownloader.DownloadSkin("skin_255", skinName);
     }
     if (readPosition)
     {
         ReadAbsoluteLocation(entityId, false);
         if (entityId == 0xFF)
         {
             game.LocalPlayer.SpawnPoint = game.LocalPlayer.Position;
         }
     }
 }
        void RemoveEntity(byte entityId)
        {
            Player player = game.Players[entityId];

            if (player == null)
            {
                return;
            }

            if (entityId != 0xFF)
            {
                game.EntityEvents.RaiseEntityRemoved(entityId);
                player.Despawn();
                game.Players[entityId] = null;
            }
            // See comment about LegendCraft in HandleAddEntity
            if (needRemoveNames != null && needRemoveNames[entityId])
            {
                game.EntityEvents.RaiseCpeListInfoRemoved(entityId);
                game.CpePlayersList[entityId] = null;
                needRemoveNames[entityId]     = false;
            }
        }
        void AddEntity(byte entityId, string displayName, string skinName, bool readPosition)
        {
            skinName = Utils.StripColours(skinName);
            if (entityId != 0xFF)
            {
                Player oldPlayer = game.Players[entityId];
                if (oldPlayer != null)
                {
                    game.EntityEvents.RaiseEntityRemoved(entityId);
                    oldPlayer.Despawn();
                }
                game.Players[entityId] = new NetPlayer(displayName, skinName, game, entityId);
                game.EntityEvents.RaiseEntityAdded(entityId);
            }
            else
            {
                game.LocalPlayer.SkinName = skinName;
            }

            string identifier = game.Players[entityId].SkinIdentifier;

            game.AsyncDownloader.DownloadSkin(identifier, skinName);
            if (!readPosition)
            {
                return;
            }

            ReadAbsoluteLocation(entityId, false);
            if (entityId == 0xFF)
            {
                LocalPlayer p = game.LocalPlayer;
                p.SpawnPoint = p.Position;
                p.SpawnYaw   = p.HeadYawDegrees;
                p.SpawnPitch = p.PitchDegrees;
            }
        }