Что передается в параметры при создании VoxelShape

Версия Minecraft
1.16.5
API
Forge
5
0
Смотрел код реализации сундука и наткнулся на вот такие строки. Думаю, что это как то задает положение, в какую сторону "смотрит" блок. 1641306768333.png
Но вот у поршня, например, уже другие значения
1641306924015.png
У печки вообще подобных строк нет.
Вопрос следующий: Почему в параметры box передаются именно такие значения?
 
Последнее редактирование:

necauqua

когда-то был anti344
Администратор
1,216
27
172
Конкретно в box это minX, minY, minZ, maxX, maxY и maxZ - VoxelShape описывает форму блока (с точки зрения коллизий и выделения), а не поворот.
Эти парамертры в промежутке от 0 до 16 задают некий параллелепипед в пределах полного блока.
У сундука, например, ты видишь описание четырех таких форм, их принимает сундук в зависимости от того, в какую сторону повёрнут.
У поршня - шесть, ты смотришь, я так понял, на форму базы поршня, есть ещё та часть что выдвигается, там должна быть форма посложнее (ага, два параллелепипеда)

Печка - занимает полный блок, потому ей особую форму описывать не надо, а вращение блокстейтом описано, и потом в зависимости от него разные текстуры возвращаются (ну там печка наследуется от какого-нибудь horizontal rotatable block который обобщённо с блокстейтами для 4-вариантного вращения разбирается).
А потом уже в зависимости от блокстейта, в поршне и прочих выбирается, какая форма должна быть выбрана из тех вариантов что там в константах описаны
 
88
4
6
Смотрел код реализации сундука и наткнулся на вот такие строки. Думаю, что это как то задает положение, в какую сторону "смотрит" блок. Посмотреть вложение 13696
Но вот у поршня, например, уже другие значения
Посмотреть вложение 13697
У печки вообще подобных строк нет.
Вопрос следующий: Почему в параметры box передаются именно такие значения?
VoxelShape предназначен для размера модели, а поворот передают 2 метода -
Java:
@Override
    public @NotNull BlockState getStateForPlacement(BlockPlaceContext context) {
        return defaultBlockState().setValue(BlockStateProperties.FACING, context.getNearestLookingDirection().getOpposite());
    }

    @Override
    protected void createBlockStateDefinition(StateDefinition.Builder<Block, BlockState> builder) {
        builder.add(BlockStateProperties.FACING);
    }
 
Сверху