13
0
geforkt von Mirrors/Paper

Add PlayerBookEditEvent. Adds BUKKIT-1995

Event related to book & quill and written book items.

By: Des Herriott <des.herriott@gmail.com>
Dieser Commit ist enthalten in:
Bukkit/Spigot 2013-01-18 08:53:23 +00:00
Ursprung 1839404cbf
Commit 0f08f915ec

Datei anzeigen

@ -0,0 +1,125 @@
package org.bukkit.event.player;
import org.apache.commons.lang.Validate;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.Cancellable;
import org.bukkit.event.HandlerList;
import org.bukkit.inventory.meta.BookMeta;
/**
* Called when a player edits or signs a book and quill item. If the event
* is cancelled, no changes are made to the BookMeta
*/
public class PlayerEditBookEvent extends PlayerEvent implements Cancellable {
private static final HandlerList handlers = new HandlerList();
private final BookMeta previousBookMeta;
private final int slot;
private BookMeta newBookMeta;
private boolean isSigning;
private boolean cancel;
public PlayerEditBookEvent(Player who, int slot, BookMeta previousBookMeta, BookMeta newBookMeta, boolean isSigning) {
super(who);
Validate.isTrue(slot >= 0 && slot <=8, "Slot must be in range 0-8 inclusive");
Validate.notNull(previousBookMeta, "Previous book meta must not be null");
Validate.notNull(newBookMeta, "New book meta must not be null");
Bukkit.getItemFactory().equals(previousBookMeta, newBookMeta);
this.previousBookMeta = previousBookMeta;
this.newBookMeta = newBookMeta;
this.slot = slot;
this.isSigning = isSigning;
this.cancel = false;
}
/**
* Gets the book meta currently on the book.
* <p>
* Note: this is a copy of the book meta. You cannot use this object to
* change the existing book meta.
*
* @return the book meta currently on the book
*/
public BookMeta getPreviousBookMeta() {
return previousBookMeta.clone();
}
/**
* Gets the book meta that the player is attempting to add to
* the book.
* <p>
* Note: this is a copy of the proposed new book meta. Use {@link
* #setNewBookMeta(BookMeta)} to change what will actually be
* added to the book.
*
* @return the book meta that the player is attempting to add
*/
public BookMeta getNewBookMeta() {
return newBookMeta.clone();
}
/**
* Gets the inventory slot number for the book item that triggered this
* event.
* <p>
* This is a slot number on the player's hotbar in the range 0-8.
*
* @return the inventory slot number that the book item occupies
*/
public int getSlot() {
return slot;
}
/**
* Sets the book meta that will actually be added to the book.
*
* @param bookMeta new book meta
* @throws IllegalArgumentException if the new book meta is null
*/
public void setNewBookMeta(BookMeta newBookMeta) throws IllegalArgumentException {
Validate.notNull(newBookMeta, "New book meta must not be null");
Bukkit.getItemFactory().equals(newBookMeta, null);
this.newBookMeta = newBookMeta.clone();
}
/**
* Gets whether or not the book is being signed. If a book is signed the
* Material changes from BOOK_AND_QUILL to WRITTEN_BOOK.
*
* @return true if the book is being signed
*/
public boolean isSigning() {
return isSigning;
}
/**
* Sets whether or not the book is being signed. If a book is signed the
* Material changes from BOOK_AND_QUILL to WRITTEN_BOOK.
*
* @param signing whether or not the book is being signed.
*/
public void setSigning(boolean signing) {
isSigning = signing;
}
@Override
public HandlerList getHandlers() {
return handlers;
}
public static HandlerList getHandlerList() {
return handlers;
}
public boolean isCancelled() {
return cancel;
}
public void setCancelled(boolean cancel) {
this.cancel = cancel;
}
}