From 3498398452463f216d63a301bf9bf0e0292b5fbf Mon Sep 17 00:00:00 2001 From: Nathan Adams Date: Wed, 17 Jan 2018 15:58:22 +0100 Subject: [PATCH] Fixed literals with special characters --- .../java/com/mojang/brigadier/tree/CommandNode.java | 5 ++++- .../com/mojang/brigadier/CommandDispatcherTest.java | 10 +++++----- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/mojang/brigadier/tree/CommandNode.java b/src/main/java/com/mojang/brigadier/tree/CommandNode.java index f90f172..723a2f8 100644 --- a/src/main/java/com/mojang/brigadier/tree/CommandNode.java +++ b/src/main/java/com/mojang/brigadier/tree/CommandNode.java @@ -125,7 +125,10 @@ public abstract class CommandNode implements Comparable> { public Collection> getRelevantNodes(final StringReader input) { if (literals.size() > 0) { final int cursor = input.getCursor(); - final String text = input.readUnquotedString(); + while (input.canRead() && input.peek() != ' ') { + input.skip(); + } + final String text = input.getString().substring(cursor, input.getCursor()); input.setCursor(cursor); final LiteralCommandNode literal = literals.get(text); if (literal != null) { diff --git a/src/test/java/com/mojang/brigadier/CommandDispatcherTest.java b/src/test/java/com/mojang/brigadier/CommandDispatcherTest.java index ac0d741..c3ad143 100644 --- a/src/test/java/com/mojang/brigadier/CommandDispatcherTest.java +++ b/src/test/java/com/mojang/brigadier/CommandDispatcherTest.java @@ -163,12 +163,12 @@ public class CommandDispatcherTest { subject.register(literal("foo").then( literal("a") ).then( - literal("b").executes(subCommand) + literal("=").executes(subCommand) ).then( literal("c") ).executes(command)); - assertThat(subject.execute("foo b", source), is(100)); + assertThat(subject.execute("foo =", source), is(100)); verify(subCommand).run(any(CommandContext.class)); } @@ -281,7 +281,7 @@ public class CommandDispatcherTest { when(modifier.apply(argThat(hasProperty("source", is(source))))).thenReturn(Lists.newArrayList(source1, source2)); subject.register(literal("actual").executes(command)); - subject.register(literal("redirected").redirect(subject.getRoot())); + subject.register(literal("redirected").fork(subject.getRoot(), modifier)); final String input = "redirected actual"; final ParseResults parse = subject.parse(input, source); @@ -335,9 +335,9 @@ public class CommandDispatcherTest { subject.execute("foo$", source); fail(); } catch (final CommandSyntaxException ex) { - assertThat(ex.getType(), is(CommandDispatcher.ERROR_EXPECTED_ARGUMENT_SEPARATOR)); + assertThat(ex.getType(), is(CommandDispatcher.ERROR_UNKNOWN_COMMAND)); assertThat(ex.getData(), is(Collections.emptyMap())); - assertThat(ex.getCursor(), is(3)); + assertThat(ex.getCursor(), is(0)); } }