From e1b86ec1b0ce425d08cea79ec63944c49f1223c5 Mon Sep 17 00:00:00 2001 From: Krakenied Date: Mon, 18 Apr 2022 05:21:14 +0200 Subject: Fix transport method validation Fixes https://github.com/LMBishop/Quests/issues/358 and many other possible issues that fortunately didn't happen --- .../bukkit/tasktype/type/WalkingTaskType.java | 24 +++++++++++++--------- 1 file changed, 14 insertions(+), 10 deletions(-) (limited to 'bukkit/src/main') diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/WalkingTaskType.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/WalkingTaskType.java index f2188cee..8d227dfa 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/WalkingTaskType.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/WalkingTaskType.java @@ -9,7 +9,6 @@ import com.leonardobishop.quests.common.player.questprogressfile.QuestProgress; import com.leonardobishop.quests.common.player.questprogressfile.TaskProgress; import com.leonardobishop.quests.common.quest.Quest; import com.leonardobishop.quests.common.quest.Task; -import org.bukkit.entity.Entity; import org.bukkit.entity.EntityType; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; @@ -100,18 +99,23 @@ public final class WalkingTaskType extends BukkitTaskType { return player.getVehicle() != null && player.getVehicle().getType() == EntityType.PIG; case "minecart": return player.getVehicle() != null && player.getVehicle().getType() == EntityType.MINECART; - case "sneaking": - return player.isSneaking(); + case "strider": + return plugin.getVersionSpecificHandler().isPlayerOnStrider(player); + case "sneaking": // sprinting does not matter + return player.isSneaking() && !player.isSwimming() && !player.isFlying() + && !plugin.getVersionSpecificHandler().isPlayerGliding(player); case "walking": - return !player.isSprinting(); + return !player.isSneaking() && !player.isSwimming() && !player.isSprinting() && !player.isFlying() + && !plugin.getVersionSpecificHandler().isPlayerGliding(player); case "running": - return player.isSprinting(); - case "swimming": - return player.isSwimming(); - case "elytra": + return !player.isSneaking() && !player.isSwimming() && player.isSprinting() && !player.isFlying() + && !plugin.getVersionSpecificHandler().isPlayerGliding(player); + case "swimming": // sprinting and sneaking do not matter, flying is not possible + return player.isSwimming() && !plugin.getVersionSpecificHandler().isPlayerGliding(player); + case "flying": // if the player is flying then the player is flying + return player.isFlying(); + case "elytra": // if the player is gliding then the player is gliding return plugin.getVersionSpecificHandler().isPlayerGliding(player); - case "strider": - return plugin.getVersionSpecificHandler().isPlayerOnStrider(player); default: return false; } -- cgit v1.2.3-70-g09d2