summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorVictorD <victor.danell@gmail.com>2010-12-29 01:19:19 +0100
committerVictorD <victor.danell@gmail.com>2010-12-29 01:19:19 +0100
commit5faa4765549f6f2c5b70e91f10da75bf793aed77 (patch)
tree75637c88a00bff2ecace29eee9048376b9bc93c3 /src
parent5402eb5c8658a60b497d4cd90f5234e1a6697248 (diff)
downloadcraftbukkit-5faa4765549f6f2c5b70e91f10da75bf793aed77.tar
craftbukkit-5faa4765549f6f2c5b70e91f10da75bf793aed77.tar.gz
craftbukkit-5faa4765549f6f2c5b70e91f10da75bf793aed77.tar.lz
craftbukkit-5faa4765549f6f2c5b70e91f10da75bf793aed77.tar.xz
craftbukkit-5faa4765549f6f2c5b70e91f10da75bf793aed77.zip
Updated PLAYER_MOVE hook to deal correctly with a cancelled event.
Diffstat (limited to 'src')
-rw-r--r--src/net/minecraft/server/EntityPlayerMP.java23
1 files changed, 12 insertions, 11 deletions
diff --git a/src/net/minecraft/server/EntityPlayerMP.java b/src/net/minecraft/server/EntityPlayerMP.java
index af81a0c5..86dd1eaf 100644
--- a/src/net/minecraft/server/EntityPlayerMP.java
+++ b/src/net/minecraft/server/EntityPlayerMP.java
@@ -62,23 +62,24 @@ public class EntityPlayerMP extends EntityPlayer
}
/**
- * Craftbukkit: Overloaded version of b(double,double,double,float)
+ * Craftbukkit: Overloaded version of b(double,double,double,float, float)
*
* Enables monitoring of PLAYER_MOVE events.
*/
public void b(double x, double y, double z, float rotation, float pitch) {
- super.b(x,y,z,pitch,rotation);
-
- // Only send an event if player position has changed.
- if (x == oldLocation.getX() && y == oldLocation.getY() && z == oldLocation.getZ())
- return;
-
Location newLocation = new Location(server.getWorld(b.e),x,y,z);
- PlayerMoveEvent pm = new PlayerMoveEvent(Event.Type.PLAYER_MOVE, server.getPlayer(this),
- oldLocation, newLocation);
-
- server.getPluginManager().callEvent(pm);
+
+ // Only send an event if player position has changed.
+ if (x != oldLocation.getX() || y != oldLocation.getY() || z != oldLocation.getZ()) {
+ PlayerMoveEvent pm = new PlayerMoveEvent(Event.Type.PLAYER_MOVE, server.getPlayer(this),
+ oldLocation, newLocation);
+
+ server.getPluginManager().callEvent(pm);
+ if (pm.isCancelled())
+ newLocation = pm.getFrom();
+ }
oldLocation = newLocation;
+ super.b(newLocation.getX(),newLocation.getY(),newLocation.getZ(),rotation, pitch);
}
public void k() {