This program is able to parse pak, uexp and uasset files, and offers way to manage them.
This is a fork of SirWaddles's JohnWickParse project, which is intended primarily as a Fortnite tool. At some point in late-ish 2020, Fortnite updated the way they pack their data files, and the original JWP code was updated to only work with that newer packing method. Borderlands 3 still uses the original way, and this fork offers various improvements useful to BL3 modders. You can still use official JWP releases up through 5.0.2 (which was released on July 23, 2020), but releases after that point will probably not work with BL3.
As with the original JWP, which was intended only as a Fortnite tool, this fork will almost certainly work just fine on other UE4 games, so feel free to give it a try if your UE4 game hasn't moved to the newer packing method yet.
It offers four commands that can read these files
serialize <asset_path>will turn a uexp/uasset pair into a .json file, reading the UObject properties.<asset_path>has no extension.filelist <pak_path>will create a text file, listing all of the files contained in a .pak file.extract <pak_path> <pattern>will extract all of the files where<pattern>is in the internal path name, into the corresponding directory in the current working folder.texture <asset_path>will convert a DXT5 asset file into a png image file.
Any operations on a pak file require that the key.txt file contains the encryption key for the pak file, as a hexadecimal string and no leading newline.
Note however that there is limited support for all of the properties that can be serialized, and the parser may panic if it attempts to parse an unknown tag type.
One of the things this fork adds to the vanilla JWP is reporting a "version" in the very first export of the serialized objects. This is primarily used by my own bl3data mod-writing helper library, to automatically serialize data behind-the-scenes when code asks for it. The library looks for existing serializations first, and if it finds a serialization with an up-to-date version number, it'll just use the previously-serialized data on disk instead of processing it again.
The version number that it looks for can get bumped for a variety of reasons. Sometimes some extra functionality will be added to JWP so that there's more data than before added to the serializations (so bl3data would want to get a fresh version), or sometimes it's due to a Gearbox patch which potentially overwrites objects introduced in earlier pakfiles. So sometimes this version number gets incremented even though there haven't been any code changes in JWP itself.
When you see numbers like 19.1 in here, the version number reported in the
serialization is still just 19 -- those incremental updates just indicate other
changes to JWP which don't actually affect the nature of the data that it's writing.
v27.2: 2023-01-26
- Bypass
StructPropertystructures insideUScriptStructs (this allows BL3'sIO_Hib_Door_Bookcaseto be serialized) - Fixed serializations for objects whose FName lookups were failing. This is almost
certainly due to data structures not being read in properly, but it should at
least allow the majority of the asset to be serialized instead of bombing out.
(this allows WL's
IO_Switch_SimpleButtonto be serialized)
v27.1: 2022-12-16
- Fixed serializations for objects with FText history types other than -1 and 0. The text will just read "APOC UNKNOWN" in the serialization, but you'll at least get the rest of the object serialized, instead of just an error.
v27: 2022-09-29
- Bumped version number for today's WL patch (general patch)
v26: 2022-08-11
- Bumped version number for today's WL patch (DLC4 + Blight Caller)
v25: 2022-08-05
- Added "dummy" handling of
Planeexports. - Removed custom
Texture2Dhandling, which was causing some map objects to not serialize.
v24: 2022-06-11
- Bumped version number for June 1st's Playstation Crossplay patch (which included a few other data tweaks as well)
v23: 2021-11-18
- Bumped version number for today's BL3 patch (Vault Card 3)
v22: 2021-10-04
- Added "dummy" handling of
FUserStateEnumValuevalues, which allows at least one more map object to be serialized (City_M_OvercomeHQBlockade).
v21: 2021-06-24
- Bumped version number for today's BL3 patch
- Fixed
SoftObjectPropertyhandling insideMapPropertyattrs
v20.2: 2021-04-16
- Fixed serialization of various attributes, which allows JWP to serialize
some extra BPChars (and presumably other objects):
ElementToFXGlowColorMap, which fixesBPChar_Heavy_Badass_GearUpEyeColorData, which fixesBPChar_WolfBasicBallProjectileColorByElement, which fixesBPChar_LoaderBadassElementalBeamClassMapping, which fixesBPChar_HyperionTurretBadassElementToDarkVariantEmissiveColor, which fixesBPChar_Heavy_BadassDarkRaid1
- Fixed serialization of
BytePropertyattributes insideUScriptMaps. This fixes serializations forBPChar_GerSaurianSaurtaur, though possibly it might cause problems for other stuff which previously serialized okay? The fix that I put in there seems extremely reasonable, though. We'll have to see. - With these fixes, all
BPCharobjects currently in the game should be serializable.
v20.1: 2021-04-16
- Fixed serialization of
ElementToPSColorMapattributes. This allows JWP to serializeBPChar_Oversphere_KatagawaSphere, and presumably other objects.
v20: 2021-04-08
- DLC6 (Director's Cut)
v19.2: 2021-04-05
- Process
InterfacePropertyattrs insideUScriptMaps properly. This allows a few mission objects to be serialized which haven't been serializable since commit da1721f
v19.1: 2021-03-26
- Output JSON in human-readable format (newlines, indentation, etc)
v19: 2021-02-28
- Fixed rich curve key processing
v18: 2021-01-21
- Just a patch from GBX
v17: 2020-11-10
- An unannounced GBX update, bugfixes for DLC5 I suppose.
v16: 2020-11-09
- DLC5 (Designer's Cut)
v15: 2020-09-10
- DLC4
v14: 2020-09-04
- Work around some MapProperty stuff present in some BPChars, though in a very boneheaded way which seems quite likely to produce technically-incorrect data. Hopefully not too bad, though!
v13: 2020-09-04
- Pulled in fresh commits from upstream; can serialize BPChars now!
v12: 2020-07-23
- Patch from GBX (including lots of drop changes)
v11: 2020-07-13
- Pulled in more commits from upstream
v10: 2020-06-25
- DLC3
v9: 2020-06-11
- Guardian Takedown
v8: 2020-05-13
- Pulled in some fresh commits from upstream
v7: 2020-04-23
- Revenge of the Cartels and DLC2
v6: 2020-03-26
- DLC2
v5:
- Cleaning up DataTable exports a bit (my custom attrs were a bit too pushy)
v4: 2020-03-13
- patch (Steam x-play)
v3:
- Added
_jwp_export_dst_nameto export references
v2:
- Added array indexes to FSoftObjectPath objects
v1:
- Initial versioning, added export-following, expanded output, and array indexes