From a0ae4a972066a9445c7aaa04f4ac030952429085 Mon Sep 17 00:00:00 2001 From: Telesphoreo Date: Sun, 24 Apr 2022 17:24:38 -0500 Subject: [PATCH] i hate this --- .../impl/SchematicDownloadEndpoint.java | 44 ++++++++++++++----- 1 file changed, 32 insertions(+), 12 deletions(-) diff --git a/src/main/java/dev/plex/request/impl/SchematicDownloadEndpoint.java b/src/main/java/dev/plex/request/impl/SchematicDownloadEndpoint.java index 0a6645f..293d09e 100644 --- a/src/main/java/dev/plex/request/impl/SchematicDownloadEndpoint.java +++ b/src/main/java/dev/plex/request/impl/SchematicDownloadEndpoint.java @@ -3,12 +3,15 @@ package dev.plex.request.impl; import dev.plex.HTTPDModule; import dev.plex.request.AbstractServlet; import dev.plex.request.GetMapping; +import dev.plex.util.PlexLog; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import java.io.File; import java.io.IOException; import java.io.OutputStream; +import java.util.ArrayList; import java.util.Arrays; +import java.util.List; public class SchematicDownloadEndpoint extends AbstractServlet { @@ -72,20 +75,37 @@ public class SchematicDownloadEndpoint extends AbstractServlet return null; } StringBuilder sb = new StringBuilder(); - File[] alphabetical = worldeditFolder.listFiles(); - if (alphabetical != null) + for (File worldeditFile : listFilesForFolder(worldeditFolder)) { - Arrays.sort(alphabetical); - for (File worldeditFile : alphabetical) - { - String sanitizedName = worldeditFile.getName().replaceAll("<","<").replaceAll(">",">"); - sb.append(" \n" + - " \n " + sanitizedName + "\n \n" + - " \n " + formattedSize(worldeditFile.length()) + "\n \n" + - " \n"); - } - file = file.replace("${schematics}", sb.toString()); + String fixedPath = worldeditFile.getPath().replace("plugins/FastAsyncWorldEdit/schematics/", ""); + fixedPath.replace("plugins/WorldEdit/schematics/", ""); + String sanitizedName = fixedPath.replaceAll("<", "<").replaceAll(">", ">"); + sb.append(" \n" + + " \n " + sanitizedName + "\n \n" + + " \n " + formattedSize(worldeditFile.length()) + "\n \n" + + " \n"); } + file = file.replace("${schematics}", sb.toString()); return file; } + + List files = new ArrayList<>(); + + public List listFilesForFolder(final File folder) + { + for (File fileEntry : folder.listFiles()) + { + if (fileEntry.isDirectory()) + { + PlexLog.debug("Found directory"); + listFilesForFolder(fileEntry); + } + else + { + files.add(fileEntry); + } + } + PlexLog.debug(files.toString()); + return files; + } }