Чудеса погоды [1.10.2]

4,167
68
693
Всем привет!
Делаю я, значит, мирок...
И что-то странное у меня творится с погодой.
Что ни дождь, то гроза... Где-то в 90% случаев...
Вот задумался, это можанги намудрили или я где-то что-то не то написал?
Погоду пока вообще не трогал, поэтому даже мыслей нет, из-за чего это...
По идее, должно быть наоборот. 90% дождь и 10% гроза.
Или я ошибаюсь?
Кто-нибудь замечал такое на версии 1.10 и выше?
 
Это на всех мирах(не измерения)?
 
Да, пока тестил, создавал кучу миров... Та же фигня...


Я тут темку создал в вопросах: http://forum.mcmodding.ru/%D0%A2%D0%B5%D0%BC%D0%B0-%D0%98%D0%B7%D0%BC%D0%B5%D1%80%D0%B5%D0%BD%D0%B8%D0%B5-%D0%9D%D0%B5-%D1%81%D0%BF%D0%B8%D1%82%D1%81%D1%8F-%D1%87%D1%82%D0%BE-%D1%82%D0%BE
Думаю, что всё это как-то связано со временем... А оно одно и то же в обычном мире и в других димнсах...
Сейчас прохожусь по известным модам... По ходу, проблему никто не решил (
 
Итак народ! Делюсь результатами исследования кода...
Выяснилось, что тревога с погодой оказалась ложной.
А дело было вот в чём:
По дефолту, если время дождя и время грозы равны нулю, то по истечении какого-то времени они оба врубаются разом (и гроза и дождь) и устанавливают для себя случайный промежуток времени.
Кому интересно, под спойлером есть код из апдейта погоды.
public void updateWeatherBody()
    {
        if (!this.provider.getHasNoSky())
        {
            if (!this.isRemote)
            {
                int i = this.worldInfo.getCleanWeatherTime();

                if (i > 0)
                {
                    --i;
                    this.worldInfo.setCleanWeatherTime(i);
                    this.worldInfo.setThunderTime(this.worldInfo.isThundering() ? 1 : 2);
                    this.worldInfo.setRainTime(this.worldInfo.isRaining() ? 1 : 2);
                }

                int j = this.worldInfo.getThunderTime();

                if (j <= 0)
                {
                    if (this.worldInfo.isThundering())
                    {
                        this.worldInfo.setThunderTime(this.rand.nextInt(12000) + 3600);
                    }
                    else
                    {
                        this.worldInfo.setThunderTime(this.rand.nextInt(168000) + 12000);
                    }
                }
                else
                {
                    --j;
                    this.worldInfo.setThunderTime(j);

                    if (j <= 0)
                    {
                        this.worldInfo.setThundering(!this.worldInfo.isThundering());
                    }
                }

                this.prevThunderingStrength = this.thunderingStrength;

                if (this.worldInfo.isThundering())
                {
                    this.thunderingStrength = (float)((double)this.thunderingStrength + 0.01D);
                }
                else
                {
                    this.thunderingStrength = (float)((double)this.thunderingStrength - 0.01D);
                }

                this.thunderingStrength = MathHelper.clamp_float(this.thunderingStrength, 0.0F, 1.0F);
                int k = this.worldInfo.getRainTime();

                if (k <= 0)
                {
                    if (this.worldInfo.isRaining())
                    {
                        this.worldInfo.setRainTime(this.rand.nextInt(12000) + 12000);
                    }
                    else
                    {
                        this.worldInfo.setRainTime(this.rand.nextInt(168000) + 12000);
                    }
                }
                else
                {
                    --k;
                    this.worldInfo.setRainTime(k);

                    if (k <= 0)
                    {
                        this.worldInfo.setRaining(!this.worldInfo.isRaining());
                    }
                }

                this.prevRainingStrength = this.rainingStrength;

                if (this.worldInfo.isRaining())
                {
                    this.rainingStrength = (float)((double)this.rainingStrength + 0.01D);
                }
                else
                {
                    this.rainingStrength = (float)((double)this.rainingStrength - 0.01D);
                }

                this.rainingStrength = MathHelper.clamp_float(this.rainingStrength, 0.0F, 1.0F);
            }
        }
    }
Далее процесс идёт следующим образом: как только время одного из погодных явлений подходит к концу, оно выключается и тут же задаёт себе ещё один случайный промежуток времени, теперь уже это время ожидания до повторения данного погодного явления. Как видно из кода этот промежуток за частую больше, чем время самого явления...
Так вот!
С этого момента и появляется рандом во времени появления конкретного явления. То есть, дождь и гроза начинают чередоваться...

В чём же была моя беда?
А в том, что не люблю я дождь (вернее люблю, но сейчас он совсем не к месту), и как только он начинался, я консольно его вырубал, обнуляя тем самым все значения.
А как мы уже знаем, если значения равны нулю, то в 100% случаем включится гроза.
Вот она и включалась.

Всем спасибо за внимание )))
 
Назад
Сверху