Archiviert
13
0

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. * Enables monitoring of PLAYER_MOVE events.
*/ */
public void b(double x, double y, double z, float rotation, float pitch) { 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); Location newLocation = new Location(server.getWorld(b.e),x,y,z);
PlayerMoveEvent pm = new PlayerMoveEvent(Event.Type.PLAYER_MOVE, server.getPlayer(this),
oldLocation, newLocation); // Only send an event if player position has changed.
if (x != oldLocation.getX() || y != oldLocation.getY() || z != oldLocation.getZ()) {
server.getPluginManager().callEvent(pm); 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; oldLocation = newLocation;
super.b(newLocation.getX(),newLocation.getY(),newLocation.getZ(),rotation, pitch);
} }
public void k() { public void k() {