001 package org.bukkit; 002 003 import java.util.Date; 004 import java.util.Set; 005 006 /** 007 * A ban list, containing bans of some {@link Type}. 008 */ 009 public interface BanList { 010 011 /** 012 * Represents a ban-type that a {@link BanList} may track. 013 */ 014 public enum Type { 015 /** 016 * Banned player names 017 */ 018 NAME, 019 /** 020 * Banned player IP addresses 021 */ 022 IP, 023 ; 024 } 025 026 /** 027 * Gets a {@link BanEntry} by target. 028 * 029 * @param target entry parameter to search for 030 * @return the corresponding entry, or null if none found 031 */ 032 public BanEntry getBanEntry(String target); 033 034 /** 035 * Adds a ban to the this list. If a previous ban exists, this will 036 * update the previous entry. 037 * 038 * @param target the target of the ban 039 * @param reason reason for the ban, null indicates implementation default 040 * @param expires date for the ban's expiration (unban), or null to imply 041 * forever 042 * @param source source of the ban, null indicates implementation default 043 * @return the entry for the newly created ban, or the entry for the 044 * (updated) previous ban 045 */ 046 public BanEntry addBan(String target, String reason, Date expires, String source); 047 048 /** 049 * Gets a set containing every {@link BanEntry} in this list. 050 * 051 * @return an immutable set containing every entry tracked by this list 052 */ 053 public Set<BanEntry> getBanEntries(); 054 055 /** 056 * Gets if a {@link BanEntry} exists for the target, indicating an active 057 * ban status. 058 * 059 * @param target the target to find 060 * @return true if a {@link BanEntry} exists for the name, indicating an 061 * active ban status, false otherwise 062 */ 063 public boolean isBanned(String target); 064 065 /** 066 * Removes the specified target from this list, therefore indicating a 067 * "not banned" status. 068 * 069 * @param target the target to remove from this list 070 */ 071 public void pardon(String target); 072 }