001 package org.bukkit.inventory.meta;
002
003 import java.util.List;
004
005 import org.bukkit.Material;
006
007 /**
008 * Represents a book ({@link Material#BOOK_AND_QUILL} or {@link
009 * Material#WRITTEN_BOOK}) that can have a title, an author, and pages.
010 */
011 public interface BookMeta extends ItemMeta {
012
013 /**
014 * Checks for the existence of a title in the book.
015 *
016 * @return true if the book has a title
017 */
018 boolean hasTitle();
019
020 /**
021 * Gets the title of the book.
022 * <p>
023 * Plugins should check that hasTitle() returns true before calling this
024 * method.
025 *
026 * @return the title of the book
027 */
028 String getTitle();
029
030 /**
031 * Sets the title of the book.
032 * <p>
033 * Limited to 16 characters. Removes title when given null.
034 *
035 * @param title the title to set
036 * @return true if the title was successfully set
037 */
038 boolean setTitle(String title);
039
040 /**
041 * Checks for the existence of an author in the book.
042 *
043 * @return the author of the book
044 */
045 boolean hasAuthor();
046
047 /**
048 * Gets the author of the book.
049 * <p>
050 * Plugins should check that hasAuthor() returns true before calling this
051 * method.
052 *
053 * @return the author of the book
054 */
055 String getAuthor();
056
057 /**
058 * Sets the author of the book. Removes author when given null.
059 *
060 * @param author the author of the book
061 */
062 void setAuthor(String author);
063
064 /**
065 * Checks for the existence of pages in the book.
066 *
067 * @return true if the book has pages
068 */
069 boolean hasPages();
070
071 /**
072 * Gets the specified page in the book. The given page must exist.
073 *
074 * @param page the page number to get
075 * @return the page from the book
076 */
077 String getPage(int page);
078
079 /**
080 * Sets the specified page in the book. Pages of the book must be
081 * contiguous.
082 * <p>
083 * The data can be up to 256 characters in length, additional characters
084 * are truncated.
085 *
086 * @param page the page number to set
087 * @param data the data to set for that page
088 */
089 void setPage(int page, String data);
090
091 /**
092 * Gets all the pages in the book.
093 *
094 * @return list of all the pages in the book
095 */
096 List<String> getPages();
097
098 /**
099 * Clears the existing book pages, and sets the book to use the provided
100 * pages. Maximum 50 pages with 256 characters per page.
101 *
102 * @param pages A list of pages to set the book to use
103 */
104 void setPages(List<String> pages);
105
106 /**
107 * Clears the existing book pages, and sets the book to use the provided
108 * pages. Maximum 50 pages with 256 characters per page.
109 *
110 * @param pages A list of strings, each being a page
111 */
112 void setPages(String... pages);
113
114 /**
115 * Adds new pages to the end of the book. Up to a maximum of 50 pages with
116 * 256 characters per page.
117 *
118 * @param pages A list of strings, each being a page
119 */
120 void addPage(String... pages);
121
122 /**
123 * Gets the number of pages in the book.
124 *
125 * @return the number of pages in the book
126 */
127 int getPageCount();
128
129 BookMeta clone();
130 }