001 package org.bukkit.event.world; 002 003 import java.util.List; 004 import org.bukkit.Location; 005 import org.bukkit.TreeType; 006 import org.bukkit.block.BlockState; 007 import org.bukkit.entity.Player; 008 import org.bukkit.event.Cancellable; 009 import org.bukkit.event.HandlerList; 010 011 /** 012 * Event that is called when an organic structure attempts to grow (Sapling -> 013 * Tree), (Mushroom -> Huge Mushroom), naturally or using bonemeal. 014 */ 015 public class StructureGrowEvent extends WorldEvent implements Cancellable { 016 private static final HandlerList handlers = new HandlerList(); 017 private boolean cancelled = false; 018 private final Location location; 019 private final TreeType species; 020 private final boolean bonemeal; 021 private final Player player; 022 private final List<BlockState> blocks; 023 024 public StructureGrowEvent(final Location location, final TreeType species, final boolean bonemeal, final Player player, final List<BlockState> blocks) { 025 super(location.getWorld()); 026 this.location = location; 027 this.species = species; 028 this.bonemeal = bonemeal; 029 this.player = player; 030 this.blocks = blocks; 031 } 032 033 /** 034 * Gets the location of the structure. 035 * 036 * @return Location of the structure 037 */ 038 public Location getLocation() { 039 return location; 040 } 041 042 /** 043 * Gets the species type (birch, normal, pine, red mushroom, brown 044 * mushroom) 045 * 046 * @return Structure species 047 */ 048 public TreeType getSpecies() { 049 return species; 050 } 051 052 /** 053 * Checks if structure was grown using bonemeal. 054 * 055 * @return True if the structure was grown using bonemeal. 056 */ 057 public boolean isFromBonemeal() { 058 return bonemeal; 059 } 060 061 /** 062 * Gets the player that created the structure. 063 * 064 * @return Player that created the structure, null if was not created 065 * manually 066 */ 067 public Player getPlayer() { 068 return player; 069 } 070 071 /** 072 * Gets an ArrayList of all blocks associated with the structure. 073 * 074 * @return ArrayList of all blocks associated with the structure. 075 */ 076 public List<BlockState> getBlocks() { 077 return blocks; 078 } 079 080 public boolean isCancelled() { 081 return cancelled; 082 } 083 084 public void setCancelled(boolean cancel) { 085 cancelled = cancel; 086 } 087 088 @Override 089 public HandlerList getHandlers() { 090 return handlers; 091 } 092 093 public static HandlerList getHandlerList() { 094 return handlers; 095 } 096 }