ProjectAres/PGM/src/main/java/tc/oc/pgm/events/ItemTransferEvent.java

111 lines
2.9 KiB
Java

package tc.oc.pgm.events;
import java.util.Optional;
import javax.annotation.Nullable;
import org.bukkit.entity.Item;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
import org.bukkit.inventory.ItemStack;
import tc.oc.commons.bukkit.event.GeneralizingEvent;
import tc.oc.commons.bukkit.inventory.InventorySlot;
/**
* Fired when an item moves in/out of an Inventory
*/
public class ItemTransferEvent extends GeneralizingEvent {
public enum Type {
PLACE, // Item placed in an inventory through a GUI
TAKE, // Item taken from an inventory through a GUI
TRANSFER, // Item transferred instantly from one inventory to another
PICKUP, // Item picked up from the world
DROP, // Item dropped into the world
PLUGIN // Item transferred somehow by a plugin
}
protected final Type type;
protected final Optional<InventorySlot<?>> from;
protected final Optional<InventorySlot<?>> to;
protected final ItemStack itemStack;
@Nullable protected final Item itemEntity;
protected int quantity;
public ItemTransferEvent(@Nullable Event cause,
Type type,
Optional<InventorySlot<?>> from,
Optional<InventorySlot<?>> to,
ItemStack itemStack,
@Nullable Item itemEntity,
int quantity) {
super(cause);
this.type = type;
this.from = from;
this.to = to;
this.itemStack = itemStack;
this.itemEntity = itemEntity;
this.quantity = quantity;
}
@Override
public String toString() {
String s = this.getClass().getName() +
" cause=" + this.cause.getEventName() +
" type=" + this.type;
if(from.isPresent()) {
s += " from=" + from.get();
}
if(to.isPresent()) {
s += " to=" + to.get();
}
if(this.itemStack != null) {
s += " stack=" + this.itemStack;
}
if(this.itemEntity != null) {
s += " entity=" + this.itemEntity;
}
return s + " qty=" + this.quantity;
}
public Type getType() {
return type;
}
public Optional<InventorySlot<?>> from() {
return from;
}
public Optional<InventorySlot<?>> to() {
return to;
}
public ItemStack getItemStack() {
return itemStack;
}
@Nullable
public Item getItemEntity() {
return itemEntity;
}
public int getQuantity() {
return quantity;
}
public void setQuantity(int quantity) {
this.quantity = quantity;
}
private static final HandlerList handlers = new HandlerList();
@Override public HandlerList getHandlers() {
return handlers;
}
public static HandlerList getHandlerList() {
return handlers;
}
}