下面列出了怎么用org.bukkit.event.player.PlayerChatTabCompleteEvent的API类实例代码及写法,或者点击链接到github查看源代码。
public List<String> tabCompleteChat(Player player, String message) {
List<String> completions = new ArrayList<String>();
PlayerChatTabCompleteEvent event = new PlayerChatTabCompleteEvent(player, message, completions);
String token = event.getLastToken();
for (Player p : getOnlinePlayers()) {
if (player.canSee(p) && StringUtil.startsWithIgnoreCase(p.getName(), token)) {
completions.add(p.getName());
}
}
pluginManager.callEvent(event);
Iterator<?> it = completions.iterator();
while (it.hasNext()) {
Object current = it.next();
if (!(current instanceof String)) {
// Sanity
it.remove();
}
}
Collections.sort(completions, String.CASE_INSENSITIVE_ORDER);
return completions;
}
@EventHandler(priority = EventPriority.NORMAL)
public void on(PlayerChatTabCompleteEvent event) {
if (ChatTabCompleteReplacementEvent.getHandlerList().getRegisteredListeners().length > 0) {
Set<String> nickedPlayerNames = NickNamerAPI.getNickedPlayerNames();
for (ListIterator<String> iterator = ((List<String>) event.getTabCompletions()).listIterator(); iterator.hasNext(); ) {
final String completion = iterator.next();
String replacedCompletion = NickNamerAPI.replaceNames(completion, nickedPlayerNames, new NameReplacer() {
@Override
public String replace(String original) {
Player player = Bukkit.getPlayer(original);
if (player != null) {
ChatTabCompleteReplacementEvent replacementEvent = new ChatTabCompleteReplacementEvent(player, event.getPlayer(), completion, original, original);
Bukkit.getPluginManager().callEvent(replacementEvent);
if (replacementEvent.isCancelled()) { return original; }
return replacementEvent.getReplacement();
}
return original;
}
}, true);
iterator.set(ChatColor.stripColor(replacedCompletion));
}
}
}
public List<String> tabCompleteChat(Player player, String message) {
List<String> completions = new ArrayList<String>();
PlayerChatTabCompleteEvent event = new PlayerChatTabCompleteEvent(player, message, completions);
String token = event.getLastToken();
for (Player p : getOnlinePlayers()) {
if (player.canSee(p) && StringUtil.startsWithIgnoreCase(p.getName(), token)) {
if (event.isPinging())
{
StringBuilder sb = new StringBuilder(1 + p.getName().length());
sb.append('@'); sb.append(p.getName());
completions.add(sb.toString());
}
else
completions.add(p.getName());
}
}
pluginManager.callEvent(event);
Iterator<?> it = completions.iterator();
while (it.hasNext()) {
Object current = it.next();
if (!(current instanceof String)) {
// Sanity
it.remove();
}
}
Collections.sort(completions, String.CASE_INSENSITIVE_ORDER);
return completions;
}