diff options
| author | Krakenied <Krakenied1@gmail.com> | 2023-03-24 15:53:06 +0100 |
|---|---|---|
| committer | Leonardo Bishop <13875753+LMBishop@users.noreply.github.com> | 2023-04-02 12:20:10 +0100 |
| commit | a37bb726e6e26b98f6a2326476d79d111279551b (patch) | |
| tree | 199878c59e034a931748ce3b435107d8125b88cc | |
| parent | 34a84d74cb32ae9ec1f0a3e6c14a198d077844a3 (diff) | |
Handle vehicles movement separately
Closes https://github.com/LMBishop/Quests/issues/464
| -rw-r--r-- | bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/WalkingTaskType.java | 30 |
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) { |
