aboutsummaryrefslogtreecommitdiffstats
path: root/bukkit
diff options
context:
space:
mode:
authorKrakenied <Krakenied1@gmail.com>2023-03-24 15:53:06 +0100
committerLeonardo Bishop <13875753+LMBishop@users.noreply.github.com>2023-04-02 12:20:10 +0100
commita37bb726e6e26b98f6a2326476d79d111279551b (patch)
tree199878c59e034a931748ce3b435107d8125b88cc /bukkit
parent34a84d74cb32ae9ec1f0a3e6c14a198d077844a3 (diff)
Handle vehicles movement separately
Closes https://github.com/LMBishop/Quests/issues/464
Diffstat (limited to 'bukkit')
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/WalkingTaskType.java30
1 files changed, 28 insertions, 2 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 3bcc5f56..19435815 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
@@ -8,14 +8,17 @@ 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.Boat;
+import org.bukkit.entity.Entity;
import org.bukkit.entity.Minecart;
import org.bukkit.entity.Pig;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.player.PlayerMoveEvent;
+import org.bukkit.event.vehicle.VehicleMoveEvent;
import java.util.Arrays;
+import java.util.List;
public final class WalkingTaskType extends BukkitTaskType {
@@ -48,9 +51,32 @@ public final class WalkingTaskType extends BukkitTaskType {
return;
}
- if (event.getPlayer().hasMetadata("NPC")) return;
-
Player player = event.getPlayer();
+ if (player.isInsideVehicle()) {
+ return;
+ }
+
+ handle(player);
+ }
+
+ @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
+ public void onVehicleMove(VehicleMoveEvent event) {
+ if (event.getFrom().getBlockX() == event.getTo().getBlockX() && event.getFrom().getBlockZ() == event.getTo().getBlockZ()) {
+ return;
+ }
+
+ List<Entity> entities = event.getVehicle().getPassengers();
+ for (Entity entity : entities) {
+ if (entity instanceof Player player) {
+ handle(player);
+ }
+ }
+ }
+
+ private void handle(Player player) {
+ if (player.hasMetadata("NPC")) {
+ return;
+ }
QPlayer qPlayer = plugin.getPlayerManager().getPlayer(player.getUniqueId());
if (qPlayer == null) {