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

43 lines
1.2 KiB
Java

package net.minecraft.world.entity.ai.goal;
import java.util.EnumSet;
import net.minecraft.core.BlockPos;
import net.minecraft.tags.EntityTypeTags;
import net.minecraft.world.entity.Mob;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.Blocks;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.phys.shapes.Shapes;
public class ClimbOnTopOfPowderSnowGoal extends Goal {
private final Mob mob;
private final Level level;
public ClimbOnTopOfPowderSnowGoal(Mob mob, Level level) {
this.mob = mob;
this.level = level;
this.setFlags(EnumSet.of(Goal.Flag.JUMP));
}
@Override
public boolean canUse() {
boolean bl = this.mob.wasInPowderSnow || this.mob.isInPowderSnow;
if (bl && this.mob.getType().is(EntityTypeTags.POWDER_SNOW_WALKABLE_MOBS)) {
BlockPos blockPos = this.mob.blockPosition().above();
BlockState blockState = this.level.getBlockState(blockPos);
return blockState.is(Blocks.POWDER_SNOW) || blockState.getCollisionShape(this.level, blockPos) == Shapes.empty();
} else {
return false;
}
}
@Override
public boolean requiresUpdateEveryTick() {
return true;
}
@Override
public void tick() {
this.mob.getJumpControl().jump();
}
}