Updated PLAYER_MOVE hook to deal correctly with a cancelled event.

Dieser Commit ist enthalten in:
VictorD 2010-12-29 01:19:19 +01:00
Ursprung 5402eb5c86
Commit 5faa476554

Datei anzeigen

@ -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() {