001 package org.bukkit.event.player; 002 003 import org.bukkit.entity.Fish; 004 import org.bukkit.entity.Player; 005 import org.bukkit.event.Cancellable; 006 import org.bukkit.entity.Entity; 007 import org.bukkit.event.HandlerList; 008 009 /** 010 * Thrown when a player is fishing 011 */ 012 public class PlayerFishEvent extends PlayerEvent implements Cancellable { 013 private static final HandlerList handlers = new HandlerList(); 014 private final Entity entity; 015 private boolean cancel = false; 016 private int exp; 017 private final State state; 018 private final Fish hookEntity; 019 020 /** 021 * @deprecated replaced by {@link #PlayerFishEvent(Player, Entity, Fish, 022 * State)} to include the {@link Fish} hook entity. 023 * @param player 024 * @param entity 025 * @param state 026 */ 027 @Deprecated 028 public PlayerFishEvent(final Player player, final Entity entity, final State state) { 029 this(player, entity, null, state); 030 } 031 032 public PlayerFishEvent(final Player player, final Entity entity, final Fish hookEntity, final State state) { 033 super(player); 034 this.entity = entity; 035 this.hookEntity = hookEntity; 036 this.state = state; 037 } 038 039 /** 040 * Gets the entity caught by the player. 041 * <p> 042 * If player has fished successfully, the result may be cast to {@link 043 * Item}. 044 * 045 * @return Entity caught by the player, Entity if fishing, and null if 046 * bobber has gotten stuck in the ground or nothing has been caught 047 */ 048 public Entity getCaught() { 049 return entity; 050 } 051 052 /** 053 * Gets the fishing hook. 054 * 055 * @return Fish the entity representing the fishing hook/bobber. 056 */ 057 public Fish getHook() { 058 return hookEntity; 059 } 060 061 public boolean isCancelled() { 062 return cancel; 063 } 064 065 public void setCancelled(boolean cancel) { 066 this.cancel = cancel; 067 } 068 069 /** 070 * Gets the amount of experience received when fishing. 071 * <p> 072 * Note: This value has no default effect unless the event state is {@link 073 * State#CAUGHT_FISH}. 074 * 075 * @return the amount of experience to drop 076 */ 077 public int getExpToDrop() { 078 return exp; 079 } 080 081 /** 082 * Sets the amount of experience received when fishing. 083 * <p> 084 * Note: This value has no default effect unless the event state is {@link 085 * State#CAUGHT_FISH}. 086 * 087 * @param amount the amount of experience to drop 088 */ 089 public void setExpToDrop(int amount) { 090 exp = amount; 091 } 092 093 /** 094 * Gets the state of the fishing 095 * 096 * @return A State detailing the state of the fishing 097 */ 098 public State getState() { 099 return state; 100 } 101 102 @Override 103 public HandlerList getHandlers() { 104 return handlers; 105 } 106 107 public static HandlerList getHandlerList() { 108 return handlers; 109 } 110 111 /** 112 * An enum to specify the state of the fishing 113 */ 114 public enum State { 115 116 /** 117 * When a player is fishing, ie casting the line out. 118 */ 119 FISHING, 120 /** 121 * When a player has successfully caught a fish and is reeling it in. 122 */ 123 CAUGHT_FISH, 124 /** 125 * When a player has successfully caught an entity 126 */ 127 CAUGHT_ENTITY, 128 /** 129 * When a bobber is stuck in the ground 130 */ 131 IN_GROUND, 132 /** 133 * When a player fails to catch anything while fishing usually due to 134 * poor aiming or timing 135 */ 136 FAILED_ATTEMPT, 137 } 138 }