@Override public boolean onDamageOther(EntityDamageByEntityEvent e, Player p, int level) { if (e.getEntity() instanceof LivingEntity) { LivingEntity le = (LivingEntity) e.getEntity(); try { fireworks.playFirework( le.getWorld(), le.getLocation(), FireworkEffect.builder().with(Type.BURST).withColor(Color.WHITE).build()); } catch (Exception ex) { Logger.getLogger(Burst.class.getName()).log(Level.SEVERE, null, ex); } Vector unitVector = le.getLocation().toVector().subtract(e.getDamager().getLocation().toVector()).normalize(); unitVector.setY(0.55 / level); le.setVelocity(unitVector.multiply(level * 2)); e.setCancelled(true); return true; } return false; }
@Override public void run() { timesRan++; Location lFx = l; lFx.add(0, 2 * timesRan, 0); if (timesRan == 0) { } else if (timesRan == 5) { try { fireworks.playFirework( lFx.getWorld(), lFx, FireworkEffect.builder() .with(FireworkEffect.Type.CREEPER) .withColor(Color.GREEN) .build()); } catch (Exception ex) { // Gracefully downgrade } plugin.bossManager.hatchBossAtLocation(l); this.cancel(); return; } try { fireworks.playFirework( lFx.getWorld(), lFx, FireworkEffect.builder().with(FireworkEffect.Type.BALL).withColor(Color.PURPLE).build()); } catch (Exception ex) { // Gracefully downgrade } }