@EventHandler(priority = EventPriority.LOW, ignoreCancelled=true) public void onLingeringPotionDamage(final EntityDamageByEntityEvent e) { if (e.getEntity() == null || e.getEntity().getUniqueId() == null) { return; } if (e.getCause().equals(DamageCause.ENTITY_ATTACK) && thrownPotions.containsKey(e.getDamager().getEntityId())) { UUID attacker = thrownPotions.get(e.getDamager().getEntityId()); // Self damage if (attacker.equals(e.getEntity().getUniqueId())) { return; } Entity entity = e.getEntity(); // Monsters being hurt if (entity instanceof Monster || entity instanceof Slime || entity instanceof Squid) { checkIsland(e, entity.getLocation(), Flags.HURT_MONSTERS); } // Mobs being hurt if (entity instanceof Animals || entity instanceof IronGolem || entity instanceof Snowman) { checkIsland(e, entity.getLocation(), Flags.HURT_ANIMALS); } // Villagers being hurt if (entity instanceof Villager) { checkIsland(e, entity.getLocation(), Flags.HURT_VILLAGERS); } } } }
break; default: damageType = cause.name().toLowerCase(); break;
final String normInput = input.trim().toUpperCase(); try{ invulnerableIgnore.add(DamageCause.valueOf(normInput.replace(' ', '_').replace('-', '_'))); invulnerableModifiers.put(DamageCause.valueOf(normInput.replace(' ', '_').replace('-', '_')), modifier); if (error) StaticLog.logInfo("Damage causes can be: " + StringUtil.join(Arrays.asList(DamageCause.values()), ", ")); invulnerableTriggerAlways = config.getBoolean(ConfPaths.COMBINED_INVULNERABLE_TRIGGERS_ALWAYS); invulnerableTriggerFallDistance = config.getBoolean(ConfPaths.COMBINED_INVULNERABLE_TRIGGERS_FALLDISTANCE);
if (event.getCause().equals(DamageCause.FALL)) { if (event.getEntity() instanceof Player) { Player player = (Player) event.getEntity();
DamageCause c = Arrays.stream(EntityDamageEvent.DamageCause.values()).sorted(Comparator.comparing(DamageCause::name)).collect(Collectors.toList()).get(slot); if (getIWM().getIvSettings(user.getWorld()).contains(c.name())) { getIWM().getIvSettings(user.getWorld()).remove(c.name()); } else { getIWM().getIvSettings(user.getWorld()).add(c.name());
/** * @param event */ @EventHandler(priority = EventPriority.HIGH) public void onEntityDamageByBlock(EntityDamageByBlockEvent event) { if (event.isCancelled()) { return; } Entity entity = event.getEntity(); if (entity instanceof Player) { Player player = (Player) entity; if (event.getCause().equals(DamageCause.FALL)) { if (plugin.getVelocityManager().isFallDamageImmune(player)) { event.setCancelled(true); plugin.getCommunicationManager().showThump(player); return; } Field field = plugin.getForceFieldManager().getEnabledSourceField(player.getLocation(), FieldFlag.NO_FALL_DAMAGE); if (field != null) { if (FieldFlag.NO_FALL_DAMAGE.applies(field, player)) { plugin.getCommunicationManager().showThump(player); event.setCancelled(true); } } } } }
/** * This method protects players from PVP if it is not allowed and from * arrows fired by other players * * @param e - event */ @EventHandler(priority = EventPriority.LOW, ignoreCancelled = true) public void onEntityDamage(EntityDamageByEntityEvent e) { if (e.getEntity() instanceof Player && getPlugin().getIWM().inWorld(e.getEntity().getLocation())) { // Allow self damage if (e.getEntity().equals(e.getDamager())) { return; } // Protect visitors if (e.getCause().equals(DamageCause.ENTITY_ATTACK) && protectedVisitor((Player)e.getEntity())) { if (e.getDamager() instanceof Player) { User.getInstance(e.getDamager()).notify(Flags.INVINCIBLE_VISITORS.getHintReference()); } else if (e.getDamager() instanceof Projectile && ((Projectile)e.getDamager()).getShooter() instanceof Player) { User.getInstance((Player)((Projectile)e.getDamager()).getShooter()).notify(Flags.INVINCIBLE_VISITORS.getHintReference()); } e.setCancelled(true); } else { // PVP check respond(e, e.getDamager(), e.getEntity(), getFlag(e.getEntity().getWorld())); } } }
if (!(e.getEntity() instanceof Player) || !getIWM().inWorld(e.getEntity().getLocation()) || !getIWM().getIvSettings(world).contains(e.getCause().name()) || getIslands().userIsOnIsland(world, User.getInstance(e.getEntity()))) { return; Player p = (Player) e.getEntity(); if(e.getCause().equals(DamageCause.VOID)) { if (getIslands().getIslandAt(p.getLocation()).isPresent()) {
@EventHandler(priority = EventPriority.HIGH) public void onDamage(EntityDamageEvent ev) { if (!ev.getCause().equals(DamageCause.PROJECTILE)) { return; } if (!ev.getEntityType().equals(EntityType.PLAYER)) { return; } Player player = (Player) ev.getEntity(); Game game = BedwarsRel.getInstance().getGameManager().getGameOfPlayer(player); if (game == null) { return; } if (game.getState() != GameState.RUNNING) { return; } if (!isBlockerActive(player, game)) { return; } ev.setCancelled(true); }
@EventHandler(priority = EventPriority.HIGH) public void onDamage(EntityDamageEvent ev) { if (!ev.getCause().equals(DamageCause.PROJECTILE)) { return; } if (!ev.getEntityType().equals(EntityType.PLAYER)) { return; } Player player = (Player) ev.getEntity(); Game game = BedwarsRel.getInstance().getGameManager().getGameOfPlayer(player); if (game == null) { return; } if (game.getState() != GameState.RUNNING) { return; } if (!isBlockerActive(player, game)) { return; } ev.setCancelled(true); }
public ModuleSwordSweep(OCMMain plugin){ super(plugin, "disable-sword-sweep"); this.particleListener = new ParticleListener(); try{ // Will be available from some 1.11 version onwards sweepDamageCause = EntityDamageEvent.DamageCause.valueOf("ENTITY_SWEEP_ATTACK"); } catch(IllegalArgumentException e){ sweepDamageCause = null; } // inject all players at startup, so the plugin still works properly after a reload OCMMain.getInstance().addEnableListener(() -> { for(Player player : Bukkit.getOnlinePlayers()){ PacketManager.getInstance().addListener(particleListener, player); } }); }
private boolean protectedVisitor(LivingEntity entity) { return getPlugin().getIWM().getIvSettings(entity.getWorld()).contains(DamageCause.ENTITY_ATTACK.name()) && !getIslands().userIsOnIsland(entity.getWorld(), User.getInstance(entity)); }
private PanelItem getPanelItem(DamageCause c, User user) { PanelItemBuilder pib = new PanelItemBuilder(); pib.name(Util.prettifyText(c.toString())); pib.clickHandler(this); if (getIWM().getIvSettings(user.getWorld()).contains(c.name())) { pib.icon(Material.GREEN_SHULKER_BOX); pib.description(user.getTranslation("protection.panel.flag-item.setting-active")); } else { pib.icon(Material.RED_SHULKER_BOX); pib.description(user.getTranslation("protection.panel.flag-item.setting-disabled")); } return pib.build(); }
private void openPanel(User user, String ivPanelName) { // Close the current panel user.closeInventory(); // Open a new panel for visitor protection PanelBuilder pb = new PanelBuilder(); pb.user(user).name(ivPanelName); // Make panel items - sort alphabetically. Arrays.stream(EntityDamageEvent.DamageCause.values()).sorted(Comparator.comparing(DamageCause::name)).forEach(c -> pb.item(getPanelItem(c, user))); pb.build(); }
private static DamageCause getDamageCause(String name) { try { return DamageCause.valueOf(name); } catch (Throwable t) { // ouch. return null; } }
@Override public void damage(double amount, Entity source, DamageCause cause) { super.damage(amount, source, cause); if (DamageCause.LIGHTNING.equals(cause) && !isPowered()) { CreeperPowerEvent event = EventFactory.getInstance() .callEvent(new CreeperPowerEvent( this, (LightningStrike) source, CreeperPowerEvent.PowerCause.LIGHTNING)); if (!event.isCancelled()) { setPowered(true); } } } }
@Override public void damage(double amount, Entity source, DamageCause cause) { if (!DamageCause.LIGHTNING.equals(cause)) { super.damage(amount, source, cause); return; } Witch witch = world.spawn(this.location, Witch.class); witch.damage(amount, source, cause); witch.setFireTicks(this.getFireTicks()); remove(); }
@Override public void damage(double amount, Entity source, DamageCause cause) { if (!DamageCause.LIGHTNING.equals(cause)) { super.damage(amount, source, cause); return; } PigZombie pigZombie = world.spawn(this.location, PigZombie.class); pigZombie.damage(amount, source, cause); remove(); }