diff --git a/src/main/kotlin/mcpatch/interactive/Revert.kt b/src/main/kotlin/mcpatch/interactive/Revert.kt index 600e347..6a8ff3d 100644 --- a/src/main/kotlin/mcpatch/interactive/Revert.kt +++ b/src/main/kotlin/mcpatch/interactive/Revert.kt @@ -41,11 +41,18 @@ class Revert val reader = PatchFileReader(version, ZipFile(patchFile.file, "utf-8")) + println("$version >>") + // 删除旧文件和旧目录,还有创建新目录 reader.meta.oldFiles.map { (historyDir + it) }.forEach { it.delete() } - reader.meta.oldFolders.map { (historyDir + it) }.forEach { it.delete() } reader.meta.newFolders.map { (historyDir + it) }.forEach { it.mkdirs() } + // 移动文件 + for (move in reader.meta.moveFiles) { + (historyDir + move.to).parent.mkdirs() + (historyDir + move.from).move(historyDir + move.to) + } + for ((index, entry) in reader.withIndex()) { Log.info("[$version] 解压(${index + 1}/${reader.meta.newFiles.size}) ${entry.meta.path}") @@ -57,6 +64,8 @@ class Revert file.file.bufferedOutputStream().use { stream -> entry.copyTo(stream) } } + reader.meta.oldFolders.map { (historyDir + it) }.forEach { it.delete() } + Log.info("[$version] 版本 $version 处理完成") } @@ -74,4 +83,4 @@ class Revert Log.info("所有目录已经还原!") } -} \ No newline at end of file +}