001 package org.bukkit; 002 003 import java.util.Date; 004 005 /** 006 * A single entry from a ban list. This may represent either a player ban or 007 * an IP ban. 008 * <p> 009 * Ban entries include the following properties: 010 * <table border=1> 011 * <tr> 012 * <th>Property</th> 013 * <th>Description</th> 014 * </tr><tr> 015 * <td>Target Name / IP Address</td> 016 * <td>The target name or IP address</td> 017 * </tr><tr> 018 * <td>Creation Date</td> 019 * <td>The creation date of the ban</td> 020 * </tr><tr> 021 * <td>Source</td> 022 * <td>The source of the ban, such as a player, console, plugin, etc</td> 023 * </tr><tr> 024 * <td>Expiration Date</td> 025 * <td>The expiration date of the ban</td> 026 * </tr><tr> 027 * <td>Reason</td> 028 * <td>The reason for the ban</td> 029 * </tr> 030 * </table> 031 * <p> 032 * Unsaved information is not automatically written to the implementation's 033 * ban list, instead, the {@link #save()} method must be called to write the 034 * changes to the ban list. If this ban entry has expired (such as from an 035 * unban) and is no longer found in the list, the {@link #save()} call will 036 * re-add it to the list, therefore banning the victim specified. 037 * <p> 038 * Likewise, changes to the associated {@link BanList} or other entries may or 039 * may not be reflected in this entry. 040 */ 041 public interface BanEntry { 042 043 /** 044 * Gets the target involved. This may be in the form of an IP or a player 045 * name. 046 * 047 * @return the target name or IP address 048 */ 049 public String getTarget(); 050 051 /** 052 * Gets the date this ban entry was created. 053 * 054 * @return the creation date 055 */ 056 public Date getCreated(); 057 058 /** 059 * Sets the date this ban entry was created. 060 * 061 * @param created the new created date, cannot be null 062 * @see #save() saving changes 063 */ 064 public void setCreated(Date created); 065 066 /** 067 * Gets the source of this ban. 068 * <p> 069 * Note: A source is considered any String, although this is generally a 070 * player name. 071 * 072 * @return the source of the ban 073 */ 074 public String getSource(); 075 076 /** 077 * Sets the source of this ban. 078 * <p> 079 * Note: A source is considered any String, although this is generally a 080 * player name. 081 * 082 * @param source the new source where null values become empty strings 083 * @see #save() saving changes 084 */ 085 public void setSource(String source); 086 087 /** 088 * Gets the date this ban expires on, or null for no defined end date. 089 * 090 * @return the expiration date 091 */ 092 public Date getExpiration(); 093 094 /** 095 * Sets the date this ban expires on. Null values are considered 096 * "infinite" bans. 097 * 098 * @param expiration the new expiration date, or null to indicate an 099 * eternity 100 * @see #save() saving changes 101 */ 102 public void setExpiration(Date expiration); 103 104 /** 105 * Gets the reason for this ban. 106 * 107 * @return the ban reason, or null if not set 108 */ 109 public String getReason(); 110 111 /** 112 * Sets the reason for this ban. Reasons must not be null. 113 * 114 * @param reason the new reason, null values assume the implementation 115 * default 116 * @see #save() saving changes 117 */ 118 public void setReason(String reason); 119 120 /** 121 * Saves the ban entry, overwriting any previous data in the ban list. 122 * <p> 123 * Saving the ban entry of an unbanned player will cause the player to be 124 * banned once again. 125 */ 126 public void save(); 127 }