Fix removing trial avatars

this prevents exceptions from being thrown. see questing thread for more information.
This commit is contained in:
KingRainbow44 2023-04-29 14:05:38 -04:00
parent 5f4f220eab
commit 404ff9233a
No known key found for this signature in database
GPG Key ID: FC2CB64B00D257BE

View File

@ -488,7 +488,13 @@ public final class TeamManager extends BasePlayerDataManager {
/** Rollback changes from using a trial avatar team. */ /** Rollback changes from using a trial avatar team. */
public void unsetTrialAvatarTeam() { 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); this.setPreviousIndex(-1);
} }
@ -554,10 +560,14 @@ public final class TeamManager extends BasePlayerDataManager {
.toList() .toList()
.contains(avatar)) continue; .contains(avatar)) continue;
// Check if the player owns the avatar.
var avatarData = player.getAvatars().getAvatarById(avatar);
if (avatarData == null) continue;
this.getActiveTeam() this.getActiveTeam()
.add( .add(
index++, 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. * @param trialAvatarIds List of trial avatar IDs.
*/ */
public void removeTrialAvatar(List<Integer> trialAvatarIds) { public void removeTrialAvatar(List<Integer> trialAvatarIds) {
if (!this.isUsingTrialTeam()) throw new RuntimeException("Player is not using a trial team.");
this.getPlayer() this.getPlayer()
.sendPacket( .sendPacket(
new PacketAvatarDelNotify( new PacketAvatarDelNotify(