Problem/Opportunity Space
The teleport window's Residential Areas list shows your own estates, apartments, and shared estates only with the game's default place names (e.g. two "Empyreum" rows, one Apartment and one Estate Hall). With several residences it's easy to lose track of which row is which. Users want to rename their own entries to whatever they like ("Oreo's Apartment", "Home <3") so the list reads at a glance. This is the Personal Estate Labels stub, and the rename half (Feature A) of the teleport-label work; adding entries for plots you don't own is tracked separately as Feature B.
Acceptance Criteria
- User can assign a custom label to any of their own residential teleport entries (apartment, private estate, shared estate)
- Labels persist across sessions and game restarts, keyed to the specific residence
- The renamed label appears in the teleport window in place of the default name, in every tab the entry shows in
- Clearing a label restores the game's default name
- No change to teleport behaviour or cost; display only
Suggested solution
Store a user label per residential entry, keyed off the stable fields of its TeleportInfo (HouseId + EstateType + SubIndex). When the Teleport addon renders, overwrite the name text node of any residential row that has a label. It's cosmetic text replacement with no server interaction, the same low-risk class as Hide Housing Arrows.
Suggested design
- Config stores
Dictionary<string, string> of key to label, key = $"{houseId.Id:X}:{(byte)estateType}:{subIndex}"
- Read entries from
AgentTeleport.AetheryteList (StdVector<TeleportInfo>), filtered to residential (EstateType != 0); resolve default names via the same path as SimpleTweaks' EstateListCommand
- Hook
AddonTeleport on PostRequestedUpdate/PostRefresh, walk the AtkComponentTreeList, and SetText the name node for labelled rows; re-apply every refresh since the tree virtualizes on scroll
- Config UI (Personal Estate Labels tweak): list the user's residential entries with their default name and an input field for the custom label
- Capture step first: confirm the mapping between a rendered tree row and its
TeleportInfo before wiring the overwrite
Testing Considerations
Happy path
Sad path
Problem/Opportunity Space
The teleport window's Residential Areas list shows your own estates, apartments, and shared estates only with the game's default place names (e.g. two "Empyreum" rows, one Apartment and one Estate Hall). With several residences it's easy to lose track of which row is which. Users want to rename their own entries to whatever they like ("Oreo's Apartment", "Home <3") so the list reads at a glance. This is the Personal Estate Labels stub, and the rename half (Feature A) of the teleport-label work; adding entries for plots you don't own is tracked separately as Feature B.
Acceptance Criteria
Suggested solution
Store a user label per residential entry, keyed off the stable fields of its
TeleportInfo(HouseId+EstateType+SubIndex). When theTeleportaddon renders, overwrite the name text node of any residential row that has a label. It's cosmetic text replacement with no server interaction, the same low-risk class as Hide Housing Arrows.Suggested design
Dictionary<string, string>of key to label, key =$"{houseId.Id:X}:{(byte)estateType}:{subIndex}"AgentTeleport.AetheryteList(StdVector<TeleportInfo>), filtered to residential (EstateType != 0); resolve default names via the same path as SimpleTweaks'EstateListCommandAddonTeleportonPostRequestedUpdate/PostRefresh, walk theAtkComponentTreeList, andSetTextthe name node for labelled rows; re-apply every refresh since the tree virtualizes on scrollTeleportInfobefore wiring the overwriteTesting Considerations
Happy path
Sad path