下面列出了org.bukkit.event.entity.EntityDamageByEntityEvent#getCause ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
@SuppressWarnings("deprecation")
@EventHandler
public void onHit(EntityDamageByEntityEvent e) {
if (e.isCancelled())
return;
if (e.getDamager() instanceof Player) {
Player d = (Player) e.getDamager();
if ((e.getCause() == DamageCause.ENTITY_ATTACK || e.getCause() == DamageCause.ENTITY_SWEEP_ATTACK)) {
if (QualityArmory.isMisc(d.getItemInHand())) {
CustomBaseObject aa = QualityArmory.getMisc(d.getItemInHand());
if (aa instanceof MeleeItems) {
DEBUG("Setting damage for " + aa.getName() + " to be equal to " + ((MeleeItems) aa).getDamage()
+ ". was " + e.getDamage());
e.setDamage(((MeleeItems) aa).getDamage());
}
if (aa.getSoundOnHit() != null) {
e.getEntity().getWorld().playSound(e.getEntity().getLocation(), aa.getSoundOnHit(), 1, 1);
}
}
}
if (QualityArmory.isGun(d.getItemInHand())
|| QualityArmory.isIronSights(d.getItemInHand()))
DEBUG("The player " + e.getEntity().getName() + " was Hit with a gun! Damage=" + e.getDamage());
}
}
@EventHandler(priority = EventPriority.NORMAL)
public void onHit(EntityDamageByEntityEvent event) {
final Entity damager = event.getDamager();
if (!event.isCancelled()
|| event.getCause() != EntityDamageEvent.DamageCause.PROJECTILE
|| !(damager instanceof Projectile)
|| !damager.hasMetadata(METADATA_KEY)) return;
final Player shooter = (Player) ((Projectile) damager).getShooter();
if (match.getParticipant(shooter) == null) return;
damager.remove();
shooter.getInventory().addItem(new ItemStack(Material.ARROW));
}
@TargetedEventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onMelee(EntityDamageByEntityEvent event) {
if(knockback.isPresent() &&
victim.equals(event.getEntity()) &&
event.getCause() == EntityDamageEvent.DamageCause.ENTITY_ATTACK &&
event.getDamager() instanceof LivingEntity &&
victim.getNoDamageTicks() <= 0) {
applyImpulses((LivingEntity) event.getDamager());
}
}
@Override
protected int process(User user, EntityDamageByEntityEvent event)
{
// Is in Inventory (Detection)
if (user.hasOpenInventory() &&
// Have the inventory opened for some time
user.notRecentlyOpenedInventory(1000) &&
// Is a hit-attack
event.getCause() == EntityDamageEvent.DamageCause.ENTITY_ATTACK)
{
message = "Inventory-Verbose | Player: " + user.getPlayer().getName() + " hit an entity while having an open inventory.";
return 10;
}
return 0;
}
@EventHandler
public void onArrowSuccessfulHit(EntityDamageByEntityEvent e) {
if (e.getDamager() instanceof Arrow && e.getEntity() instanceof LivingEntity && e.getCause() != EntityDamageEvent.DamageCause.ENTITY_EXPLOSION) {
SlimefunBow bow = projectiles.get(e.getDamager().getUniqueId());
if (bow != null) {
bow.callItemHandler(BowShootHandler.class, handler -> handler.onHit(e, (LivingEntity) e.getEntity()));
}
projectiles.remove(e.getDamager().getUniqueId());
}
}
@EventHandler
public void onDamage(final EntityDamageByEntityEvent e) {
if (e.getCause() == EntityDamageEvent.DamageCause.ENTITY_EXPLOSION && e.getDamager().getType() == EntityType.FIREWORK) {
e.setCancelled(true);
}
}