@EventHandler(ignoreCancelled = true, priority = EventPriority.LOWEST) public void onEntityCombustByEntity (EntityCombustByEntityEvent event) { //handle it just like we would an entity damge by entity event, except don't send player messages to avoid double messages //in cases like attacking with a flame sword or flame arrow, which would ALSO trigger the direct damage event handler @SuppressWarnings("deprecation") EntityDamageByEntityEvent eventWrapper = new EntityDamageByEntityEvent(event.getCombuster(), event.getEntity(), DamageCause.FIRE_TICK, event.getDuration()); this.handleEntityDamageEvent(eventWrapper, false); event.setCancelled(eventWrapper.isCancelled()); }
@EventHandler public void onEntityCombustByEntity(EntityCombustByEntityEvent event) { DGameWorld gameWorld = DGameWorld.getByWorld(event.getEntity().getWorld()); if (gameWorld != null) { if (event.isCancelled()) { event.setCancelled(false); } } }
@EventHandler (priority = EventPriority.NORMAL, ignoreCancelled = true) public void onEntityCombustByEntity(EntityCombustByEntityEvent event) { EntityDamageByEntityEvent sub = new EntityDamageByEntityEvent(event.getCombuster(), event.getEntity(), EntityDamageEvent.DamageCause.FIRE, 0d); if (!this.canDamagerHurtDamagee(sub, false)) { event.setCancelled(true); } }
if (event.isCancelled()) { return; if (event.getEntity() instanceof Ageable) { Field field = plugin.getForceFieldManager().getEnabledSourceField(event.getEntity().getLocation(), FieldFlag.PROTECT_ANIMALS); if (event.getCombuster() instanceof Player) { Player player = (Player) event.getCombuster(); if (FieldFlag.PROTECT_ANIMALS.applies(field, player)) { event.setCancelled(true); return; event.setCancelled(true); return; if (event.getEntity() instanceof Villager) { Field field = plugin.getForceFieldManager().getEnabledSourceField(event.getEntity().getLocation(), FieldFlag.PROTECT_VILLAGERS); if (event.getCombuster() instanceof Player) { Player player = (Player) event.getCombuster(); if (FieldFlag.PROTECT_VILLAGERS.applies(field, player)) { event.setCancelled(true); return; event.setCancelled(true); return; if (event.getEntity() instanceof Monster || event.getEntity() instanceof Golem || event.getEntity() instanceof WaterMob) { Field field = plugin.getForceFieldManager().getEnabledSourceField(event.getEntity().getLocation(), FieldFlag.PROTECT_MOBS);
/** * The combuster can be a WeatherStorm a Blaze, or an Entity holding a FIRE_ASPECT enchanted item. * * @return the Entity that set the combustee alight. */ public Entity getCombuster() { return event.getCombuster(); }
@EventHandler(ignoreCancelled = true) public void onEntityCombust(EntityCombustEvent event) { if (event instanceof EntityCombustByBlockEvent) { // at the time of writing, spigot is throwing null for the event's combuster. this causes lots of issues downstream. // whenever (i mean if ever) it is fixed, use getCombuster again instead of the current block Events.fireToCancel(event, new DamageEntityEvent(event, create(event.getEntity().getLocation().getBlock()), event.getEntity())); } else if (event instanceof EntityCombustByEntityEvent) { Events.fireToCancel(event, new DamageEntityEvent(event, create(((EntityCombustByEntityEvent) event).getCombuster()), event.getEntity())); } }