This is the long-form fix for a bug on Windows, superseding the band-aid from v1.1.2. Unfortunately the band-aid didn't do the job, but now the full fix is ready.
Filesystems have different path-separators, which if we're not careful can pollute Identifiers with disallowed characters. In almost all cases, the files StaticData deals with are from nio ZipFS
or java.util.zip.ZipInputStream
. These sources always return forward slashes as PathSeparators, allowing... incorrect logic to work without giving any warning of trouble.
This failed with the addition of bare-folder StaticData Packs. These files are sourced directly from the OS filesystem, which can report multiple consecutive backslashes that resisted any quick band-aid fix that still relied on String splitting and replacements.
This update rewrites and sets aside the logic that constructs Identifiers from relative Paths, only ever using Path.nameCount
and Path.getName
to acquire the directory structure and filename, and recombines the result with forward slashes that Identifier allows. This is more in line with how I've been doing things recently in places like EarlyTags, and should be nearly bulletproof.