BloodMoon/uk/co/jacekk/bukkit/bloodmoon/pathfinders/BloodMoonPathfinderGoalArrowAttack.java
2012-03-27 15:12:01 +01:00

89 lines
2.0 KiB
Java
Executable File

package uk.co.jacekk.bukkit.bloodmoon.pathfinders;
import uk.co.jacekk.bukkit.bloodmoon.BloodMoon;
import uk.co.jacekk.bukkit.bloodmoon.entities.BloodMoonEntitySkeleton;
import net.minecraft.server.EntityArrow;
import net.minecraft.server.EntityLiving;
import net.minecraft.server.PathfinderGoal;
import net.minecraft.server.World;
public class BloodMoonPathfinderGoalArrowAttack extends PathfinderGoal {
World world;
BloodMoonEntitySkeleton skeleton;
EntityLiving c;
int d = 0;
float e;
int f = 0;
int g;
int h;
public BloodMoonPathfinderGoalArrowAttack(BloodMoonEntitySkeleton skeleton, float f, int i, int j){
this.skeleton = skeleton;
this.world = skeleton.world;
this.e = f;
this.g = i;
this.h = j;
this.a(3);
}
public boolean a(){
EntityLiving entityliving = this.skeleton.at();
if (entityliving == null){
return false;
}else{
this.c = entityliving;
return true;
}
}
public boolean b(){
return this.a() || !this.skeleton.al().e();
}
public void d(){
this.c = null;
}
public void e(){
double d0 = 100.0D;
double d1 = this.skeleton.e(this.c.locX, this.c.boundingBox.b, this.c.locZ);
boolean flag = this.skeleton.am().canSee(this.c);
if (flag){
++this.f;
}else{
this.f = 0;
}
if (d1 <= d0 && this.f >= 20){
this.skeleton.al().f();
}else{
this.skeleton.al().a(this.c, this.e);
}
this.skeleton.getControllerLook().a(this.c, 30.0F, 30.0F);
this.d = Math.max(this.d - ((this.skeleton.bloodMoonState) ? BloodMoon.config.getInt("features.arrow-rate.multiplier") : 1), 0);
if (this.d <= 0 && d1 <= d0 && flag){
this.f();
this.d = this.h;
}
}
private void f(){
EntityArrow entityarrow = new EntityArrow(this.world, this.skeleton, this.c, 1.6F, 12.0F);
this.world.makeSound(this.skeleton, "random.bow", 1.0F, 1.0F / (this.skeleton.an().nextFloat() * 0.4F + 0.8F));
this.world.addEntity(entityarrow);
if (this.skeleton.bloodMoonState && BloodMoon.config.getBoolean("features.fire-arrows.enabled")){
entityarrow.fireTicks = 1200;
}
}
}