summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/main/java/net/minecraft/server/ConsoleCommandHandler.java35
-rw-r--r--src/main/java/net/minecraft/server/NetServerHandler.java14
-rw-r--r--src/main/java/org/bukkit/craftbukkit/CraftServer.java22
-rw-r--r--src/main/java/org/bukkit/craftbukkit/command/ServerCommandListener.java36
4 files changed, 77 insertions, 30 deletions
diff --git a/src/main/java/net/minecraft/server/ConsoleCommandHandler.java b/src/main/java/net/minecraft/server/ConsoleCommandHandler.java
index eb48f2d9..d6f3bfb3 100644
--- a/src/main/java/net/minecraft/server/ConsoleCommandHandler.java
+++ b/src/main/java/net/minecraft/server/ConsoleCommandHandler.java
@@ -3,6 +3,12 @@ package net.minecraft.server;
import java.util.Iterator;
import java.util.Set;
import java.util.logging.Logger;
+// Craftbukkit start
+import java.util.List;
+import org.bukkit.craftbukkit.command.ServerCommandListener;
+import org.bukkit.craftbukkit.entity.CraftPlayer;
+import org.bukkit.command.CommandSender;
+// Craftbukkit end
public class ConsoleCommandHandler {
@@ -286,13 +292,38 @@ public class ConsoleCommandHandler {
}
private void print(String s, String s1) {
- listener.sendMessage(s1); // CraftBukkit
String s2 = s + ": " + s1;
- this.server.serverConfigurationManager.j("\u00A77(" + s2 + ")");
+ // CraftBukkit start
+ listener.sendMessage(s1);
+ informOps("\u00A77(" + s2 + ")");
+ if (listener instanceof MinecraftServer) {
+ return; // Already logged so don't call a.info()
+ }
+ // CraftBukkit end
a.info(s2);
}
+ // CraftBukkit start
+ private void informOps(String msg) {
+ Packet3Chat packet3chat = new Packet3Chat(msg);
+ EntityPlayer sender = null;
+ if (listener instanceof ServerCommandListener) {
+ CommandSender commandSender = ((ServerCommandListener) listener).getSender();
+ if (commandSender instanceof CraftPlayer) {
+ sender = ((CraftPlayer) commandSender).getHandle();
+ }
+ }
+ List<EntityPlayer> players = server.serverConfigurationManager.players;
+ for (int i = 0; i < players.size(); ++i) {
+ EntityPlayer entityPlayer = (EntityPlayer) players.get(i);
+ if (sender != entityPlayer && server.serverConfigurationManager.isOp(entityPlayer.name)) {
+ entityPlayer.netServerHandler.sendPacket(packet3chat);
+ }
+ }
+ }
+ // CraftBukkit end
+
private int a(String s, int i) {
try {
return Integer.parseInt(s);
diff --git a/src/main/java/net/minecraft/server/NetServerHandler.java b/src/main/java/net/minecraft/server/NetServerHandler.java
index a63b4c97..98b6d29c 100644
--- a/src/main/java/net/minecraft/server/NetServerHandler.java
+++ b/src/main/java/net/minecraft/server/NetServerHandler.java
@@ -695,19 +695,15 @@ public class NetServerHandler extends NetHandler implements ICommandListener {
return;
}
- boolean targetPluginFound = false;
-
try {
- targetPluginFound = server.dispatchCommand(player, s.substring(1));
+ if (server.dispatchCommand(player, s.substring(1))) {
+ return;
+ }
} catch (CommandException ex) {
player.sendMessage(ChatColor.RED + "An internal error occurred while attempting to perform this command");
Logger.getLogger(NetServerHandler.class.getName()).log(Level.SEVERE, null, ex);
return;
}
-
- if (targetPluginFound) {
- return;
- }
// CraftBukkit end
if (s.toLowerCase().startsWith("/me ")) {
@@ -728,9 +724,10 @@ public class NetServerHandler extends NetHandler implements ICommandListener {
this.sendPacket(new Packet3Chat("\u00A7cThere\'s no player by that name online."));
}
}
+
+ /* CraftBukkit start - No longer neaded as we have already handled it server.dispatchCommand above.
} else {
String s1;
-
if (this.minecraftServer.serverConfigurationManager.isOp(this.player.name)) {
s1 = s.substring(1);
a.info(this.player.name + " issued server command: " + s1);
@@ -739,6 +736,7 @@ public class NetServerHandler extends NetHandler implements ICommandListener {
s1 = s.substring(1);
a.info(this.player.name + " tried command: " + s1);
}
+ */ // CraftBukkit end
}
}
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index 04246e2f..e245e549 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -48,6 +48,7 @@ import org.bukkit.craftbukkit.inventory.CraftFurnaceRecipe;
import org.bukkit.craftbukkit.inventory.CraftRecipe;
import org.bukkit.craftbukkit.inventory.CraftShapedRecipe;
import org.bukkit.craftbukkit.inventory.CraftShapelessRecipe;
+import org.bukkit.craftbukkit.command.ServerCommandListener;
import org.bukkit.scheduler.BukkitWorker;
import org.bukkit.scheduler.BukkitTask;
import org.bukkit.craftbukkit.scheduler.CraftScheduler;
@@ -284,7 +285,7 @@ public final class CraftServer implements Server {
}
// See if the server can process this command
- return console.consoleCommandHandler.handle(new ServerCommand(commandLine, new CommandListener(sender)));
+ return console.consoleCommandHandler.handle(new ServerCommand(commandLine, new ServerCommandListener(sender)));
}
public void reload() {
@@ -451,25 +452,6 @@ public final class CraftServer implements Server {
config.setDataSourceConfig(ds);
}
- // Inner class to capture the output of default server commands
- class CommandListener implements ICommandListener {
- private final CommandSender commandSender;
- private final String prefix;
- CommandListener(CommandSender commandSender) {
- this.commandSender = commandSender;
- String[] parts = commandSender.getClass().getName().split("\\.");
- this.prefix = parts[parts.length-1];
- }
-
- public void sendMessage(String msg) {
- this.commandSender.sendMessage(msg);
- }
-
- public String getName() {
- return this.prefix;
- }
- }
-
public boolean addRecipe(Recipe recipe) {
CraftRecipe toAdd;
if(recipe instanceof CraftRecipe) {
diff --git a/src/main/java/org/bukkit/craftbukkit/command/ServerCommandListener.java b/src/main/java/org/bukkit/craftbukkit/command/ServerCommandListener.java
new file mode 100644
index 00000000..f8d38d6a
--- /dev/null
+++ b/src/main/java/org/bukkit/craftbukkit/command/ServerCommandListener.java
@@ -0,0 +1,36 @@
+package org.bukkit.craftbukkit.command;
+
+import java.lang.reflect.Method;
+
+import net.minecraft.server.ICommandListener;
+
+import org.bukkit.command.CommandSender;
+
+public class ServerCommandListener implements ICommandListener {
+ private final CommandSender commandSender;
+ private final String prefix;
+
+ public ServerCommandListener(CommandSender commandSender) {
+ this.commandSender = commandSender;
+ String[] parts = commandSender.getClass().getName().split("\\.");
+ this.prefix = parts[parts.length-1];
+ }
+
+ public void sendMessage(String msg) {
+ this.commandSender.sendMessage(msg);
+ }
+
+ public CommandSender getSender() {
+ return commandSender;
+ }
+
+ public String getName() {
+ try {
+ Method getName = commandSender.getClass().getMethod( "getName" );
+ return (String) getName.invoke(commandSender);
+ } catch (Exception e) {
+ }
+
+ return this.prefix;
+ }
+} \ No newline at end of file