geforkt von Mirrors/Paper
Delegate tab-completion. Fixes BUKKIT-2181. Adds BUKKIT-2602
CommandMap now contains the functionality for tab completion. This commit replaces the vanilla implementation and simply delegates it to the Bukkit API. By: Score_Under <seejay.11@gmail.com>
Dieser Commit ist enthalten in:
Ursprung
730e3ceb1b
Commit
bb2c1736c3
@ -58,6 +58,7 @@ import org.bukkit.World;
|
||||
import org.bukkit.World.Environment;
|
||||
import org.bukkit.WorldCreator;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandException;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.command.ConsoleCommandSender;
|
||||
import org.bukkit.command.PluginCommand;
|
||||
@ -1234,4 +1235,41 @@ public final class CraftServer implements Server {
|
||||
public WarningState getWarningState() {
|
||||
return warningState;
|
||||
}
|
||||
|
||||
public List<String> tabComplete(net.minecraft.server.ICommandListener sender, String message) {
|
||||
if (!(sender instanceof EntityPlayer)) {
|
||||
return ImmutableList.of();
|
||||
}
|
||||
|
||||
Player player = ((EntityPlayer) sender).getBukkitEntity();
|
||||
if (message.startsWith("/")) {
|
||||
return tabCompleteCommand(player, message);
|
||||
} else {
|
||||
return tabCompleteChat(player, message);
|
||||
}
|
||||
}
|
||||
|
||||
public List<String> tabCompleteCommand(Player player, String message) {
|
||||
List<String> completions = null;
|
||||
try {
|
||||
completions = getCommandMap().tabComplete(player, message.substring(1));
|
||||
} catch (CommandException ex) {
|
||||
player.sendMessage(ChatColor.RED + "An internal error occurred while attempting to tab-complete this command");
|
||||
getLogger().log(Level.SEVERE, "Exception when " + player.getName() + " attempted to tab complete " + message, ex);
|
||||
}
|
||||
|
||||
return completions == null ? ImmutableList.<String>of() : completions;
|
||||
}
|
||||
|
||||
public List<String> tabCompleteChat(Player player, String message) {
|
||||
Player[] players = getOnlinePlayers();
|
||||
List<String> completions = new ArrayList<String>(players.length);
|
||||
for (Player p : players) {
|
||||
if (player.canSee(p)) {
|
||||
completions.add(p.getName());
|
||||
}
|
||||
}
|
||||
|
||||
return completions;
|
||||
}
|
||||
}
|
||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren