aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorAaron <51387595+AzureAaron@users.noreply.github.com>2023-11-04 00:24:53 -0400
committerGitHub <noreply@github.com>2023-11-04 00:24:53 -0400
commitd8bd4d6c76de9ae2c03d59646c55673c1e8e30e1 (patch)
tree4eb0234e3292fc9b37e807770c789ff63d2f18c5 /src/main/java
parenta309de2e02d4c635983bf181ca23b7e119edab56 (diff)
parent0d738a4bd470a4f5608f59cb88c0aba33b1ac4fc (diff)
downloadSkyblocker-d8bd4d6c76de9ae2c03d59646c55673c1e8e30e1.tar.gz
Skyblocker-d8bd4d6c76de9ae2c03d59646c55673c1e8e30e1.tar.bz2
Skyblocker-d8bd4d6c76de9ae2c03d59646c55673c1e8e30e1.zip
Merge pull request #404 from AzureAaron/nio-refactor
NIO Refactor
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/FairySouls.java9
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/shortcut/Shortcuts.java11
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/spidersden/Relics.java8
-rw-r--r--src/main/java/de/hysky/skyblocker/utils/NEURepoManager.java23
4 files changed, 31 insertions, 20 deletions
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/FairySouls.java b/src/main/java/de/hysky/skyblocker/skyblock/FairySouls.java
index 67bdfdc5..3e1220b0 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/FairySouls.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/FairySouls.java
@@ -30,6 +30,8 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.*;
+import java.nio.file.Files;
+import java.nio.file.NoSuchFileException;
import java.util.*;
import java.util.concurrent.CompletableFuture;
import java.util.stream.Collectors;
@@ -70,7 +72,7 @@ public class FairySouls {
NEURepoManager.NEU_REPO.getConstants().getFairySouls().getSoulLocations().forEach((location, fairySoulsForLocation) -> fairySouls.put(location, fairySoulsForLocation.stream().map(coordinate -> new BlockPos(coordinate.getX(), coordinate.getY(), coordinate.getZ())).collect(Collectors.toUnmodifiableSet())));
LOGGER.debug("[Skyblocker] Loaded {} fairy souls across {} locations", fairySouls.values().stream().mapToInt(Set::size).sum(), fairySouls.size());
- try (BufferedReader reader = new BufferedReader(new FileReader(SkyblockerMod.CONFIG_DIR.resolve("found_fairy_souls.json").toFile()))) {
+ try (BufferedReader reader = Files.newBufferedReader(SkyblockerMod.CONFIG_DIR.resolve("found_fairy_souls.json"))) {
for (Map.Entry<String, JsonElement> foundFairiesForProfileJson : JsonParser.parseReader(reader).getAsJsonObject().asMap().entrySet()) {
Map<String, Set<BlockPos>> foundFairiesForProfile = new HashMap<>();
for (Map.Entry<String, JsonElement> foundFairiesForLocationJson : foundFairiesForProfileJson.getValue().getAsJsonObject().asMap().entrySet()) {
@@ -83,7 +85,7 @@ public class FairySouls {
foundFairies.put(foundFairiesForProfileJson.getKey(), foundFairiesForProfile);
}
LOGGER.debug("[Skyblocker] Loaded found fairy souls");
- } catch (FileNotFoundException ignored) {
+ } catch (NoSuchFileException ignored) {
} catch (IOException e) {
LOGGER.error("[Skyblocker] Failed to load found fairy souls", e);
}
@@ -92,7 +94,7 @@ public class FairySouls {
}
private static void saveFoundFairySouls(MinecraftClient client) {
- try (BufferedWriter writer = new BufferedWriter(new FileWriter(SkyblockerMod.CONFIG_DIR.resolve("found_fairy_souls.json").toFile()))) {
+ try (BufferedWriter writer = Files.newBufferedWriter(SkyblockerMod.CONFIG_DIR.resolve("found_fairy_souls.json"))) {
JsonObject foundFairiesJson = new JsonObject();
for (Map.Entry<String, Map<String, Set<BlockPos>>> foundFairiesForProfile : foundFairies.entrySet()) {
JsonObject foundFairiesForProfileJson = new JsonObject();
@@ -106,7 +108,6 @@ public class FairySouls {
foundFairiesJson.add(foundFairiesForProfile.getKey(), foundFairiesForProfileJson);
}
SkyblockerMod.GSON.toJson(foundFairiesJson, writer);
- writer.close();
LOGGER.info("[Skyblocker] Saved found fairy souls");
} catch (IOException e) {
LOGGER.error("[Skyblocker] Failed to write found fairy souls to file", e);
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/shortcut/Shortcuts.java b/src/main/java/de/hysky/skyblocker/skyblock/shortcut/Shortcuts.java
index 9c058a4f..c2c952cf 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/shortcut/Shortcuts.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/shortcut/Shortcuts.java
@@ -21,6 +21,9 @@ import org.slf4j.LoggerFactory;
import java.io.*;
import java.lang.reflect.Type;
+import java.nio.file.Files;
+import java.nio.file.NoSuchFileException;
+import java.nio.file.Path;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.CompletableFuture;
@@ -30,7 +33,7 @@ import static net.fabricmc.fabric.api.client.command.v2.ClientCommandManager.lit
public class Shortcuts {
private static final Logger LOGGER = LoggerFactory.getLogger(Shortcuts.class);
- private static final File SHORTCUTS_FILE = SkyblockerMod.CONFIG_DIR.resolve("shortcuts.json").toFile();
+ private static final Path SHORTCUTS_FILE = SkyblockerMod.CONFIG_DIR.resolve("shortcuts.json");
@Nullable
private static CompletableFuture<Void> shortcutsLoaded;
public static final Map<String, String> commands = new HashMap<>();
@@ -52,7 +55,7 @@ public class Shortcuts {
return;
}
shortcutsLoaded = CompletableFuture.runAsync(() -> {
- try (BufferedReader reader = new BufferedReader(new FileReader(SHORTCUTS_FILE))) {
+ try (BufferedReader reader = Files.newBufferedReader(SHORTCUTS_FILE)) {
Type shortcutsType = new TypeToken<Map<String, Map<String, String>>>() {
}.getType();
Map<String, Map<String, String>> shortcuts = SkyblockerMod.GSON.fromJson(reader, shortcutsType);
@@ -61,7 +64,7 @@ public class Shortcuts {
commands.putAll(shortcuts.get("commands"));
commandArgs.putAll(shortcuts.get("commandArgs"));
LOGGER.info("[Skyblocker] Loaded {} command shortcuts and {} command argument shortcuts", commands.size(), commandArgs.size());
- } catch (FileNotFoundException e) {
+ } catch (NoSuchFileException e) {
registerDefaultShortcuts();
LOGGER.warn("[Skyblocker] Shortcuts file not found, using default shortcuts. This is normal when using for the first time.");
} catch (IOException e) {
@@ -140,7 +143,7 @@ public class Shortcuts {
JsonObject shortcutsJson = new JsonObject();
shortcutsJson.add("commands", SkyblockerMod.GSON.toJsonTree(commands));
shortcutsJson.add("commandArgs", SkyblockerMod.GSON.toJsonTree(commandArgs));
- try (BufferedWriter writer = new BufferedWriter(new FileWriter(SHORTCUTS_FILE))) {
+ try (BufferedWriter writer = Files.newBufferedWriter(SHORTCUTS_FILE)) {
SkyblockerMod.GSON.toJson(shortcutsJson, writer);
LOGGER.info("[Skyblocker] Saved {} command shortcuts and {} command argument shortcuts", commands.size(), commandArgs.size());
} catch (IOException e) {
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/spidersden/Relics.java b/src/main/java/de/hysky/skyblocker/skyblock/spidersden/Relics.java
index aaf4d77c..df68c57b 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/spidersden/Relics.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/spidersden/Relics.java
@@ -29,6 +29,8 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.*;
+import java.nio.file.Files;
+import java.nio.file.NoSuchFileException;
import java.util.*;
import java.util.concurrent.CompletableFuture;
@@ -68,7 +70,7 @@ public class Relics {
LOGGER.error("[Skyblocker] Failed to load relics locations", e);
}
- try (BufferedReader reader = new BufferedReader(new FileReader(SkyblockerMod.CONFIG_DIR.resolve("found_relics.json").toFile()))) {
+ try (BufferedReader reader = Files.newBufferedReader(SkyblockerMod.CONFIG_DIR.resolve("found_relics.json"))) {
for (Map.Entry<String, JsonElement> profileJson : JsonParser.parseReader(reader).getAsJsonObject().asMap().entrySet()) {
Set<BlockPos> foundRelicsForProfile = new HashSet<>();
for (JsonElement foundRelicsJson : profileJson.getValue().getAsJsonArray().asList()) {
@@ -77,7 +79,7 @@ public class Relics {
foundRelics.put(profileJson.getKey(), foundRelicsForProfile);
}
LOGGER.debug("[Skyblocker] Loaded found relics");
- } catch (FileNotFoundException ignored) {
+ } catch (NoSuchFileException ignored) {
} catch (IOException e) {
LOGGER.error("[Skyblocker] Failed to load found relics", e);
}
@@ -85,7 +87,7 @@ public class Relics {
}
private static void saveFoundRelics(MinecraftClient client) {
- try (BufferedWriter writer = new BufferedWriter(new FileWriter(SkyblockerMod.CONFIG_DIR.resolve("found_relics.json").toFile()))) {
+ try (BufferedWriter writer = Files.newBufferedWriter(SkyblockerMod.CONFIG_DIR.resolve("found_relics.json"))) {
JsonObject json = new JsonObject();
for (Map.Entry<String, Set<BlockPos>> foundRelicsForProfile : foundRelics.entrySet()) {
JsonArray foundRelicsJson = new JsonArray();
diff --git a/src/main/java/de/hysky/skyblocker/utils/NEURepoManager.java b/src/main/java/de/hysky/skyblocker/utils/NEURepoManager.java
index 6d78b3f3..870e94da 100644
--- a/src/main/java/de/hysky/skyblocker/utils/NEURepoManager.java
+++ b/src/main/java/de/hysky/skyblocker/utils/NEURepoManager.java
@@ -14,10 +14,12 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.File;
+import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.List;
import java.util.concurrent.CompletableFuture;
+import java.util.stream.Stream;
/**
* Initializes the NEU repo, which contains item metadata and fairy souls location data. Clones the repo if it does not exist and checks for updates. Use {@link #runAsyncAfterLoad(Runnable)} to run code after the repo is initialized.
@@ -74,8 +76,7 @@ public class NEURepoManager {
CompletableFuture.runAsync(() -> {
try {
ItemRepository.setFilesImported(false);
- File dir = NEURepoManager.LOCAL_REPO_DIR.toFile();
- recursiveDelete(dir);
+ recursiveDelete(NEURepoManager.LOCAL_REPO_DIR);
} catch (Exception ex) {
if (MinecraftClient.getInstance().player != null)
MinecraftClient.getInstance().player.sendMessage(Constants.PREFIX.get().append(Text.translatable("skyblocker.updaterepository.failed")), false);
@@ -86,14 +87,18 @@ public class NEURepoManager {
}
@SuppressWarnings("ResultOfMethodCallIgnored")
- private static void recursiveDelete(File dir) {
- File[] children;
- if (dir.isDirectory() && !Files.isSymbolicLink(dir.toPath()) && (children = dir.listFiles()) != null) {
- for (File child : children) {
- recursiveDelete(child);
- }
+ private static void recursiveDelete(Path dir) throws IOException {
+ if (Files.isDirectory(dir) && !Files.isSymbolicLink(dir)) {
+ Files.list(dir).forEach(child -> {
+ try {
+ recursiveDelete(child);
+ } catch (Exception e) {
+ LOGGER.error("[Skyblocker] Encountered an exception while deleting a file! Path: {}", child.toAbsolutePath(), e);
+ }
+ });
}
- dir.delete();
+
+ Files.delete(dir);
}
/**