001    package org.bukkit.event.player;
002    
003    import java.net.InetAddress;
004    import java.util.UUID;
005    
006    import org.bukkit.Warning;
007    import org.bukkit.event.Event;
008    import org.bukkit.event.HandlerList;
009    
010    /**
011     * Stores details for players attempting to log in
012     *
013     * @deprecated This event causes synchronization from the login thread; {@link
014     *     AsyncPlayerPreLoginEvent} is preferred to keep the secondary threads
015     *     asynchronous.
016     */
017    @Deprecated
018    @Warning(reason="This event causes a login thread to synchronize with the main thread")
019    public class PlayerPreLoginEvent extends Event {
020        private static final HandlerList handlers = new HandlerList();
021        private Result result;
022        private String message;
023        private final String name;
024        private final InetAddress ipAddress;
025        private final UUID uniqueId;
026    
027        @Deprecated
028        public PlayerPreLoginEvent(final String name, final InetAddress ipAddress) {
029            this(name, ipAddress, null);
030        }
031    
032        public PlayerPreLoginEvent(final String name, final InetAddress ipAddress, final UUID uniqueId) {
033            this.result = Result.ALLOWED;
034            this.message = "";
035            this.name = name;
036            this.ipAddress = ipAddress;
037            this.uniqueId = uniqueId;
038        }
039    
040        /**
041         * Gets the current result of the login, as an enum
042         *
043         * @return Current Result of the login
044         */
045        public Result getResult() {
046            return result;
047        }
048    
049        /**
050         * Sets the new result of the login, as an enum
051         *
052         * @param result New result to set
053         */
054        public void setResult(final Result result) {
055            this.result = result;
056        }
057    
058        /**
059         * Gets the current kick message that will be used if getResult() !=
060         * Result.ALLOWED
061         *
062         * @return Current kick message
063         */
064        public String getKickMessage() {
065            return message;
066        }
067    
068        /**
069         * Sets the kick message to display if getResult() != Result.ALLOWED
070         *
071         * @param message New kick message
072         */
073        public void setKickMessage(final String message) {
074            this.message = message;
075        }
076    
077        /**
078         * Allows the player to log in
079         */
080        public void allow() {
081            result = Result.ALLOWED;
082            message = "";
083        }
084    
085        /**
086         * Disallows the player from logging in, with the given reason
087         *
088         * @param result New result for disallowing the player
089         * @param message Kick message to display to the user
090         */
091        public void disallow(final Result result, final String message) {
092            this.result = result;
093            this.message = message;
094        }
095    
096        /**
097         * Gets the player's name.
098         *
099         * @return the player's name
100         */
101        public String getName() {
102            return name;
103        }
104    
105        /**
106         * Gets the player IP address.
107         *
108         * @return The IP address
109         */
110        public InetAddress getAddress() {
111            return ipAddress;
112        }
113    
114        @Override
115        public HandlerList getHandlers() {
116            return handlers;
117        }
118    
119        /**
120         * Gets the player's unique ID.
121         *
122         * @return The unique ID
123         */
124        public UUID getUniqueId() {
125            return uniqueId;
126        }
127    
128        public static HandlerList getHandlerList() {
129            return handlers;
130        }
131    
132        /**
133         * Basic kick reasons for communicating to plugins
134         */
135        public enum Result {
136    
137            /**
138             * The player is allowed to log in
139             */
140            ALLOWED,
141            /**
142             * The player is not allowed to log in, due to the server being full
143             */
144            KICK_FULL,
145            /**
146             * The player is not allowed to log in, due to them being banned
147             */
148            KICK_BANNED,
149            /**
150             * The player is not allowed to log in, due to them not being on the
151             * white list
152             */
153            KICK_WHITELIST,
154            /**
155             * The player is not allowed to log in, for reasons undefined
156             */
157            KICK_OTHER
158        }
159    }