diff options
author | Celtic Minstrel <celtic.minstrel.ca@some.place> | 2011-08-14 22:34:13 -0400 |
---|---|---|
committer | EvilSeph <evilseph@gmail.com> | 2012-03-21 12:31:22 -0400 |
commit | 066ccf6062f47c04ed751df29160aa240612a511 (patch) | |
tree | fdacc77b03a254fbf0a1610b18490b5439a927ef | |
parent | bf771c192d4a859ae59891a6258d49176883ae86 (diff) | |
download | bukkit-066ccf6062f47c04ed751df29160aa240612a511.tar bukkit-066ccf6062f47c04ed751df29160aa240612a511.tar.gz bukkit-066ccf6062f47c04ed751df29160aa240612a511.tar.lz bukkit-066ccf6062f47c04ed751df29160aa240612a511.tar.xz bukkit-066ccf6062f47c04ed751df29160aa240612a511.zip |
[Bleeding] Added getting and setting drops to all appropriate events. Fixes BUKKIT-397 and fixes BUKKIT-1252
6 files changed, 68 insertions, 7 deletions
diff --git a/src/main/java/org/bukkit/event/block/BlockBreakEvent.java b/src/main/java/org/bukkit/event/block/BlockBreakEvent.java index 606957f4..413155bc 100644 --- a/src/main/java/org/bukkit/event/block/BlockBreakEvent.java +++ b/src/main/java/org/bukkit/event/block/BlockBreakEvent.java @@ -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; } diff --git a/src/main/java/org/bukkit/event/entity/EntityDeathEvent.java b/src/main/java/org/bukkit/event/entity/EntityDeathEvent.java index d39596f6..9e7a622f 100644 --- a/src/main/java/org/bukkit/event/entity/EntityDeathEvent.java +++ b/src/main/java/org/bukkit/event/entity/EntityDeathEvent.java @@ -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 */ diff --git a/src/main/java/org/bukkit/event/painting/PaintingBreakByEntityEvent.java b/src/main/java/org/bukkit/event/painting/PaintingBreakByEntityEvent.java index d7f0bb16..6b594719 100644 --- a/src/main/java/org/bukkit/event/painting/PaintingBreakByEntityEvent.java +++ b/src/main/java/org/bukkit/event/painting/PaintingBreakByEntityEvent.java @@ -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; } diff --git a/src/main/java/org/bukkit/event/painting/PaintingBreakEvent.java b/src/main/java/org/bukkit/event/painting/PaintingBreakEvent.java index edf3559c..140846bd 100644 --- a/src/main/java/org/bukkit/event/painting/PaintingBreakEvent.java +++ b/src/main/java/org/bukkit/event/painting/PaintingBreakEvent.java @@ -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; } /** @@ -35,6 +40,14 @@ public class PaintingBreakEvent extends PaintingEvent implements Cancellable { } /** + * 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 */ public enum RemoveCause { diff --git a/src/main/java/org/bukkit/event/player/PlayerShearEntityEvent.java b/src/main/java/org/bukkit/event/player/PlayerShearEntityEvent.java index 38afb3ce..4fe6bb1a 100644 --- a/src/main/java/org/bukkit/event/player/PlayerShearEntityEvent.java +++ b/src/main/java/org/bukkit/event/player/PlayerShearEntityEvent.java @@ -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; diff --git a/src/main/java/org/bukkit/event/vehicle/VehicleDestroyEvent.java b/src/main/java/org/bukkit/event/vehicle/VehicleDestroyEvent.java index 7a481d3a..3351a89c 100644 --- a/src/main/java/org/bukkit/event/vehicle/VehicleDestroyEvent.java +++ b/src/main/java/org/bukkit/event/vehicle/VehicleDestroyEvent.java @@ -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; + } } |