Better error message for unsupported formats
This commit is contained in:
@@ -26,11 +26,13 @@ import baritone.api.command.datatypes.RelativeFile;
|
||||
import baritone.api.command.exception.CommandException;
|
||||
import baritone.api.command.exception.CommandInvalidStateException;
|
||||
import baritone.api.utils.BetterBlockPos;
|
||||
import baritone.utils.schematic.SchematicSystem;
|
||||
import org.apache.commons.io.FilenameUtils;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.StringJoiner;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
public class BuildCommand extends Command {
|
||||
@@ -59,6 +61,14 @@ public class BuildCommand extends Command {
|
||||
}
|
||||
throw new CommandInvalidStateException("Cannot find " + file);
|
||||
}
|
||||
if (!SchematicSystem.INSTANCE.getByFile(file).isPresent()) {
|
||||
StringJoiner formats = new StringJoiner(", ");
|
||||
SchematicSystem.INSTANCE.getFileExtensions().forEach(formats::add);
|
||||
throw new CommandInvalidStateException(String.format(
|
||||
"Unsupported schematic format. Reckognized file extensions are: %s",
|
||||
formats
|
||||
));
|
||||
}
|
||||
BetterBlockPos origin = ctx.playerFeet();
|
||||
BetterBlockPos buildOrigin;
|
||||
if (args.hasAny()) {
|
||||
@@ -70,7 +80,7 @@ public class BuildCommand extends Command {
|
||||
}
|
||||
boolean success = baritone.getBuilderProcess().build(file.getName(), file, buildOrigin);
|
||||
if (!success) {
|
||||
throw new CommandInvalidStateException("Couldn't load the schematic. Unsupported file format, wrong file extension or a bug.");
|
||||
throw new CommandInvalidStateException("Couldn't load the schematic. Either your schematic is corrupt or this is a bug.");
|
||||
}
|
||||
logDirect(String.format("Successfully loaded schematic for building\nOrigin: %s", buildOrigin));
|
||||
}
|
||||
|
||||
@@ -24,6 +24,7 @@ import baritone.utils.schematic.format.DefaultSchematicFormats;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
/**
|
||||
@@ -48,4 +49,9 @@ public enum SchematicSystem implements ISchematicSystem {
|
||||
public Optional<ISchematicFormat> getByFile(File file) {
|
||||
return this.registry.stream().filter(format -> format.isFileType(file)).findFirst();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> getFileExtensions() {
|
||||
return this.registry.stream().map(ISchematicFormat::getFileExtensions).flatMap(List::stream).toList();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,13 +22,15 @@ import baritone.api.schematic.format.ISchematicFormat;
|
||||
import baritone.utils.schematic.format.defaults.LitematicaSchematic;
|
||||
import baritone.utils.schematic.format.defaults.MCEditSchematic;
|
||||
import baritone.utils.schematic.format.defaults.SpongeSchematic;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.nbt.NbtIo;
|
||||
import org.apache.commons.io.FilenameUtils;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.nbt.NbtIo;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Default implementations of {@link ISchematicFormat}
|
||||
@@ -98,4 +100,9 @@ public enum DefaultSchematicFormats implements ISchematicFormat {
|
||||
public boolean isFileType(File file) {
|
||||
return this.extension.equalsIgnoreCase(FilenameUtils.getExtension(file.getAbsolutePath()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> getFileExtensions() {
|
||||
return Collections.singletonList(this.extension);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user