diff --git a/src/main/java/net/minecraft/commands/CommandDispatcher.java b/src/main/java/net/minecraft/commands/CommandDispatcher.java index 9ef91df..768e97e 100644 --- a/src/main/java/net/minecraft/commands/CommandDispatcher.java +++ b/src/main/java/net/minecraft/commands/CommandDispatcher.java @@ -4,25 +4,26 @@ import com.google.common.collect.Maps; import net.minecraft.commands.builder.CommandBuilder; import net.minecraft.commands.exceptions.CommandException; import net.minecraft.commands.exceptions.UnknownCommandException; +import net.minecraft.commands.tree.LiteralCommandNode; import java.util.Map; public class CommandDispatcher { - private final Map commands = Maps.newHashMap(); + private final Map commands = Maps.newHashMap(); public void register(CommandBuilder command) { if (commands.containsKey(command.getName())) { throw new IllegalArgumentException("New command " + command.getName() + " conflicts with existing command " + command.getName()); } - commands.put(command.getName(), command.getExecutor()); + commands.put(command.getName(), command.build()); } public void execute(String command) throws CommandException { - Runnable runnable = commands.get(command); - if (runnable == null) { + LiteralCommandNode node = commands.get(command); + if (node == null) { throw new UnknownCommandException(); } - runnable.run(); + node.getExecutor().run(); } } diff --git a/src/main/java/net/minecraft/commands/builder/CommandBuilder.java b/src/main/java/net/minecraft/commands/builder/CommandBuilder.java index 311a1a2..a200951 100644 --- a/src/main/java/net/minecraft/commands/builder/CommandBuilder.java +++ b/src/main/java/net/minecraft/commands/builder/CommandBuilder.java @@ -41,7 +41,7 @@ public class CommandBuilder { } public LiteralCommandNode build() { - LiteralCommandNode result = new LiteralCommandNode(getName()); + LiteralCommandNode result = new LiteralCommandNode(getName(), getExecutor()); for (ArgumentBuilder argument : arguments) { result.addChild(argument.build()); diff --git a/src/main/java/net/minecraft/commands/tree/LiteralCommandNode.java b/src/main/java/net/minecraft/commands/tree/LiteralCommandNode.java index b0ec504..85329a9 100644 --- a/src/main/java/net/minecraft/commands/tree/LiteralCommandNode.java +++ b/src/main/java/net/minecraft/commands/tree/LiteralCommandNode.java @@ -2,12 +2,18 @@ package net.minecraft.commands.tree; public class LiteralCommandNode extends CommandNode { private final String literal; + private final Runnable executor; - public LiteralCommandNode(String literal) { + public LiteralCommandNode(String literal, Runnable executor) { this.literal = literal; + this.executor = executor; } public String getLiteral() { return literal; } + + public Runnable getExecutor() { + return executor; + } }