Don't print stack-traces to chat, just inform the user of the error
This commit is contained in:
parent
1064a79e1d
commit
5ba1e67ea0
@ -37,8 +37,11 @@ public interface Helper {
|
|||||||
Helper HELPER = new Helper() {};
|
Helper HELPER = new Helper() {};
|
||||||
|
|
||||||
static ITextComponent getPrefix() {
|
static ITextComponent getPrefix() {
|
||||||
|
// Inner text component
|
||||||
ITextComponent baritone = new TextComponentString(BaritoneAPI.getSettings().shortBaritonePrefix.value ? "B" : "Baritone");
|
ITextComponent baritone = new TextComponentString(BaritoneAPI.getSettings().shortBaritonePrefix.value ? "B" : "Baritone");
|
||||||
baritone.getStyle().setColor(TextFormatting.LIGHT_PURPLE);
|
baritone.getStyle().setColor(TextFormatting.LIGHT_PURPLE);
|
||||||
|
|
||||||
|
// Outer brackets
|
||||||
ITextComponent prefix = new TextComponentString("");
|
ITextComponent prefix = new TextComponentString("");
|
||||||
prefix.getStyle().setColor(TextFormatting.DARK_PURPLE);
|
prefix.getStyle().setColor(TextFormatting.DARK_PURPLE);
|
||||||
prefix.appendText("[");
|
prefix.appendText("[");
|
||||||
|
@ -67,7 +67,7 @@ public class ArgParserManager {
|
|||||||
* @param type The type to try and parse the argument into.
|
* @param type The type to try and parse the argument into.
|
||||||
* @param arg The argument to parse.
|
* @param arg The argument to parse.
|
||||||
* @return An instance of the specified class.
|
* @return An instance of the specified class.
|
||||||
* @throws CommandInvalidTypeException If the parsing failed
|
* @throws CommandInvalidTypeException If the parsing failed
|
||||||
*/
|
*/
|
||||||
public static <T> T parseStateless(Class<T> type, CommandArgument arg) throws CommandInvalidTypeException {
|
public static <T> T parseStateless(Class<T> type, CommandArgument arg) throws CommandInvalidTypeException {
|
||||||
IArgParser.Stateless<T> parser = getParserStateless(type);
|
IArgParser.Stateless<T> parser = getParserStateless(type);
|
||||||
@ -89,7 +89,7 @@ public class ArgParserManager {
|
|||||||
* @param arg The argument to parse.
|
* @param arg The argument to parse.
|
||||||
* @param state The state to pass to the {@link IArgParser.Stated}.
|
* @param state The state to pass to the {@link IArgParser.Stated}.
|
||||||
* @return An instance of the specified class.
|
* @return An instance of the specified class.
|
||||||
* @throws CommandInvalidTypeException If the parsing failed
|
* @throws CommandInvalidTypeException If the parsing failed
|
||||||
* @see IArgParser.Stated
|
* @see IArgParser.Stated
|
||||||
*/
|
*/
|
||||||
public static <T, S> T parseStated(Class<T> type, Class<S> stateKlass, CommandArgument arg, S state) throws CommandInvalidTypeException {
|
public static <T, S> T parseStated(Class<T> type, Class<S> stateKlass, CommandArgument arg, S state) throws CommandInvalidTypeException {
|
||||||
|
@ -17,62 +17,10 @@
|
|||||||
|
|
||||||
package baritone.api.utils.command.exception;
|
package baritone.api.utils.command.exception;
|
||||||
|
|
||||||
import java.io.PrintWriter;
|
|
||||||
import java.io.StringWriter;
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.stream.Collectors;
|
|
||||||
import java.util.stream.Stream;
|
|
||||||
|
|
||||||
public class CommandUnhandledException extends RuntimeException implements ICommandException {
|
public class CommandUnhandledException extends RuntimeException implements ICommandException {
|
||||||
|
|
||||||
public CommandUnhandledException(Throwable cause) {
|
public CommandUnhandledException(Throwable cause) {
|
||||||
super(String.format(
|
super("An unhandled exception occurred. The error is in your game's log, please report this at https://github.com/cabaletta/baritone/issues");
|
||||||
"An unhandled exception has occurred:\n\n%s",
|
cause.printStackTrace();
|
||||||
getFriendlierStackTrace(cause)
|
|
||||||
));
|
|
||||||
}
|
|
||||||
|
|
||||||
private static String getStackTrace(Throwable throwable) {
|
|
||||||
StringWriter sw = new StringWriter();
|
|
||||||
throwable.printStackTrace(new PrintWriter(sw));
|
|
||||||
return sw.toString();
|
|
||||||
}
|
|
||||||
|
|
||||||
private static String getBaritoneStackTrace(String stackTrace) {
|
|
||||||
List<String> lines = Stream.of(stackTrace.split("\n"))
|
|
||||||
.collect(Collectors.toList());
|
|
||||||
int lastBaritoneLine = 0;
|
|
||||||
for (int i = 0; i < lines.size(); i++) {
|
|
||||||
if (lines.get(i).startsWith("\tat baritone.") && lines.get(i).contains("BaritoneChatControl")) {
|
|
||||||
lastBaritoneLine = i;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return String.join("\n", lines.subList(0, lastBaritoneLine + 1));
|
|
||||||
}
|
|
||||||
|
|
||||||
private static String getBaritoneStackTrace(Throwable throwable) {
|
|
||||||
return getBaritoneStackTrace(getStackTrace(throwable));
|
|
||||||
}
|
|
||||||
|
|
||||||
private static String getFriendlierStackTrace(String stackTrace) {
|
|
||||||
List<String> lines = Arrays.asList(stackTrace.split("\n"));
|
|
||||||
for (int i = 0; i < lines.size(); i++) {
|
|
||||||
String line = lines.get(i);
|
|
||||||
if (line.startsWith("\tat ")) {
|
|
||||||
if (line.startsWith("\tat baritone.")) {
|
|
||||||
line = line.replaceFirst("^\tat [a-z.]+?([A-Z])", "\tat $1");
|
|
||||||
}
|
|
||||||
// line = line.replaceFirst("\\(([^)]+)\\)$", "\n\t . $1");
|
|
||||||
line = line.replaceFirst("\\([^:]+:(\\d+)\\)$", ":$1");
|
|
||||||
line = line.replaceFirst("\\(Unknown Source\\)$", "");
|
|
||||||
lines.set(i, line);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return String.join("\n", lines);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static String getFriendlierStackTrace(Throwable throwable) {
|
|
||||||
return getFriendlierStackTrace(getBaritoneStackTrace(throwable));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -71,7 +71,6 @@ public class CommandExecution {
|
|||||||
} catch (CommandException e) {
|
} catch (CommandException e) {
|
||||||
e.handle(command, args.args);
|
e.handle(command, args.args);
|
||||||
} catch (Throwable t) {
|
} catch (Throwable t) {
|
||||||
t.printStackTrace();
|
|
||||||
new CommandUnhandledException(t).handle(command, args.args);
|
new CommandUnhandledException(t).handle(command, args.args);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user