@EventHandler(priority = EventPriority.LOW, ignoreCancelled=true) public void onLingeringPotionSplash(final LingeringPotionSplashEvent e) { if (DEBUG) { plugin.getLogger().info("1.9 " + e.getEventName()); plugin.getLogger().info("1.9 entity = " + e.getEntity()); plugin.getLogger().info("1.9 entity type = " + e.getEntityType()); plugin.getLogger().info("1.9 radius = " + e.getAreaEffectCloud().getRadius()); plugin.getLogger().info("1.9 id = " + e.getAreaEffectCloud().getEntityId()); plugin.getLogger().info("1.9 hit entity = " + e.getHitEntity()); } if (!Util.inWorld(e.getEntity().getLocation())) { return; } // Try to get the shooter Projectile projectile = e.getEntity(); plugin.getLogger().info("shooter = " + projectile.getShooter()); if (projectile.getShooter() != null && projectile.getShooter() instanceof Player) { UUID uuid = ((Player)projectile.getShooter()).getUniqueId(); // Store it and remove it when the effect is gone thrownPotions.put(e.getAreaEffectCloud().getEntityId(), uuid); plugin.getServer().getScheduler().runTaskLater(plugin, () -> thrownPotions.remove(e.getAreaEffectCloud().getEntityId()), e.getAreaEffectCloud().getDuration()); } }
@EventHandler public void onLingerPotion(LingeringPotionSplashEvent e){ if (!(e.getEntity().getShooter() instanceof Player)){ return; } Player p = (Player)e.getEntity().getShooter(); Entity ent = e.getEntity(); RedProtect.get().logger.debug("Is LingeringPotionSplashEvent event."); Region r = RedProtect.get().rm.getTopRegion(ent.getLocation()); if (r != null && !r.allowEffects(p)){ RPLang.sendMessage(p, "playerlistener.region.cantuse"); e.setCancelled(true); return; } if (RPUtil.denyPotion(e.getEntity().getItem())){ e.setCancelled(true); if (e.getEntity().getShooter() instanceof Player){ RPLang.sendMessage((Player)e.getEntity().getShooter(), RPLang.get("playerlistener.denypotion")); } } }
@SuppressWarnings("SimplifiableIfStatement") @Override public boolean check(Event event) { if (event instanceof LingeringPotionSplashEvent) { if (effectTypes != null && effectTypes.getArray().length > 0) { return ((LingeringPotionSplashEvent) event).getEntity() .getEffects() .containsAll(Arrays.asList(effectTypes.getArray())); } return true; } return false; }
/** * Prevent exiled players from using lingering splash potions * @param e The event */ @EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true) public void onPlayerThrowLingeringPotion(LingeringPotionSplashEvent e) { if(e.getEntity() != null && e.getEntity().getShooter() instanceof Player) { checkAndCancelRule(ExileRule.USE_POTIONS, e, (Player)e.getEntity().getShooter()); } }
@EventHandler(priority = EventPriority.LOW, ignoreCancelled=true) public void onLingeringPotionSplash(final LingeringPotionSplashEvent e) { if (DEBUG) { plugin.getLogger().info("1.9 " + e.getEventName()); plugin.getLogger().info("1.9 entity = " + e.getEntity()); plugin.getLogger().info("1.9 entity type = " + e.getEntityType()); plugin.getLogger().info("1.9 radius = " + e.getAreaEffectCloud().getRadius()); plugin.getLogger().info("1.9 id = " + e.getAreaEffectCloud().getEntityId()); plugin.getLogger().info("1.9 hit entity = " + e.getHitEntity()); } if (!IslandGuard.inWorld(e.getEntity().getLocation())) { return; } // Try to get the shooter Projectile projectile = (Projectile) e.getEntity(); if (DEBUG) plugin.getLogger().info("shooter = " + projectile.getShooter()); if (projectile.getShooter() != null && projectile.getShooter() instanceof Player) { UUID uuid = ((Player)projectile.getShooter()).getUniqueId(); // Store it and remove it when the effect is gone thrownPotions.put(e.getAreaEffectCloud().getEntityId(), uuid); plugin.getServer().getScheduler().runTaskLater(plugin, new Runnable() { @Override public void run() { if (DEBUG) plugin.getLogger().info("DEBUG: Effect finished"); thrownPotions.remove(e.getAreaEffectCloud().getEntityId()); }}, e.getAreaEffectCloud().getDuration()); } }
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) public void onPotionSplash(LingeringPotionSplashEvent event) { LingeringPotion entity = event.getEntity(); Location l = BukkitUtil.getLocation(entity); if (!PS.get().hasPlotArea(l.getWorld())) { return; } if (!parent.onProjectileHit(event)) { event.setCancelled(true); } }