From 21a30b79842fcae0e0ad58ecb610ab44bf2d85ec Mon Sep 17 00:00:00 2001 From: Bryce Browner Date: Sun, 8 Mar 2020 00:32:09 -0500 Subject: [PATCH] Fixed sponge claim migrator to find GP config directory via API (#130) --- .../java/com/griefdefender/GDBootstrap.java | 10 ++++------ .../migrator/GPSpongeMigrator.java | 18 ++++++++++-------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/sponge/src/main/java/com/griefdefender/GDBootstrap.java b/sponge/src/main/java/com/griefdefender/GDBootstrap.java index c3c1887..f4feaf5 100644 --- a/sponge/src/main/java/com/griefdefender/GDBootstrap.java +++ b/sponge/src/main/java/com/griefdefender/GDBootstrap.java @@ -52,7 +52,6 @@ import java.nio.channels.ReadableByteChannel; import java.nio.file.Files; import java.nio.file.Path; -import java.nio.file.Paths; import java.security.MessageDigest; import java.util.ArrayList; import java.util.HashMap; @@ -72,7 +71,6 @@ public class GDBootstrap { private Map jarMap = new HashMap<>(); private List relocateList = new ArrayList<>(); private static GDBootstrap instance; - private static final String LIB_ROOT_PATH = "./config/griefdefender/lib/"; private static final String USER_AGENT = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.75 Safari/535.7"; public static GDBootstrap getInstance() { @@ -101,6 +99,7 @@ public void onPreInit(GamePreInitializationEvent event) { this.getLogger().error("Resource " + bukkitJsonVersion + ".json is corrupted!. Please contact author for assistance."); return; } + final Path LIB_ROOT_PATH = instance.configPath.resolve("lib"); final Iterator iterator = libraries.iterator(); while (iterator.hasNext()) { JSONObject lib = iterator.next(); @@ -109,8 +108,7 @@ public void onPreInit(GamePreInitializationEvent event) { final String path = (String) lib.get("path"); final String relocate = (String) lib.get("relocate"); final String url = (String) lib.get("url"); - final Path libPath = Paths.get(LIB_ROOT_PATH).resolve(path); - final File file = libPath.toFile(); + final Path libPath = LIB_ROOT_PATH.resolve(path); downloadLibrary(name, relocate, sha1, url, libPath); } } catch (Throwable t) { @@ -175,7 +173,7 @@ public void downloadLibrary(String name, String relocate, String sha1, String ur final String hash = getLibraryHash(file); - + if (hash == null || !sha1.equals(hash)) { this.getLogger().error("Detected invalid hash '" + hash + "' for file '" + libPath + "'. Expected '" + sha1 + "'. Skipping..."); try { @@ -195,7 +193,7 @@ private String getLibraryHash(File file) { try { final MessageDigest md = MessageDigest.getInstance("SHA-1"); final byte[] data = Files.readAllBytes(file.toPath()); - final byte[] b = md.digest(data); + final byte[] b = md.digest(data); StringBuffer buffer = new StringBuffer(); for (int i = 0; i < b.length; i++) { if ((0xff & b[i]) < 0x10) { diff --git a/sponge/src/main/java/com/griefdefender/migrator/GPSpongeMigrator.java b/sponge/src/main/java/com/griefdefender/migrator/GPSpongeMigrator.java index 7756551..d9f5d33 100644 --- a/sponge/src/main/java/com/griefdefender/migrator/GPSpongeMigrator.java +++ b/sponge/src/main/java/com/griefdefender/migrator/GPSpongeMigrator.java @@ -39,7 +39,6 @@ import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; -import java.nio.file.Paths; import java.util.HashSet; import java.util.Iterator; import java.util.List; @@ -58,25 +57,28 @@ public class GPSpongeMigrator { private static GPSpongeMigrator instance; public PermissionService permissionService = GriefDefenderPlugin.getInstance().permissionService; - final Path GP_GLOBAL_PLAYER_DATA_PATH = Paths.get("config", "griefprevention", "GlobalPlayerData"); - final Path GP_CLAIM_DATA_PATH = Paths.get("config", "griefprevention", "worlds"); - final Path GD_DATA_ROOT_PATH = Paths.get("config", "griefdefender"); + final Path GD_DATA_ROOT_PATH = GriefDefenderPlugin.getInstance().getConfigPath(); + final Path GD_GLOBAL_PLAYER_DATA_PATH = GD_DATA_ROOT_PATH.resolve("GlobalPlayerData"); + final Path GD_CLAIM_DATA_PATH = GD_DATA_ROOT_PATH.resolve("worlds"); + final Path GP_DATA_ROOT_PATH = GD_DATA_ROOT_PATH.getParent().resolve("griefprevention"); + final Path GP_GLOBAL_PLAYER_DATA_PATH = GP_DATA_ROOT_PATH.resolve("GlobalPlayerData"); + final Path GP_CLAIM_DATA_PATH = GP_DATA_ROOT_PATH.resolve("worlds"); public void migrateData() { try { if (Files.exists(GP_GLOBAL_PLAYER_DATA_PATH)) { if (Files.isDirectory(GP_GLOBAL_PLAYER_DATA_PATH)) { - FileUtils.copyDirectory(GP_GLOBAL_PLAYER_DATA_PATH.toFile(), GD_DATA_ROOT_PATH.resolve("GlobalPlayerData").toFile(), true); + FileUtils.copyDirectory(GP_GLOBAL_PLAYER_DATA_PATH.toFile(), GD_GLOBAL_PLAYER_DATA_PATH.toFile(), true); } else { // Support symlinks - FileUtils.copyFile(GP_GLOBAL_PLAYER_DATA_PATH.toFile(), GD_DATA_ROOT_PATH.resolve("GlobalPlayerData").toFile(), true); + FileUtils.copyFile(GP_GLOBAL_PLAYER_DATA_PATH.toFile(), GD_GLOBAL_PLAYER_DATA_PATH.toFile(), true); } } - FileUtils.copyDirectory(GP_CLAIM_DATA_PATH.toFile(), GD_DATA_ROOT_PATH.resolve("worlds").toFile(), true); + FileUtils.copyDirectory(GP_CLAIM_DATA_PATH.toFile(), GD_CLAIM_DATA_PATH.toFile(), true); } catch (IOException e1) { e1.printStackTrace(); } - final File dataPath = GD_DATA_ROOT_PATH.resolve("worlds").toFile(); + final File dataPath = GD_CLAIM_DATA_PATH.toFile(); final File[] files = dataPath.listFiles(); GriefDefenderPlugin.getInstance().executor.execute(() -> {