@Override protected Entity findPlayerToAttack() { Entity e = GenericUtils.getNearestEntityTo( this, GenericUtils.getEntitiesAround_CheckSight(this, 15.0, selector)); if (e != null && e.getCommandSenderName().equals(throwerName)) return null; return e; }
/** * Basic mob attack. Default to touch of death in EntityCreature. Overridden by each mob to define * their attack. */ @Override protected void attackEntity(Entity par1Entity, float par2) { if (par2 < 4.0F && this.rand.nextInt(6) == 0 && !isCharging) { if (this.onGround && ticksExisted - lastShockTick > 40) { double d0 = par1Entity.posX - this.posX; double d1 = par1Entity.posZ - this.posZ; float f2 = MathHelper.sqrt_double(d0 * d0 + d1 * d1); this.motionX = -d0 / f2 * 0.2 + this.motionX; this.motionZ = -d1 / f2 * 0.2 + this.motionZ; this.motionY = 0.30; isCharging = true; chargeTick = 0; this.playSound(GenericUtils.getRandomSound("lambdacraft:mobs.he_attack", 3), 0.5F, 1.0F); } } }
@Override public void onUpdate() { super.onUpdate(); if (!worldObj.isRemote && isCharging) { if (++chargeTick > 50) { worldObj.spawnEntityInWorld(new EntityShockwave(worldObj, this, posX, posY, posZ)); this.playSound(GenericUtils.getRandomSound("lambdacraft:mobs.he_blast", 3), 0.5F, 1.0F); lastShockTick = ticksExisted; isCharging = false; } } if (worldObj.isRemote) { isCharging = dataWatcher.getWatchableObjectByte(20) > 0; chargeTick = dataWatcher.getWatchableObjectByte(20) - 1; } else { dataWatcher.updateObject(20, Byte.valueOf((byte) (isCharging ? chargeTick + 1 : 0))); } }
/** Returns the sound this mob makes on death. */ @Override protected String getDeathSound() { return GenericUtils.getRandomSound("lambdacraft:mobs.he_die", 3); }
/** Returns the sound this mob makes when it is hurt. */ @Override protected String getHurtSound() { return GenericUtils.getRandomSound("lambdacraft:mobs.he_pain", 5); }
/** Returns the sound this mob makes while it's alive. */ @Override protected String getLivingSound() { return GenericUtils.getRandomSound("lambdacraft:mobs.he_idle", 4); }