From 8054a35f432862f493e4dee30779793c058249e4 Mon Sep 17 00:00:00 2001 From: LoJoSho Date: Fri, 23 Jun 2023 14:45:27 -0500 Subject: [PATCH] feat: add recursive file lookup --- .../hmccosmetics/cosmetic/Cosmetics.java | 31 ++++++++----- .../hibiscusmc/hmccosmetics/gui/Menus.java | 46 +++++++++++-------- 2 files changed, 45 insertions(+), 32 deletions(-) diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/cosmetic/Cosmetics.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/cosmetic/Cosmetics.java index 811f847e..0c371ee3 100644 --- a/common/src/main/java/com/hibiscusmc/hmccosmetics/cosmetic/Cosmetics.java +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/cosmetic/Cosmetics.java @@ -15,8 +15,11 @@ import org.spongepowered.configurate.ConfigurationNode; import org.spongepowered.configurate.yaml.YamlConfigurationLoader; import java.io.File; +import java.nio.file.Files; +import java.nio.file.Path; import java.util.Set; import java.util.logging.Level; +import java.util.stream.Stream; public class Cosmetics { @@ -68,19 +71,23 @@ public class Cosmetics { File[] directoryListing = cosmeticFolder.listFiles(); if (directoryListing == null) return; - for (File child : directoryListing) { - if (child.toString().contains(".yml") || child.toString().contains(".yaml")) { - MessagesUtil.sendDebugMessages("Scanning " + child); - // Loads file - YamlConfigurationLoader loader = YamlConfigurationLoader.builder().path(child.toPath()).build(); - CommentedConfigurationNode root; - try { - root = loader.load(); - } catch (ConfigurateException e) { - throw new RuntimeException(e); + try (Stream walkStream = Files.walk(cosmeticFolder.toPath())) { + walkStream.filter(p -> p.toFile().isFile()).forEach(child -> { + if (child.toString().contains(".yml") || child.toString().contains(".yaml")) { + MessagesUtil.sendDebugMessages("Scanning " + child); + // Loads file + YamlConfigurationLoader loader = YamlConfigurationLoader.builder().path(child).build(); + CommentedConfigurationNode root; + try { + root = loader.load(); + } catch (ConfigurateException e) { + throw new RuntimeException(e); + } + setupCosmetics(root); } - setupCosmetics(root); - } + }); + } catch (Exception e) { + e.printStackTrace(); } } diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/gui/Menus.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/gui/Menus.java index f539dfc2..68e0f6cd 100644 --- a/common/src/main/java/com/hibiscusmc/hmccosmetics/gui/Menus.java +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/gui/Menus.java @@ -11,11 +11,15 @@ import org.spongepowered.configurate.ConfigurateException; import org.spongepowered.configurate.yaml.YamlConfigurationLoader; import java.io.File; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.logging.Level; +import java.util.stream.Stream; public class Menus { @@ -66,27 +70,29 @@ public class Menus { File cosmeticFolder = new File(HMCCosmeticsPlugin.getInstance().getDataFolder() + "/menus"); if (!cosmeticFolder.exists()) cosmeticFolder.mkdir(); - File[] directoryListing = cosmeticFolder.listFiles(); - if (directoryListing == null) return; - - for (File child : directoryListing) { - if (child.toString().contains(".yml") || child.toString().contains(".yaml")) { - MessagesUtil.sendDebugMessages("Scanning " + child); - // Loads file - YamlConfigurationLoader loader = YamlConfigurationLoader.builder().path(child.toPath()).build(); - CommentedConfigurationNode root; - try { - root = loader.load(); - } catch (ConfigurateException e) { - throw new RuntimeException(e); + // Recursive file lookup + try (Stream walkStream = Files.walk(cosmeticFolder.toPath())) { + walkStream.filter(p -> p.toFile().isFile()).forEach(child -> { + if (child.toString().endsWith("yml") || child.toString().endsWith("yaml")) { + MessagesUtil.sendDebugMessages("Scanning " + child); + // Loads file + YamlConfigurationLoader loader = YamlConfigurationLoader.builder().path(child).build(); + CommentedConfigurationNode root; + try { + root = loader.load(); + } catch (ConfigurateException e) { + throw new RuntimeException(e); + } + try { + new Menu(FilenameUtils.removeExtension(child.getFileName().toString()), root); + } catch (Exception e) { + MessagesUtil.sendDebugMessages("Unable to create menu in " + child.getFileName().toString(), Level.WARNING); + if (Settings.isDebugEnabled()) e.printStackTrace(); + } } - try { - new Menu(FilenameUtils.removeExtension(child.getName()), root); - } catch (Exception e) { - MessagesUtil.sendDebugMessages("Unable to create menu in " + child, Level.WARNING); - if (Settings.isDebugEnabled()) e.printStackTrace(); - } - } + }); + } catch (Exception e) { + e.printStackTrace(); } } }