diff --git a/PlayerTags/Data/PluginData.cs b/PlayerTags/Data/PluginData.cs
index 3fedeac..1adac08 100644
--- a/PlayerTags/Data/PluginData.cs
+++ b/PlayerTags/Data/PluginData.cs
@@ -1,6 +1,7 @@
using Dalamud.Game.ClientState.Objects.SubKinds;
using Dalamud.Game.ClientState.Party;
using Dalamud.Game.Text.SeStringHandling.Payloads;
+using Dalamud.Logging;
using PlayerTags.Configuration;
using PlayerTags.GameInterface.ContextMenus;
using PlayerTags.PluginStrings;
@@ -281,23 +282,22 @@ namespace PlayerTags.Data
{
if (contextMenuOpenedArgs.GameObjectContext == null
|| contextMenuOpenedArgs.GameObjectContext.Name == null
- || contextMenuOpenedArgs.GameObjectContext.WorldId == 0
- || contextMenuOpenedArgs.GameObjectContext.WorldId == 65535)
+ || contextMenuOpenedArgs.GameObjectContext.WorldId == null)
{
return null;
}
- return GetIdentity(contextMenuOpenedArgs.GameObjectContext.Name.TextValue, contextMenuOpenedArgs.GameObjectContext.WorldId);
+ return GetIdentity(contextMenuOpenedArgs.GameObjectContext.Name, contextMenuOpenedArgs.GameObjectContext.WorldId);
}
public Identity GetIdentity(PlayerCharacter playerCharacter)
{
- return GetIdentity(playerCharacter.Name.TextValue, playerCharacter.HomeWorld.GameData.RowId);
+ return GetIdentity(playerCharacter.Name.TextValue, playerCharacter.HomeWorld.Id);
}
public Identity GetIdentity(PartyMember partyMember)
{
- return GetIdentity(partyMember.Name.TextValue, partyMember.World.GameData.RowId);
+ return GetIdentity(partyMember.Name.TextValue, partyMember.World.Id);
}
public Identity GetIdentity(PlayerPayload playerPayload)
diff --git a/PlayerTags/Features/ChatTagTargetFeature.cs b/PlayerTags/Features/ChatTagTargetFeature.cs
index 116099c..ad3de03 100644
--- a/PlayerTags/Features/ChatTagTargetFeature.cs
+++ b/PlayerTags/Features/ChatTagTargetFeature.cs
@@ -184,7 +184,7 @@ namespace PlayerTags.Features
if (stringMatch.GameObject is PlayerCharacter playerCharacter)
{
// Add the job tag
- if (m_PluginData.JobTags.TryGetValue(playerCharacter.ClassJob.GameData.Abbreviation, out var jobTag))
+ if (playerCharacter.ClassJob.GameData != null && m_PluginData.JobTags.TryGetValue(playerCharacter.ClassJob.GameData.Abbreviation, out var jobTag))
{
if (jobTag.TagPositionInChat.InheritedValue != null)
{
@@ -260,7 +260,7 @@ namespace PlayerTags.Features
if (stringMatch.GameObject is PlayerCharacter playerCharacter1)
{
- if (m_PluginData.JobTags.TryGetValue(playerCharacter1.ClassJob.GameData.Abbreviation, out var jobTag))
+ if (playerCharacter1.ClassJob.GameData != null && m_PluginData.JobTags.TryGetValue(playerCharacter1.ClassJob.GameData.Abbreviation, out var jobTag))
{
if (IsTagVisible(jobTag, stringMatch.GameObject))
{
diff --git a/PlayerTags/Features/CustomTagsContextMenuFeature.cs b/PlayerTags/Features/CustomTagsContextMenuFeature.cs
index a63f13f..bd73581 100644
--- a/PlayerTags/Features/CustomTagsContextMenuFeature.cs
+++ b/PlayerTags/Features/CustomTagsContextMenuFeature.cs
@@ -88,16 +88,6 @@ namespace PlayerTags.Features
m_PluginConfiguration.Save(m_PluginData);
})));
}
-
- newContextMenuItems.Add(new OpenSubContextMenuItem("1", (args) =>
- {
- PluginLog.Debug("WOW1");
- args.Items.Add(new CustomContextMenuItem("2", (args2) =>
- {
- PluginLog.Debug("WOW2");
- }));
- }));
-
subContextMenuOpenedArgs.Items.InsertRange(0, newContextMenuItems);
})));
}
@@ -116,16 +106,6 @@ namespace PlayerTags.Features
m_PluginConfiguration.Save(m_PluginData);
})));
}
-
- newContextMenuItems.Add(new OpenSubContextMenuItem("1", (args) =>
- {
- PluginLog.Debug("WOW1");
- args.Items.Add(new CustomContextMenuItem("2", (args2) =>
- {
- PluginLog.Debug("WOW2");
- }));
- }));
-
subContextMenuOpenedArgs.Items.InsertRange(0, newContextMenuItems);
})));
}
diff --git a/PlayerTags/Features/NameplateTagTargetFeature.cs b/PlayerTags/Features/NameplateTagTargetFeature.cs
index cbb0705..9de7908 100644
--- a/PlayerTags/Features/NameplateTagTargetFeature.cs
+++ b/PlayerTags/Features/NameplateTagTargetFeature.cs
@@ -171,7 +171,7 @@ namespace PlayerTags.Features
if (gameObject is PlayerCharacter playerCharacter)
{
// Add the job tags
- if (m_PluginData.JobTags.TryGetValue(playerCharacter.ClassJob.GameData.Abbreviation, out var jobTag))
+ if (playerCharacter.ClassJob.GameData != null && m_PluginData.JobTags.TryGetValue(playerCharacter.ClassJob.GameData.Abbreviation, out var jobTag))
{
if (jobTag.TagTargetInNameplates.InheritedValue != null && jobTag.TagPositionInNameplates.InheritedValue != null)
{
@@ -280,7 +280,7 @@ namespace PlayerTags.Features
}
}
- if (m_PluginData.JobTags.TryGetValue(playerCharacter1.ClassJob.GameData.Abbreviation, out var jobTag))
+ if (playerCharacter1.ClassJob.GameData != null && m_PluginData.JobTags.TryGetValue(playerCharacter1.ClassJob.GameData.Abbreviation, out var jobTag))
{
if (IsTagVisible(jobTag, gameObject))
{
diff --git a/PlayerTags/GameInterface/ContextMenus/ContextMenu.cs b/PlayerTags/GameInterface/ContextMenus/ContextMenu.cs
index 1ebfa48..ec3c52f 100644
--- a/PlayerTags/GameInterface/ContextMenus/ContextMenu.cs
+++ b/PlayerTags/GameInterface/ContextMenus/ContextMenu.cs
@@ -426,15 +426,41 @@ namespace PlayerTags.GameInterface.ContextMenus
else
{
var agentContext = (AgentContext*)agentContextInterface;
- if (agentContext->GameObjectContentId != 0 || agentContext->GameObjectWorldId != 0)
- {
- SeString objectName;
- unsafe
- {
- objectName = GameInterfaceHelper.ReadSeString((IntPtr)agentContext->GameObjectName.StringPtr);
- }
- gameObjectContext = new GameObjectContext(agentContext->GameObjectId, agentContext->GameObjectContentId, objectName, agentContext->GameObjectWorldId);
+ uint? id = agentContext->GameObjectId;
+ if (id == 0)
+ {
+ id = null;
+ }
+
+ ulong? contentId = agentContext->GameObjectContentId;
+ if (contentId == 0)
+ {
+ contentId = null;
+ }
+
+ string? name;
+ unsafe
+ {
+ name = GameInterfaceHelper.ReadSeString((IntPtr)agentContext->GameObjectName.StringPtr).TextValue;
+ if (string.IsNullOrEmpty(name))
+ {
+ name = null;
+ }
+ }
+
+ ushort? worldId = agentContext->GameObjectWorldId;
+ if (worldId == 0)
+ {
+ worldId = null;
+ }
+
+ if (id != null
+ || contentId != null
+ || name != null
+ || worldId != null)
+ {
+ gameObjectContext = new GameObjectContext(id, contentId, name, worldId);
}
}
diff --git a/PlayerTags/GameInterface/ContextMenus/FFXIVClientStructs/FFXIV/Client/UI/AddonContextMenu.cs b/PlayerTags/GameInterface/ContextMenus/FFXIVClientStructs/FFXIV/Client/UI/AddonContextMenu.cs
index 182afc5..96787b8 100644
--- a/PlayerTags/GameInterface/ContextMenus/FFXIVClientStructs/FFXIV/Client/UI/AddonContextMenu.cs
+++ b/PlayerTags/GameInterface/ContextMenus/FFXIVClientStructs/FFXIV/Client/UI/AddonContextMenu.cs
@@ -9,6 +9,6 @@ namespace FFXIVClientStructs.FFXIV.Client.UI
[FieldOffset(0x0)] public unsafe AddonInterface AddonInterface;
[FieldOffset(0x160)] public unsafe AtkValue* AtkValues;
[FieldOffset(0x1CA)] public ushort AtkValuesCount;
- [FieldOffset(0x690)] public /*long*/ bool IsInitialMenu;
+ [FieldOffset(0x690)] public bool IsInitialMenu;
}
}
diff --git a/PlayerTags/GameInterface/ContextMenus/GameObjectContext.cs b/PlayerTags/GameInterface/ContextMenus/GameObjectContext.cs
index 0b07072..c7e7318 100644
--- a/PlayerTags/GameInterface/ContextMenus/GameObjectContext.cs
+++ b/PlayerTags/GameInterface/ContextMenus/GameObjectContext.cs
@@ -10,22 +10,22 @@ namespace PlayerTags.GameInterface.ContextMenus
///
/// The id of the game object.
///
- public uint Id { get; }
+ public uint? Id { get; }
///
/// The content id of the game object.
///
- public ulong ContentId { get; }
+ public ulong? ContentId { get; }
///
/// The name of the game object.
///
- public SeString Name { get; }
+ public string? Name { get; }
///
/// The world id of the game object.
///
- public ushort WorldId { get; }
+ public ushort? WorldId { get; }
///
/// Initializes a new instance of the class.
@@ -34,7 +34,7 @@ namespace PlayerTags.GameInterface.ContextMenus
/// The lower content id of the game object.
/// The name of the game object.
/// The world id of the game object.
- public GameObjectContext(uint id, ulong contentId, SeString name, ushort worldId)
+ public GameObjectContext(uint? id, ulong? contentId, string? name, ushort? worldId)
{
Id = id;
ContentId = contentId;