[Bleeding] Added getting and setting drops to all appropriate events. Fixes BUKKIT-397 and fixes BUKKIT-1252

By: Celtic Minstrel <celtic.minstrel.ca@some.place>
This commit is contained in:
Bukkit/Spigot 2011-08-14 22:34:13 -04:00
parent da44559df3
commit bbe996077c
6 changed files with 68 additions and 7 deletions

View file

@ -1,9 +1,12 @@
package org.bukkit.event.block;
import java.util.List;
import org.bukkit.block.Block;
import org.bukkit.entity.Player;
import org.bukkit.event.Cancellable;
import org.bukkit.event.HandlerList;
import org.bukkit.inventory.ItemStack;
/**
* Called when a block is broken by a player.
@ -19,11 +22,13 @@ public class BlockBreakEvent extends BlockEvent implements Cancellable {
private static final HandlerList handlers = new HandlerList();
private final Player player;
private boolean cancel;
private List<ItemStack> drops;
public BlockBreakEvent(final Block theBlock, final Player player) {
public BlockBreakEvent(final Block theBlock, final Player player, List<ItemStack> drops) {
super(theBlock);
this.player = player;
this.cancel = false;
this.drops = drops;
}
/**
@ -35,6 +40,16 @@ public class BlockBreakEvent extends BlockEvent implements Cancellable {
return player;
}
/**
* Gets a list of items that should drop from this block. Modifying this list will modify the items drop.
* If the block is a container, the contents of the container will not be included in this list. You can
* get the contents of the container by casting the block's state.
* @return A list of drops
*/
public List<ItemStack> getDrops() {
return drops;
}
public boolean isCancelled() {
return cancel;
}

View file

@ -53,7 +53,8 @@ public class EntityDeathEvent extends EntityEvent {
}
/**
* Gets all the items which will drop when the entity dies
* Gets all the items which will drop when the entity dies. Modifying this list will
* modify what's actually dropped.
*
* @return Items to drop when the entity dies
*/

View file

@ -1,7 +1,10 @@
package org.bukkit.event.painting;
import java.util.List;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Painting;
import org.bukkit.inventory.ItemStack;
/**
* Triggered when a painting is removed by an entity
@ -9,8 +12,8 @@ import org.bukkit.entity.Painting;
public class PaintingBreakByEntityEvent extends PaintingBreakEvent {
private final Entity remover;
public PaintingBreakByEntityEvent(final Painting painting, final Entity remover) {
super(painting, RemoveCause.ENTITY);
public PaintingBreakByEntityEvent(final Painting painting, final Entity remover, List<ItemStack> drops) {
super(painting, RemoveCause.ENTITY, drops);
this.remover = remover;
}

View file

@ -1,8 +1,11 @@
package org.bukkit.event.painting;
import java.util.List;
import org.bukkit.entity.Painting;
import org.bukkit.event.Cancellable;
import org.bukkit.event.HandlerList;
import org.bukkit.inventory.ItemStack;
/**
* Triggered when a painting is removed
@ -11,10 +14,12 @@ public class PaintingBreakEvent extends PaintingEvent implements Cancellable {
private static final HandlerList handlers = new HandlerList();
private boolean cancelled;
private final RemoveCause cause;
private List<ItemStack> drops;
public PaintingBreakEvent(final Painting painting, final RemoveCause cause) {
public PaintingBreakEvent(final Painting painting, final RemoveCause cause, List<ItemStack> drops) {
super(painting);
this.cause = cause;
this.drops = drops;
}
/**
@ -34,6 +39,14 @@ public class PaintingBreakEvent extends PaintingEvent implements Cancellable {
this.cancelled = cancel;
}
/**
* Gets the list of items to be dropped. Modifying this list will modify what's actually dropped.
* @return A list of drops
*/
public List<ItemStack> getDrops() {
return drops;
}
/**
* An enum to specify the cause of the removal
*/

View file

@ -1,9 +1,12 @@
package org.bukkit.event.player;
import java.util.List;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.bukkit.event.Cancellable;
import org.bukkit.event.HandlerList;
import org.bukkit.inventory.ItemStack;
/**
* Called when a player shears an entity
@ -12,11 +15,13 @@ public class PlayerShearEntityEvent extends PlayerEvent implements Cancellable {
private static final HandlerList handlers = new HandlerList();
private boolean cancel;
private final Entity what;
private final List<ItemStack> items;
public PlayerShearEntityEvent(final Player who, final Entity what) {
public PlayerShearEntityEvent(final Player who, final Entity what, final List<ItemStack> drops) {
super(who);
this.cancel = false;
this.what = what;
this.items = drops;
}
public boolean isCancelled() {
@ -36,6 +41,15 @@ public class PlayerShearEntityEvent extends PlayerEvent implements Cancellable {
return what;
}
/**
* Get the items that will drop as a result of the shearing. To change the
* items dropped, change the contents of this list.
* @return The list of items.
*/
public List<ItemStack> getDrops() {
return items;
}
@Override
public HandlerList getHandlers() {
return handlers;

View file

@ -1,9 +1,12 @@
package org.bukkit.event.vehicle;
import java.util.List;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Vehicle;
import org.bukkit.event.Cancellable;
import org.bukkit.event.HandlerList;
import org.bukkit.inventory.ItemStack;
/**
* Raised when a vehicle is destroyed, which could be caused by either a player
@ -14,10 +17,12 @@ public class VehicleDestroyEvent extends VehicleEvent implements Cancellable {
private static final HandlerList handlers = new HandlerList();
private final Entity attacker;
private boolean cancelled;
private List<ItemStack> drops;
public VehicleDestroyEvent(final Vehicle vehicle, final Entity attacker) {
public VehicleDestroyEvent(final Vehicle vehicle, final Entity attacker, List<ItemStack> drops) {
super(vehicle);
this.attacker = attacker;
this.drops = drops;
}
/**
@ -45,4 +50,14 @@ public class VehicleDestroyEvent extends VehicleEvent implements Cancellable {
public static HandlerList getHandlerList() {
return handlers;
}
/**
* Gets a list of drops that this vehicle should drop when broken. Changes to this list will
* affect what is actually dropped. This list does not include the contents of the inventory
* if this is a storage minecart; if that's needed, it can be fetched by casting.
* @return A list of drops
*/
public List<ItemStack> getDrops() {
return drops;
}
}