/// <summary> /// Callback method for when a player updates their skin. /// </summary> /// <param name="id">The ID of the player.</param> /// <param name="skinUpdate">The ServerPlayerSkinUpdate packet data.</param> private void OnPlayerSkinUpdate(ushort id, ServerPlayerSkinUpdate skinUpdate) { if (!_playerData.TryGetValue(id, out var playerData)) { Logger.Get().Warn(this, $"Received PlayerSkinUpdate data, but player with ID {id} is not in mapping"); return; } if (playerData.SkinId == skinUpdate.SkinId) { Logger.Get().Info(this, $"Received PlayerSkinUpdate data from ID: {id}, but skin was the same"); return; } Logger.Get().Info(this, $"Received PlayerSkinUpdate data from ID: {id}, new skin ID: {skinUpdate.SkinId}"); // Update the skin ID in the player data playerData.SkinId = skinUpdate.SkinId; SendDataInSameScene( id, playerData.CurrentScene, otherId => { _netServer.GetUpdateManagerForClient(otherId)?.AddPlayerSkinUpdateData(id, playerData.SkinId); } ); }
public ServerUpdatePacket(Packet packet) : base(packet) { DataPacketIds = new HashSet <ServerPacketId>(); HelloServer = new HelloServer(); PlayerUpdate = new PlayerUpdate(); EntityUpdates = new PacketDataCollection <EntityUpdate>(); PlayerEnterScene = new ServerPlayerEnterScene(); PlayerTeamUpdate = new ServerPlayerTeamUpdate(); PlayerSkinUpdate = new ServerPlayerSkinUpdate(); PlayerEmoteUpdate = new ServerPlayerEmoteUpdate(); }