001 package org.bukkit.event.block; 002 003 import java.util.ArrayList; 004 import java.util.Collections; 005 import java.util.List; 006 007 import org.bukkit.block.Block; 008 import org.bukkit.block.BlockFace; 009 import org.bukkit.event.HandlerList; 010 011 /** 012 * Called when a piston extends 013 */ 014 public class BlockPistonExtendEvent extends BlockPistonEvent { 015 private static final HandlerList handlers = new HandlerList(); 016 private final int length; 017 private List<Block> blocks; 018 019 public BlockPistonExtendEvent(final Block block, final int length, final BlockFace direction) { 020 super(block, direction); 021 022 this.length = length; 023 } 024 025 /** 026 * Get the amount of blocks which will be moved while extending. 027 * 028 * @return the amount of moving blocks 029 */ 030 public int getLength() { 031 return this.length; 032 } 033 034 /** 035 * Get an immutable list of the blocks which will be moved by the 036 * extending. 037 * 038 * @return Immutable list of the moved blocks. 039 */ 040 public List<Block> getBlocks() { 041 if (blocks == null) { 042 ArrayList<Block> tmp = new ArrayList<Block>(); 043 for (int i = 0; i < this.getLength(); i++) { 044 tmp.add(block.getRelative(getDirection(), i + 1)); 045 } 046 blocks = Collections.unmodifiableList(tmp); 047 } 048 return blocks; 049 } 050 051 @Override 052 public HandlerList getHandlers() { 053 return handlers; 054 } 055 056 public static HandlerList getHandlerList() { 057 return handlers; 058 } 059 }