geforkt von Mirrors/Paper
Implement TabCompleteEvent
Dieser Commit ist enthalten in:
Ursprung
4e19de1295
Commit
88157110ad
@ -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) {
|
||||||
|
@ -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);
|
||||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren