94 lines
2.4 KiB
Java
94 lines
2.4 KiB
Java
package org.bukkit.craftbukkit.entity;
|
|
|
|
import com.google.common.base.Preconditions;
|
|
import net.minecraft.world.entity.monster.EntityGuardian;
|
|
import org.bukkit.craftbukkit.CraftServer;
|
|
import org.bukkit.entity.Guardian;
|
|
import org.bukkit.entity.LivingEntity;
|
|
|
|
public class CraftGuardian extends CraftMonster implements Guardian {
|
|
|
|
private static final int MINIMUM_ATTACK_TICKS = -10;
|
|
|
|
public CraftGuardian(CraftServer server, EntityGuardian entity) {
|
|
super(server, entity);
|
|
}
|
|
|
|
@Override
|
|
public EntityGuardian getHandle() {
|
|
return (EntityGuardian) super.getHandle();
|
|
}
|
|
|
|
@Override
|
|
public String toString() {
|
|
return "CraftGuardian";
|
|
}
|
|
|
|
@Override
|
|
public void setTarget(LivingEntity target) {
|
|
super.setTarget(target);
|
|
|
|
// clean up laser target, when target is removed
|
|
if (target == null) {
|
|
getHandle().setActiveAttackTarget(0);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public boolean setLaser(boolean activated) {
|
|
if (activated) {
|
|
LivingEntity target = getTarget();
|
|
if (target == null) {
|
|
return false;
|
|
}
|
|
|
|
getHandle().setActiveAttackTarget(target.getEntityId());
|
|
} else {
|
|
getHandle().setActiveAttackTarget(0);
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
@Override
|
|
public boolean hasLaser() {
|
|
return getHandle().hasActiveAttackTarget();
|
|
}
|
|
|
|
@Override
|
|
public int getLaserDuration() {
|
|
return getHandle().getAttackDuration();
|
|
}
|
|
|
|
@Override
|
|
public void setLaserTicks(int ticks) {
|
|
Preconditions.checkArgument(ticks >= MINIMUM_ATTACK_TICKS, "ticks must be >= %s. Given %s", MINIMUM_ATTACK_TICKS, ticks);
|
|
|
|
EntityGuardian.PathfinderGoalGuardianAttack goal = getHandle().guardianAttackGoal;
|
|
if (goal != null) {
|
|
goal.attackTime = ticks;
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public int getLaserTicks() {
|
|
EntityGuardian.PathfinderGoalGuardianAttack goal = getHandle().guardianAttackGoal;
|
|
return (goal != null) ? goal.attackTime : MINIMUM_ATTACK_TICKS;
|
|
}
|
|
|
|
@Override
|
|
public boolean isElder() {
|
|
return false;
|
|
}
|
|
|
|
@Override
|
|
public void setElder(boolean shouldBeElder) {
|
|
throw new UnsupportedOperationException("Not supported.");
|
|
}
|
|
|
|
@Override
|
|
public boolean isMoving() {
|
|
return getHandle().isMoving();
|
|
}
|
|
}
|