package org.bukkit.event.entity; import org.bukkit.entity.Creeper; import org.bukkit.entity.LightningStrike; import org.bukkit.event.Cancellable; import org.bukkit.event.HandlerList; /** * Called when a Creeper is struck by lightning. * <p> * If a Creeper Power event is cancelled, the Creeper will not be powered. */ public class CreeperPowerEvent extends EntityEvent implements Cancellable { private static final HandlerList handlers = new HandlerList(); private boolean canceled; private final PowerCause cause; private LightningStrike bolt; public CreeperPowerEvent(final Creeper creeper, final LightningStrike bolt, final PowerCause cause) { this(creeper, cause); this.bolt = bolt; } public CreeperPowerEvent(final Creeper creeper, final PowerCause cause) { super(creeper); this.cause = cause; } public boolean isCancelled() { return canceled; } public void setCancelled(boolean cancel) { canceled = cancel; } @Override public Creeper getEntity() { return (Creeper) entity; } /** * Gets the lightning bolt which is striking the Creeper. * * @return The Entity for the lightning bolt which is striking the Creeper */ public LightningStrike getLightning() { return bolt; } /** * Gets the cause of the creeper being (un)powered. * * @return A PowerCause value detailing the cause of change in power. */ public PowerCause getCause() { return cause; } @Override public HandlerList getHandlers() { return handlers; } public static HandlerList getHandlerList() { return handlers; } /** * An enum to specify the cause of the change in power */ public enum PowerCause { /** * Power change caused by a lightning bolt * <p> * Powered state: true */ LIGHTNING, /** * Power change caused by something else (probably a plugin) * <p> * Powered state: true */ SET_ON, /** * Power change caused by something else (probably a plugin) * <p> * Powered state: false */ SET_OFF } }