fix DownloadUtil not downloading file if ETag present, but file is not
This commit is contained in:
		
							parent
							
								
									38c395b2e7
								
							
						
					
					
						commit
						3d21ce811b
					
				
					 2 changed files with 27 additions and 2 deletions
				
			
		|  | @ -42,6 +42,7 @@ import java.net.URL; | ||||||
| import java.nio.charset.StandardCharsets; | import java.nio.charset.StandardCharsets; | ||||||
| import java.util.Optional; | import java.util.Optional; | ||||||
| import java.util.function.Consumer; | import java.util.function.Consumer; | ||||||
|  | import java.util.zip.ZipError; | ||||||
| 
 | 
 | ||||||
| public class MinecraftProvider extends DependencyProvider { | public class MinecraftProvider extends DependencyProvider { | ||||||
| 
 | 
 | ||||||
|  | @ -89,7 +90,15 @@ public class MinecraftProvider extends DependencyProvider { | ||||||
| 		libraryProvider.provide(this, project); | 		libraryProvider.provide(this, project); | ||||||
| 
 | 
 | ||||||
| 		if (!MINECRAFT_MERGED_JAR.exists()) { | 		if (!MINECRAFT_MERGED_JAR.exists()) { | ||||||
| 			mergeJars(project.getLogger()); | 			try { | ||||||
|  | 				mergeJars(project.getLogger()); | ||||||
|  | 			} catch (ZipError e) { | ||||||
|  | 				DownloadUtil.delete(MINECRAFT_CLIENT_JAR); | ||||||
|  | 				DownloadUtil.delete(MINECRAFT_SERVER_JAR); | ||||||
|  | 
 | ||||||
|  | 				project.getLogger().error("Could not merge JARs! Deleting source JARs - please re-run the command and move on.", e); | ||||||
|  | 				throw new RuntimeException(); | ||||||
|  | 			} | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -86,7 +86,7 @@ public class DownloadUtil { | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
| 		long modifyTime = connection.getHeaderFieldDate("Last-Modified", -1); | 		long modifyTime = connection.getHeaderFieldDate("Last-Modified", -1); | ||||||
| 		if (code == HttpURLConnection.HTTP_NOT_MODIFIED || modifyTime > 0 && to.exists() && to.lastModified() >= modifyTime) { | 		if (to.exists() && (code == HttpURLConnection.HTTP_NOT_MODIFIED || modifyTime > 0 && to.lastModified() >= modifyTime)) { | ||||||
| 			if (!quiet) logger.info("'{}' Not Modified, skipping.", to); | 			if (!quiet) logger.info("'{}' Not Modified, skipping.", to); | ||||||
| 			return; //What we've got is already fine | 			return; //What we've got is already fine | ||||||
| 		} | 		} | ||||||
|  | @ -180,4 +180,20 @@ public class DownloadUtil { | ||||||
| 			return String.format("%.2f GB", bytes / (1024.0 * 1024.0 * 1024.0)); | 			return String.format("%.2f GB", bytes / (1024.0 * 1024.0 * 1024.0)); | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
|  | 
 | ||||||
|  | 	/** | ||||||
|  | 	 * Delete the file along with the corresponding ETag, if it exists. | ||||||
|  | 	 * | ||||||
|  | 	 * @param file The file to delete. | ||||||
|  | 	 */ | ||||||
|  | 	public static void delete(File file) { | ||||||
|  | 		if (file.exists()) { | ||||||
|  | 			file.delete(); | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		File etagFile = getETagFile(file); | ||||||
|  | 		if (etagFile.exists()) { | ||||||
|  | 			etagFile.delete(); | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
| } | } | ||||||
		Loading…
	
		Reference in a new issue