Newer
Older
ultramine_bukkit / src / main / java / org / bukkit / event / entity / CreeperPowerEvent.java
@vlad20012 vlad20012 on 24 Feb 2017 1 KB initial
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
	}
}