Posted May 22, 20214 yr trying to water log an obj model. so far I have been either make it permanently waterlogged or not water on land , but under water it will sometimes leave a side of air on the model. placing another block next to it will correct it , and when that block is removed, the model stays under water correctly. public class WaterShape extends YabmBlock implements IWaterLoggable { public static final DirectionProperty FACING = HorizontalBlock.HORIZONTAL_FACING; public static final BooleanProperty WATERLOGGED = BlockStateProperties.WATERLOGGED; public WaterShape(Properties properties) { super(properties); setDefaultState(stateContainer.getBaseState().with(BlockStateProperties.WATERLOGGED, false).with(FACING, Direction.SOUTH)); } @Override protected void fillStateContainer(StateContainer.Builder<Block, BlockState> builder) { builder.add(BlockStateProperties.HORIZONTAL_FACING).add(BlockStateProperties.WATERLOGGED); } @Override public FluidState getFluidState(BlockState state) { return state.get(WATERLOGGED) ? Fluids.WATER.getStillFluidState(false) : super.getFluidState(state); } @Override public BlockState getStateForPlacement(BlockItemUseContext context) { return this.getDefaultState().with(FACING, context.getPlacementHorizontalFacing()); } public static Direction getDirection(BlockState state) { return state.get(FACING); } @Override public VoxelShape getCollisionShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) { return BOX; } @Override public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) { return BOX; } @SuppressWarnings("deprecation") @Override public BlockState updatePostPlacement(BlockState stateIn, Direction facing, BlockState facingState, IWorld worldIn, BlockPos currentPos, BlockPos facingPos) { // this resets the block correctly when another block added on any side if (!stateIn.get(BlockStateProperties.WATERLOGGED)) { this.receiveFluid(worldIn, currentPos, stateIn, Fluids.WATER.getStillFluidState(false)); } //worldIn.getPendingFluidTicks().scheduleTick(currentPos, Fluids.WATER, Fluids.WATER.getTickRate(worldIn)); return super.updatePostPlacement(stateIn, facing, facingState, worldIn, currentPos, facingPos); //return stateIn; } public void onBlockAdded(BlockState state, World worldIn, BlockPos pos, BlockState oldState, boolean isMoving) { worldIn.getPendingFluidTicks().scheduleTick(pos, Fluids.WATER, Fluids.WATER.getTickRate(worldIn)); } } // this resets the block correctly when another block added on any side if (!stateIn.get(BlockStateProperties.WATERLOGGED)) { this.receiveFluid(worldIn, currentPos, stateIn, Fluids.WATER.getStillFluidState(false)); } return super.updatePostPlacement(stateIn, facing, facingState, worldIn, currentPos, facingPos); }
May 22, 20214 yr Author 98% sure i got it. The SeaPickleBlock was a better example . Pickle Rick!!!!!!!
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.