diff --git a/src/main/java/net/countercraft/movecraft/combat/features/FireballBehaviour.java b/src/main/java/net/countercraft/movecraft/combat/features/FireballBehaviour.java index 1081210..161700b 100644 --- a/src/main/java/net/countercraft/movecraft/combat/features/FireballBehaviour.java +++ b/src/main/java/net/countercraft/movecraft/combat/features/FireballBehaviour.java @@ -45,10 +45,19 @@ public void onProjectileLaunch(@NotNull ProjectileLaunchEvent e) { if (!(e.getEntity() instanceof SmallFireball fireball)) return; + fireball.setMetadata(METADATA_KEY, new FixedMetadataValue(MovecraftCombat.getInstance(), System.currentTimeMillis())); + queue.add(fireball); + new BukkitRunnable() { @Override public void run() { Vector fireballVector = fireball.getVelocity(); + try { + fireballVector.checkFinite(); + } + catch (IllegalArgumentException ignored) { + return; + } double speed = fireballVector.length() * FireballSpeed; fireballVector = fireballVector.normalize(); @@ -56,9 +65,6 @@ public void run() { fireball.setVelocity(fireballVector); } - }.runTaskTimer(MovecraftCombat.getInstance(), 1L, 1L); - - fireball.setMetadata(METADATA_KEY, new FixedMetadataValue(MovecraftCombat.getInstance(), System.currentTimeMillis())); - queue.add(fireball); + }.runTaskLater(MovecraftCombat.getInstance(), 1L); } -} \ No newline at end of file +}