Newer
Older
ultramine_bukkit / src / main / java / org / bukkit / BanEntry.java
@vlad20012 vlad20012 on 24 Feb 2017 3 KB initial
package org.bukkit;

import java.util.Date;

/**
 * A single entry from a ban list. This may represent either a player ban or
 * an IP ban.
 * <p>
 * Ban entries include the following properties:
 * <table border=1>
 * <tr>
 * <th>Property</th>
 * <th>Description</th>
 * </tr><tr>
 * <td>Target Name / IP Address</td>
 * <td>The target name or IP address</td>
 * </tr><tr>
 * <td>Creation Date</td>
 * <td>The creation date of the ban</td>
 * </tr><tr>
 * <td>Source</td>
 * <td>The source of the ban, such as a player, console, plugin, etc</td>
 * </tr><tr>
 * <td>Expiration Date</td>
 * <td>The expiration date of the ban</td>
 * </tr><tr>
 * <td>Reason</td>
 * <td>The reason for the ban</td>
 * </tr>
 * </table>
 * <p>
 * Unsaved information is not automatically written to the implementation's
 * ban list, instead, the {@link #save()} method must be called to write the
 * changes to the ban list. If this ban entry has expired (such as from an
 * unban) and is no longer found in the list, the {@link #save()} call will
 * re-add it to the list, therefore banning the victim specified.
 * <p>
 * Likewise, changes to the associated {@link BanList} or other entries may or
 * may not be reflected in this entry.
 */
public interface BanEntry
{

	/**
	 * Gets the target involved. This may be in the form of an IP or a player
	 * name.
	 *
	 * @return the target name or IP address
	 */
	public String getTarget();

	/**
	 * Gets the date this ban entry was created.
	 *
	 * @return the creation date
	 */
	public Date getCreated();

	/**
	 * Sets the date this ban entry was created.
	 *
	 * @param created the new created date, cannot be null
	 * @see #save() saving changes
	 */
	public void setCreated(Date created);

	/**
	 * Gets the source of this ban.
	 * <p>
	 * Note: A source is considered any String, although this is generally a
	 * player name.
	 *
	 * @return the source of the ban
	 */
	public String getSource();

	/**
	 * Sets the source of this ban.
	 * <p>
	 * Note: A source is considered any String, although this is generally a
	 * player name.
	 *
	 * @param source the new source where null values become empty strings
	 * @see #save() saving changes
	 */
	public void setSource(String source);

	/**
	 * Gets the date this ban expires on, or null for no defined end date.
	 *
	 * @return the expiration date
	 */
	public Date getExpiration();

	/**
	 * Sets the date this ban expires on. Null values are considered
	 * "infinite" bans.
	 *
	 * @param expiration the new expiration date, or null to indicate an
	 *                   eternity
	 * @see #save() saving changes
	 */
	public void setExpiration(Date expiration);

	/**
	 * Gets the reason for this ban.
	 *
	 * @return the ban reason, or null if not set
	 */
	public String getReason();

	/**
	 * Sets the reason for this ban. Reasons must not be null.
	 *
	 * @param reason the new reason, null values assume the implementation
	 *               default
	 * @see #save() saving changes
	 */
	public void setReason(String reason);

	/**
	 * Saves the ban entry, overwriting any previous data in the ban list.
	 * <p>
	 * Saving the ban entry of an unbanned player will cause the player to be
	 * banned once again.
	 */
	public void save();
}