Newer
Older
ultramine_bukkit / src / main / java / org / bukkit / event / player / PlayerFishEvent.java
@vlad20012 vlad20012 on 24 Feb 2017 2 KB initial
package org.bukkit.event.player;

import org.bukkit.entity.Entity;
import org.bukkit.entity.Fish;
import org.bukkit.entity.Player;
import org.bukkit.event.Cancellable;
import org.bukkit.event.HandlerList;

/**
 * Thrown when a player is fishing
 */
public class PlayerFishEvent extends PlayerEvent implements Cancellable
{
	private static final HandlerList handlers = new HandlerList();
	private final Entity entity;
	private boolean cancel = false;
	private int exp;
	private final State state;
	private final Fish hookEntity;

	/**
	 * @param player
	 * @param entity
	 * @param state
	 * @deprecated replaced by {@link #PlayerFishEvent(Player, Entity, Fish,
	 * State)} to include the {@link Fish} hook entity.
	 */
	@Deprecated
	public PlayerFishEvent(final Player player, final Entity entity, final State state)
	{
		this(player, entity, null, state);
	}

	public PlayerFishEvent(final Player player, final Entity entity, final Fish hookEntity, final State state)
	{
		super(player);
		this.entity = entity;
		this.hookEntity = hookEntity;
		this.state = state;
	}

	/**
	 * Gets the entity caught by the player
	 *
	 * @return Entity caught by the player, null if fishing, bobber has gotten
	 * stuck in the ground or nothing has been caught
	 */
	public Entity getCaught()
	{
		return entity;
	}

	/**
	 * Gets the fishing hook.
	 *
	 * @return Fish the entity representing the fishing hook/bobber.
	 */
	public Fish getHook()
	{
		return hookEntity;
	}

	public boolean isCancelled()
	{
		return cancel;
	}

	public void setCancelled(boolean cancel)
	{
		this.cancel = cancel;
	}

	/**
	 * Gets the amount of experience received when fishing.
	 * <p>
	 * Note: This value has no default effect unless the event state is {@link
	 * State#CAUGHT_FISH}.
	 *
	 * @return the amount of experience to drop
	 */
	public int getExpToDrop()
	{
		return exp;
	}

	/**
	 * Sets the amount of experience received when fishing.
	 * <p>
	 * Note: This value has no default effect unless the event state is {@link
	 * State#CAUGHT_FISH}.
	 *
	 * @param amount the amount of experience to drop
	 */
	public void setExpToDrop(int amount)
	{
		exp = amount;
	}

	/**
	 * Gets the state of the fishing
	 *
	 * @return A State detailing the state of the fishing
	 */
	public State getState()
	{
		return state;
	}

	@Override
	public HandlerList getHandlers()
	{
		return handlers;
	}

	public static HandlerList getHandlerList()
	{
		return handlers;
	}

	/**
	 * An enum to specify the state of the fishing
	 */
	public enum State
	{

		/**
		 * When a player is fishing, ie casting the line out.
		 */
		FISHING,
		/**
		 * When a player has successfully caught a fish and is reeling it in.
		 */
		CAUGHT_FISH,
		/**
		 * When a player has successfully caught an entity
		 */
		CAUGHT_ENTITY,
		/**
		 * When a bobber is stuck in the ground
		 */
		IN_GROUND,
		/**
		 * When a player fails to catch anything while fishing usually due to
		 * poor aiming or timing
		 */
		FAILED_ATTEMPT,
	}
}