mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-02 04:56:50 +01:00
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.
This commit is contained in:
parent
05e889f346
commit
3ce954bb86
2 changed files with 43 additions and 0 deletions
|
@ -834,6 +834,8 @@ public abstract class MinecraftServer implements Runnable, IMojangStatistics, IC
|
||||||
}
|
}
|
||||||
|
|
||||||
public List a(ICommandListener icommandlistener, String s) {
|
public List a(ICommandListener icommandlistener, String s) {
|
||||||
|
// CraftBukkit start - Allow tab-completion of Bukkit commands
|
||||||
|
/*
|
||||||
ArrayList arraylist = new ArrayList();
|
ArrayList arraylist = new ArrayList();
|
||||||
|
|
||||||
if (s.startsWith("/")) {
|
if (s.startsWith("/")) {
|
||||||
|
@ -872,6 +874,9 @@ public abstract class MinecraftServer implements Runnable, IMojangStatistics, IC
|
||||||
|
|
||||||
return arraylist;
|
return arraylist;
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
return this.server.tabComplete(icommandlistener, s);
|
||||||
|
// CraftBukkit end
|
||||||
}
|
}
|
||||||
|
|
||||||
public static MinecraftServer getServer() {
|
public static MinecraftServer getServer() {
|
||||||
|
|
|
@ -58,6 +58,7 @@ import org.bukkit.World;
|
||||||
import org.bukkit.World.Environment;
|
import org.bukkit.World.Environment;
|
||||||
import org.bukkit.WorldCreator;
|
import org.bukkit.WorldCreator;
|
||||||
import org.bukkit.command.Command;
|
import org.bukkit.command.Command;
|
||||||
|
import org.bukkit.command.CommandException;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.command.ConsoleCommandSender;
|
import org.bukkit.command.ConsoleCommandSender;
|
||||||
import org.bukkit.command.PluginCommand;
|
import org.bukkit.command.PluginCommand;
|
||||||
|
@ -1234,4 +1235,41 @@ public final class CraftServer implements Server {
|
||||||
public WarningState getWarningState() {
|
public WarningState getWarningState() {
|
||||||
return warningState;
|
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue