From e0cee4cff980e27ae78089fe9e4271d3218670b9 Mon Sep 17 00:00:00 2001 From: LMBishop <13875753+LMBishop@users.noreply.github.com> Date: Sun, 12 Sep 2021 20:22:02 +0100 Subject: Add modes of transport (closes #269) --- .../bukkit/tasktype/type/WalkingTaskType.java | 28 ++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'bukkit') 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 0ba7bf74..20ec97f3 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,6 +9,8 @@ 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; import org.bukkit.event.EventPriority; @@ -64,6 +66,11 @@ public final class WalkingTaskType extends BukkitTaskType { continue; } + if (task.getConfigValue("mode") != null + && !validateTransportMethod(player, task.getConfigValue("mode").toString())) { + continue; + } + int distanceNeeded = (int) task.getConfigValue("distance"); int progressDistance; @@ -83,4 +90,25 @@ public final class WalkingTaskType extends BukkitTaskType { } } + private boolean validateTransportMethod(Player player, String mode) { + switch (mode.toLowerCase()) { + case "boat": + return player.getVehicle() != null && player.getVehicle().getType() == EntityType.BOAT; + case "horse": + return player.getVehicle() != null && player.getVehicle().getType() == EntityType.HORSE; + case "pig": + return player.getVehicle() != null && player.getVehicle().getType() == EntityType.PIG; + case "sneaking": + return player.isSneaking(); + case "walking": + return !player.isSprinting(); + case "running": + return player.isSprinting(); + case "swimming": + return player.isSwimming(); + default: + return false; + } + } + } -- cgit v1.2.3-70-g09d2