@@ -7,17 +7,20 @@ import com.mairwunnx.projectessentials.core.api.v1.extensions.empty
77import com.mairwunnx.projectessentials.core.api.v1.messaging.MessagingAPI
88import com.mairwunnx.projectessentials.core.api.v1.permissions.hasPermission
99import kotlinx.coroutines.*
10+ import net.lingala.zip4j.ZipFile
11+ import net.lingala.zip4j.model.ZipParameters
12+ import net.lingala.zip4j.model.enums.CompressionLevel
1013import net.minecraftforge.api.distmarker.Dist
1114import net.minecraftforge.fml.DistExecutor
1215import net.minecraftforge.fml.server.ServerLifecycleHooks.getCurrentServer
1316import org.apache.logging.log4j.LogManager
1417import org.apache.logging.log4j.MarkerManager
15- import org.zeroturnaround.zip.ZipUtil
1618import java.io.File
1719import java.text.SimpleDateFormat
1820import java.util.*
1921import kotlin.system.measureTimeMillis
2022
23+
2124object BackupManager {
2225 private val logger = LogManager .getLogger()
2326 private val marker = MarkerManager .getMarker(" BACKUP" )
@@ -102,9 +105,20 @@ object BackupManager {
102105 val path = outPath(file).also { path -> logger.debug(" Saving backup to $path " ) }
103106 val inPath = inPath()
104107 measureTimeMillis {
105- ZipUtil .pack(
106- File (inPath), File (path), backupConfiguration.backupCompressionLevel
107- )
108+ ZipFile (path).addFolder(File (inPath), ZipParameters ().apply {
109+ compressionLevel = CompressionLevel .values().find { lvl ->
110+ lvl.level == backupConfiguration.backupCompressionLevel
111+ }
112+ isIncludeRootFolder = true
113+ })
114+ if (backupConfiguration.backupConfigurations) {
115+ ZipFile (path).addFolder(File (" config" ), ZipParameters ().apply {
116+ compressionLevel = CompressionLevel .values().find { lvl ->
117+ lvl.level == backupConfiguration.backupCompressionLevel
118+ }
119+ isIncludeRootFolder = true
120+ })
121+ }
108122 }.also { time -> logger.debug(" Backup saved to $path for ${time / 1000 } seconds" ) }
109123 notifyPlayer()
110124 }
0 commit comments