summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorErik Broes <erikbroes@ripe.net>2011-02-25 22:40:06 +0100
committerErik Broes <erikbroes@ripe.net>2011-02-25 22:44:26 +0100
commit88dea6189a13a728e087c3b538de446a6b0291a3 (patch)
tree95910b5d6753234793ba9411ab204d7526c98fde /src
parent78af4f97f9a7125fcc914f52f83c93023359b281 (diff)
downloadcraftbukkit-88dea6189a13a728e087c3b538de446a6b0291a3.tar
craftbukkit-88dea6189a13a728e087c3b538de446a6b0291a3.tar.gz
craftbukkit-88dea6189a13a728e087c3b538de446a6b0291a3.tar.lz
craftbukkit-88dea6189a13a728e087c3b538de446a6b0291a3.tar.xz
craftbukkit-88dea6189a13a728e087c3b538de446a6b0291a3.zip
Prevent movement event to be spammed for moving less than a pixel.
Diffstat (limited to 'src')
-rw-r--r--src/main/java/net/minecraft/server/NetServerHandler.java13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/main/java/net/minecraft/server/NetServerHandler.java b/src/main/java/net/minecraft/server/NetServerHandler.java
index 4394cc38..ba372103 100644
--- a/src/main/java/net/minecraft/server/NetServerHandler.java
+++ b/src/main/java/net/minecraft/server/NetServerHandler.java
@@ -56,6 +56,10 @@ public class NetServerHandler extends NetHandler implements ICommandListener {
private int lastY;
private int lastZ;
+ private double lastPosX = Double.MIN_VALUE;
+ private double lastPosY = Double.MIN_VALUE;
+ private double lastPosZ = Double.MIN_VALUE;
+
// Store the last block right clicked and what type it was
private CraftBlock lastRightClicked;
private BlockFace lastRightClickedFace;
@@ -111,7 +115,10 @@ public class NetServerHandler extends NetHandler implements ICommandListener {
Player player = getPlayer();
Location from = new Location(player.getWorld(), i, j, k, this.e.yaw, this.e.pitch);
Location to = player.getLocation();
- if (!from.equals(to)) {
+
+ // Prevent 40 event-calls for less than a single pixel of movement >.>
+ double delta = Math.pow( this.lastPosX - this.i, 2) + Math.pow( this.lastPosY - this.j, 2) + Math.pow( this.lastPosZ - this.k, 2);
+ if (delta > 1f/256) {
PlayerMoveEvent event = new PlayerMoveEvent(Type.PLAYER_MOVE, player, from, to);
server.getPluginManager().callEvent(event);
@@ -123,6 +130,10 @@ public class NetServerHandler extends NetHandler implements ICommandListener {
this.e.locZ = to.getZ();
this.e.yaw = to.getYaw();
this.e.pitch = to.getPitch();
+
+ this.lastPosX = this.e.locX;
+ this.lastPosY = this.e.locY;
+ this.lastPosZ = this.e.locZ;
}
// CraftBukkit end