From a881c9709454077bdc3b3b964bcfbe213b671b26 Mon Sep 17 00:00:00 2001 From: Reider745 <70357814+Reider745@users.noreply.github.com> Date: Sun, 3 Dec 2023 18:00:48 +0300 Subject: [PATCH] =?UTF-8?q?feat:=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B0=20=D1=80=D0=B0=D1=81=D0=BF=D0=B0=D0=BA=D0=BE?= =?UTF-8?q?=D0=B2=D0=BA=D0=B0=20icmod=20=D1=84=D0=B0=D0=B9=D0=BB=D0=BE?= =?UTF-8?q?=D0=B2=20=D0=B2=20=D0=BF=D0=B0=D0=BF=D0=BA=D0=B5=20mods?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - добавлена распаковка icmod файлов папке mods --- .../java/com/reider745/InnerCoreServer.java | 31 ++++++++++++++----- 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/reider745/InnerCoreServer.java b/src/main/java/com/reider745/InnerCoreServer.java index 1ba863d0..78aee35b 100644 --- a/src/main/java/com/reider745/InnerCoreServer.java +++ b/src/main/java/com/reider745/InnerCoreServer.java @@ -107,9 +107,8 @@ public class InnerCoreServer { } @SuppressWarnings("unchecked") - public static void unzip(final File zipFile, final String uncompressedDirectory) { + public static void unzip(final ZipFile file, final String uncompressedDirectory) { try { - final ZipFile file = new ZipFile(zipFile); final Enumeration entries = (Enumeration) file.entries(); while (entries.hasMoreElements()) { @@ -126,6 +125,28 @@ public class InnerCoreServer { } } + public static void unzipMods(final String path) throws IOException { + final File directory_mods = new File(path); + final File[] files = directory_mods.listFiles(); + if(files == null) return; + + for(final File file : files){ + final String name = file.getName(); + if(file.isFile() && name.endsWith(".icmod")){ + server.getLogger().info("Unzip mod "+name); + + final ZipFile zipFile = new ZipFile(file); + if(zipFile.getEntry("build.config") == null) + unzip(zipFile, path+"/"); + else { + final String nameFolder = name.replace(".icmod", ""); + new File(path + "/" + nameFolder).mkdir(); + unzip(zipFile, path + "/" + nameFolder + "/"); + } + } + } + } + static void getFolderRootFromUri(URI uri, String targetPath, Consumer action) { Map env = new HashMap<>(); env.put("create", "true"); @@ -193,14 +214,10 @@ public class InnerCoreServer { if (!innercoreDirectory.exists()) { server.getLogger().info("Extracting internal package..."); unpackResources("/innercore", innercoreDirectory.getPath()); - // final File zipFile = cloneFile("innercore.zip"); - // if (zipFile != null) { - // unzip(zipFile, PATH); - // zipFile.deleteOnExit(); - // } } cloneFile("innercore_default_config.json"); + unzipMods(PATH+"/innercore/mods"); FileTools.init();