From 7254fe161221f037ccac4f9124d1d7e6ee1522ec Mon Sep 17 00:00:00 2001 From: Melledy <52122272+Melledy@users.noreply.github.com> Date: Fri, 22 Jul 2022 08:30:11 -0700 Subject: [PATCH] Set `setChooseAvatarGuid` properly --- .../java/emu/grasscutter/game/player/Player.java | 3 +++ .../server/packet/send/PacketAvatarDataNotify.java | 12 +++++++++--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/main/java/emu/grasscutter/game/player/Player.java b/src/main/java/emu/grasscutter/game/player/Player.java index 9580c907f..76e1dc319 100644 --- a/src/main/java/emu/grasscutter/game/player/Player.java +++ b/src/main/java/emu/grasscutter/game/player/Player.java @@ -642,6 +642,9 @@ public class Player { } public void setMainCharacterId(int mainCharacterId) { + if (this.mainCharacterId != 0) { + return; + } this.mainCharacterId = mainCharacterId; } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarDataNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarDataNotify.java index ca50b8f94..7d8311224 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarDataNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarDataNotify.java @@ -13,11 +13,11 @@ import emu.grasscutter.net.proto.AvatarTeamOuterClass.AvatarTeam; public class PacketAvatarDataNotify extends BasePacket { public PacketAvatarDataNotify(Player player) { - super(PacketOpcodes.AvatarDataNotify, 2); - + super(PacketOpcodes.AvatarDataNotify, true); + AvatarDataNotify.Builder proto = AvatarDataNotify.newBuilder() .setCurAvatarTeamId(player.getTeamManager().getCurrentTeamId()) - .setChooseAvatarGuid(player.getTeamManager().getCurrentCharacterGuid()) + //.setChooseAvatarGuid(player.getTeamManager().getCurrentCharacterGuid()) .addAllOwnedFlycloakList(player.getFlyCloakList()) .addAllOwnedCostumeList(player.getCostumeList()); @@ -38,6 +38,12 @@ public class PacketAvatarDataNotify extends BasePacket { proto.putAvatarTeamMap(entry.getKey(), avatarTeam.build()); } + // Set main character + Avatar mainCharacter = player.getAvatars().getAvatarById(player.getMainCharacterId()); + if (mainCharacter != null) { + proto.setChooseAvatarGuid(mainCharacter.getGuid()); + } + this.setData(proto.build()); }