001    package org.bukkit;
002    
003    import java.util.Date;
004    import java.util.UUID;
005    
006    import org.bukkit.configuration.serialization.ConfigurationSerializable;
007    import org.bukkit.entity.AnimalTamer;
008    import org.bukkit.entity.Player;
009    import org.bukkit.permissions.ServerOperator;
010    
011    public interface OfflinePlayer extends ServerOperator, AnimalTamer, ConfigurationSerializable {
012    
013        /**
014         * Checks if this player is currently online
015         *
016         * @return true if they are online
017         */
018        public boolean isOnline();
019    
020        /**
021         * Returns the name of this player
022         * <p>
023         * Names are no longer unique past a single game session. For persistent storage
024         * it is recommended that you use {@link #getUniqueId()} instead.
025         *
026         * @return Player name or null if we have not seen a name for this player yet
027         */
028        public String getName();
029    
030        /**
031         * Returns the UUID of this player
032         *
033         * @return Player UUID
034         */
035        public UUID getUniqueId();
036    
037        /**
038         * Checks if this player is banned or not
039         *
040         * @return true if banned, otherwise false
041         */
042        public boolean isBanned();
043    
044        /**
045         * Bans or unbans this player
046         *
047         * @param banned true if banned
048         * @deprecated Use {@link org.bukkit.BanList#addBan(String, String, Date,
049         *     String)} or {@link org.bukkit.BanList#pardon(String)} to enhance
050         *     functionality
051         */
052        @Deprecated
053        public void setBanned(boolean banned);
054    
055        /**
056         * Checks if this player is whitelisted or not
057         *
058         * @return true if whitelisted
059         */
060        public boolean isWhitelisted();
061    
062        /**
063         * Sets if this player is whitelisted or not
064         *
065         * @param value true if whitelisted
066         */
067        public void setWhitelisted(boolean value);
068    
069        /**
070         * Gets a {@link Player} object that this represents, if there is one
071         * <p>
072         * If the player is online, this will return that player. Otherwise,
073         * it will return null.
074         *
075         * @return Online player
076         */
077        public Player getPlayer();
078    
079        /**
080         * Gets the first date and time that this player was witnessed on this
081         * server.
082         * <p>
083         * If the player has never played before, this will return 0. Otherwise,
084         * it will be the amount of milliseconds since midnight, January 1, 1970
085         * UTC.
086         *
087         * @return Date of first log-in for this player, or 0
088         */
089        public long getFirstPlayed();
090    
091        /**
092         * Gets the last date and time that this player was witnessed on this
093         * server.
094         * <p>
095         * If the player has never played before, this will return 0. Otherwise,
096         * it will be the amount of milliseconds since midnight, January 1, 1970
097         * UTC.
098         *
099         * @return Date of last log-in for this player, or 0
100         */
101        public long getLastPlayed();
102    
103        /**
104         * Checks if this player has played on this server before.
105         *
106         * @return True if the player has played before, otherwise false
107         */
108        public boolean hasPlayedBefore();
109    
110        /**
111         * Gets the Location where the player will spawn at their bed, null if
112         * they have not slept in one or their current bed spawn is invalid.
113         *
114         * @return Bed Spawn Location if bed exists, otherwise null.
115         */
116        public Location getBedSpawnLocation();
117    
118    }