- 4,045
- 63
- 645
Всем привет! Думаю, вопрос будет лёгким.
Пытаюсь я, значит, узнать освещённость в конкретной точке мира. Причём, освещённость эта должна учитывать не только видимость неба и время суток, но и свет от окружающих блоков.
Использую для этого метод world.getLightBrightness(pos).
Однако, вот беда, выяснилось, что адекватно он работает только на сервере. На клиенте всегда выдаёт 15 единиц.
Забыл упомянуть, что в мою задачу входит выяснение освещённости на обеих сторонах (на сервере и на клиенте).
Кто-нибудь может подсказать простой способ/метод для решения этой задачи?
А то я тут навертел уже...
Пытаюсь я, значит, узнать освещённость в конкретной точке мира. Причём, освещённость эта должна учитывать не только видимость неба и время суток, но и свет от окружающих блоков.
Использую для этого метод world.getLightBrightness(pos).
Однако, вот беда, выяснилось, что адекватно он работает только на сервере. На клиенте всегда выдаёт 15 единиц.
Забыл упомянуть, что в мою задачу входит выяснение освещённости на обеих сторонах (на сервере и на клиенте).
Кто-нибудь может подсказать простой способ/метод для решения этой задачи?
А то я тут навертел уже...
Код:
float light = Math.max(world.getLightFor(EnumSkyBlock.BLOCK, pos) * 0.625F, world.getLightFor(EnumSkyBlock.SKY, pos) * getSunBrightnessBody(world, 0));
private static float getSunBrightnessBody(World world, float tick) {
float cel = world.getCelestialAngle(tick) * ((float)Math.PI * 2F);
float f1 = 1.0F - (MathHelper.cos(cel) * 2.0F + 0.2F);
f1 = MathHelper.clamp_float(f1, 0.0F, 1.0F);
f1 = 1.0F - f1;
f1 = (float)(f1 * (1.0D - world.getRainStrength(tick) * 5.0F / 16.0D));
f1 = (float)(f1 * (1.0D - world.getThunderStrength(tick) * 5.0F / 16.0D));
return f1 * 0.8F + 0.2F;
}