001 package org.bukkit.event.block;
002
003 import com.google.common.collect.ImmutableList;
004 import org.bukkit.block.Block;
005 import org.bukkit.block.BlockState;
006 import org.bukkit.entity.Player;
007 import org.bukkit.inventory.ItemStack;
008
009 import java.util.List;
010
011 /**
012 * Fired when a single block placement action of a player triggers the
013 * creation of multiple blocks(e.g. placing a bed block). The block returned
014 * by {@link #getBlockPlaced()} and its related methods is the block where
015 * the placed block would exist if the placement only affected a single
016 * block.
017 */
018 public class BlockMultiPlaceEvent extends BlockPlaceEvent {
019 private final List<BlockState> states;
020
021 public BlockMultiPlaceEvent(List<BlockState> states, Block clicked, ItemStack itemInHand, Player thePlayer, boolean canBuild) {
022 super(states.get(0).getBlock(), states.get(0), clicked, itemInHand, thePlayer, canBuild);
023 this.states = ImmutableList.copyOf(states);
024 }
025
026 /**
027 * Gets a list of blockstates for all blocks which were replaced by the
028 * placement of the new blocks. Most of these blocks will just have a
029 * Material type of AIR.
030 *
031 * @return immutable list of replaced BlockStates
032 */
033 public List<BlockState> getReplacedBlockStates() {
034 return states;
035 }
036 }