mirror of
https://github.com/Xiao-MoMi/craft-engine.git
synced 2025-12-27 19:09:08 +00:00
fix(core): 修复资源包生成速度过慢的问题
This commit is contained in:
@@ -44,6 +44,7 @@ import java.util.*;
|
||||
import java.util.function.BiConsumer;
|
||||
import java.util.function.Consumer;
|
||||
import java.util.function.Predicate;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import static net.momirealms.craftengine.core.util.MiscUtils.castToMap;
|
||||
|
||||
@@ -142,6 +143,7 @@ public abstract class AbstractPackManager implements PackManager {
|
||||
|
||||
@Override
|
||||
public void load() {
|
||||
initFileSystemProvider();
|
||||
List<Map<?, ?>> list = Config.instance().settings().getMapList("resource-pack.delivery.hosting");
|
||||
if (list == null || list.isEmpty()) {
|
||||
this.resourcePackHost = NoneHost.INSTANCE;
|
||||
@@ -485,6 +487,36 @@ public abstract class AbstractPackManager implements PackManager {
|
||||
}
|
||||
}
|
||||
|
||||
private static void initFileSystemProvider() {
|
||||
String osName = System.getProperty("os.name").toLowerCase();
|
||||
String providerClass = null;
|
||||
if (osName.contains("win")) {
|
||||
providerClass = "sun.nio.fs.WindowsFileSystemProvider";
|
||||
} else if (osName.contains("nix") || osName.contains("nux") || osName.contains("aix")) {
|
||||
providerClass = "sun.nio.fs.LinuxFileSystemProvider";
|
||||
} else if (osName.contains("mac")) {
|
||||
providerClass = "sun.nio.fs.MacOSXFileSystemProvider";
|
||||
}
|
||||
if (providerClass != null) {
|
||||
try {
|
||||
System.setProperty("java.nio.file.spi.DefaultFileSystemProvider", providerClass);
|
||||
} catch (Exception ignored) {}
|
||||
}
|
||||
}
|
||||
|
||||
private static void deleteDirectory(Path folder) throws IOException {
|
||||
if (!Files.exists(folder)) return;
|
||||
try (Stream<Path> walk = Files.walk(folder)) {
|
||||
walk.sorted(Comparator.reverseOrder())
|
||||
.parallel()
|
||||
.forEach(path -> {
|
||||
try {
|
||||
Files.delete(path);
|
||||
} catch (IOException ignored) {}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void generateResourcePack() {
|
||||
if (this.generateResourcePack) {
|
||||
@@ -499,7 +531,7 @@ public abstract class AbstractPackManager implements PackManager {
|
||||
.resolve("resource_pack");
|
||||
|
||||
try {
|
||||
org.apache.commons.io.FileUtils.deleteDirectory(generatedPackPath.toFile());
|
||||
deleteDirectory(generatedPackPath);
|
||||
} catch (IOException e) {
|
||||
this.plugin.logger().severe("Error deleting previous resource pack", e);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user