minecraft-src/net/minecraft/world/phys/shapes/CollisionContext.java
2025-07-04 02:49:36 +03:00

38 lines
1.3 KiB
Java

package net.minecraft.world.phys.shapes;
import net.minecraft.core.BlockPos;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.vehicle.AbstractMinecart;
import net.minecraft.world.item.Item;
import net.minecraft.world.level.CollisionGetter;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.material.FluidState;
public interface CollisionContext {
static CollisionContext empty() {
return EntityCollisionContext.EMPTY;
}
static CollisionContext of(Entity entity) {
return (CollisionContext)(switch (entity) {
case AbstractMinecart abstractMinecart -> AbstractMinecart.useExperimentalMovement(abstractMinecart.level())
? new MinecartCollisionContext(abstractMinecart, false)
: new EntityCollisionContext(entity, false);
default -> new EntityCollisionContext(entity, false);
});
}
static CollisionContext of(Entity entity, boolean canStandOnFluid) {
return new EntityCollisionContext(entity, canStandOnFluid);
}
boolean isDescending();
boolean isAbove(VoxelShape shape, BlockPos pos, boolean canAscend);
boolean isHoldingItem(Item item);
boolean canStandOnFluid(FluidState fluid1, FluidState fluid2);
VoxelShape getCollisionShape(BlockState state, CollisionGetter collisionGetter, BlockPos pos);
}