From 3e344be9249dfb8d3cc70634fcafd3af497d27d2 Mon Sep 17 00:00:00 2001 From: Evenprime Date: Fri, 16 Sep 2011 16:05:42 +0200 Subject: [PATCH] Players that are in creative mode are always allowed to fly with default "creative-mode-speed". --- .../bukkit/nocheat/checks/moving/FlyingCheck.java | 10 ++++++++-- .../bukkit/nocheat/checks/moving/MovingCheck.java | 3 ++- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/cc/co/evenprime/bukkit/nocheat/checks/moving/FlyingCheck.java b/src/cc/co/evenprime/bukkit/nocheat/checks/moving/FlyingCheck.java index 17bfdb31..d76d2f8b 100644 --- a/src/cc/co/evenprime/bukkit/nocheat/checks/moving/FlyingCheck.java +++ b/src/cc/co/evenprime/bukkit/nocheat/checks/moving/FlyingCheck.java @@ -3,6 +3,7 @@ package cc.co.evenprime.bukkit.nocheat.checks.moving; import java.util.HashMap; import java.util.Locale; +import org.bukkit.GameMode; import org.bukkit.Location; import org.bukkit.entity.Player; @@ -24,6 +25,8 @@ import cc.co.evenprime.bukkit.nocheat.data.MovingData; public class FlyingCheck { private final ActionExecutor action; + + private static final double creativeSpeed = 0.60D; public FlyingCheck(NoCheat plugin) { this.action = new ActionExecutorWithHistory(plugin); @@ -44,11 +47,14 @@ public class FlyingCheck { double result = 0; Location newToLocation = null; + + // In case of creative gamemode, give at least 0.60 speed limit horizontal + final double speedLimitHorizontal = player.getGameMode() == GameMode.CREATIVE ? Math.max(creativeSpeed, cc.moving.flyingSpeedLimitHorizontal) : cc.moving.flyingSpeedLimitHorizontal; // super simple, just check distance compared to max distance result += Math.max(0.0D, yDistance - data.vertFreedom - cc.moving.flyingSpeedLimitVertical); - result += Math.max(0.0D, horizontalDistance - data.horizFreedom - cc.moving.flyingSpeedLimitHorizontal); - + result += Math.max(0.0D, horizontalDistance - data.horizFreedom - speedLimitHorizontal); + result = result * 100; if(result > 0) { diff --git a/src/cc/co/evenprime/bukkit/nocheat/checks/moving/MovingCheck.java b/src/cc/co/evenprime/bukkit/nocheat/checks/moving/MovingCheck.java index 3af2af3d..00ca9dd5 100644 --- a/src/cc/co/evenprime/bukkit/nocheat/checks/moving/MovingCheck.java +++ b/src/cc/co/evenprime/bukkit/nocheat/checks/moving/MovingCheck.java @@ -1,5 +1,6 @@ package cc.co.evenprime.bukkit.nocheat.checks.moving; +import org.bukkit.GameMode; import org.bukkit.Location; import org.bukkit.block.Block; import org.bukkit.entity.Player; @@ -69,7 +70,7 @@ public class MovingCheck { /************* DECIDE WHICH CHECKS NEED TO BE RUN *************/ final boolean flyCheck = cc.moving.flyingCheck && !player.hasPermission(Permissions.MOVE_FLY); - final boolean runCheck = cc.moving.runningCheck && !player.hasPermission(Permissions.MOVE_RUN); + final boolean runCheck = cc.moving.runningCheck && !player.hasPermission(Permissions.MOVE_RUN) && player.getGameMode() != GameMode.CREATIVE; final boolean morepacketsCheck = cc.moving.morePacketsCheck && !player.hasPermission(Permissions.MOVE_MOREPACKETS); final boolean noclipCheck = cc.moving.noclipCheck && !player.hasPermission(Permissions.MOVE_NOCLIP);