From 404ff9233a0b2639805cf44a9499b44e507426c3 Mon Sep 17 00:00:00 2001 From: KingRainbow44 Date: Sat, 29 Apr 2023 14:05:38 -0400 Subject: [PATCH] Fix removing trial avatars this prevents exceptions from being thrown. see questing thread for more information. --- .../emu/grasscutter/game/player/TeamManager.java | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/main/java/emu/grasscutter/game/player/TeamManager.java b/src/main/java/emu/grasscutter/game/player/TeamManager.java index 2c4b57316..1d5e774e1 100644 --- a/src/main/java/emu/grasscutter/game/player/TeamManager.java +++ b/src/main/java/emu/grasscutter/game/player/TeamManager.java @@ -488,7 +488,13 @@ public final class TeamManager extends BasePlayerDataManager { /** Rollback changes from using a trial avatar team. */ public void unsetTrialAvatarTeam() { - this.trialAvatarTeamPostUpdate(this.getPreviousIndex()); + // Get the previous index. + var index = this.getPreviousIndex(); + if (index < 0) index = 0; + + // Remove the trial avatars. + this.trialAvatarTeamPostUpdate(index); + // Reset the index. this.setPreviousIndex(-1); } @@ -554,10 +560,14 @@ public final class TeamManager extends BasePlayerDataManager { .toList() .contains(avatar)) continue; + // Check if the player owns the avatar. + var avatarData = player.getAvatars().getAvatarById(avatar); + if (avatarData == null) continue; + this.getActiveTeam() .add( index++, - new EntityAvatar(scene, player.getAvatars().getAvatarById(avatar))); + new EntityAvatar(scene, avatarData)); } } @@ -1081,8 +1091,6 @@ public final class TeamManager extends BasePlayerDataManager { * @param trialAvatarIds List of trial avatar IDs. */ public void removeTrialAvatar(List trialAvatarIds) { - if (!this.isUsingTrialTeam()) throw new RuntimeException("Player is not using a trial team."); - this.getPlayer() .sendPacket( new PacketAvatarDelNotify(