Версия Minecraft
1.12.2
60
3
5
Всем привет опять я.Как сделать что-бы когда игрок брал предмет от него исходил свет. setLightLevel(float level) нету в предмете только в блоке.
 
Решение
Проблема в том, что абсолютно весь свет в игре - статический, и высчитывается в виде цифры 0-15 для каждого блока.
Просчитывается он, соответственно, при обновлении чанка, читай, когда ты что-то ставишь-ломаешь или как-либо по другому взаимодействуешь с блоками.

И во внимание игрой (спавн мобов, рост растений, и прочее) берётся именно этот статический поблочный свет.
Это я к тому, что не особо сложно можно написать шейдер, который сделал бы тебе красивый конусовый фонарик (базовый туториал по освещению в opengl + туториал по загрузке и применению своих шейдеров в игре), но он будет только создавать видимость, а игровая логика чихать на него будет, так как это просто отрисовка такая будет, что пиксели на которые направлен твой фонарик...
Начнем с того, что лайтмапа это маленькая текстурка
да, текстурка которая накладывается на освещенную поверхность. это и имелось в виду

А для просчета освещения в отдельном потоке там еще кучу всего придется синхронизировать, иначе что-то точно сломается
 
2,505
81
397
В оптифайне есть многопоточная загрузка.
Но если делать руками, достаточно лишь, чтобы апдейтеры ничего не делали во время тика. Потому что во время рендера состояние мира не изменяется.
 
Сверху