content: package emu.grasscutter.server.packet.send;
  
  import emu.grasscutter.game.avatar.Avatar;
  import emu.grasscutter.game.player.Player;
  import emu.grasscutter.net.packet.BasePacket;
  import emu.grasscutter.net.packet.PacketOpcodes;
  import emu.grasscutter.net.proto.AvatarDataNotifyOuterClass.AvatarDataNotify;
  
  public class PacketAvatarDataNotify extends BasePacket {
  
      public PacketAvatarDataNotify(Player player) {
          super(PacketOpcodes.AvatarDataNotify, true);
  
          AvatarDataNotify.Builder proto = AvatarDataNotify.newBuilder()
                  .setCurAvatarTeamId(player.getTeamManager().getCurrentTeamId())
                  .setChooseAvatarGuid(player.getTeamManager().getCurrentCharacterGuid())
                  .addAllOwnedFlycloakList(player.getFlyCloakList())
                  .addAllOwnedCostumeList(player.getCostumeList());
  
          player.getAvatars().forEach(avatar -> proto.addAvatarList(avatar.toProto()));
  
          player.getTeamManager().getTeams().forEach((id, teamInfo) -> {
              proto.putAvatarTeamMap(id, teamInfo.toProto(player));
              if (id > 4) {  // Add the id list for custom teams.
                  proto.addBackupAvatarTeamOrderList(id);
              }
          });
  
          // Set main character
          Avatar mainCharacter = player.getAvatars().getAvatarById(player.getMainCharacterId());
          if (mainCharacter != null) {
              proto.setChooseAvatarGuid(mainCharacter.getGuid());
          }
  
          this.setData(proto.build());
      }
  
  }
  