The War Within Hotfixes - January 23, 2025

Enter the Hub of Goblin Ingenuity in Undermine(d) Zone Overview

Patch 11.1.0 PTR - Build 58731

Player Housing Interface API Strings
As initially found by Yuvalal in the Datamining Discord, Blizzard accidentally shipped a file with the 4.4.2 PTR that relates to the upcoming player housing system in Midnight. Note that this does not mean player housing is coming to WoW Classic, Blizzard shares interface files between versions and this file could just as well have accidentally shipped in a future 11.1.5 PTR build.

Also note that even though the file was accidentally added in today's build, its ID is older and implies initial creation during late DF/early TWW development. We don't know how recent its contents are.

The automatically generated Lua file describes various enumerated value types (enums) relating to the player housing system.

  • Editing Modes: Layout and Decoration
  • Layout Mode - Edit rooms, modifying components such as Wall, Floor, Ceiling, Stairs and Pillars.
    • Components can have options such as being able to tag them as a doorway/doorway wall. Doors have 2 sizes, narrow and large.
    • Exterior components are themed, with Human being the only theme mentioned in the file. Exterior components can be filtered by "Any", "Small", "Medium" and "Large".
  • Decor Mode - Place decorations inside and outside of the house, with various models (large and small)
    • There are currently 4 decor themes: "Folk", "Rugged", "Generic" and "Opulent".
    • HousingDecorType mentions being able to decorate floors, walls, ceilings and tabletops

All in all, this file leaves a lot up to interpretation, so feel free to read it for yourself below.

Blizzard announced more details on player housing would be coming early this year, so hopefully we won't have to wait too long to see whether or not these interpretations are correct!

