111 lines
2.9 KiB
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;
|
|
}
|
|
}
|