diff --git a/core/src/main/java/com/sk89q/worldedit/command/UtilityCommands.java b/core/src/main/java/com/sk89q/worldedit/command/UtilityCommands.java index caeca524..cb96fd67 100644 --- a/core/src/main/java/com/sk89q/worldedit/command/UtilityCommands.java +++ b/core/src/main/java/com/sk89q/worldedit/command/UtilityCommands.java @@ -697,7 +697,9 @@ public class UtilityCommands extends MethodCommands { m.send(actor); } - protected static int getFiles(File dir, Actor actor, CommandContext args, @Range(min = 0) int page, int perPage, String formatName, boolean playerFolder, Consumer forEachFile) { + public static int getFiles(File dir, Actor actor, CommandContext args, @Range(min = 0) int page, int perPage, String formatName, boolean playerFolder, Consumer forEachFile) { + Consumer rootFunction = forEachFile; + int len = args.argsLength(); List filters = new ArrayList<>(); @@ -765,6 +767,16 @@ public class UtilityCommands extends MethodCommands { return true; }; + List toFilter = new ArrayList<>(); + if (!filters.isEmpty()) { + forEachFile = new DelegateConsumer(forEachFile) { + @Override + public void accept(File file) { + toFilter.add(file); + } + }; + } + if (formatName != null) { final ClipboardFormat cf = ClipboardFormat.findByAlias(formatName); forEachFile = new DelegateConsumer(forEachFile) { @@ -781,7 +793,6 @@ public class UtilityCommands extends MethodCommands { } }; } - if (playerFolder) { if (listMine) { File playerDir = new File(dir, actor.getUniqueId() + dirFilter); @@ -807,6 +818,10 @@ public class UtilityCommands extends MethodCommands { File rel = new File(dir, dirFilter); if (rel.exists()) allFiles(rel.listFiles(), false, forEachFile); } + if (!filters.isEmpty() && !toFilter.isEmpty()) { + List result = filter(toFilter, filters); + for (File file : result) rootFunction.accept(file); + } return page; } @@ -850,7 +865,7 @@ public class UtilityCommands extends MethodCommands { return fileList; } - private static void allFiles(File[] files, boolean recursive, Consumer task) { + public static void allFiles(File[] files, boolean recursive, Consumer task) { if (files == null || files.length == 0) return; for (File f : files) { if (f.isDirectory()) {