From 2900351b9a0b6cabb3e1f9545cb89201a72d4fe4 Mon Sep 17 00:00:00 2001 From: Ottermandias Date: Fri, 2 Dec 2022 17:15:24 +0100 Subject: [PATCH] Fix Player Collection identification. --- Penumbra.GameData/Actors/ActorManager.Data.cs | 2 +- .../Interop/Resolver/PathResolver.Identification.cs | 11 +++++++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/Penumbra.GameData/Actors/ActorManager.Data.cs b/Penumbra.GameData/Actors/ActorManager.Data.cs index 36097a37..c54fafe4 100644 --- a/Penumbra.GameData/Actors/ActorManager.Data.cs +++ b/Penumbra.GameData/Actors/ActorManager.Data.cs @@ -172,7 +172,7 @@ public sealed partial class ActorManager : IDisposable public unsafe ActorIdentifier GetCurrentPlayer() { - var address = (Character*)(_objects[0]?.Address ?? IntPtr.Zero); + var address = (Character*)_objects.GetObjectAddress(0); return address == null ? ActorIdentifier.Invalid : CreateIndividualUnchecked(IdentifierType.Player, new ByteString(address->GameObject.Name), address->HomeWorld, diff --git a/Penumbra/Interop/Resolver/PathResolver.Identification.cs b/Penumbra/Interop/Resolver/PathResolver.Identification.cs index b5ce0e41..7895e9fa 100644 --- a/Penumbra/Interop/Resolver/PathResolver.Identification.cs +++ b/Penumbra/Interop/Resolver/PathResolver.Identification.cs @@ -63,14 +63,17 @@ public unsafe partial class PathResolver // or the default collection if no player exists. public static ModCollection PlayerCollection() { - var player = Penumbra.Actors.GetCurrentPlayer(); - if( !player.IsValid ) + var gameObject = ( GameObject* )Dalamud.Objects.GetObjectAddress( 0 ); + if( gameObject == null ) { - return Penumbra.CollectionManager.Default; + return Penumbra.CollectionManager.ByType( CollectionType.Yourself ) + ?? Penumbra.CollectionManager.Default; } + var player = Penumbra.Actors.GetCurrentPlayer(); return CollectionByIdentifier( player ) - ?? CollectionByAttributes( ( GameObject* )Dalamud.Objects[ 0 ]!.Address ) + ?? CheckYourself( player, gameObject ) + ?? CollectionByAttributes( gameObject ) ?? Penumbra.CollectionManager.Default; }