diff options
| author | Krakenied <Krakenied1@gmail.com> | 2022-04-18 05:21:14 +0200 |
|---|---|---|
| committer | Krakenied <Krakenied1@gmail.com> | 2022-04-18 05:21:14 +0200 |
| commit | e1b86ec1b0ce425d08cea79ec63944c49f1223c5 (patch) | |
| tree | b1d53278520d00f7eec53eb555a65580f5f139ad /bukkit/src/main | |
| parent | 1172009251e89bc8728338a864c998ce42bc5207 (diff) | |
Fix transport method validation
Fixes https://github.com/LMBishop/Quests/issues/358 and many other possible issues that fortunately didn't happen
Diffstat (limited to 'bukkit/src/main')
| -rw-r--r-- | bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/WalkingTaskType.java | 24 |
1 files changed, 14 insertions, 10 deletions
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; } |
