57 lines
2.2 KiB
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;
|
||
|
}
|
||
|
}
|