diff --git a/src/main/java/com/simibubi/create/content/schematics/ServerSchematicLoader.java b/src/main/java/com/simibubi/create/content/schematics/ServerSchematicLoader.java index 5c2ee7466..743cc5a3b 100644 --- a/src/main/java/com/simibubi/create/content/schematics/ServerSchematicLoader.java +++ b/src/main/java/com/simibubi/create/content/schematics/ServerSchematicLoader.java @@ -101,10 +101,10 @@ public class ServerSchematicLoader { return; } - Path schematicPath = Paths.get(getSchematicPath()).toAbsolutePath(); + Path playerSchematicsPath = Paths.get(getSchematicPath(), player.getGameProfile().getName()).toAbsolutePath(); - Path uploadPath = schematicPath.resolve(playerSchematicId).normalize(); - if (!uploadPath.startsWith(schematicPath)) { + Path uploadPath = playerSchematicsPath.resolve(schematic).normalize(); + if (!uploadPath.startsWith(playerSchematicsPath)) { Create.logger.warn("Attempted Schematic Upload with directory escape: {}", playerSchematicId); return; } @@ -123,6 +123,9 @@ public class ServerSchematicLoader { if (table == null) return; + // Delete schematic with same name + Files.deleteIfExists(uploadPath); + // Too many Schematics long count; try (Stream list = Files.list(Paths.get(playerPath))) { @@ -295,6 +298,9 @@ public class ServerSchematicLoader { return; try { + // Delete schematic with same name + Files.deleteIfExists(path); + // Too many Schematics long count; try (Stream list = Files.list(Paths.get(playerPath))) {