Code:
local PlayerHousingConstants =
{
	Tables =
	{
		{
			Name = "HousingDecorFlags",
			Type = "Enumeration",
			NumValues = 2,
			MinValue = 1,
			MaxValue = 2,
			Fields =
			{
				{ Name = "Exterior", Type = "HousingDecorFlags", EnumValue = 1 },
				{ Name = "Interior", Type = "HousingDecorFlags", EnumValue = 2 },
			},
		},
		{
			Name = "HousingDecorModelType",
			Type = "Enumeration",
			NumValues = 3,
			MinValue = 0,
			MaxValue = 2,
			Fields =
			{
				{ Name = "None", Type = "HousingDecorModelType", EnumValue = 0 },
				{ Name = "M2", Type = "HousingDecorModelType", EnumValue = 1 },
				{ Name = "Wmo", Type = "HousingDecorModelType", EnumValue = 2 },
			},
		},
		{
			Name = "HousingDecorTheme",
			Type = "Enumeration",
			NumValues = 5,
			MinValue = 0,
			MaxValue = 4,
			Fields =
			{
				{ Name = "None", Type = "HousingDecorTheme", EnumValue = 0 },
				{ Name = "Folk", Type = "HousingDecorTheme", EnumValue = 1 },
				{ Name = "Rugged", Type = "HousingDecorTheme", EnumValue = 2 },
				{ Name = "Generic", Type = "HousingDecorTheme", EnumValue = 3 },
				{ Name = "Opulent", Type = "HousingDecorTheme", EnumValue = 4 },
			},
		},
		{
			Name = "HousingDecorType",
			Type = "Enumeration",
			NumValues = 5,
			MinValue = 0,
			MaxValue = 4,
			Fields =
			{
				{ Name = "None", Type = "HousingDecorType", EnumValue = 0 },
				{ Name = "Floor", Type = "HousingDecorType", EnumValue = 1 },
				{ Name = "Wall", Type = "HousingDecorType", EnumValue = 2 },
				{ Name = "Ceiling", Type = "HousingDecorType", EnumValue = 3 },
				{ Name = "Tabletop", Type = "HousingDecorType", EnumValue = 4 },
			},
		},
		{
			Name = "HousingExteriorComponentSize",
			Type = "Enumeration",
			NumValues = 4,
			MinValue = 1,
			MaxValue = 4,
			Fields =
			{
				{ Name = "Any", Type = "HousingExteriorComponentSize", EnumValue = 1 },
				{ Name = "Small", Type = "HousingExteriorComponentSize", EnumValue = 2 },
				{ Name = "Medium", Type = "HousingExteriorComponentSize", EnumValue = 3 },
				{ Name = "Large", Type = "HousingExteriorComponentSize", EnumValue = 4 },
			},
		},
		{
			Name = "HousingExteriorComponentTheme",
			Type = "Enumeration",
			NumValues = 1,
			MinValue = 1,
			MaxValue = 1,
			Fields =
			{
				{ Name = "Human", Type = "HousingExteriorComponentTheme", EnumValue = 1 },
			},
		},
		{
			Name = "HousingPermission",
			Type = "Enumeration",
			NumValues = 8,
			MinValue = 1,
			MaxValue = 128,
			Fields =
			{
				{ Name = "AddDecor", Type = "HousingPermission", EnumValue = 1 },
				{ Name = "ChangeDecorParam", Type = "HousingPermission", EnumValue = 2 },
				{ Name = "EnterDecorEditMode", Type = "HousingPermission", EnumValue = 4 },
				{ Name = "MoveDecor", Type = "HousingPermission", EnumValue = 8 },
				{ Name = "RemoveDecor", Type = "HousingPermission", EnumValue = 16 },
				{ Name = "SaveHouse", Type = "HousingPermission", EnumValue = 32 },
				{ Name = "SelectDecor", Type = "HousingPermission", EnumValue = 64 },
				{ Name = "EditLayout", Type = "HousingPermission", EnumValue = 128 },
			},
		},
		{
			Name = "HousingResult",
			Type = "Enumeration",
			NumValues = 18,
			MinValue = 0,
			MaxValue = 17,
			Fields =
			{
				{ Name = "Success", Type = "HousingResult", EnumValue = 0 },
				{ Name = "DbError", Type = "HousingResult", EnumValue = 1 },
				{ Name = "RpcFailure", Type = "HousingResult", EnumValue = 2 },
				{ Name = "GenericFailure", Type = "HousingResult", EnumValue = 3 },
				{ Name = "LockOperationFailed", Type = "HousingResult", EnumValue = 4 },
				{ Name = "UnlockOperationFailed", Type = "HousingResult", EnumValue = 5 },
				{ Name = "LockedByOtherPlayer", Type = "HousingResult", EnumValue = 6 },
				{ Name = "DecorNotFound", Type = "HousingResult", EnumValue = 7 },
				{ Name = "HouseNotFound", Type = "HousingResult", EnumValue = 8 },
				{ Name = "PermissionDenied", Type = "HousingResult", EnumValue = 9 },
				{ Name = "NotInDecorEditMode", Type = "HousingResult", EnumValue = 10 },
				{ Name = "NotInsideHouse", Type = "HousingResult", EnumValue = 11 },
				{ Name = "ServiceNotAvailable", Type = "HousingResult", EnumValue = 12 },
				{ Name = "RoomNotFound", Type = "HousingResult", EnumValue = 13 },
				{ Name = "RoomUpdateFailed", Type = "HousingResult", EnumValue = 14 },
				{ Name = "NotInLayoutEditMode", Type = "HousingResult", EnumValue = 15 },
				{ Name = "PlotNotFound", Type = "HousingResult", EnumValue = 16 },
				{ Name = "MaxDecorReached", Type = "HousingResult", EnumValue = 17 },
			},
		},
		{
			Name = "HousingRoomComponentDoorType",
			Type = "Enumeration",
			NumValues = 3,
			MinValue = 0,
			MaxValue = 2,
			Fields =
			{
				{ Name = "None", Type = "HousingRoomComponentDoorType", EnumValue = 0 },
				{ Name = "NarrowDoor", Type = "HousingRoomComponentDoorType", EnumValue = 1 },
				{ Name = "LargeDoor", Type = "HousingRoomComponentDoorType", EnumValue = 2 },
			},
		},
		{
			Name = "HousingRoomComponentOptionType",
			Type = "Enumeration",
			NumValues = 3,
			MinValue = 0,
			MaxValue = 2,
			Fields =
			{
				{ Name = "Cosmetic", Type = "HousingRoomComponentOptionType", EnumValue = 0 },
				{ Name = "DoorwayWall", Type = "HousingRoomComponentOptionType", EnumValue = 1 },
				{ Name = "Doorway", Type = "HousingRoomComponentOptionType", EnumValue = 2 },
			},
		},
		{
			Name = "HousingRoomComponentType",
			Type = "Enumeration",
			NumValues = 6,
			MinValue = 0,
			MaxValue = 5,
			Fields =
			{
				{ Name = "None", Type = "HousingRoomComponentType", EnumValue = 0 },
				{ Name = "Wall", Type = "HousingRoomComponentType", EnumValue = 1 },
				{ Name = "Floor", Type = "HousingRoomComponentType", EnumValue = 2 },
				{ Name = "Ceiling", Type = "HousingRoomComponentType", EnumValue = 3 },
				{ Name = "Stairs", Type = "HousingRoomComponentType", EnumValue = 4 },
				{ Name = "Pillar", Type = "HousingRoomComponentType", EnumValue = 5 },
			},
		},
		{
			Name = "HousingRoomFlags",
			Type = "Enumeration",
			NumValues = 2,
			MinValue = 0,
			MaxValue = 1,
			Fields =
			{
				{ Name = "None", Type = "HousingRoomFlags", EnumValue = 0 },
				{ Name = "BaseRoom", Type = "HousingRoomFlags", EnumValue = 1 },
			},
		},
	},
};

