- 74
- 2
Пытаюсь реализовать подобие песчаной бури. Для этого решил сделать так, чтобы при входе в биом пустыни на игрока постепенно наползал туман (меняю плотность тумана, используя событие). Проблема в том, что я не могу сделать так, чтобы плотность менялась только в нужном биоме, т.к. для этого мне нужно поставить вызов event.isCanceled(true) внутри проверки биома, а, когда я это делаю, эта функция просто перестает давать необходимый эффект. Объясните, пожалуйста, почему так происходит. (Я в первый раз работаю с туманом и вообще с подобными событиями)
Нерабочий код:
Если не ставить event.setCanceled(true); в зависимость от биома (вынести его за скобки условия проверки биома), код работает, но тогда туман не сбрасывается на ванильные значения при выходе из пустыни.
Нерабочий код:
Java:
@SubscribeEvent
public static void onFogDensityRender(EntityViewRenderEvent.FogDensity event)
{
Entity entity = event.getEntity();
if(entity instanceof EntityPlayer)
{
Biome biome = entity.getEntityWorld().getBiome(entity.getPosition());
if (biome == Biomes.DESERT)
{
event.setDensity(fogDensity);
if (fogDensity < 0.9f)
{
fogDensity += 0.0001f;
}
event.setCanceled(true);
}
}
}
Если не ставить event.setCanceled(true); в зависимость от биома (вынести его за скобки условия проверки биома), код работает, но тогда туман не сбрасывается на ванильные значения при выходе из пустыни.