Skip to content

Add Path of Exile 2 BuildPlanner (.build) export - #2432

Merged
LocalIdentity merged 20 commits into
PathOfBuildingCommunity:devfrom
vaisest:build-file
Aug 27, 2026
Merged

Add Path of Exile 2 BuildPlanner (.build) export#2432
LocalIdentity merged 20 commits into
PathOfBuildingCommunity:devfrom
vaisest:build-file

Conversation

@vaisest

@vaisest vaisest commented Aug 25, 2026

Copy link
Copy Markdown
Contributor

Fixes #1829. This is an extension of and an update to #1832 by @TheClassified and @Wires77.

Description of the problem being solved:

See #1832. This makes many changes to the previous PR:

  • Add markup buttons to note menu
  • Fix thorns crashing due to missing gem data
  • Avoid notes overwriting item text
  • Add colour to item text (quality, magic mod colour, fractured etc)
  • Remove a lot of dead code
  • Convert exporting to export single loadouts.
    This happens either by selecting specific sets,
    or by exporting all loadouts. The GGG file format
    is not really compatible with putting a whole leveling
    experience in one file due to level interval limitations.
    This now matches what build sites are currently doing more closely.

The changes mean that this feature does NOT include any level details in the build file. The previous approach of putting multiple loadouts in one file and filtering them using the level intervals does not work. We could add per-node/item/gem level filters, but I don't really see how they are helpful. As far as I know they only hide things in-game, which isn't really helpful. It is imo a better idea to just point out level pathing in notes if it is important.

The unique_name field was removed as it seemed useless. If this is shown in a special way somewhere on the UI, it can be added back.

Opinions welcome. I am not a build guide author. Code opinions are also welcome. This PR has gone through a lot of iteration and some parts of it may not be in line with others.

Steps taken to verify a working solution:

  • Some example builds seem to work.
  • Probably needs a lot more testing

Todo:

  • avoid opening gem selector when opening note menu

Link to a build that showcases this PR:

https://poe.ninja/poe2/pob/278b8

After screenshot:

image image image image image image ![Uploading image.png…]()

TheClassified and others added 13 commits August 22, 2026 15:04
Writes a .build JSON file to the in-game BuildPlanner folder
(Documents/My Games/Path of Exile 2/BuildPlanner/) from a new section in
the Import tab. Tree specs, item sets and skill sets export as
level-bracketed loadouts via the format's level_interval field, with
per-set Lvl Min/Max in each tab's Manage popup. The New Loadout dialog
also takes a level range that propagates across the matching tree spec,
item set and skill set on save. New sets auto-preset on a 30-level
cadence (1-30, 30-60, 60-90, 90-100).

Per-passive and per-gem author notes via Shift+Right-Click on the Tree
and Skills tabs. The keybind hint and any existing note are shown in
the respective tooltips. Notes flow into the exported additional_text;
the format's Custom Text markup (<bold>{}, <italic>{}, <red>{},
<rgb(R,G,B)>{}) is preserved in the input.

Non-unique items render rolled title + base type + mod list using the
same markup (italic implicits, plain explicits). Active skills carry a
"Level N[, Q% Quality]" hint when no note is set; trivial Level 1 /
0% Quality on uncustomised support gems is suppressed to avoid noise.

Skill IDs use the Gems.lua table key to work around the singular
"Metadata/Items/Gem/" typo on the gameId field of ~486 auto-generated
entries.

Passive IDs are emitted as PassiveSkills.Id strings (e.g.
"projectiles18", "AscendancyMercenary2Notable5"). This required adding
stringId to src/Export/Scripts/passivetree.lua and regenerating
src/TreeData/0_4/tree.lua against GGPK. Older tree versions (0_1, 0_2,
0_3) still carry numeric IDs and fall back accordingly with a one-time
console warning until they're regenerated too.
- Add markup buttons to note menu
- Fix thorns crashing due to missing gem data
- Avoid notes overwriting item text
- Add colour to item text (quality, magic mod colour, fractured etc)
- Remove a lot of dead code
- Convert exporting to export single loadouts.
  This happens either by selecting specific sets,
  or by exporting all loadouts. The GGG file format
  is not really compatible with putting a whole leveling
  experience in one file due to level interval limitations.
  This now matches what build sites are currently doing more closely.
@vaisest
vaisest marked this pull request as draft August 25, 2026 19:37
@vaisest
vaisest marked this pull request as ready for review August 26, 2026 19:04
LocalIdentity added 4 commits August 27, 2026 06:57
If a build was saved while you had the the 2nd skill part selected, on load it would not export the skill id for the main stat set of the skill gem
e.g. Add a second skill set and select Shattering Palm as the gem. Select Freezing Explosion as the active set then go back to your first set of skills and reopen the build. On export it wont include Shattering palm anymore

If a build used the {1} way to link loadouts it could only create 1 build file when the name before the {1} was the same
e.g Leveling {a} and Leveling {b} as different loadouts would only make 1 build file

Made the default names for the build name and aurthor name use place holder text so that it's easy for people to write their own without having to delete the text first

Adds a bunch of tests for the export too
Passive node notes now survive tree copying and conversion via undo state.
Socket slots without note buttons no longer clear item tooltips.
PoE2 exports now exclude inactive item variants using CheckModLineVariant.
Duplicate variants now use GetModLineVariantCount, preserving repeated Mageblood selections while excluding inactive variants
New item sets no longer inherit notes from the active set
The gem note tooltip isn't shown while searching for gems in the dropdown list anymore, only when you have a gem actually in your build
Added regression tests for all three fixes.
@LocalIdentity LocalIdentity added the enhancement New feature, calculation, or mod label Aug 27, 2026

@LocalIdentity LocalIdentity left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good now

@LocalIdentity
LocalIdentity merged commit 93e7794 into PathOfBuildingCommunity:dev Aug 27, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature, calculation, or mod

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Feature suggestion: Export to GGG's .build (in-game Build Planner) format

4 participants