summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNathan Adams <dinnerbone@dinnerbone.com>2012-01-19 16:06:27 +0000
committerNathan Adams <dinnerbone@dinnerbone.com>2012-01-19 16:07:18 +0000
commitb0f29b1755d5fcc97be5b508ed5c467a0f4f845b (patch)
tree68dc26a49beda0928bee6fac79a7535eec5754bf
parent1f1c9c0d4b074fff3e21826a655b1b77adedf351 (diff)
downloadcraftbukkit-b0f29b1755d5fcc97be5b508ed5c467a0f4f845b.tar
craftbukkit-b0f29b1755d5fcc97be5b508ed5c467a0f4f845b.tar.gz
craftbukkit-b0f29b1755d5fcc97be5b508ed5c467a0f4f845b.tar.lz
craftbukkit-b0f29b1755d5fcc97be5b508ed5c467a0f4f845b.tar.xz
craftbukkit-b0f29b1755d5fcc97be5b508ed5c467a0f4f845b.zip
Throw PlayerLevelChangeEvent and PlayerExpChangeEvent events. Thanks to feildmaster for the PR.
-rw-r--r--src/main/java/net/minecraft/server/EntityExperienceOrb.java4
-rw-r--r--src/main/java/net/minecraft/server/EntityHuman.java1
-rw-r--r--src/main/java/net/minecraft/server/EntityPlayer.java11
-rw-r--r--src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java13
4 files changed, 28 insertions, 1 deletions
diff --git a/src/main/java/net/minecraft/server/EntityExperienceOrb.java b/src/main/java/net/minecraft/server/EntityExperienceOrb.java
index 8a7476b0..26e2204b 100644
--- a/src/main/java/net/minecraft/server/EntityExperienceOrb.java
+++ b/src/main/java/net/minecraft/server/EntityExperienceOrb.java
@@ -1,5 +1,7 @@
package net.minecraft.server;
+import org.bukkit.craftbukkit.event.CraftEventFactory; // CraftBukkit
+
public class EntityExperienceOrb extends Entity {
public int a;
@@ -130,7 +132,7 @@ public class EntityExperienceOrb extends Entity {
entityhuman.x = 2;
this.world.makeSound(this, "random.orb", 0.1F, 0.5F * ((this.random.nextFloat() - this.random.nextFloat()) * 0.7F + 1.8F));
entityhuman.receive(this, 1);
- entityhuman.giveExp(this.value);
+ entityhuman.giveExp(CraftEventFactory.callPlayerExpChangeEvent(entityhuman, this.value).getAmount()); // CraftBukkit - this.value to event.getAmount()
this.die();
}
}
diff --git a/src/main/java/net/minecraft/server/EntityHuman.java b/src/main/java/net/minecraft/server/EntityHuman.java
index d7156aeb..69f6e621 100644
--- a/src/main/java/net/minecraft/server/EntityHuman.java
+++ b/src/main/java/net/minecraft/server/EntityHuman.java
@@ -57,6 +57,7 @@ public abstract class EntityHuman extends EntityLiving {
protected boolean J = false;
public float K;
public PlayerAbilities abilities = new PlayerAbilities();
+ public int oldLevel = -1; // CraftBukkit
public int expLevel;
public int expTotal;
public float exp;
diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java
index dd0e90a4..a3a13f2d 100644
--- a/src/main/java/net/minecraft/server/EntityPlayer.java
+++ b/src/main/java/net/minecraft/server/EntityPlayer.java
@@ -319,6 +319,17 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
this.lastSentExp = this.expTotal;
this.netServerHandler.sendPacket(new Packet43SetExperience(this.exp, this.expTotal, this.expLevel));
}
+
+ // CraftBukkit start
+ if (this.oldLevel == -1) {
+ this.oldLevel = this.expLevel;
+ }
+
+ if (this.oldLevel != this.expLevel) {
+ CraftEventFactory.callPlayerLevelChangeEvent(this.world.getServer().getPlayer((EntityPlayer) this), this.oldLevel, this.expLevel);
+ this.oldLevel = this.expLevel;
+ }
+ // CraftBukkit end
}
public void e(int i) {
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
index 955d1a90..d37ce1ad 100644
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
@@ -391,4 +391,17 @@ public class CraftEventFactory {
return event;
}
+
+ public static PlayerLevelChangeEvent callPlayerLevelChangeEvent(Player player, int oldLevel, int newLevel) {
+ PlayerLevelChangeEvent event = new PlayerLevelChangeEvent(player, oldLevel, newLevel);
+ Bukkit.getPluginManager().callEvent(event);
+ return event;
+ }
+
+ public static PlayerExpChangeEvent callPlayerExpChangeEvent(EntityHuman entity, int expAmount) {
+ Player player = (Player) entity.getBukkitEntity();
+ PlayerExpChangeEvent event = new PlayerExpChangeEvent(player, expAmount);
+ Bukkit.getPluginManager().callEvent(event);
+ return event;
+ }
}