From 92bbf8957cc55c913f87056e698566ed6c495217 Mon Sep 17 00:00:00 2001 From: Nathan Adams Date: Thu, 19 Jan 2012 16:07:03 +0000 Subject: Added new PlayerExpChangeEvent and PlayerLevelChangeEvent events. Thanks to feildmaster for the PR. --- src/main/java/org/bukkit/event/Event.java | 12 ++++++ .../bukkit/event/player/PlayerExpChangeEvent.java | 43 +++++++++++++++++++++ .../event/player/PlayerLevelChangeEvent.java | 45 ++++++++++++++++++++++ .../org/bukkit/event/player/PlayerListener.java | 14 +++++++ .../org/bukkit/plugin/java/JavaPluginLoader.java | 24 ++++++++++-- 5 files changed, 135 insertions(+), 3 deletions(-) create mode 100644 src/main/java/org/bukkit/event/player/PlayerExpChangeEvent.java create mode 100644 src/main/java/org/bukkit/event/player/PlayerLevelChangeEvent.java (limited to 'src') diff --git a/src/main/java/org/bukkit/event/Event.java b/src/main/java/org/bukkit/event/Event.java index 70a80073..0658e003 100644 --- a/src/main/java/org/bukkit/event/Event.java +++ b/src/main/java/org/bukkit/event/Event.java @@ -363,6 +363,18 @@ public abstract class Event implements Serializable { * @see org.bukkit.event.player.PlayerChangedWorldEvent */ PLAYER_CHANGED_WORLD(Category.PLAYER, PlayerChangedWorldEvent.class), + /** + * Called when a players level changes + * + * @see org.bukkit.event.player.PlayerLevelChangeEvent + */ + PLAYER_LEVEL_CHANGE(Category.PLAYER, PlayerLevelChangeEvent.class), + /** + * Called when a players experience changes naturally + * + * @see org.bukkit.event.player.PlayerExpChangeEvent + */ + PLAYER_EXP_CHANGE(Category.PLAYER, PlayerExpChangeEvent.class), /** * BLOCK EVENTS diff --git a/src/main/java/org/bukkit/event/player/PlayerExpChangeEvent.java b/src/main/java/org/bukkit/event/player/PlayerExpChangeEvent.java new file mode 100644 index 00000000..bd0610e8 --- /dev/null +++ b/src/main/java/org/bukkit/event/player/PlayerExpChangeEvent.java @@ -0,0 +1,43 @@ +package org.bukkit.event.player; + +import org.bukkit.entity.Player; +import org.bukkit.event.HandlerList; + +/** + * Called when a players experience changes naturally + */ +public class PlayerExpChangeEvent extends PlayerEvent { + private static final HandlerList handlers = new HandlerList(); + private int exp; + + public PlayerExpChangeEvent(Player player, int expAmount) { + super(Type.PLAYER_EXP_CHANGE, player); + exp = expAmount; + } + + /** + * Get the amount of experience the player will receive + * + * @return The amount of experience + */ + public int getAmount() { + return exp; + } + + /** + * Set the amount of experience the player will receive + * + * @param amount The amount of experience to set + */ + public void setAmount(int amount) { + exp = amount; + } + + public HandlerList getHandlers() { + return handlers; + } + + public static HandlerList getHandlerList() { + return handlers; + } +} diff --git a/src/main/java/org/bukkit/event/player/PlayerLevelChangeEvent.java b/src/main/java/org/bukkit/event/player/PlayerLevelChangeEvent.java new file mode 100644 index 00000000..dd2708c8 --- /dev/null +++ b/src/main/java/org/bukkit/event/player/PlayerLevelChangeEvent.java @@ -0,0 +1,45 @@ +package org.bukkit.event.player; + +import org.bukkit.entity.Player; +import org.bukkit.event.HandlerList; + +/** + * Called when a players level changes + */ +public class PlayerLevelChangeEvent extends PlayerEvent { + private static final HandlerList handlers = new HandlerList(); + private int oldLevel; + private int newLevel; + + public PlayerLevelChangeEvent(Player player, int oldLevel, int newLevel) { + super(Type.PLAYER_LEVEL_CHANGE, player); + this.oldLevel = oldLevel; + this.newLevel = newLevel; + } + + /** + * Gets the old level of the player + * + * @return The old level of the player + */ + public int getOldLevel() { + return oldLevel; + } + + /** + * Gets the new level of the player + * + * @return The new (current) level of the player + */ + public int getNewLevel() { + return newLevel; + } + + public HandlerList getHandlers() { + return handlers; + } + + public static HandlerList getHandlerList() { + return handlers; + } +} diff --git a/src/main/java/org/bukkit/event/player/PlayerListener.java b/src/main/java/org/bukkit/event/player/PlayerListener.java index 508c8d2f..cd461108 100644 --- a/src/main/java/org/bukkit/event/player/PlayerListener.java +++ b/src/main/java/org/bukkit/event/player/PlayerListener.java @@ -213,4 +213,18 @@ public class PlayerListener implements Listener { * @param event Relevant event details */ public void onPlayerChangedWorld(PlayerChangedWorldEvent event) {} + + /** + * Called when a players level changes + * + * @param event Relevant event details + */ + public void onPlayerLevelChange(PlayerLevelChangeEvent event) {} + + /** + * Called when a players experience changes naturally + * + * @param event Relevant event details + */ + public void onPlayerExpChange(PlayerExpChangeEvent event) {} } diff --git a/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java b/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java index cfa41c6c..874397e3 100644 --- a/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java +++ b/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java @@ -18,9 +18,6 @@ import org.bukkit.Server; import org.bukkit.configuration.serialization.ConfigurationSerializable; import org.bukkit.configuration.serialization.ConfigurationSerialization; -import org.bukkit.event.CustomEventListener; -import org.bukkit.event.Event; -import org.bukkit.event.Listener; import org.bukkit.event.*; import org.bukkit.event.block.*; import org.bukkit.event.painting.*; @@ -381,6 +378,13 @@ public class JavaPluginLoader implements PluginLoader { } }; + case PLAYER_LEVEL_CHANGE: + return new EventExecutor() { + public void execute(Listener listener, Event event) { + ((PlayerListener) listener).onPlayerLevelChange((PlayerLevelChangeEvent) event); + } + }; + case INVENTORY_OPEN: return new EventExecutor() { public void execute(Listener listener, Event event) { @@ -472,6 +476,13 @@ public class JavaPluginLoader implements PluginLoader { } }; + case PLAYER_EXP_CHANGE: + return new EventExecutor() { + public void execute(Listener listener, Event event) { + ((PlayerListener) listener).onPlayerExpChange((PlayerExpChangeEvent) event); + } + }; + // Block Events case BLOCK_PHYSICS: return new EventExecutor() { @@ -819,6 +830,13 @@ public class JavaPluginLoader implements PluginLoader { } }; + case ENTITY_SHOOT_BOW: + return new EventExecutor() { + public void execute(Listener listener, Event event) { + ((EntityListener) listener).onEntityShootBow((EntityShootBowEvent) event); + } + }; + case PROJECTILE_HIT: return new EventExecutor() { public void execute(Listener listener, Event event) { -- cgit v1.2.3