13
0
geforkt von Mirrors/Paper

Implement TabCompleteEvent

Dieser Commit ist enthalten in:
md_5 2016-05-16 16:59:57 +10:00
Ursprung 4e19de1295
Commit 88157110ad
2 geänderte Dateien mit 17 neuen und 3 gelöschten Zeilen

Datei anzeigen

@ -126,6 +126,7 @@ import io.netty.buffer.ByteBufOutputStream;
import io.netty.buffer.Unpooled; import io.netty.buffer.Unpooled;
import io.netty.handler.codec.base64.Base64; import io.netty.handler.codec.base64.Base64;
import jline.console.ConsoleReader; import jline.console.ConsoleReader;
import org.bukkit.event.server.TabCompleteEvent;
public final class CraftServer implements Server { public final class CraftServer implements Server {
private static final Player[] EMPTY_PLAYER_ARRAY = new Player[0]; private static final Player[] EMPTY_PLAYER_ARRAY = new Player[0];
@ -1536,12 +1537,18 @@ public final class CraftServer implements Server {
return ImmutableList.of(); return ImmutableList.of();
} }
List<String> offers;
Player player = ((EntityPlayer) sender).getBukkitEntity(); Player player = ((EntityPlayer) sender).getBukkitEntity();
if (message.startsWith("/")) { if (message.startsWith("/")) {
return tabCompleteCommand(player, message); offers = tabCompleteCommand(player, message);
} else { } else {
return tabCompleteChat(player, message); offers = tabCompleteChat(player, message);
} }
TabCompleteEvent tabEvent = new TabCompleteEvent(player, message, offers);
getPluginManager().callEvent(tabEvent);
return tabEvent.isCancelled() ? Collections.EMPTY_LIST : tabEvent.getCompletions();
} }
public List<String> tabCompleteCommand(Player player, String message) { public List<String> tabCompleteCommand(Player player, String message) {

Datei anzeigen

@ -1,5 +1,6 @@
package org.bukkit.craftbukkit.command; package org.bukkit.craftbukkit.command;
import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutionException;
import java.util.logging.Level; import java.util.logging.Level;
@ -8,6 +9,7 @@ import org.bukkit.craftbukkit.CraftServer;
import org.bukkit.craftbukkit.util.Waitable; import org.bukkit.craftbukkit.util.Waitable;
import jline.console.completer.Completer; import jline.console.completer.Completer;
import org.bukkit.event.server.TabCompleteEvent;
public class ConsoleCommandCompleter implements Completer { public class ConsoleCommandCompleter implements Completer {
private final CraftServer server; private final CraftServer server;
@ -20,7 +22,12 @@ public class ConsoleCommandCompleter implements Completer {
Waitable<List<String>> waitable = new Waitable<List<String>>() { Waitable<List<String>> waitable = new Waitable<List<String>>() {
@Override @Override
protected List<String> evaluate() { protected List<String> evaluate() {
return server.getCommandMap().tabComplete(server.getConsoleSender(), buffer); List<String> offers = server.getCommandMap().tabComplete(server.getConsoleSender(), buffer);
TabCompleteEvent tabEvent = new TabCompleteEvent(server.getConsoleSender(), buffer, offers);
server.getPluginManager().callEvent(tabEvent);
return tabEvent.isCancelled() ? Collections.EMPTY_LIST : tabEvent.getCompletions();
} }
}; };
this.server.getServer().processQueue.add(waitable); this.server.getServer().processQueue.add(waitable);