minecraft-src/net/minecraft/world/entity/ai/goal/LandOnOwnersShoulderGoal.java
2025-07-04 01:41:11 +03:00

45 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 ServerPlayer owner;
private boolean isSittingOnShoulder;
public LandOnOwnersShoulderGoal(ShoulderRidingEntity entity) {
this.entity = entity;
}
@Override
public boolean canUse() {
ServerPlayer serverPlayer = (ServerPlayer)this.entity.getOwner();
boolean bl = serverPlayer != null
&& !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.owner = (ServerPlayer)this.entity.getOwner();
this.isSittingOnShoulder = false;
}
@Override
public void tick() {
if (!this.isSittingOnShoulder && !this.entity.isInSittingPose() && !this.entity.isLeashed()) {
if (this.entity.getBoundingBox().intersects(this.owner.getBoundingBox())) {
this.isSittingOnShoulder = this.entity.setEntityOnShoulder(this.owner);
}
}
}
}