Better logic for selecting schematic format.

- You had to specifically use //schem load <schematic>.schematic mcedit to load legacy schematics, now if you're loading .schematic it assumes you're wanting mcedit format
 - If you end up attempting to load an mcedit schematic with the sponge reader it now throws an exception.
This commit is contained in:
dordsor21
2020-05-05 16:16:27 +01:00
parent 6dec0ab2ba
commit 3abf964620
2 changed files with 14 additions and 4 deletions

View File

@ -201,7 +201,7 @@ public class SchematicCommands {
String formatName) throws FilenameException {
LocalConfiguration config = worldEdit.getConfiguration();
ClipboardFormat format = ClipboardFormats.findByAlias(formatName);
ClipboardFormat format = null;
InputStream in = null;
try {
URI uri;
@ -221,6 +221,7 @@ public class SchematicCommands {
File dir = Settings.IMP.PATHS.PER_PLAYER_SCHEMATICS ? new File(saveDir, actor.getUniqueId().toString()) : saveDir;
File file;
if (filename.startsWith("#")) {
format = ClipboardFormats.findByAlias(formatName);
String[] extensions;
if (format != null) {
extensions = format.getFileExtensions().toArray(new String[0]);
@ -237,9 +238,11 @@ public class SchematicCommands {
actor.print(Caption.of("fawe.error.no-perm", "worldedit.schematic.load.other"));
return;
}
if (format == null && filename.matches(".*\\.[\\w].*")) {
String extension = filename.substring(filename.lastIndexOf('.') + 1);
format = ClipboardFormats.findByExtension(extension);
if (filename.matches(".*\\.[\\w].*")) {
format = ClipboardFormats
.findByExtension(filename.substring(filename.lastIndexOf('.') + 1));
} else {
format = ClipboardFormats.findByAlias(formatName);
}
file = MainUtil.resolve(dir, filename, format, false);
}