Вода пропускает свет

Версия Minecraft
1.12.2
5,018
47
783
Народ, кто шарит как сделать чтобы вода свет не пропускала? А то до дна просвечивает.. Я думал это как то с рендерлейром связано


И еще вопрос номер два: по какому принципу сетается цвет в методе setColor() ? Почему то классический варик 0x07508f (в 6 цифр то бишь) не работает, цвет сетается прозрачный.:(

 
7,099
324
1,509
Optifine? Там в настройках вырубается
 
5,018
47
783
5,018
47
783
Да цвет это вообще неважно особо нафиг, как прозрачность сделать меньше с каждым блоком в глубину? Я не нашел это в воде нигде.
 
7,099
324
1,509
Можно верхнюю гранить воды рендерить независимо от видимости(блоки перед ней), чтобы чем глубже, тем меньше была прозрачность из-за наложения
 
5,018
47
783

jopi

Попрошайка
1,421
30
260
Да цвет это вообще неважно особо нафиг, как прозрачность сделать меньше с каждым блоком в глубину? Я не нашел это в воде нигде.
GL11.glColor_RGBA(r,g,b,F)
f - прозрачность
цвет доставать можешь
Метод ГЛ по другому как-то называется
 
5,018
47
783
7,099
324
1,509
Еще можно типо сказать ,что не баг, а фича, кристально чистая вода
 
5,018
47
783
5,018
47
783
Есть тут setRenderLayer(BlockRenderLayer....);
для типа этих целей, но тут блин либо TRANSLUCENT , это прозрачная как на скрине, либо SOLID или CUTOUT что в данном случае разницы не имеет значит

Это конечно выглядит красиво но...



@SideOnly(Side.CLIENT)
public BlockRenderLayer getBlockLayer()
{
return this.blockMaterial == Material.WATER ? BlockRenderLayer.TRANSLUCENT : BlockRenderLayer.SOLID;
}
 
5,018
47
783
Я нашел короче то что надо
Java:
    public EnumBlockRenderType getRenderType(IBlockState state)
    {
        return EnumBlockRenderType.LIQUID;
    }

Но есть небольшая проблема. BlockFluidClassic это видимо форджевский класс, не имеющий отношения к ванильному BlockLiquid

А в ванильный BlockFluidRenderer никто не удосужился вставить хуки для связки. Мораль:
форджевская жидкость говно значит
Для нормальной работы либо нужно хукать в BlockFluidRenderer#renderFluid для вставки этих форджевских Fluid, либо через кастомный модельлоадер делать свой рендер воды.

Как разберусь запилю тутор по созданию офигенской воды.
 
Последнее редактирование:
1,038
57
229
суть примерно в чём, вода это плоская вещь. То есть рендерится только верхушка воды, её прозрачность определяется настройками текстуры (её альфой). Поэтому если ты хочешь переписать рендер, то тебе надо получить расстояние до берега. Естественно круто будет смотреться только сверху))
Когда ты внутри воды, рендерится скорее всего или через шейдер или ещё чего. По сути на экран закладывается текстура (такая же как голова тыквы). И в таком случае тебе надо определять расстояние до поверхности.
То есть сам блоки воды не имеет значения как таковой при любом раскладе
 
Сделай воду немного непрозрозрачной через setBlockOpacity(или похожий метод в классе блока) и все. Тогда на блоки под водой будет попадать меньше света и они станут темнее.
 
5,018
47
783
суть примерно в чём, вода это плоская вещь. То есть рендерится только верхушка воды, её прозрачность определяется настройками текстуры (её альфой). Поэтому если ты хочешь переписать рендер, то тебе надо получить расстояние до берега. Естественно круто будет смотреться только сверху))
Когда ты внутри воды, рендерится скорее всего или через шейдер или ещё чего. По сути на экран закладывается текстура (такая же как голова тыквы). И в таком случае тебе надо определять расстояние до поверхности.
То есть сам блоки воды не имеет значения как таковой при любом раскладе

Именно что как то имеет, т.к в ванильке таковой эффект есть
Писать кастомный рендер это последнее что я буду делать. Сперва хрчу хукнуть BlockFluidRender#renderFluid и сделать чтобы он дружил с BlockFluidClassic

Вода это такой же блок каки все остальные. Он не рендерит сторону если к этой стороне примыкает isFullBlock или как то так. Когда игрок в воде, на экран накладывается просто текстура с цветом. У джабелара гайд есть как это делать через ливингэвент
 
Последнее редактирование:
5,018
47
783
Сделай воду немного непрозрозрачной через setBlockOpacity(или похожий метод в классе блока) и все. Тогда на блоки под водой будет попадать меньше света и они станут темнее.
Хорошо попробую
 
4,045
63
645
Народ... А никто не думал, что это всё обеспечивается тупо на этапе построения лайт мэпы?
Вроде как он просто чекает количество блоков воды и говорит, тут тень. И усё... Чего вы блок-то дербаните?
 
Сверху