package net.minecraft.world.level.block; import com.mojang.serialization.MapCodec; import net.minecraft.core.BlockPos; import net.minecraft.server.level.ServerLevel; import net.minecraft.util.RandomSource; import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelReader; import net.minecraft.world.level.block.state.BlockBehaviour; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; public class TallDryGrassBlock extends DryVegetationBlock implements BonemealableBlock { public static final MapCodec CODEC = simpleCodec(TallDryGrassBlock::new); private static final VoxelShape SHAPE = Block.column(14.0, 0.0, 16.0); @Override public MapCodec codec() { return CODEC; } protected TallDryGrassBlock(BlockBehaviour.Properties p_395204_) { super(p_395204_); } @Override protected VoxelShape getShape(BlockState p_393637_, BlockGetter p_393034_, BlockPos p_397737_, CollisionContext p_393523_) { return SHAPE; } @Override public boolean isValidBonemealTarget(LevelReader p_395858_, BlockPos p_392247_, BlockState p_394360_) { return BonemealableBlock.hasSpreadableNeighbourPos(p_395858_, p_392247_, Blocks.SHORT_DRY_GRASS.defaultBlockState()); } @Override public boolean isBonemealSuccess(Level p_395047_, RandomSource p_395975_, BlockPos p_391643_, BlockState p_395606_) { return true; } @Override public void performBonemeal(ServerLevel p_395820_, RandomSource p_397995_, BlockPos p_394897_, BlockState p_395908_) { BonemealableBlock.findSpreadableNeighbourPos(p_395820_, p_394897_, Blocks.SHORT_DRY_GRASS.defaultBlockState()) .ifPresent(p_397044_ -> p_395820_.setBlockAndUpdate(p_397044_, Blocks.SHORT_DRY_GRASS.defaultBlockState())); } }