From 1c649112ae4080a408c68269f7306d17427d9209 Mon Sep 17 00:00:00 2001 From: NeatMonster Date: Mon, 9 Apr 2012 10:56:24 +0200 Subject: [PATCH] = Fixed an issue with the ladders/vines and the falling check = Fixed an NPE when the block in the event is null --- pom.xml | 2 +- .../checks/blockbreak/BlockBreakCheckListener.java | 4 ++++ .../checks/moving/MovingCheckListener.java | 11 +++++++---- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/pom.xml b/pom.xml index 02bc7326..33a685f9 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ NoCheatPlus - 3.5.4 + 3.5.4_1 Detect and fight the exploitation of various flaws/bugs in Minecraft. http://dev.bukkit.org/server-mods/nocheatplus diff --git a/src/me/neatmonster/nocheatplus/checks/blockbreak/BlockBreakCheckListener.java b/src/me/neatmonster/nocheatplus/checks/blockbreak/BlockBreakCheckListener.java index 5397b114..82be1ae7 100644 --- a/src/me/neatmonster/nocheatplus/checks/blockbreak/BlockBreakCheckListener.java +++ b/src/me/neatmonster/nocheatplus/checks/blockbreak/BlockBreakCheckListener.java @@ -141,6 +141,10 @@ public class BlockBreakCheckListener implements Listener, EventManager { ignoreCancelled = true, priority = EventPriority.MONITOR) public void blockInteract(final PlayerInteractEvent event) { + // Do not care about null blocks + if (event.getClickedBlock() == null) + return; + final NoCheatPlusPlayer player = plugin.getPlayer(event.getPlayer()); final BlockBreakData data = BlockBreakCheck.getData(player); // Remember this location. Only blockbreakevents for this specific diff --git a/src/me/neatmonster/nocheatplus/checks/moving/MovingCheckListener.java b/src/me/neatmonster/nocheatplus/checks/moving/MovingCheckListener.java index 42b10137..96b81eb3 100644 --- a/src/me/neatmonster/nocheatplus/checks/moving/MovingCheckListener.java +++ b/src/me/neatmonster/nocheatplus/checks/moving/MovingCheckListener.java @@ -73,14 +73,18 @@ public class MovingCheckListener implements Listener, EventManager { // Do not do the check if it's disabled, if flying is allowed, if the player is // allowed to fly because of its game mode or if he has the required permission. if (!cc.tracker || cc.allowFlying || bukkitPlayer.getGameMode() == GameMode.CREATIVE - || bukkitPlayer.getAllowFlight() || bukkitPlayer.hasPermission(Permissions.MOVING_RUNFLY)) + || bukkitPlayer.getAllowFlight() || bukkitPlayer.hasPermission(Permissions.MOVING_RUNFLY)) { + data.fallingSince = 0; return; + } // If the player is in water or in vines, then do not run the check if (bukkitPlayer.getLocation().getBlock().getType() == Material.WATER || bukkitPlayer.getLocation().getBlock().getType() == Material.STATIONARY_WATER - || bukkitPlayer.getLocation().getBlock().getType() == Material.VINE) + || bukkitPlayer.getLocation().getBlock().getType() == Material.VINE) { + data.fallingSince = 0; return; + } // If the player isn't falling or jumping if (Math.abs(bukkitPlayer.getVelocity().getY()) > 0.1D) { @@ -95,8 +99,7 @@ public class MovingCheckListener implements Listener, EventManager { bukkitPlayer.kickPlayer("Flying isn't enabled on this server!"); data.fallingSince = 0; } - } else // The player isn't falling/jumping, check if he was previous on the air - if (data.fallingSince > 0) + } else // Reset the timer data.fallingSince = 0; }