Алгоритм роста растений Каждый тик (1/20 секунды) все чанки в некотором радиусе от игрока обновляются. С 1.9pre5 этот радиус составляет 7, и получаетя, что обновляемая область имеет вид квадрата размером 15х15 чанков с игроком в центре. Когда чанк обновляется, он 20 раз выполняет следующее: - выбирается случайный блок в чанке; - если этот блок подлежит случайному обновлению - он обновляется. Все 20 выборок из чанка независимы - один и тот же блок может быть выбран дважды, трижды, получить 2, 3 обновления. Вероятность двойного выбора составляет (20 / (16*16*128)) = 0.061%. Если выбран блок растения, если оно не выросшее, если выполняются условия для роста - по после этого выполняется рост растения на 1 с некоей вероятностью (кое что про вероятность роста есть в http://www.minecraftwiki.net/wiki/Wheat_Farming). - Пшеница: Рост возможен только если блок сверху имеет уровень освещённости 9 и выше. Вероятность роста составляет 1/ floor(25/growth_rate+1), growth_rate смотрим в ВИКИ по ссылке данной ранее. - Адские бородавки: Вероятность роста 1/15. - Тростник или Кактус: Растёт только при длине менее 3 и пустом блоке сверху. вероятность роста равна 1! но вместо роста увеличивается на 1 внутренний счётчик блока и только по достижении им 15 тростник/кактус вырастает. - Грибы (цвет неважен): Может расти только при количестве грибов того же цвета менее 5 в блоке 9х3х9 с центром - грибом. Вероятность роста 1/25. Если проверка роста проходит, то гриб пытается расти на соседних блоках. 1. Сначала в качестве текущей позиции устанавливается исходный гриб. 2. С равной вероятностью производится смещение в горизонтальной плоскости по квадрату 3х1х3. После этого производится смещение по вертикали - вверх или вниз с вероятностью 1/4, на той же высоте с вероятностью 1/2 3. Если блок по вычисленной позиции пригоден для размещения гриба - от становится текущим. Иначе текущая позиция остаётся неизменной. 4. Снова вычитсялется смещённая позиция, как описано в шаге 2. 5. Шаги 3 и 4 повторяются трижды. 6. Если конечная позиция допустима - гриб растёт в ней. Допустимой считается позиция при уровне освещённости 12 и ниже и непрозрачном нижнем блоке. Мицелий допустим, независимо от освещённости. - Арбуз, Тыква: Растёт при уровен освещённости верхнего блока 9 и выше. Вероятность роста 1/ floor(25/growth_rate+1), такая же как и для пшеницы, с поправкой, что учёт влияния соседних растений проводится только по растениям того же типа. Если проверка пройдена - растение растёт на единицу, если оно ещё не взрослое. Взрослое растение пытается произвести ягоду. Если с севера, востока, юга, запада есть однотипный блок ягоды - новая ягода не продуцируется. Берётся случайное направление. Если блок с севера, востока, юга, запада - воздух и под ним - земля/вспаханная земля - на нём располагается новая ягода. Саженцы деревьев: Нужна освещённость блока сверху 9 и выше. Вероятность роста 1/7 При успешной проверке саженцу устанавливается флаг однократной проверки. Второй раз - дерево попытается вырасти. Трава: Требуется освещённость 9 и выше. Вероятность роста 1. Выбираются 4 случайных блока в области 3х5х3. На каждом из выбранных блоков трава вырастет, если: 1. Выбран блок земли 2. Освещённость блока сверху 4 и выше. 3. Блок сверху не полупрозрачен. (вспаханная земля, плита, лестница )
Это перевод статьи http://pernsteiner.org/minecraft/cropgrowth/algo.html Цель - внести статью в русскую WIKI/ Он чуток устарел, но в целом актуальность сохраняет. Какие будут поправки?
Про траву не сразу въехал. Пришлось читать первоисточник. Как мне кажется, не помешают некоторые уточнения... - Освещённость 9 требуется для исходного травяного блока. - 4 случайных блока выбираются в области от исходного травяного блока. - Лучше не "трава вырастет", а земляной блок превратится в травяной. (А то ведь есть ещё трава. которая реально "растёт" на травяных блоках, и которую можно косить.)