001 package org.bukkit.event.player;
002
003 import org.bukkit.Material;
004 import org.bukkit.Statistic;
005 import org.bukkit.entity.EntityType;
006 import org.bukkit.entity.Player;
007 import org.bukkit.event.Cancellable;
008 import org.bukkit.event.HandlerList;
009
010 /**
011 * Called when a player statistic is incremented.
012 * <p>
013 * This event is not called for {@link org.bukkit.Statistic#PLAY_ONE_TICK} or
014 * movement based statistics.
015 *
016 */
017 public class PlayerStatisticIncrementEvent extends PlayerEvent implements Cancellable {
018 private static final HandlerList handlers = new HandlerList();
019 protected final Statistic statistic;
020 private final int initialValue;
021 private final int newValue;
022 private boolean isCancelled = false;
023 private final EntityType entityType;
024 private final Material material;
025
026 public PlayerStatisticIncrementEvent(Player player, Statistic statistic, int initialValue, int newValue) {
027 super (player);
028 this.statistic = statistic;
029 this.initialValue = initialValue;
030 this.newValue = newValue;
031 this.entityType = null;
032 this.material = null;
033 }
034
035 public PlayerStatisticIncrementEvent(Player player, Statistic statistic, int initialValue, int newValue, EntityType entityType) {
036 super (player);
037 this.statistic = statistic;
038 this.initialValue = initialValue;
039 this.newValue = newValue;
040 this.entityType = entityType;
041 this.material = null;
042 }
043
044 public PlayerStatisticIncrementEvent(Player player, Statistic statistic, int initialValue, int newValue, Material material) {
045 super (player);
046 this.statistic = statistic;
047 this.initialValue = initialValue;
048 this.newValue = newValue;
049 this.entityType = null;
050 this.material = material;
051 }
052
053 /**
054 * Gets the statistic that is being incremented.
055 *
056 * @return the incremented statistic
057 */
058 public Statistic getStatistic() {
059 return statistic;
060 }
061
062 /**
063 * Gets the previous value of the statistic.
064 *
065 * @return the previous value of the statistic
066 */
067 public int getPreviousValue() {
068 return initialValue;
069 }
070
071 /**
072 * Gets the new value of the statistic.
073 *
074 * @return the new value of the statistic
075 */
076 public int getNewValue() {
077 return newValue;
078 }
079
080 /**
081 * Gets the EntityType if {@link #getStatistic() getStatistic()} is an
082 * entity statistic otherwise returns null.
083 *
084 * @return the EntityType of the statistic
085 */
086 public EntityType getEntityType() {
087 return entityType;
088 }
089
090 /**
091 * Gets the Material if {@link #getStatistic() getStatistic()} is a block
092 * or item statistic otherwise returns null.
093 *
094 * @return the Material of the statistic
095 */
096 public Material getMaterial() {
097 return material;
098 }
099
100 public boolean isCancelled() {
101 return isCancelled;
102 }
103
104 public void setCancelled(boolean cancel) {
105 this.isCancelled = cancel;
106 }
107
108 @Override
109 public HandlerList getHandlers() {
110 return handlers;
111 }
112
113 public static HandlerList getHandlerList() {
114 return handlers;
115 }
116 }