aboutsummaryrefslogtreecommitdiffstats
path: root/bukkit
diff options
context:
space:
mode:
authorLMBishop <13875753+LMBishop@users.noreply.github.com>2021-09-12 20:22:02 +0100
committerLMBishop <13875753+LMBishop@users.noreply.github.com>2021-09-12 20:22:02 +0100
commite0cee4cff980e27ae78089fe9e4271d3218670b9 (patch)
treeaab4a90a199c00ef2cf3ad04afc533258b59dbb2 /bukkit
parentdf222745d02e26a0605fcf6191a0d16001d15c69 (diff)
Add modes of transport (closes #269)
Diffstat (limited to 'bukkit')
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/WalkingTaskType.java28
1 files changed, 28 insertions, 0 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 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;
+ }
+ }
+
}