From 482151aa9ac59f4f5fadb1df5ed4f1823ed14412 Mon Sep 17 00:00:00 2001 From: Olof Larsson Date: Tue, 18 Jul 2017 10:01:34 +0200 Subject: [PATCH] Improve last fly active tracker --- .../engine/EngineMassiveCorePlayerUpdate.java | 21 ++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/src/com/massivecraft/massivecore/engine/EngineMassiveCorePlayerUpdate.java b/src/com/massivecraft/massivecore/engine/EngineMassiveCorePlayerUpdate.java index 7c70b1e8..a4cdf08d 100644 --- a/src/com/massivecraft/massivecore/engine/EngineMassiveCorePlayerUpdate.java +++ b/src/com/massivecraft/massivecore/engine/EngineMassiveCorePlayerUpdate.java @@ -88,19 +88,32 @@ public class EngineMassiveCorePlayerUpdate extends Engine } // -------------------------------------------- // - // FIX NO CHEAT PLUS BUG + // LAST FLY ACTIVE // -------------------------------------------- // public static Map idToLastFlyActive = new HashMap<>(); + public static Long getLastFlyActive(Player player) { return idToLastFlyActive.get(player.getUniqueId()); } + public static void setLastFlyActive(Player player, Long millis) { idToLastFlyActive.put(player.getUniqueId(), millis); } + public static boolean isFlyActiveRecently(Player player) + { + Long lastActive = getLastFlyActive(player); + if (lastActive == null) return false; + return (System.currentTimeMillis() - lastActive < 2000); + } + + // -------------------------------------------- // + // FIX NO CHEAT PLUS BUG + // -------------------------------------------- // + @EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true) public void fixNoCheatPlusBug(EntityDamageEvent event) { @@ -111,10 +124,8 @@ public class EngineMassiveCorePlayerUpdate extends Engine // ... is taking fall damage ... if (event.getCause() != DamageCause.FALL) return; - // ... within 2 seconds of flying ... - Long lastActive = getLastFlyActive(player); - if (lastActive == null) return; - if (System.currentTimeMillis() - lastActive > 2000) return; + // ... after recently flying ... + if (!isFlyActiveRecently(player)) return; // ... cancel the event. event.setCancelled(true);