From 0abbb9caa3f46a580e706af7844dea166f9b1bc0 Mon Sep 17 00:00:00 2001 From: Yariv Livay Date: Sun, 17 Mar 2013 22:27:52 +0200 Subject: Add block or entity causes to BlockIgniteEvent. Addresses BUKKIT-3609, BUKKIT-3656, BUKKIT-3657 --- .../org/bukkit/event/block/BlockIgniteEvent.java | 59 ++++++++++++++++++++-- 1 file changed, 54 insertions(+), 5 deletions(-) (limited to 'src/main') diff --git a/src/main/java/org/bukkit/event/block/BlockIgniteEvent.java b/src/main/java/org/bukkit/event/block/BlockIgniteEvent.java index 2ff8fc4a..454b4500 100644 --- a/src/main/java/org/bukkit/event/block/BlockIgniteEvent.java +++ b/src/main/java/org/bukkit/event/block/BlockIgniteEvent.java @@ -1,6 +1,7 @@ package org.bukkit.event.block; import org.bukkit.block.Block; +import org.bukkit.entity.Entity; import org.bukkit.entity.Player; import org.bukkit.event.Cancellable; import org.bukkit.event.HandlerList; @@ -13,13 +14,31 @@ import org.bukkit.event.HandlerList; public class BlockIgniteEvent extends BlockEvent implements Cancellable { private static final HandlerList handlers = new HandlerList(); private final IgniteCause cause; + private final Entity ignitingEntity; + private final Block ignitingBlock; private boolean cancel; - private final Player thePlayer; + /** + * Deprecated. Use {@link BlockIgniteEvent#BlockIgniteEvent(Block, IgniteCause, Entity)} instead. + */ + @Deprecated public BlockIgniteEvent(final Block theBlock, final IgniteCause cause, final Player thePlayer) { + this(theBlock, cause, (Entity) thePlayer); + } + + public BlockIgniteEvent(final Block theBlock, final IgniteCause cause, final Entity ignitingEntity) { + this(theBlock, cause, ignitingEntity, null); + } + + public BlockIgniteEvent(final Block theBlock, final IgniteCause cause, final Block ignitingBlock) { + this(theBlock, cause, null, ignitingBlock); + } + + public BlockIgniteEvent(final Block theBlock, final IgniteCause cause, final Entity ignitingEntity, final Block ignitingBlock) { super(theBlock); this.cause = cause; - this.thePlayer = thePlayer; + this.ignitingEntity = ignitingEntity; + this.ignitingBlock = ignitingBlock; this.cancel = false; } @@ -43,10 +62,32 @@ public class BlockIgniteEvent extends BlockEvent implements Cancellable { /** * Gets the player who ignited this block * - * @return The Player who placed the fire block, if not ignited by a player returns null + * @return The Player that placed/ignited the fire block, or null if not ignited by a Player. */ public Player getPlayer() { - return thePlayer; + if (ignitingEntity instanceof Player) { + return (Player) ignitingEntity; + } + + return null; + } + + /** + * Gets the entity who ignited this block + * + * @return The Entity that placed/ignited the fire block, or null if not ignited by a Entity. + */ + public Entity getIgnitingEntity() { + return ignitingEntity; + } + + /** + * Gets the block who ignited this block + * + * @return The Block that placed/ignited the fire block, or null if not ignited by a Block. + */ + public Block getIgnitingBlock() { + return ignitingBlock; } /** @@ -59,7 +100,7 @@ public class BlockIgniteEvent extends BlockEvent implements Cancellable { */ LAVA, /** - * Block ignition caused by a player using flint-and-steel. + * Block ignition caused by a player or dispenser using flint-and-steel. */ FLINT_AND_STEEL, /** @@ -74,6 +115,14 @@ public class BlockIgniteEvent extends BlockEvent implements Cancellable { * Block ignition caused by an entity using a fireball. */ FIREBALL, + /** + * Block ignition caused by an Ender Crystal. + */ + ENDER_CRYSTAL, + /** + * Block ignition caused by explosion. + */ + EXPLOSION, } @Override -- cgit v1.2.3