From 46d7cd1e0502edbbca323b2a289a49fbf951628d Mon Sep 17 00:00:00 2001 From: Travis Watkins Date: Wed, 31 Oct 2012 06:36:55 -0500 Subject: Use BlockCommandSender for dispatching Command block commands Also allow commands that don't start with a / to match vanilla behavior --- src/main/java/net/minecraft/server/TileEntity.java | 2 +- .../net/minecraft/server/TileEntityCommand.java | 21 ++++++++++++--------- 2 files changed, 13 insertions(+), 10 deletions(-) (limited to 'src/main/java/net/minecraft') diff --git a/src/main/java/net/minecraft/server/TileEntity.java b/src/main/java/net/minecraft/server/TileEntity.java index 87d5cd26..b763b482 100644 --- a/src/main/java/net/minecraft/server/TileEntity.java +++ b/src/main/java/net/minecraft/server/TileEntity.java @@ -9,7 +9,7 @@ public class TileEntity { private static Map a = new HashMap(); private static Map b = new HashMap(); - protected World world; + public World world; // CraftBukkit - protected -> public public int x; public int y; public int z; diff --git a/src/main/java/net/minecraft/server/TileEntityCommand.java b/src/main/java/net/minecraft/server/TileEntityCommand.java index 1a8317a4..78e462a3 100644 --- a/src/main/java/net/minecraft/server/TileEntityCommand.java +++ b/src/main/java/net/minecraft/server/TileEntityCommand.java @@ -9,8 +9,11 @@ import com.google.common.base.Joiner; public class TileEntityCommand extends TileEntity implements ICommandListener { private String a = ""; + private final org.bukkit.command.BlockCommandSender sender; - public TileEntityCommand() {} + public TileEntityCommand() { + sender = new org.bukkit.craftbukkit.command.CraftBlockCommandSender(this); + } public void b(String s) { this.a = s; @@ -23,15 +26,12 @@ public class TileEntityCommand extends TileEntity implements ICommandListener { if (minecraftserver != null && minecraftserver.getEnableCommandBlock()) { // CraftBukkit start - handle command block as console TODO: add new CommandSender for this - // Commands in command block must start with / - if (!this.a.startsWith("/")) { - return; - } - org.bukkit.command.SimpleCommandMap commandMap = minecraftserver.server.getCommandMap(); - org.bukkit.command.ConsoleCommandSender sender = minecraftserver.server.getConsoleSender(); Joiner joiner = Joiner.on(" "); - String command = this.a.substring(1); + String command = this.a; + if (this.a.startsWith("/")) { + command = this.a.substring(1); + } String[] args = command.split(" "); ArrayList commands = new ArrayList(); @@ -50,13 +50,16 @@ public class TileEntityCommand extends TileEntity implements ICommandListener { commands.add(args); // find positions of command block syntax, if any + ArrayList newCommands = new ArrayList(); for (int i = 0; i < args.length; i++) { if (PlayerSelector.isPattern(args[i])) { - ArrayList newCommands = new ArrayList(); for (int j = 0; j < commands.size(); j++) { newCommands.addAll(this.buildCommands(commands.get(j), i)); } + ArrayList temp = commands; commands = newCommands; + newCommands = temp; + newCommands.clear(); } } -- cgit v1.2.3