001 package org.bukkit.event.player; 002 003 import java.util.Collection; 004 005 import org.apache.commons.lang.Validate; 006 import org.bukkit.entity.Player; 007 import org.bukkit.event.HandlerList; 008 009 /** 010 * Called when a player attempts to tab-complete a chat message. 011 */ 012 public class PlayerChatTabCompleteEvent extends PlayerEvent { 013 private static final HandlerList handlers = new HandlerList(); 014 private final String message; 015 private final String lastToken; 016 private final Collection<String> completions; 017 018 public PlayerChatTabCompleteEvent(final Player who, final String message, final Collection<String> completions) { 019 super(who); 020 Validate.notNull(message, "Message cannot be null"); 021 Validate.notNull(completions, "Completions cannot be null"); 022 this.message = message; 023 int i = message.lastIndexOf(' '); 024 if (i < 0) { 025 this.lastToken = message; 026 } else { 027 this.lastToken = message.substring(i + 1); 028 } 029 this.completions = completions; 030 } 031 032 /** 033 * Gets the chat message being tab-completed. 034 * 035 * @return the chat message 036 */ 037 public String getChatMessage() { 038 return message; 039 } 040 041 /** 042 * Gets the last 'token' of the message being tab-completed. 043 * <p> 044 * The token is the substring starting with the character after the last 045 * space in the message. 046 * 047 * @return The last token for the chat message 048 */ 049 public String getLastToken() { 050 return lastToken; 051 } 052 053 /** 054 * This is the collection of completions for this event. 055 * 056 * @return the current completions 057 */ 058 public Collection<String> getTabCompletions() { 059 return completions; 060 } 061 062 @Override 063 public HandlerList getHandlers() { 064 return handlers; 065 } 066 067 public static HandlerList getHandlerList() { 068 return handlers; 069 } 070 }