@Override public void collide(Entity inEntity) { if (this.getRemoteEntity() == null) { super.collide(inEntity); return; } if (((RemoteBaseEntity) this.m_remoteEntity).onCollide(inEntity.getBukkitEntity())) super.collide(inEntity); }
public boolean attack(Entity entity, DamageSource damageSource, float damage) { PetAttackEvent attackEvent = new PetAttackEvent(this.getPet(), entity.getBukkitEntity(), f); EchoPet.getPlugin().getServer().getPluginManager().callEvent(attackEvent); if (!attackEvent.isCancelled()) { if (entity instanceof EntityPlayer) { if (!(EchoPet.getConfig().getBoolean("canAttackPlayers", false))) { return false; } } return entity.damageEntity(damageSource, (float) attackEvent.getDamage()); } return false; }
@Override public void collide(Entity entity) { if (this.controllableEntity == null) { super.collide(entity); return; } if (!this.controllableEntity .getMind() .getAttribute(CollideAttribute.class) .call(this.controllableEntity, entity.getBukkitEntity()) .isCancelled()) { super.collide(entity); } }
@Override public boolean damageEntity(DamageSource source, float damage) { if (invulnerable || 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(npc, 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; } }