Code/net/minecraft/world/entity/ai/goal/Goal.java

71 lines
1.6 KiB
Java

package net.minecraft.world.entity.ai.goal;
import java.util.EnumSet;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.util.Mth;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.level.Level;
public abstract class Goal {
private final EnumSet<Goal.Flag> flags = EnumSet.noneOf(Goal.Flag.class);
public abstract boolean canUse();
public boolean canContinueToUse() {
return this.canUse();
}
public boolean isInterruptable() {
return true;
}
public void start() {
}
public void stop() {
}
public boolean requiresUpdateEveryTick() {
return false;
}
public void tick() {
}
public void setFlags(EnumSet<Goal.Flag> p_25328_) {
this.flags.clear();
this.flags.addAll(p_25328_);
}
@Override
public String toString() {
return this.getClass().getSimpleName();
}
public EnumSet<Goal.Flag> getFlags() {
return this.flags;
}
protected int adjustedTickDelay(int p_186072_) {
return this.requiresUpdateEveryTick() ? p_186072_ : reducedTickDelay(p_186072_);
}
protected static int reducedTickDelay(int p_186074_) {
return Mth.positiveCeilDiv(p_186074_, 2);
}
protected static ServerLevel getServerLevel(Entity p_363316_) {
return (ServerLevel)p_363316_.level();
}
protected static ServerLevel getServerLevel(Level p_366684_) {
return (ServerLevel)p_366684_;
}
public static enum Flag {
MOVE,
LOOK,
JUMP,
TARGET;
}
}