tentative variable backtrace:
CMPDL.java:
315:log("Downloading " + filename); //filename = ...%2B...jar this should be '+'
306:filename = URLDecoder.decode(filename, "UTF-8"); //filename = ...%2B...jar this should be '+'
305:String filename = m.group(1); //filename = ...%252B...jar this should be "%2B"
301:Matcher m = FILE_NAME_URL_PATTERN.matcher(finalUrl);
300:String finalUrl = getLocationHeader(fileDlUrl);
298:log("File download URL is " + fileDlUrl); //fileDlUrl = https://minecraft.curseforge.com/projects/better-builders-wands/files/2394395/download
The problem is most likely in getLocationHeader().
modpack URL: https://minecraft.curseforge.com/projects/age-of-engineering log: File download URL is https://minecraft.curseforge.com/projects/better-builders-wands/files/2394395/download Downloading BetterBuildersWands-1.10.2-0.11.1.220%2Bf8232fe.jar Error: class java.io.IOException: Server returned HTTP response code: 403 for URL: https://media.forgecdn.net/files/2394/395/BetterBuildersWands-1.10.2-0.11.1.220%252Bf8232fe.jar
The "%252B" here should be "%2B".
tentative variable backtrace: CMPDL.java: 315:log("Downloading " + filename); //filename = ...%2B...jar this should be '+' 306:filename = URLDecoder.decode(filename, "UTF-8"); //filename = ...%2B...jar this should be '+' 305:String filename = m.group(1); //filename = ...%252B...jar this should be "%2B" 301:Matcher m = FILE_NAME_URL_PATTERN.matcher(finalUrl); 300:String finalUrl = getLocationHeader(fileDlUrl); 298:log("File download URL is " + fileDlUrl); //fileDlUrl = https://minecraft.curseforge.com/projects/better-builders-wands/files/2394395/download