APIDocumentation:AddDocumentationTable(PlayerHousingConstants);
This article was originally published in forum thread: Player Housing Interface API Strings started by chaud View original post
Comments 87 Comments
  1. Marlamin's Avatar
    I think the backseat developers in this thread are missing a lot of context and are just making a ton of assumptions (as usual). For some context, maybe look at some of the other hundreds of automatically generated documentation files like these for some more understanding on what other things these files can contain and why they might have gone the way they did with the way they generate these.
  1. Seezer's Avatar
    Quote Originally Posted by Altmer View Post
    I don't want to sound negative, but I think housing system in WoW is going to suck a lot.
    Nothing beats ESO and FF14 housing system in terms of decoration and tools to do it. Also to keep in mind that ESO use these decoration to make towns, cities and NPC zones. WoW NPC decorations from Vanilla all the way to Dragonflight, sucks.
    It's gonna be sweeeet!
  1. Kilpi's Avatar
    Quote Originally Posted by Marlamin View Post
    I think the backseat developers in this thread are missing a lot of context and are just making a ton of assumptions (as usual). For some context, maybe look at some of the other hundreds of automatically generated documentation files like these for some more understanding on what other things these files can contain and why they might have gone the way they did with the way they generate these.
    But it has to be bad code! It would explain everything wrong in the world!
  1. Phasma's Avatar
    Quote Originally Posted by Kilpi View Post
    But it has to be bad code! It would explain everything wrong in the world!
    It would explain the half dozen lua errors I get when I'm playing without any addons installed. Keep defending it, though.
  1. Altmer's Avatar
    Quote Originally Posted by Kilpi View Post
    If you don't see how it could be done, then it's a good thing you aren't a video game designer.
    You don't need to be a video game designer to have a certain level of logic. FF14 and ESO have maps decorated with....the same furniture used for player housing. How many furnitures we have in WoW that are worth being used in housing in WoW?. Most of them are 2004 decoration objects in Orgrimmar, Stormwin, Thunder Bluff, Undercity, etc, that have really outdated graphics and designs.

    Also, If I remember right. MMO Champ used to make fun of me and others, who suggested housing in WoW, because ESO and FF14 had housing system. Now here we are...with a housing system for the next expansion, that to be honest, I have no idea how is going to work, if the few furniture items on WoW actually sucks a lot.
  1. Marlamin's Avatar
    Quote Originally Posted by Altmer View Post
    You don't need to be a video game designer to have a certain level of logic. FF14 and ESO have maps decorated with....the same furniture used for player housing. How many furnitures we have in WoW that are worth being used in housing in WoW?. Most of them are 2004 decoration objects in Orgrimmar, Stormwin, Thunder Bluff, Undercity, etc, that have really outdated graphics and designs.

    Also, If I remember right. MMO Champ used to make fun of me and others, who suggested housing in WoW, because ESO and FF14 had housing system. Now here we are...with a housing system for the next expansion, that to be honest, I have no idea how is going to work, if the few furniture items on WoW actually sucks a lot.
    There's several kits that they could use, but doing Human/Orc themes first would be the easiest win given the pre-existing garrison kits that still largely hold up today so asset creation, at least for doodads, is largely taken care of for the first iteration of the system. Most of the other kits added in recent expansions aren't for core races outside of maybe the Earthen/Goblin kits in 11.x and the Dragon kit in 10.x for the Dracthyr. All of the other recent kits that I can think of are subcultures or non-player races.

    Quote Originally Posted by Phasma View Post
    It would explain the half dozen lua errors I get when I'm playing without any addons installed. Keep defending it, though.
    If you're talking about the UI in general, it definitely has issues, especially since the DF rework. But going off your previous replies you were specifically talking about the file in the OP, and none of the UI issues the game has are related to how these hundreds of automatically generated documentation files are laid out, including the one from OP.

    They're perfectly fine for the usecases they are built for, which is the interactive /api command as well as to help addon developers make stuff through loading these in IDE plugins or to check for changes between patches. These files don't run the game's UI or cause any of the issues you have mentioned. They're a simple service that Blizzard provides for addon devs. Shitting on specifically that is... an interesting choice out of all the things one could shit on.
  1. Kilpi's Avatar
    Quote Originally Posted by Altmer View Post
    You don't need to be a video game designer to have a certain level of logic. FF14 and ESO have maps decorated with....the same furniture used for player housing. How many furnitures we have in WoW that are worth being used in housing in WoW?. Most of them are 2004 decoration objects in Orgrimmar, Stormwin, Thunder Bluff, Undercity, etc, that have really outdated graphics and designs.

    Also, If I remember right. MMO Champ used to make fun of me and others, who suggested housing in WoW, because ESO and FF14 had housing system. Now here we are...with a housing system for the next expansion, that to be honest, I have no idea how is going to work, if the few furniture items on WoW actually sucks a lot.
    Assets can be updated?

Site Navigation