diff --git a/common/src/main/java/com/dfsek/terra/config/files/FolderLoader.java b/common/src/main/java/com/dfsek/terra/config/files/FolderLoader.java index 12c73eb39..6bf93f044 100644 --- a/common/src/main/java/com/dfsek/terra/config/files/FolderLoader.java +++ b/common/src/main/java/com/dfsek/terra/config/files/FolderLoader.java @@ -31,7 +31,7 @@ public class FolderLoader extends Loader { try(Stream paths = Files.walk(newPath.toPath())) { paths.filter(Files::isRegularFile).filter(file -> file.toString().toLowerCase().endsWith(".yml")).forEach(file -> { try { - streams.add(new FileInputStream(file.toFile())); + streams.put(newPath.toURI().relativize(file.toUri()).getPath(), new FileInputStream(file.toFile())); } catch(FileNotFoundException e) { e.printStackTrace(); } diff --git a/common/src/main/java/com/dfsek/terra/config/files/Loader.java b/common/src/main/java/com/dfsek/terra/config/files/Loader.java index 4d7257208..6829c0549 100644 --- a/common/src/main/java/com/dfsek/terra/config/files/Loader.java +++ b/common/src/main/java/com/dfsek/terra/config/files/Loader.java @@ -1,14 +1,17 @@ package com.dfsek.terra.config.files; import com.dfsek.tectonic.exception.ConfigException; +import com.dfsek.terra.api.util.GlueList; import java.io.IOException; import java.io.InputStream; -import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; +import java.util.function.Consumer; public abstract class Loader { - protected final List streams = new ArrayList<>(); + protected final Map streams = new HashMap<>(); /** * Do something with the InputStreams. @@ -16,7 +19,12 @@ public abstract class Loader { * @param consumer Something to do with the streams. */ public Loader then(ExceptionalConsumer> consumer) throws ConfigException { - consumer.accept(streams); + consumer.accept(new GlueList<>(streams.values())); + return this; + } + + public Loader thenNames(Consumer> consumer) throws ConfigException { + consumer.accept(new GlueList<>(streams.keySet())); return this; } @@ -45,7 +53,7 @@ public abstract class Loader { * Close all InputStreams opened. */ public Loader close() { - streams.forEach(input -> { + streams.forEach((name, input) -> { try { input.close(); } catch(IOException e) { diff --git a/common/src/main/java/com/dfsek/terra/config/files/ZIPLoader.java b/common/src/main/java/com/dfsek/terra/config/files/ZIPLoader.java index 85da05f98..e0a72f71c 100644 --- a/common/src/main/java/com/dfsek/terra/config/files/ZIPLoader.java +++ b/common/src/main/java/com/dfsek/terra/config/files/ZIPLoader.java @@ -30,7 +30,7 @@ public class ZIPLoader extends Loader { ZipEntry entry = entries.nextElement(); if(!entry.isDirectory() && entry.getName().startsWith(directory) && entry.getName().endsWith(".yml")) { try { - streams.add(file.getInputStream(entry)); + streams.put(entry.getName(), file.getInputStream(entry)); } catch(IOException e) { e.printStackTrace(); }