001 package org.bukkit.event.block; 002 003 import org.bukkit.block.Block; 004 import org.bukkit.block.BlockFace; 005 import org.bukkit.event.Cancellable; 006 import org.bukkit.event.HandlerList; 007 008 /** 009 * Represents events with a source block and a destination block, currently 010 * only applies to liquid (lava and water) and teleporting dragon eggs. 011 * <p> 012 * If a Block From To event is cancelled, the block will not move (the liquid 013 * will not flow). 014 */ 015 public class BlockFromToEvent extends BlockEvent implements Cancellable { 016 private static final HandlerList handlers = new HandlerList(); 017 protected Block to; 018 protected BlockFace face; 019 protected boolean cancel; 020 021 public BlockFromToEvent(final Block block, final BlockFace face) { 022 super(block); 023 this.face = face; 024 this.cancel = false; 025 } 026 027 public BlockFromToEvent(final Block block, final Block toBlock) { 028 super(block); 029 this.to = toBlock; 030 this.face = BlockFace.SELF; 031 this.cancel = false; 032 } 033 034 /** 035 * Gets the BlockFace that the block is moving to. 036 * 037 * @return The BlockFace that the block is moving to 038 */ 039 public BlockFace getFace() { 040 return face; 041 } 042 043 /** 044 * Convenience method for getting the faced Block. 045 * 046 * @return The faced Block 047 */ 048 public Block getToBlock() { 049 if (to == null) { 050 to = block.getRelative(face); 051 } 052 return to; 053 } 054 055 public boolean isCancelled() { 056 return cancel; 057 } 058 059 public void setCancelled(boolean cancel) { 060 this.cancel = cancel; 061 } 062 063 @Override 064 public HandlerList getHandlers() { 065 return handlers; 066 } 067 068 public static HandlerList getHandlerList() { 069 return handlers; 070 } 071 }