From 069f7a2cb96273104f84598f7f74a3bb2d5f43b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9E=81=E5=A4=9C=E6=9A=97=E8=8A=92=E4=BD=BF?= Date: Mon, 10 Oct 2016 20:33:59 +0800 Subject: [PATCH] Add Player::setCheckMovement(boolean) --- server/pom.xml | 6 ------ server/src/main/java/cn/nukkit/Player.java | 17 ++++++++++++----- .../event/player/PlayerInvalidMoveEvent.java | 6 +++++- 3 files changed, 17 insertions(+), 12 deletions(-) diff --git a/server/pom.xml b/server/pom.xml index bb3f22317..0f14a7c19 100644 --- a/server/pom.xml +++ b/server/pom.xml @@ -44,12 +44,6 @@ leveldb 0.8 - - junit - junit - 4.12 - test - io.netty netty-all diff --git a/server/src/main/java/cn/nukkit/Player.java b/server/src/main/java/cn/nukkit/Player.java index 41bcd3b32..23472f371 100644 --- a/server/src/main/java/cn/nukkit/Player.java +++ b/server/src/main/java/cn/nukkit/Player.java @@ -69,6 +69,7 @@ import cn.nukkit.utils.Binary; import cn.nukkit.utils.TextFormat; import cn.nukkit.utils.Zlib; + import java.io.IOException; import java.nio.ByteOrder; import java.util.*; @@ -179,6 +180,8 @@ public class Player extends EntityHuman implements CommandSender, InventoryHolde protected AdventureSettings adventureSettings; + protected boolean checkMovement = true; + private final Map needACK = new HashMap<>(); private Map> batchedPackets = new TreeMap<>(); @@ -1246,7 +1249,7 @@ protected void processMovement(int tickDiff) { double diff = (diffX * diffX + diffY * diffY + diffZ * diffZ) / ((double) (tickDiff * tickDiff)); - if (!server.getAllowFlight() && this.isSurvival()) { + if (this.checkMovement && !server.getAllowFlight() && this.isSurvival()) { if (!this.isSleeping()) { if (diff > 0.125) { PlayerInvalidMoveEvent ev; @@ -1280,7 +1283,7 @@ protected void processMovement(int tickDiff) { this.level); Location to = this.getLocation(); - if (!revert && (Math.pow(this.lastX - to.x, 2) + Math.pow(this.lastY - to.y, 2) + Math.pow(this.lastZ - to.z, 2)) > (1/16) || (Math.abs(this.lastYaw - to.yaw) + Math.abs(this.lastPitch - to.pitch)) > 10) { + if (!revert && (Math.pow(this.lastX - to.x, 2) + Math.pow(this.lastY - to.y, 2) + Math.pow(this.lastZ - to.z, 2)) > (1d / 16d) || (Math.abs(this.lastYaw - to.yaw) + Math.abs(this.lastPitch - to.pitch)) > 10) { boolean isFirst = this.firstMove; this.firstMove = false; @@ -1570,13 +1573,13 @@ protected void processLogin() { this.playedBefore = (nbt.getLong("lastPlayed") - nbt.getLong("firstPlayed")) > 1; boolean alive = true; - + nbt.putString("NameTag", this.username); if (0 >= nbt.getShort("Health")) { - alive = false; + alive = false; } - + int exp = nbt.getInt("EXP"); int expLevel = nbt.getInt("expLevel"); this.setExperience(exp, expLevel); @@ -4041,6 +4044,10 @@ public void setDimension() { this.dataPacket(pk); } + public void setCheckMovement(boolean checkMovement) { + this.checkMovement = checkMovement; + } + public synchronized void setLocale(Locale locale) { this.locale.set(locale); } diff --git a/server/src/main/java/cn/nukkit/event/player/PlayerInvalidMoveEvent.java b/server/src/main/java/cn/nukkit/event/player/PlayerInvalidMoveEvent.java index 36b19fbec..2d17cde8b 100644 --- a/server/src/main/java/cn/nukkit/event/player/PlayerInvalidMoveEvent.java +++ b/server/src/main/java/cn/nukkit/event/player/PlayerInvalidMoveEvent.java @@ -8,8 +8,8 @@ * call when a player moves wrongly * * @author WilliamGao - * @version 0.1 (23/11/2015) */ + public class PlayerInvalidMoveEvent extends PlayerEvent implements Cancellable { private static final HandlerList handlers = new HandlerList(); @@ -29,6 +29,10 @@ public boolean isRevert() { return this.revert; } + /** + * @deprecated If you just simply want to disable the movement check, please use {@link Player#setCheckMovement(boolean)} instead. + */ + @Deprecated public void setRevert(boolean revert) { this.revert = revert; }