Убрать рендер определенных блоков при условии

Версия Minecraft
1.7.10
1,015
9
102
Мне надо, что бы при определенном условии конкретные блоки не рендрились, хотя находились бы в мире. Пробовал вставлять хук в shouldSideBeRendered и при обновлении условия вызывать Minecraft.getMinecraft().renderGlobal.loadRenderers();, но тогда происходит полное обновление всех чанков, и еще стороны блока всё же рендрятся изнутри блока. Надо как-то сделать, чтобы обновлять рендер именно этих блоков (что происходит при ломании любого блока), а не всех чанков
 
Решение
RenderGlobal#markBlocksForUpdate, в качестве координат можешь указать любую пару координат в пределах чанка.
По факту - сборка чанка в дисплейлист происходит в WorldRenderer#updateRenderer.
Отменить отрисовку блока можно хукнувшись в метод RenderBlocks#renderBlockByRenderType, туда передается тип блока и его координаты в мире. Оригинальный метод возвращает boolean - отрисовали мы блок или нет.
1,015
9
102
Нельзя, скорее всего. Там ведь компилится дисплей лист всего чанка, а потом он и рисуется.
Я тоже так подумал. Но всё же, как перекомпилить дисплей лист чанка? Что там вызывать? Я в сурсах вроде не нашел метода по типу recompileChunk(int x, int y)
 
1,990
18
105
RenderGlobal#markBlocksForUpdate, в качестве координат можешь указать любую пару координат в пределах чанка.
По факту - сборка чанка в дисплейлист происходит в WorldRenderer#updateRenderer.
Отменить отрисовку блока можно хукнувшись в метод RenderBlocks#renderBlockByRenderType, туда передается тип блока и его координаты в мире. Оригинальный метод возвращает boolean - отрисовали мы блок или нет.
 
1,015
9
102
RenderGlobal#markBlocksForUpdate, в качестве координат можешь указать любую пару координат в пределах чанка.
По факту - сборка чанка в дисплейлист происходит в WorldRenderer#updateRenderer.
Отменить отрисовку блока можно хукнувшись в метод RenderBlocks#renderBlockByRenderType, туда передается тип блока и его координаты в мире. Оригинальный метод возвращает boolean - отрисовали мы блок или нет.
Да, RenderGlobal#markBlocksForUpdate как раз мне нужен. Я это сам нашел раньше, но всё же спасибо
 
Сверху