001 package org.bukkit.scoreboard; 002 003 import org.bukkit.OfflinePlayer; 004 005 /** 006 * An objective on a scoreboard that can show scores specific to entries. This 007 * objective is only relevant to the display of the associated {@link 008 * #getScoreboard() scoreboard}. 009 */ 010 public interface Objective { 011 012 /** 013 * Gets the name of this Objective 014 * 015 * @return this objective'ss name 016 * @throws IllegalStateException if this objective has been unregistered 017 */ 018 String getName() throws IllegalStateException; 019 020 /** 021 * Gets the name displayed to players for this objective 022 * 023 * @return this objective's display name 024 * @throws IllegalStateException if this objective has been unregistered 025 */ 026 String getDisplayName() throws IllegalStateException; 027 028 /** 029 * Sets the name displayed to players for this objective. 030 * 031 * @param displayName Display name to set 032 * @throws IllegalStateException if this objective has been unregistered 033 * @throws IllegalArgumentException if displayName is null 034 * @throws IllegalArgumentException if displayName is longer than 32 035 * characters. 036 */ 037 void setDisplayName(String displayName) throws IllegalStateException, IllegalArgumentException; 038 039 /** 040 * Gets the criteria this objective tracks. 041 * 042 * @return this objective's criteria 043 * @throws IllegalStateException if this objective has been unregistered 044 */ 045 String getCriteria() throws IllegalStateException; 046 047 /** 048 * Gets if the objective's scores can be modified directly by a plugin. 049 * 050 * @return true if scores are modifiable 051 * @throws IllegalStateException if this objective has been unregistered 052 * @see Criterias#HEALTH 053 */ 054 boolean isModifiable() throws IllegalStateException; 055 056 /** 057 * Gets the scoreboard to which this objective is attached. 058 * 059 * @return Owning scoreboard, or null if it has been {@link #unregister() 060 * unregistered} 061 */ 062 Scoreboard getScoreboard(); 063 064 /** 065 * Unregisters this objective from the {@link Scoreboard scoreboard.} 066 * 067 * @throws IllegalStateException if this objective has been unregistered 068 */ 069 void unregister() throws IllegalStateException; 070 071 /** 072 * Sets this objective to display on the specified slot for the 073 * scoreboard, removing it from any other display slot. 074 * 075 * @param slot display slot to change, or null to not display 076 * @throws IllegalStateException if this objective has been unregistered 077 */ 078 void setDisplaySlot(DisplaySlot slot) throws IllegalStateException; 079 080 /** 081 * Gets the display slot this objective is displayed at. 082 * 083 * @return the display slot for this objective, or null if not displayed 084 * @throws IllegalStateException if this objective has been unregistered 085 */ 086 DisplaySlot getDisplaySlot() throws IllegalStateException; 087 088 /** 089 * Gets a player's Score for an Objective on this Scoreboard 090 * 091 * @param player Player for the Score 092 * @return Score tracking the Objective and player specified 093 * @throws IllegalArgumentException if player is null 094 * @throws IllegalStateException if this objective has been unregistered 095 * @deprecated Scoreboards can contain entries that aren't players 096 * @see #getScore(String) 097 */ 098 @Deprecated 099 Score getScore(OfflinePlayer player) throws IllegalArgumentException, IllegalStateException; 100 101 /** 102 * Gets an entry's Score for an Objective on this Scoreboard. 103 * 104 * @param entry Entry for the Score 105 * @return Score tracking the Objective and entry specified 106 * @throws IllegalArgumentException if entry is null 107 * @throws IllegalStateException if this objective has been unregistered 108 */ 109 Score getScore(String entry) throws IllegalArgumentException, IllegalStateException; 110 }