42 lines
1.3 KiB
Java
42 lines
1.3 KiB
Java
package net.minecraft.world.entity.ai.goal;
|
|
|
|
import net.minecraft.server.level.ServerPlayer;
|
|
import net.minecraft.world.entity.animal.ShoulderRidingEntity;
|
|
|
|
public class LandOnOwnersShoulderGoal extends Goal {
|
|
private final ShoulderRidingEntity entity;
|
|
private boolean isSittingOnShoulder;
|
|
|
|
public LandOnOwnersShoulderGoal(ShoulderRidingEntity entity) {
|
|
this.entity = entity;
|
|
}
|
|
|
|
@Override
|
|
public boolean canUse() {
|
|
if (!(this.entity.getOwner() instanceof ServerPlayer serverPlayer)) {
|
|
return false;
|
|
} else {
|
|
boolean bl = !serverPlayer.isSpectator() && !serverPlayer.getAbilities().flying && !serverPlayer.isInWater() && !serverPlayer.isInPowderSnow;
|
|
return !this.entity.isOrderedToSit() && bl && this.entity.canSitOnShoulder();
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public boolean isInterruptable() {
|
|
return !this.isSittingOnShoulder;
|
|
}
|
|
|
|
@Override
|
|
public void start() {
|
|
this.isSittingOnShoulder = false;
|
|
}
|
|
|
|
@Override
|
|
public void tick() {
|
|
if (!this.isSittingOnShoulder && !this.entity.isInSittingPose() && !this.entity.isLeashed()) {
|
|
if (this.entity.getOwner() instanceof ServerPlayer serverPlayer && this.entity.getBoundingBox().intersects(serverPlayer.getBoundingBox())) {
|
|
this.isSittingOnShoulder = this.entity.setEntityOnShoulder(serverPlayer);
|
|
}
|
|
}
|
|
}
|
|
}
|