- 1,371
- 112
- 241
У меня есть структура, которую я проверяю на "правильность" построения. Если она построена неправильно, я рендерю в неверных местах ошибку (красный бетон).
Однако почему-то неверные места определяются весьма странно(?): одни из них определяются верно, другие нет.
Однако почему-то неверные места определяются весьма странно(?): одни из них определяются верно, другие нет.
Собственно сам алгоритм (внутри TileEntityRenderer):
public void renderInvalid(MatrixStack ms, ReassessmentTableTile tile, IRenderTypeBuffer buffer) {
ms.pushPose();
BlockPos pos = tile.getBlockPos();
for(int i = -2; i < 3; i++) {
for(int j = -2; j < 3; j++) {
if((i == -2 || i == 2) && j == 0) {
if(tile.getLevel().getBlockState(pos.south(i))
!= BlockRegister.REASSESSMENT_PILLAR.get().defaultBlockState()) {
ms.pushPose();
ms.translate(i, 0, j);
renderInvalidPillar(ms, buffer);
ms.popPose();
}
} else if((i == 1 || i == -1) && (j == -2 || j == 2)) {
if(tile.getLevel().getBlockState(pos.south(i).east(j))
!= BlockRegister.REASSESSMENT_PILLAR.get().defaultBlockState()) {
ms.pushPose();
ms.translate(i, 0, j);
renderInvalidPillar(ms, buffer);
ms.popPose();
}
} else if(i != 0 && j != 0) {
if(tile.getLevel().getBlockState(pos.south(i).east(j)) != Blocks.AIR.defaultBlockState()){
ms.pushPose();
ms.translate(i, 0, j);
renderInvalidBlock(ms, buffer);
ms.popPose();
}
}
}
}
ms.popPose();
}