Fixed water on top of player behaviour + Fixed behaviour in case of

cancelled move-events
This commit is contained in:
Evenprime 2011-08-20 15:51:55 +02:00
parent 6033ee47e5
commit d23f38ebd1
6 changed files with 15 additions and 24 deletions

View File

@ -3,7 +3,7 @@ name: NoCheat
author: Evenprime author: Evenprime
main: cc.co.evenprime.bukkit.nocheat.NoCheat main: cc.co.evenprime.bukkit.nocheat.NoCheat
version: 1.13a version: 1.13b
softdepend: [ Permissions, CraftIRC ] softdepend: [ Permissions, CraftIRC ]

View File

@ -98,6 +98,7 @@ public class MovingCheck extends Check {
if(data.setBackPoint == null) { if(data.setBackPoint == null) {
data.setBackPoint = from; data.setBackPoint = from;
data.jumpPhase = 0;
} }
if(flyCheck || runCheck) { if(flyCheck || runCheck) {
@ -135,7 +136,7 @@ public class MovingCheck extends Check {
data.jumpPhase++; data.jumpPhase++;
if(result <= 0) { if(result <= 0) {
if(toInGround && from.getY() >= to.getY() || helper.isLiquid(toType)) { if((toInGround && from.getY() >= to.getY()) || helper.isLiquid(toType)) {
data.setBackPoint = to.clone(); data.setBackPoint = to.clone();
data.setBackPoint.setY(Math.ceil(data.setBackPoint.getY())); data.setBackPoint.setY(Math.ceil(data.setBackPoint.getY()));
data.jumpPhase = 0; data.jumpPhase = 0;
@ -236,12 +237,9 @@ public class MovingCheck extends Check {
data.teleportInitializedByMe = null; data.teleportInitializedByMe = null;
} }
if(!event.isCancelled()) {
data.setBackPoint = null;
}
// reset anyway - if another plugin cancelled our teleport it's no use // reset anyway - if another plugin cancelled our teleport it's no use
// to try and be precise // to try and be precise
data.setBackPoint = null;
data.jumpPhase = 0; data.jumpPhase = 0;
} }
@ -306,7 +304,7 @@ public class MovingCheck extends Check {
double y = data.setBackPoint.getY(); double y = data.setBackPoint.getY();
// search for the first solid block up to 5 blocks below /*// search for the first solid block up to 5 blocks below
// the setbackpoint and teleport the player there // the setbackpoint and teleport the player there
int i = 0; int i = 0;
for(; i < 20; i++) { for(; i < 20; i++) {
@ -316,7 +314,7 @@ public class MovingCheck extends Check {
} }
y -= 0.5 * i; y -= 0.5 * i;
data.setBackPoint.setY(y); data.setBackPoint.setY(y);*/
// Remember the location we send the player to, to // Remember the location we send the player to, to
// identify teleports that were started by us // identify teleports that were started by us
@ -347,8 +345,8 @@ public class MovingCheck extends Check {
private static int limitCheck(final double value) { private static int limitCheck(final double value) {
if(value > 0.0D) { if(value > 0.0D) {
if(value > 0.5D) { if(value > 1.0D) {
if(value > 2.0D) if(value > 4.0D)
return 2; return 2;
return 1; return 1;
} }

View File

@ -122,15 +122,16 @@ public class MovingEventHelper {
private final int canStand(World world, int x, int y, int z) { private final int canStand(World world, int x, int y, int z) {
int standingIn = types[world.getBlockTypeIdAt(x, y, z)]; int standingIn = types[world.getBlockTypeIdAt(x, y, z)];
int headIn = types[world.getBlockTypeIdAt(x, y + 1, z)];
int result = 0; int result = 0;
// It's either liquid, or something else // It's either liquid, or something else
if(isLiquid(standingIn)) { if(isLiquid(standingIn) || isLiquid(headIn)) {
return LIQUID; return LIQUID;
} }
int headIn = types[world.getBlockTypeIdAt(x, y + 1, z)];
int standingOn = types[world.getBlockTypeIdAt(x, y - 1, z)]; int standingOn = types[world.getBlockTypeIdAt(x, y - 1, z)];
// Player standing with his feet in a (half) block? // Player standing with his feet in a (half) block?

View File

@ -50,6 +50,7 @@ public class MovingPlayerListener extends PlayerListener {
// Did the checks decide we need a new To-Location? // Did the checks decide we need a new To-Location?
if(newTo != null) { if(newTo != null) {
event.setTo(new Location(newTo.getWorld(), newTo.getX(), newTo.getY(), newTo.getZ(), event.getTo().getYaw(), event.getTo().getPitch())); event.setTo(new Location(newTo.getWorld(), newTo.getX(), newTo.getY(), newTo.getZ(), event.getTo().getYaw(), event.getTo().getPitch()));
data.setBackPoint = null;
} }
} }
} }

View File

@ -30,7 +30,6 @@ public class MovingPlayerMonitor extends PlayerListener {
public void onPlayerRespawn(PlayerRespawnEvent event) { public void onPlayerRespawn(PlayerRespawnEvent event) {
MovingData data = dataManager.getMovingData(event.getPlayer()); MovingData data = dataManager.getMovingData(event.getPlayer());
data.setBackPoint = null; data.setBackPoint = null;
data.jumpPhase = 0;
} }
@Override @Override
@ -50,11 +49,7 @@ public class MovingPlayerMonitor extends PlayerListener {
@Override @Override
public void onPlayerMove(PlayerMoveEvent event) { public void onPlayerMove(PlayerMoveEvent event) {
if(event.isCancelled() || event.getPlayer().isInsideVehicle()) {
if(event.isCancelled())
return;
if(event.getPlayer().isInsideVehicle()) {
MovingData data = dataManager.getMovingData(event.getPlayer()); MovingData data = dataManager.getMovingData(event.getPlayer());
data.setBackPoint = null; data.setBackPoint = null;
} }

View File

@ -30,10 +30,6 @@ public class SpeedhackPlayerListener extends PlayerListener {
@Override @Override
public void onPlayerTeleport(PlayerTeleportEvent event) { public void onPlayerTeleport(PlayerTeleportEvent event) {
if(event.isCancelled())
return;
check.teleported(event); check.teleported(event);
} }
} }