Code/net/minecraft/world/phys/shapes/CollisionContext.java

57 lines
2.2 KiB
Java

package net.minecraft.world.phys.shapes;
import javax.annotation.Nullable;
import net.minecraft.core.BlockPos;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.vehicle.AbstractMinecart;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
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 p_82751_) {
return (CollisionContext)(switch (p_82751_) {
case AbstractMinecart abstractminecart -> AbstractMinecart.useExperimentalMovement(abstractminecart.level())
? new MinecartCollisionContext(abstractminecart, false)
: new EntityCollisionContext(p_82751_, false, false);
default -> new EntityCollisionContext(p_82751_, false, false);
});
}
static CollisionContext of(Entity p_366094_, boolean p_366904_) {
return new EntityCollisionContext(p_366094_, p_366904_, false);
}
static CollisionContext placementContext(@Nullable Entity p_397199_) {
return new EntityCollisionContext(
p_397199_ != null ? p_397199_.isDescending() : false,
true,
p_397199_ != null ? p_397199_.getY() : -Double.MAX_VALUE,
p_397199_ instanceof LivingEntity livingentity ? livingentity.getMainHandItem() : ItemStack.EMPTY,
p_397199_ instanceof LivingEntity livingentity1 ? p_394132_ -> ((LivingEntity)p_397199_).canStandOnFluid(p_394132_) : p_397477_ -> false,
p_397199_
);
}
boolean isDescending();
boolean isAbove(VoxelShape p_82755_, BlockPos p_82756_, boolean p_82757_);
boolean isHoldingItem(Item p_82752_);
boolean canStandOnFluid(FluidState p_205110_, FluidState p_205111_);
VoxelShape getCollisionShape(BlockState p_363466_, CollisionGetter p_365376_, BlockPos p_362678_);
default boolean isPlacement() {
return false;
}
}