001    package org.bukkit.scoreboard;
002    
003    import java.util.Set;
004    
005    import org.bukkit.OfflinePlayer;
006    
007    /**
008     * A scoreboard
009     */
010    public interface Scoreboard {
011    
012        /**
013         * Registers an Objective on this Scoreboard
014         *
015         * @param name Name of the Objective
016         * @param criteria Criteria for the Objective
017         * @return The registered Objective
018         * @throws IllegalArgumentException if name is null
019         * @throws IllegalArgumentException if criteria is null
020         * @throws IllegalArgumentException if an objective by that name already
021         *     exists
022         */
023        Objective registerNewObjective(String name, String criteria) throws IllegalArgumentException;
024    
025        /**
026         * Gets an Objective on this Scoreboard by name
027         *
028         * @param name Name of the Objective
029         * @return the Objective or null if it does not exist
030         * @throws IllegalArgumentException if name is null
031         */
032        Objective getObjective(String name) throws IllegalArgumentException;
033    
034        /**
035         * Gets all Objectives of a Criteria on the Scoreboard
036         *
037         * @param criteria Criteria to search by
038         * @return an immutable set of Objectives using the specified Criteria
039         */
040        Set<Objective> getObjectivesByCriteria(String criteria) throws IllegalArgumentException;
041    
042        /**
043         * Gets all Objectives on this Scoreboard
044         *
045         * @return An immutable set of all Objectives on this Scoreboard
046         */
047        Set<Objective> getObjectives();
048    
049        /**
050         * Gets the Objective currently displayed in a DisplaySlot on this
051         * Scoreboard
052         *
053         * @param slot The DisplaySlot
054         * @return the Objective currently displayed or null if nothing is
055         *     displayed in that DisplaySlot
056         * @throws IllegalArgumentException if slot is null
057         */
058        Objective getObjective(DisplaySlot slot) throws IllegalArgumentException;
059    
060        /**
061         * Gets all scores for a player on this Scoreboard
062         *
063         * @param player the player whose scores are being retrieved
064         * @return immutable set of all scores tracked for the player
065         * @throws IllegalArgumentException if player is null
066         * @deprecated Scoreboards can contain entries that aren't players
067         * @see #getScores(String)
068         */
069        @Deprecated
070        Set<Score> getScores(OfflinePlayer player) throws IllegalArgumentException;
071    
072        /**
073         * Gets all scores for an entry on this Scoreboard
074         *
075         * @param entry the entry whose scores are being retrieved
076         * @return immutable set of all scores tracked for the entry
077         * @throws IllegalArgumentException if entry is null
078         */
079        Set<Score> getScores(String entry) throws IllegalArgumentException;
080    
081        /**
082         * Removes all scores for a player on this Scoreboard
083         *
084         * @param player the player to drop all current scores for
085         * @throws IllegalArgumentException if player is null
086         * @deprecated Scoreboards can contain entries that aren't players
087         * @see #resetScores(String)
088         */
089        @Deprecated
090        void resetScores(OfflinePlayer player) throws IllegalArgumentException;
091    
092        /**
093         * Removes all scores for an entry on this Scoreboard
094         *
095         * @param entry the entry to drop all current scores for
096         * @throws IllegalArgumentException if entry is null
097         */
098        void resetScores(String entry) throws IllegalArgumentException;
099    
100        /**
101         * Gets a player's Team on this Scoreboard
102         *
103         * @param player the player to search for
104         * @return the player's Team or null if the player is not on a team
105         * @throws IllegalArgumentException if player is null
106         */
107        Team getPlayerTeam(OfflinePlayer player) throws IllegalArgumentException;
108    
109        /**
110         * Gets a Team by name on this Scoreboard
111         *
112         * @param teamName Team name
113         * @return the matching Team or null if no matches
114         * @throws IllegalArgumentException if teamName is null
115         */
116        Team getTeam(String teamName) throws IllegalArgumentException;
117    
118        /**
119         * Gets all teams on this Scoreboard
120         *
121         * @return an immutable set of Teams
122         */
123        Set<Team> getTeams();
124    
125        /**
126         * Registers a Team on this Scoreboard
127         *
128         * @param name Team name
129         * @return registered Team
130         * @throws IllegalArgumentException if name is null
131         * @throws IllegalArgumentException if team by that name already exists
132         */
133        Team registerNewTeam(String name) throws IllegalArgumentException;
134    
135        /**
136         * Gets all players tracked by this Scoreboard
137         *
138         * @return immutable set of all tracked players
139         * @deprecated Scoreboards can contain entries that aren't players
140         * @see #getEntries()
141         */
142        @Deprecated
143        Set<OfflinePlayer> getPlayers();
144    
145        /**
146         * Gets all entries tracked by this Scoreboard
147         *
148         * @return immutable set of all tracked entries
149         */
150        Set<String> getEntries();
151    
152        /**
153         * Clears any objective in the specified slot.
154         *
155         * @param slot the slot to remove objectives
156         * @throws IllegalArgumentException if slot is null
157         */
158        void clearSlot(DisplaySlot slot) throws IllegalArgumentException;
159    }