Skip to content

Instantly share code, notes, and snippets.

@Densamisten
Created May 5, 2024 16:58
Show Gist options
  • Save Densamisten/c8dae0ac2cdf13cf2fdbc995e3184e06 to your computer and use it in GitHub Desktop.
Save Densamisten/c8dae0ac2cdf13cf2fdbc995e3184e06 to your computer and use it in GitHub Desktop.
package exonihility.util.argument;
import com.mojang.brigadier.LiteralMessage;
import com.mojang.brigadier.StringReader;
import com.mojang.brigadier.arguments.ArgumentType;
import com.mojang.brigadier.context.CommandContext;
import com.mojang.brigadier.exceptions.CommandSyntaxException;
import com.mojang.brigadier.exceptions.SimpleCommandExceptionType;
import com.mojang.brigadier.suggestion.Suggestions;
import com.mojang.brigadier.suggestion.SuggestionsBuilder;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Collection;
import java.util.concurrent.CompletableFuture;
public class DirectoryArgument implements ArgumentType<Path> {
private static final SimpleCommandExceptionType NOT_DIRECTORY = new SimpleCommandExceptionType(new LiteralMessage("Path not found"));
public static DirectoryArgument directoryArgument() {
return new DirectoryArgument();
}
@Override
public Path parse(StringReader reader) throws CommandSyntaxException {
String pathString = reader.readString();
Path ret = Paths.get(pathString);
if (!ret.toFile().isDirectory()) {
throw DirectoryArgument.NOT_DIRECTORY.createWithContext(reader);
}
return ret;
}
@Override
public <S> CompletableFuture<Suggestions> listSuggestions(CommandContext<S> context, SuggestionsBuilder builder) {
return ArgumentType.super.listSuggestions(context, builder);
}
@Override
public Collection<String> getExamples() {
return ArgumentType.super.getExamples();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment