mirror of
https://github.com/Sollace/Unicopia.git
synced 2024-12-01 00:37:59 +01:00
74 lines
2.7 KiB
Java
74 lines
2.7 KiB
Java
package com.minelittlepony.unicopia.block;
|
|
|
|
import org.jetbrains.annotations.Nullable;
|
|
|
|
import net.minecraft.block.Block;
|
|
import net.minecraft.block.BlockState;
|
|
import net.minecraft.block.ShapeContext;
|
|
import net.minecraft.block.Waterloggable;
|
|
import net.minecraft.entity.ai.pathing.NavigationType;
|
|
import net.minecraft.fluid.FluidState;
|
|
import net.minecraft.fluid.Fluids;
|
|
import net.minecraft.item.ItemPlacementContext;
|
|
import net.minecraft.registry.tag.FluidTags;
|
|
import net.minecraft.state.StateManager;
|
|
import net.minecraft.state.property.BooleanProperty;
|
|
import net.minecraft.state.property.IntProperty;
|
|
import net.minecraft.state.property.Properties;
|
|
import net.minecraft.util.math.BlockPos;
|
|
import net.minecraft.util.math.Direction;
|
|
import net.minecraft.util.shape.VoxelShape;
|
|
import net.minecraft.world.BlockView;
|
|
import net.minecraft.world.WorldAccess;
|
|
|
|
public class ShellsBlock extends Block implements Waterloggable {
|
|
public static final BooleanProperty WATERLOGGED = Properties.WATERLOGGED;
|
|
public static final IntProperty COUNT = IntProperty.of("count", 1, 4);
|
|
|
|
private static final VoxelShape SHAPE = Block.createCuboidShape(0, 0, 0, 16, 1, 16);
|
|
|
|
public ShellsBlock(Settings settings) {
|
|
super(settings);
|
|
}
|
|
|
|
@Override
|
|
@Deprecated
|
|
public VoxelShape getOutlineShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context) {
|
|
return SHAPE;
|
|
}
|
|
|
|
@Override
|
|
protected void appendProperties(StateManager.Builder<Block, BlockState> builder) {
|
|
super.appendProperties(builder);
|
|
builder.add(COUNT, WATERLOGGED);
|
|
}
|
|
|
|
@Override
|
|
@Nullable
|
|
public BlockState getPlacementState(ItemPlacementContext ctx) {
|
|
return getDefaultState().with(WATERLOGGED, ctx.getWorld().getFluidState(ctx.getBlockPos()).getFluid() == Fluids.WATER);
|
|
}
|
|
|
|
@Deprecated
|
|
@Override
|
|
public FluidState getFluidState(BlockState state) {
|
|
if (state.get(WATERLOGGED).booleanValue()) {
|
|
return Fluids.WATER.getStill(false);
|
|
}
|
|
return super.getFluidState(state);
|
|
}
|
|
|
|
@Deprecated
|
|
@Override
|
|
public BlockState getStateForNeighborUpdate(BlockState state, Direction direction, BlockState neighborState, WorldAccess world, BlockPos pos, BlockPos neighborPos) {
|
|
if (state.get(WATERLOGGED).booleanValue()) {
|
|
world.scheduleFluidTick(pos, Fluids.WATER, Fluids.WATER.getTickRate(world));
|
|
}
|
|
return super.getStateForNeighborUpdate(state, direction, neighborState, world, pos, neighborPos);
|
|
}
|
|
|
|
@Override
|
|
public boolean canPathfindThrough(BlockState state, BlockView world, BlockPos pos, NavigationType type) {
|
|
return (type == NavigationType.WATER) == world.getFluidState(pos).isIn(FluidTags.WATER);
|
|
}
|
|
}
|