minecraft-src/net/minecraft/world/entity/ai/goal/LandOnOwnersShoulderGoal.java
2025-07-04 03:45:38 +03:00

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);
}
}
}
}