下面列出了org.bukkit.event.entity.EntityDamageEvent.DamageCause#FIRE 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onEntityDamage(EntityDamageEvent event) {
if (((event.getCause() == DamageCause.FIRE_TICK) || (event.getCause() == DamageCause.FIRE) || (event.getCause() == DamageCause.DROWNING))) {
for (Player player : ServerPlatform.get().getMiscUtils().getNearbyPlayers(event.getEntity().getLocation(), 48, 128, 48)) {
if (player != null) {
Connection connection = ProtocolSupportAPI.getConnection(player);
if (
(connection != null) &&
(connection.getVersion().getProtocolType() == ProtocolType.PC) &&
connection.getVersion().isBefore(ProtocolVersion.MINECRAFT_1_12)
) {
connection.sendPacket(ServerPlatform.get().getPacketFactory().createEntityStatusPacket(event.getEntity(), 2));
}
}
}
}
}
private static DamageCause getBlockDamageCause(Block block) {
switch (block.getType()) {
case LAVA:
case STATIONARY_LAVA:
return DamageCause.LAVA;
case FIRE:
return DamageCause.FIRE;
default:
return DamageCause.CONTACT;
}
}
private static DamageCause getBlockDamageCause(Block block) {
switch(block.getType()) {
case LAVA:
case STATIONARY_LAVA:
return DamageCause.LAVA;
case FIRE:
return DamageCause.FIRE;
default:
return DamageCause.CONTACT;
}
}
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onDamageGet(EntityDamageEvent e) {
if (e.getEntity() instanceof Player) {
if (e.getCause() == DamageCause.LAVA) {
Talisman.checkFor(e, SlimefunItems.TALISMAN_LAVA);
}
if (e.getCause() == DamageCause.DROWNING) {
Talisman.checkFor(e, SlimefunItems.TALISMAN_WATER);
}
if (e.getCause() == DamageCause.FALL) {
Talisman.checkFor(e, SlimefunItems.TALISMAN_ANGEL);
}
if (e.getCause() == DamageCause.FIRE) {
Talisman.checkFor(e, SlimefunItems.TALISMAN_FIRE);
}
if (e.getCause() == DamageCause.ENTITY_ATTACK) {
Talisman.checkFor(e, SlimefunItems.TALISMAN_KNIGHT);
Talisman.checkFor(e, SlimefunItems.TALISMAN_WARRIOR);
}
if (e.getCause() == DamageCause.PROJECTILE && ((EntityDamageByEntityEvent) e).getDamager() instanceof Projectile) {
Projectile projectile = (Projectile) ((EntityDamageByEntityEvent) e).getDamager();
if (Talisman.checkFor(e, SlimefunItems.TALISMAN_WHIRLWIND)) {
returnProjectile((Player) e.getEntity(), projectile);
}
}
}
}
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onEntityKilled(EntityDeathEvent e) {
if (e.getEntity().getType() != EntityType.SHEEP || !plugin.getConfig().getBoolean("options.sheep.dropMutton", true) || !e.getEntity().getWorld().isGameRule("doMobLoot") || !(e.getEntity() instanceof Ageable)) {
return;
}
Ageable entity = (Ageable) e.getEntity();
if (!entity.isAdult()) {
return;
}
boolean fireaspect = false;
int looting = 1;
if (entity.getLastDamageCause() instanceof EntityDamageByEntityEvent) {
EntityDamageByEntityEvent dEvent = (EntityDamageByEntityEvent) entity.getLastDamageCause();
if (dEvent.getDamager() != null && dEvent.getDamager() instanceof Player) {
ItemStack hand = ((Player) dEvent.getDamager()).getItemInHand();
fireaspect = hand.containsEnchantment(Enchantment.FIRE_ASPECT);
if (hand.containsEnchantment(Enchantment.LOOT_BONUS_MOBS))
looting += hand.getEnchantmentLevel(Enchantment.LOOT_BONUS_MOBS);
if (looting < 1) //Incase a plugin sets an enchantment level to be negative
looting = 1;
} else if (dEvent.getDamager() != null && dEvent.getDamager() instanceof Arrow) {
Arrow a = (Arrow) dEvent.getDamager();
if (a.getFireTicks() > 0)
fireaspect = true;
}
}
if (entity.getLastDamageCause().getCause() == DamageCause.FIRE_TICK || entity.getLastDamageCause().getCause() == DamageCause.FIRE
|| entity.getLastDamageCause().getCause() == DamageCause.LAVA || fireaspect)
e.getDrops().add(new ItemStack(Carbon.injector().cookedMuttonItemMat, random.nextInt(2) + 1 + random.nextInt(looting)));
else
e.getDrops().add(new ItemStack(Carbon.injector().muttonItemMat, random.nextInt(2) + 1 + random.nextInt(looting)));
}
@Override
public boolean damageEntity(DamageSource source, float damage) {
if(godmode || noDamageTicks > 0) {
return false;
}
DamageCause cause = null;
org.bukkit.entity.Entity bEntity = null;
if(source instanceof EntityDamageSource) {
Entity damager = source.getEntity();
cause = DamageCause.ENTITY_ATTACK;
if(source instanceof EntityDamageSourceIndirect) {
damager = ((EntityDamageSourceIndirect) source).getProximateDamageSource();
if(damager.getBukkitEntity() instanceof ThrownPotion) {
cause = DamageCause.MAGIC;
} else if(damager.getBukkitEntity() instanceof Projectile) {
cause = DamageCause.PROJECTILE;
}
}
bEntity = damager.getBukkitEntity();
} else if(source == DamageSource.FIRE)
cause = DamageCause.FIRE;
else if(source == DamageSource.STARVE)
cause = DamageCause.STARVATION;
else if(source == DamageSource.WITHER)
cause = DamageCause.WITHER;
else if(source == DamageSource.STUCK)
cause = DamageCause.SUFFOCATION;
else if(source == DamageSource.DROWN)
cause = DamageCause.DROWNING;
else if(source == DamageSource.BURN)
cause = DamageCause.FIRE_TICK;
else if(source == CraftEventFactory.MELTING)
cause = DamageCause.MELTING;
else if(source == CraftEventFactory.POISON)
cause = DamageCause.POISON;
else if(source == DamageSource.MAGIC) {
cause = DamageCause.MAGIC;
} else if(source == DamageSource.OUT_OF_WORLD) {
cause = DamageCause.VOID;
}
if(cause != null) {
NPCDamageEvent event = new NPCDamageEvent(this, bEntity, cause, (double) damage);
Bukkit.getPluginManager().callEvent(event);
if(!event.isCancelled()) {
return super.damageEntity(source, (float) event.getDamage());
} else {
return false;
}
}
if(super.damageEntity(source, damage)) {
if(bEntity != null) {
Entity e = ((CraftEntity) bEntity).getHandle();
double d0 = e.locX - this.locX;
double d1;
for(d1 = e.locZ - this.locZ; d0 * d0 + d1 * d1 < 0.0001D; d1 = (Math.random() - Math.random()) * 0.01D) {
d0 = (Math.random() - Math.random()) * 0.01D;
}
a(e, damage, d0, d1);
}
return true;
} else {
return false;
}
}